郭 融,王 芳,劉 偉
(太原理工大學 電氣與動力工程學院,太原 030024)
隨著人民生活水平的提高,汽車成了生活中人們常見的代步工具,在方便人們生活的同時,也造成了道路交通難以得到有效監(jiān)管的問題。車型識別是電子不停車收費系統(tǒng)(electronic toll collection,ETC)的關(guān)鍵技術(shù)之一[1],對道路上車輛的通暢行駛有重要的意義,在車輛違規(guī)行駛和被盜車輛追蹤等方面也有很高的應用價值。
傳統(tǒng)的車型識別方法依賴人工特征設(shè)計,例如利用梯度方向直方圖特征進行特征提取[2],提取車輛目標后使用支持向量機分類器進行分類,應用場景單一且易受背景、光照等因素影響。深度學習作為一種特征學習方法,在經(jīng)過簡單的非線性變換之后把原始數(shù)據(jù)變成更深層次、高語義的特征表達[3-4],其特征是可以根據(jù)不同對象進行自適應權(quán)值調(diào)節(jié),完成多種不同檢測任務(wù)。
2015年,Ren等[5]提出基于區(qū)域建議網(wǎng)絡(luò)(region proposal networks,RPN)的Faster R-CNN目標檢測算法,獲得了相較傳統(tǒng)方法更高的檢測精度,但其檢測速度較慢,只有5 fps。2016年,Redmon等[6]在CVPR會議上提出YOLO(you only look once)目標檢測算法,同年,Liu等[7]在ECCV會議上提出了SSD目標檢測算法。YOLO與SSD將預測邊框的任務(wù)變成回歸問題,在檢測速度方面有明顯提升,基本滿足實時要求。深度學習目標檢測算法已在車型識別領(lǐng)域有一定研究,文獻[8]將Faster-RCNN分別與ZF,VGG-16以及ResNet-101 3種卷積神經(jīng)網(wǎng)絡(luò)相融合,可以針對不同的數(shù)據(jù)集選用最佳網(wǎng)絡(luò)進行車型識別。由于該方法對候選框進行了預分類,雖然車型識別的精度有所提高,但是檢測速度較慢。文獻[9]融合循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)嵌入二級框架,增強了內(nèi)部特征信息的完整性,在對視頻監(jiān)控圖像中車型識別的精確性上表現(xiàn)良好,但是其存在模型過大、運行時內(nèi)存占用高的問題。
SSD目標檢測算法在檢測精度和速度方面綜合性能更好,但仍存在參數(shù)多導致模型臃腫的缺點[10]。結(jié)合上述研究,筆者提出使用改進的深度可分離卷積作為SSD算法基礎(chǔ)網(wǎng)絡(luò),對特征提取過程進行簡化,重新設(shè)計區(qū)域候選框,減少了模型參數(shù)量,實現(xiàn)對車輛類型準確的識別,并且提升了模型的檢測速度。
經(jīng)典SSD深度模型用VGG16分類網(wǎng)絡(luò)作為特征提取器,并將VGG16后兩層全連接層FC6,F(xiàn)C7改為卷積層,隨后,SSD在一系列不同尺度的卷積層上做特征提取,其尺度分別為38×38,19×19,10×10,5×5,3×3和1×1。在融合不同尺度的特征信息后,對目標的位置和類別進行預測。
目標檢測損失函數(shù)由位置損失和分類損失加權(quán)求和獲得,如式(1)所示。
(1)
式中:N是匹配正樣本的總量;x表示默認框與真實框的匹配結(jié)果,x=0表示匹配失敗,x=1表示匹配成功;c是softmax函數(shù)分別對任務(wù)中每一類別的置信度;l,g分別是預測框和真實框;α是位置損失的權(quán)重。
經(jīng)典SSD算法的模型參數(shù)運算繁多,運行時占用內(nèi)存大,為了在有限的計算資源平臺上完成圖像識別任務(wù)并做出及時的反應,對SSD算法進行“減重”勢在必行。
筆者提出改進的深度可分離卷積網(wǎng)絡(luò)作為SSD前端特征提取的基礎(chǔ)網(wǎng)絡(luò),避免卷積運算過程所帶來的過大消耗,降低算法運算復雜度,適應未來實時識別車型的應用需求。
深度可分離卷積(depthwise separable convolution,DSC)計算如式(2)所示。
(2)
式中:G為輸出特征圖;K為卷積核;F為輸入特征圖;i,j為特征圖像素位置;k,l為輸出特征圖分辨率;m為通道數(shù)。
深度可分離卷積把卷積分為深度卷積DW(depthwise convolution)和點卷積PW(pointwise convolution)2個階段。DW是深度可分離卷積的濾波階段,每個通道對應卷積核進行卷積操作;PW是深度可分離卷積的組合階段,整合多個特征圖信息,串聯(lián)輸出。
模型訓練中,輸入M通道大小為DF×DF的圖像,經(jīng)過DK×DK大小的卷積核進行卷積操作后,輸出大小為DI×DI的N通道特征圖。
對于一般卷積來說,濾波器大小為DK×DK,輸入大小為DF×DF的M通道圖像,參數(shù)運算量為DF×DF×DK×DK×M×N。而深度可分離卷積中特征提取只用了一個大小為DK×DK×1卷積核,運算量為DF×DF×M×DK×DK,組合階段用了N個點卷積,運算量為DF×DF×M×N,因此總計算量為DF×DF×M×N+DF×DF×M×DK×DK。
深度可分離卷積與傳統(tǒng)卷積參數(shù)運算量對比計算如式(3)所示。
(3)
式中深度可分離卷積使用3×3的卷積核,即DK取值為3。深度可分離卷積在準確率較小下降的情況下運算量減少1/8~1/9[11]。在對模型輕量化過程中,引入了寬度參數(shù)α,壓縮輸入輸出通道分別為αM,αN,α<1,計算量為DF×DF×αM×αN+DF×DF×αM×DK×DK。
寬度參數(shù)通過壓縮通道數(shù)進一步減少模型參數(shù)量,但是也造成了特征壓縮的問題。而修正線性單元(ReLU)對于負輸入,全部輸出為零,會導致更多的特征信息丟失,深度卷積DW無法改變輸入通道,這種情況下,特征提取效果不理想,會導致目標檢測準確率降低。
研究在DW之前引入反殘差(inverted residuals,IR)[12]模塊,實現(xiàn)過程如圖1所示。
圖1 反殘差模塊Fig. 1 Inverted residuals module
圖1中,輸入為h×w的k維特征圖,將ReLU改為ReLU6以限制輸出范圍,輸出h/s×w/s的k′維特征圖。s是步長,t為擴張系數(shù)。首先用一個大小為1×1的擴展核把輸入的低維特征圖擴展到高維,在高維空間進行深度卷積,最后使用點卷積將特征提取結(jié)果降維映射到低維空間并用線性激活函數(shù)(linear)進行輸出。對通道數(shù)擴增之后再收縮,提高了模型特征提取的能力,有效防止由于通道數(shù)較小時因非線性激活導致特征信息丟失的情況,可以提高目標檢測準確率。結(jié)合反殘差模塊的深度可分離卷積SSD結(jié)構(gòu)如圖2所示。
圖2 改進SSD模型結(jié)構(gòu)圖Fig. 2 The model structure of improved SSD
圖2中,特征提取部分除第1層之外全部為結(jié)合反殘差模塊的深度可分離卷積,擴張系數(shù)t為6,并且在conv1,conv3,conv6,conv11中采用步長s為2的卷積,在conv2,conv4,conv5,conv7,conv8,conv9,conv10中步長s為1,進行殘差信息傳遞。模型選取包括特征提取器后兩層在內(nèi)的6種不同尺度的特征圖,其尺度分別為19×19,10×10,5×5,3×3,2×2和1×1,并計算目標的分類信息和位置信息。
圖3為SSD多尺度特征圖及區(qū)域候選框示意圖,網(wǎng)絡(luò)的輸入為訓練集所包含圖像及手工標定的目標的真實標簽框,如圖(a)所示。在特征圖中的每一單位點處,預測多個具有不同尺度、不同寬高比的候選框,如圖(b)(c)所示,對候選框與真實框做匹配來進行位置損失的計算。區(qū)域候選框與目標真實位置交并比大小是區(qū)分正負樣本的條件,訓練效果是由區(qū)域候選框決定的。
圖3 多尺度特征圖及區(qū)域候選框示意圖Fig. 3 Sketch of multi-scale feature and regional candidate frame
區(qū)域候選框參數(shù)計算如式(4)所示。
(4)
式中:Sk是第k個特征圖的minsize參數(shù);smin是設(shè)計好的最小歸一化尺寸,取值為0.2;smax為設(shè)計好的最大歸一化尺寸,取值為0.9;m是特征圖的總數(shù)。
區(qū)域候選框與目標真實位置框的匹配度是模型性能重要的指標之一,而不同的區(qū)域候選框與真實框的匹配操作是十分復雜的。根據(jù)車輛的剛體特性,且圖像采集于固定角度,對區(qū)域候選框重新設(shè)計,利用先驗知識判定車輛寬高比在特定范圍,針對不同采樣角度、公路交通狀況可統(tǒng)分為ar>1或ar<1的不同類,在參數(shù)設(shè)定時刪除不需要的候選框,通過減少候選框匹配運算,提升SSD深度學習網(wǎng)絡(luò)模型速度。實驗車輛圖片為路面車輛正面俯視圖,寬高比參數(shù)ar<1,將區(qū)域候選框取值范圍選定為{1,1/2,1/3}。
SSD采用6個特征層來生成不同尺寸大小的候選框,假設(shè)特征圖大小為n×n,在每單元點設(shè)置k個候選框,則單層特征圖生成候選框的個數(shù)為n×n×k。筆者在SSD中使用反殘差模塊的深度可分離卷積進行特征提取,并且刪除了寬高比例為2和3的框。由表1可以看出,經(jīng)典SSD選取6個特征圖的k值分別為4,6,6,6,4和4,計算可以得到8 732個候選框;改進后的SSD選取6個特征圖的k值均為4,計算可以得到候選框2 000個,與原SSD的區(qū)域候選框生成總數(shù)相比減少了約3/4。
表1 區(qū)域候選框重構(gòu)前后總數(shù)對比
使用北京理工大學建立的BIT-Vehicle Dataset[13-14]數(shù)據(jù)集來驗證改進算法有效性,數(shù)據(jù)集中的所有車輛都被分為6類:Bus、Microbus,、Minivan、Sedan、SUV和Truck,每種車型分別有558,883,476,5 922,1 392和822輛。圖像分辨率為1 920×1 080和1 600×1 200。數(shù)據(jù)集按比例6∶ 2∶ 2分為訓練集、驗證集和測試集。
實驗采用的軟件和硬件設(shè)備:Linux系統(tǒng)、GPU采用NVIDIA RTX 2060、Tensorflow、AMD Ryzen 52600型號的CPU,CUDA9.0加cuDNN7版本深度學習加速庫,python版本為3.6.5。算法設(shè)置每批次訓練樣本為32張,初始學習率設(shè)置為0.001,迭代80 000步后設(shè)置為0.000 1,在Loss變化差值基本不變,大概150 000步停止模型訓練,得到車型識別模型。
實驗選用imageNet[15]數(shù)據(jù)集上預訓練的模型來初始化模型參數(shù),可以加速模型收斂,獲得更好的識別效果。筆者使用不同基礎(chǔ)網(wǎng)絡(luò)、不同區(qū)域候選框設(shè)計方法的目標檢測算法進行消融實驗,對比模型性能,驗證改進算法有效性,結(jié)果如表2所示。
表2 不同實驗算法模型性能對比
對表2分析可知,F(xiàn)aster R-CNN分步目標檢測算法精度較高,但其模型參數(shù)量大,平均檢測時間為0.635 s/幀,不滿足實時性要求。表中加粗部分為筆者提出的改進深度可分離卷積的SSD車型識別方法所得結(jié)果,其識別精度達到96.12%,相較于原SSD算法有顯著提升,參數(shù)量減少472 MB,平均檢測時間由0.119 s/幀下降到0.078 s/幀。與區(qū)域候選框重構(gòu)前的模型相比,在識別精度僅下降0.21%的前提下,經(jīng)過區(qū)域候選框重構(gòu)后的模型參數(shù)量減少21.14%,平均檢測時間減少14.29%,綜合性能最優(yōu),可以實現(xiàn)對車型的實時識別。
圖4為經(jīng)典SSD和改進SSD的車型識別效果結(jié)果對比圖,其中,第1、第3列為經(jīng)典SSD車型識別結(jié)果,第2、第4列為改進SSD車型識別結(jié)果。通過識別結(jié)果對比可以看出,算法改進使得模型在邊框的回歸有更好的效果,準確率相較于經(jīng)典深度模型也有一定的提升。
針對目前車型實時識別能力不足的問題,筆者提出了基于改進深度可分離卷積的SSD模型對道路車輛類型進行識別。該算法大幅減少了模型參數(shù)量,識別精度達到96.12%,同時平均檢測時間達到0.078 s/幀,各項指標均優(yōu)于原SSD模型,滿足車型實時識別要求,為交通場景中高速口繳費、車輛追蹤及套牌檢查等應用提供了參考。未來的研究方向是增加復雜場景道路圖像數(shù)據(jù),并對文中模型進行網(wǎng)絡(luò)微調(diào),提高模型在不同場景下車型識別能力。