陳昌川,王海寧,趙 悅,王延平,李連杰,李 奎,張?zhí)祢U
(1.重慶郵電大學 通信與信息工程學院,重慶 400065;2.山東大學 信息科學與工程學院,山東 青島 266237)
交通標志識別是交通道路運輸?shù)闹匾M成部分[1-2],但受多種因素干擾,如下雨天、標志牌老化等,為保證道路安全,既要考慮識別的精度也要確保識別速度,因此實際應用中要求實現(xiàn)實時高精度識別。
目前關(guān)于交通標志識別已有多種方法。由于標識牌特有的形狀與顏色,有學者提出基于色彩空間識別方法[3],或根據(jù)形狀特征識別交通標志[4],或采用色彩與形狀特征融合[5]識別,或者通過顏色空間提取感興趣區(qū)域[6],隨后使用支持向量機(Support Vector Machine,SVM)進行分類[7-9]。然而這些方法存在一定弊端:采用色彩或形狀識別算法存在大量誤檢,當交通標志所處背景與其顏色或形狀相近,往往會將背景錯誤識別成交通標志;再者,通過顏色和形狀對特殊情況下交通標志很難提取,例如下雨天、大霧天、遮擋等情況,進而導致精度偏低;使用顏色或形狀提取圖像候選區(qū)域隨后使用SVM分類的方法對于類別過多交通標志,很難做到正確分類,存在通用性偏低問題。近年來由于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的興起,為解決精度低的問題,又有學者提出將CNN應用在交通標志檢測與識別。Lee[10]等人基于SSD(Single Shot Multibox Detector)算法[11]構(gòu)建的CNN算法同時估計交通標志位置與邊界,在基于VGG16模型下最高平均準確率(Mean Average Precision,mAP)達到88.4%。Filatov[12]基于交通標志邊緣,通過形態(tài)學運算與Canny算法處理待檢測圖像得到交通標志輪廓,隨后送入CNN模型進行判斷,實現(xiàn)交通標志識別。但對于使用CNN檢測方法,通過提取大量目標候選區(qū)域送入分類網(wǎng)絡進行判斷和識別[13-18],雖然保證一定的精度與通用性,但不針對交通標志特定場景,網(wǎng)絡設(shè)計復雜,提取候選區(qū)域圖像均要送入網(wǎng)絡判斷與識別,需要大量計算導致識別速度慢,且精度受限無法進一步提升。
本文從交通標志牌邊緣信息出發(fā),基于深度學習YOLOv2算法檢測思想,提出一種T-YOLO檢測算法。該算法自行搭建網(wǎng)絡結(jié)構(gòu),融合殘差網(wǎng)絡、下采樣操作舍棄通用池化層而改用卷積層,設(shè)計7層特征提取網(wǎng)絡,解決檢測速度慢問題,縮短檢測速度;針對交通標志特定場景,提出卷積層四周填充0提取邊緣信息與上采樣方法,卷積層填充0提高識別精度,上采樣方法解決算法無法定位小目標問題提升定位準確度,進一步提高識別精度;隨后采用Softmax函數(shù)歸一化0~1,產(chǎn)生目標概率可能值,實現(xiàn)多分類識別,解決SVM分類器通用性偏低問題;通過批量歸一化、多尺度訓練等訓練方法,增強了算法的魯棒性。實驗表明,相比于同期交通標志識別算法,所提算法在檢測速度與平均準確度上均達到最優(yōu);相比于YOLOv2,所提算法平均準確率提高7.1%,檢測速度縮短每幀9.51 ms,整體性能都得到了提高。
如圖1所示,T-YOLO算法首先將圖像歸一化同一尺度,整幅待檢測圖像被劃分成S×S個網(wǎng)格,每個網(wǎng)格負責檢測目標圖像中心點是否落在該網(wǎng)格,對于目標圖像中心點落在的網(wǎng)格,Pr(object)=1,否則Pr(object)=0。通過人為設(shè)定的anchor錨點,產(chǎn)生定量個數(shù)預測框,每個預測框會產(chǎn)生坐標信息(x,y,w,h)和置信度(confidence)。x、y為相對該網(wǎng)格左上角坐標偏移值,w、h為該預測框?qū)捙c高,置信度為邊界框包含目標的可能性Pr(object)與邊界框準確度IOU(Intersection over Union)的乘積,如公式(1);同時,每個預測框還會產(chǎn)生一個固定的類別C。
(1)
圖1 T-YOLO算法檢測示意圖
交通標志邊緣含有豐富的色彩對比信息與線條鮮明形狀信息,可以提高識別準確度。為此,T-YOLO算法采用卷積層均四周填充0,提取邊緣信息,以提升檢測精度。再者,交通標志圖像不同于一般圖像,單純采用池化層作為下采樣操作,邊緣信息將被丟失,因此,T-YOLO算法對于下采樣操作不采用池化層,而改用卷積層,通過3×3的卷積核,設(shè)置步長為2,進行圖像下采樣(見圖2),確保邊緣信息不會被丟失,進而提升檢測精度。深度越深的網(wǎng)絡層,參數(shù)初始化一般接近0,在訓練過程中,隨著迭代次數(shù)增加,網(wǎng)絡更新淺層參數(shù),而進一步導致梯度消失,產(chǎn)生梯度爆炸等現(xiàn)象,從而導致無法收斂,損失率增加,而殘差網(wǎng)絡能解決梯度消失與梯度爆炸等現(xiàn)象,進而使得模型收斂。為此,T-YOLO算法在特征提取結(jié)構(gòu)后加入殘差網(wǎng)絡,用以防止模型過擬合。圖3為引入殘差網(wǎng)絡結(jié)構(gòu)示意圖。
圖3 殘差網(wǎng)絡示意圖
神經(jīng)網(wǎng)絡訓練是個復雜過程,只要前面幾層發(fā)生微小變化,這種微小變化就會在后面幾層不斷放大,形成大變化,一旦網(wǎng)絡輸入數(shù)據(jù)分布發(fā)生改變,那么網(wǎng)絡層勢必要去適應學習這個新數(shù)據(jù)分布,這將極大影響訓練速度。為此,T-YOLO算法在每個卷積層中均加入批量歸一化操作(Batch Normalization,BN),加速訓練模型的收斂速度。
首先找到最小batch,假設(shè)最小batch中輸入數(shù)據(jù)為x,β是由輸入x構(gòu)成的集β={x1,x2,…,xm},求得最小batch中的均值與平方差,并將其歸一化操作,進而產(chǎn)生了一種從原始數(shù)據(jù)到訓練數(shù)據(jù)的映射表達式,如公式(2)所示:
(2)
如圖4所示,T-YOLO對圖像粗略特征提取采用7層卷積層,縮短模型特征提取速度,隨后送入后續(xù)殘差網(wǎng)絡與上采樣繼續(xù)進行細節(jié)特征提取。T-YOLO算法為解決無法準確定位小型目標圖像問題引入上采樣操作,如圖5所示,通過融合殘差網(wǎng)絡的輸出與輸入并上采樣,解決識別小型目標問題,以提升精度。最終生成全連接采用Softmax函數(shù)歸一化。相比于SVM分類器采用超平面將圖像進行0與1分類,Softmax函數(shù)產(chǎn)生目標概率值,可以實現(xiàn)多目標的分類,解決了SVM分類器通用性偏低問題。
圖4 7層特征提取網(wǎng)絡
圖5 T-YOLO網(wǎng)絡示意圖
針對目標檢測,T-YOLO算法將待檢測圖像劃分成56×56個網(wǎng)格,每個網(wǎng)格會檢測是否包含目標圖像區(qū)域,對于區(qū)域性包含目標圖像的網(wǎng)格通過算術(shù)求得網(wǎng)格中心值,進而確定目標中心點落在的網(wǎng)格。對于檢測到目標中心點網(wǎng)格將會截取并產(chǎn)生系列事先設(shè)定大小的預選框圖像,截取圖像送入神經(jīng)網(wǎng)絡進行判斷與識別。本文將網(wǎng)格中輸出預選框圖像個數(shù)設(shè)置為5個,并采用k均值聚類算法(k-means)求解事先設(shè)定預選框大小,隨機選取k個對象作為初始聚類中心,然后計算目標中的點與聚類中心距離,并將每次產(chǎn)生的對象分配給距離它最近中心點,每分配一個樣本,聚類中心點將會重新計算,然后繼續(xù)聚類,直到所有樣本都被計算完成,最終產(chǎn)生所有的聚類點,選取其中聚類最多的5個矩形框的點作為預選框。
因此,含有交通標志目標中心點的網(wǎng)格將會產(chǎn)生(5+3)×5個預選框圖像,該網(wǎng)格產(chǎn)生的40個預選框圖像均要送入T-YOLO神經(jīng)網(wǎng)絡進行判斷識別。圖6為T-YOLO網(wǎng)絡檢測流程圖。
圖6 算法檢測流程圖
同時,為了使模型更具通用性提高模型魯棒性,T-YOLO網(wǎng)絡采用多尺度訓練方式,每隔10輪調(diào)整一次輸入圖像分辨率,進而使得模型對于不同分辨率圖像均能做到有效的識別與定位。
本文選取數(shù)據(jù)集是Zhang[19-20]等人公開的中國交通標志檢測數(shù)據(jù)集(CSUST Chinese Traffic Sign Detection Benchmark,CCTSDB),豐富的數(shù)據(jù)集有助于提高模型平均準確率,同時可以加速模型訓練時收斂,降低損失率。為了使得訓練集更加豐富,包含不同場景情況下圖像,采用旋轉(zhuǎn)、調(diào)整飽和度、調(diào)整亮度三種混合方式增強數(shù)據(jù)集。按照5∶1的比例劃分訓練集與測試集,分別為15 000張與3 000張圖片,并將數(shù)據(jù)集劃分為警告、強制、禁止三類。
本文實驗硬件配置如表1所示,并在上面搭配所需的軟件環(huán)境Ubuntu16.04、CUDA10.1、Cudnn7.5、Opencv3.4.3,同時根據(jù)數(shù)據(jù)集的特點,一并參考YOLOv2的參數(shù)配置。T-YOLO算法的參數(shù)配置見表2,在1~30 000次迭代設(shè)置學習率大小0.001,然后隨著迭代次數(shù)的累計,依次調(diào)整學習率,直到損失率保持穩(wěn)定。
表1 硬件配置
表2 T-YOLO參數(shù)配置
為了驗證T-YOLO算法準確性與可靠性,在基于硬件平臺GPU RXT2080 Ti與CPU Intel(R) Xeon(R) W-2133和軟件平臺Ubuntu16.04、opencv3.4.3的基礎(chǔ)上,將測試集3 000張圖片送入不同網(wǎng)絡,圖片大小為1 024 pixel×768 pixel,并選取平均準確率(mAP)、平均召回率(Average Recall,AR)、GPU檢測速度(ms/frame)作為驗證指標。AR計算公式如公式(3)所示:
(3)
式中:TP代表真正正樣本,F(xiàn)P代表假正樣本,F(xiàn)N代表假負樣本,i代表類別。算法對比見表3。從表3可以看出,T-YOLO算法無論是在平均準確率還是在檢測速度上都達到最優(yōu)效果,相比于YOLOv2算法,T-YOLO算法在平均準確度上提高7.1%,檢測速度每幀縮短了4.9 ms;相比于Faster R-CNN算法,T-YOLO算法在速度上提高124倍,精度提高3.8%;相比于傳統(tǒng)算法HOG+SVM,檢測精度提高13%。
表3 算法對比
同樣,為了驗證T-YOLO算法魯棒性,采用不同分辨率輸入圖像進行測試。采用224 pixel×224 pixel、320 pixel×320 pixel、416 pixel×416 pixel、512 pixel×512 pixel、608 pixel×608 pixel五種分辨率圖像,將原始圖像按照等比例方式縮放到上述分辨率固定尺度,對于空出像素區(qū)域填充黑色像素0,分別驗證各個分類的準確率以及平均準確率、檢測速度三個指標,結(jié)果如圖7和圖8所示。從圖7可以看出,對于圖片大小為224 pixel×224 pixel的圖像識別準確率較低,這是由于交通標志圖像大都為低分辨圖像,如果采用更低分辨率圖像,交通標志圖像會變小,所以導致平均準確率偏低;從圖像大小為320 pixel×320 pixel往上,平均準確率越來越高,結(jié)果如圖7和圖8所示。從圖7與圖8可以看出對于低分辨率的圖像,檢測速度比較快,但對應的平均準確率低,對于224 pixel×224 pixel圖像,GPU上檢測速度達到13.69 ms/frame,隨著分辨率不斷提高,檢測耗時也增加。
圖7 不同分辨率圖像準確率
圖8 不同分辨率圖像檢測速度
交通標志往往懸掛在高空或道路兩旁,從人視覺或汽車視覺內(nèi)觀察到的基本為小型目標圖像與中型目標圖像;再者,對于交通安全,能盡早準確無誤地將遠方交通標志檢出,可以減少不必要的損失,避免進一步的人員傷亡。從圖9(a)可看出,YOLOv2算法針對于小型目標圖像檢測,對小型目標定位很不準確,進而很難檢測出;同樣可以看出,由于采用池化層作為下采樣操作丟失邊緣信息,對于遮擋目標很難檢測出。從圖9(b)可看出,T-YOLO算法可以準確無誤將小型目標圖像定位,進而進一步檢測出目標。由于采用卷積層填充0、卷積層下采樣、上采樣等方法,T-YOLO算法對于交通標志邊緣信息非常敏感,對部分遮擋標志仍能將它檢測出來。對于一些特殊天氣下的小型目標圖像,T-YOLO算法仍可以檢測出。
圖9 部分算法對比檢測效果圖
本文提出了一種基于深度學習識別交通標志新方法,與一般算法不同,該算法從交通標志邊緣信息出發(fā),針對交通標志特定場景,精簡模型縮短速度,通過提取邊緣信息與上采樣提升識別精度。實驗表明該方法真實有效,相比同期交通標志識別算法精度與速度方面均有大幅提高,GPU平臺上采用原始圖像數(shù)據(jù)(1 024 pixel×768 pixel),檢測速度19.31 ms/frame,mAP為97.3%;由于采用多尺度訓練方式,模型的魯棒性增強。但現(xiàn)實場景細分每類交通標志,算法針對交通標志分類范圍過大、類別過少,且未結(jié)合標志牌特有顏色與形狀特征以提升識別精度,未經(jīng)實車測試。細分多類交通識別與實車測試將是下一步研究的方向。
“親近自然,親近泥土”無疑是陶藝作品在當今的可貴之處,亦在當今也愈發(fā)成為了人們的奢求。當它出現(xiàn)于人們的活動空間時,便是將這么一份可貴的物質(zhì)給予人們,讓空間充滿意義與歡喜。作為物質(zhì)與精神融合的產(chǎn)物,其多樣化的材料表達方式也符合大家追求特立獨行和豐富的藝術(shù)風格。以極為自然的藝術(shù)表現(xiàn)形式,承載著一定的文化元素,慢慢融入空間環(huán)境中,點綴、裝飾著空間,促成空間的自然化、藝術(shù)化和多元化。