李國進,胡 潔,艾矯燕
(廣西大學(xué)電氣工程學(xué)院,南寧 530004)
近年來,中國機動車數(shù)量隨著經(jīng)濟的發(fā)展迅速增長,通過人力進行交通監(jiān)管的方式已經(jīng)無法滿足當前需要,采用智能交通系統(tǒng)來解緩當前交通監(jiān)管面臨的巨大壓力已經(jīng)成為一種必然趨勢。在智能交通管理系統(tǒng)中,車輛目標檢測是其中的一個重要環(huán)節(jié),是后續(xù)車型識別、車標識別的基礎(chǔ)。利用機器視覺對交通圖像中的車輛進行快速且準確識別和定位,能夠節(jié)約人力管控資源,對交通管理系統(tǒng)智能化有重要的研究意義。
傳統(tǒng)的車輛檢測方法主要依據(jù)人工設(shè)計特征,將特征提取算法與分類器相結(jié)合進行檢測。如裴明濤[1]等提出基于HOG 特征的車輛檢測算法,周行等[2]提出基于HOG 特征和局部二值模式(LBP)特征融合的車輛檢測算法,黎向鋒等[3]提出基于Haar 特征的車輛檢測算法。在受到光照、物體遮擋和車輛重疊的影響下,傳統(tǒng)的車輛檢測方法由于是人工設(shè)計的特征,對于多樣性的變化魯棒性較差,不能滿足實時性要求。
目前,隨著深度學(xué)習(xí)在計算視覺領(lǐng)域的發(fā)展,對于車輛的目標檢測方法主要采用基于深度卷積神經(jīng)網(wǎng)絡(luò)的方法。深度卷積神經(jīng)網(wǎng)絡(luò)能夠自主提取車輛圖像中不同層級的特征,魯棒性更好,解決了上述傳統(tǒng)方法的不足,為車輛目標檢測提供了新的思路?;诰矸e神經(jīng)網(wǎng)絡(luò)的目標檢測算法主要分為兩類:一類是以YOLO[4]、SSD[5]、RefineDet[6]等為代表的分類回歸方法;另一類是以R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9]等為代表的基于候選框的兩階段方法。王斌等[10]結(jié)合特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)提出一種改進的Faster-RCNN 算法對航拍圖像中的車輛進行了檢測,平均檢測精度達到77.2%;吳水清等[11]通過改進損失函數(shù)提出一種改進的SSD 算法進行車輛檢測,其檢測精度可達76.3%;劉肯等[12]借鑒DenseNet 的思想提出改進YOLO 算法對車輛進行檢測,其小目標的檢測精度可達70.7%。
針對經(jīng)典的車輛檢測算法對中小目標車輛仍存在漏檢的問題,本文提出一種改進SSD 算法。該算法在SSD 算法的基礎(chǔ)上設(shè)計了改進的Inception[13-15]模塊替換網(wǎng)絡(luò)中的新增特征提取層,以增強網(wǎng)絡(luò)的特征提取能力,提高檢測速度和中目標車輛的識別率。同時給出多尺度特征融合均衡化網(wǎng)絡(luò)實現(xiàn)車輛特征的多層復(fù)用和融合均衡化,從而提升小目標車輛的檢測效果。通過引入通道注意力機制(SENet)[16],提取更多車輛圖像中含有車輛的通道特征,以在增加較少計算量的同時提高檢測精度。
SSD 算法沿用了YOLO 算法中回歸的思想,但不同于YOLO 算法只利用最高層特征圖進行預(yù)測,SSD 算法利用多尺度特征圖進行分類和位置回歸,檢測小目標效果明顯優(yōu)于YOLO。SSD 算法將原始輸入圖像縮放至固定大小,由改進的VGG16 網(wǎng)絡(luò)和五層級聯(lián)卷積層組成的SSD 網(wǎng)絡(luò)提取目標特征圖,得到尺寸大小為64×64、32×32、16×16、8×8、4×4、2×2、1×1 像素的多尺度特征圖;通過對不同尺寸的特征圖設(shè)置不同長寬比和不同數(shù)量先驗框,可產(chǎn)生一系列邊界框集合,給定后的先驗框會根據(jù)標注框進行IoU 匹配,計算如式(1)所示:
其中:SA表示先驗框的面積;SB表示真實標注框的面積;FIoU表示預(yù)測框和真實框的面積的交集和并集之比。當真實框與先驗框的IoU 值大于閾值0.5 時,則保留該先驗框,且該先驗框的類別就為該真實框的類別,將所有先驗框回歸,使用3×3 的卷積核得到先驗框的類別置信度和位置偏移值兩部分預(yù)測值;最后,通過極大值抑制算法進行邊界框的調(diào)整,以獲得最后的定位邊界框。
SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。
圖1 SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of SSD algorithm
本文提出結(jié)合改進Inception 模塊、多尺度特征融合均衡化網(wǎng)絡(luò)以及注意力機制SENet 的改進SSD算法對復(fù)雜環(huán)境下的車輛進行檢測。改進方法如下:以Inception 網(wǎng)絡(luò)為基礎(chǔ),結(jié)合不同空洞率的空洞卷積[17]提出改進的Inception 模塊,將其替換SSD 算法中的Conv8 層、Conv9 層和Conv10 層,加快計算速度且增加有效感受野,可提取到更多的車輛特征信息;但由于沒有很好地重復(fù)利用具有豐富車輛位置信息的低層特征層和語義信息的高層特征層,導(dǎo)致部分車輛信息在多層傳遞時信息流失,每層得到的特征信息不均衡。本文借鑒特征金字塔網(wǎng)絡(luò)[18]的思想,提出多尺度特征融合均衡化網(wǎng)絡(luò),實現(xiàn)車輛特征的多層復(fù)用和融合均衡化;在SSD 網(wǎng)絡(luò)特征提取層后都接入注意力機制SENet,重新標定特征通道權(quán)重,能夠獲得更多車輛圖像中含有車輛的通道特征,增強網(wǎng)絡(luò)的特征提取能力,進一步提高模型的檢測精度。改進SSD 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖2 改進SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of improved SSD algorithm
1.2.1 改進的Inception 模塊
SSD 算法在基礎(chǔ)網(wǎng)絡(luò)VGG16 后增加的級聯(lián)卷積層中只采用1×1 和3×3 的卷積核進行了一次卷積,對特征的提取能力較弱。為增強SSD 網(wǎng)絡(luò)額外特征層對中目標車輛的特征提取能力,本文提出改進的Inception 模塊。該模塊是在綜合考慮Inception-V1到Inception-V4 對Inception 原始網(wǎng)絡(luò)做出改進的基礎(chǔ)上引入空洞卷積組成的。改進的Inception 模塊網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。在圖3 中,通過3 組不同大小卷積核組成的級聯(lián)卷積層和一個最大池化層并行合并,從增加網(wǎng)絡(luò)寬度的角度來提升模型性能。首先,利用1×1 的卷積在卷積操作前和池化操作后進行降維,極大減少了計算成本;其次,為提取更多車輛目標的細節(jié)特征且進一步提升計算速度,從加深非線性層的角度出發(fā),將5×5 的卷積核替換為能帶來同等感受野的兩個3×3 的連續(xù)卷積;然后,為解決利用不同尺寸的卷積核來獲得不同大小感受野的方法造成的內(nèi)部數(shù)據(jù)結(jié)構(gòu)損失和車輛目標信息丟失的問題,在每條普通卷積并行支路上引入了不同空洞率的空洞卷積(Dilation rate=1,3,5)代替普通卷積,在參數(shù)量不變的情況下增大了有效感受野,并將不同感受野的信息融合,提高網(wǎng)絡(luò)對中目標車輛的特征表示能力;最后,為保留更多的車輛原始特征信息,借鑒殘差結(jié)構(gòu),增加一條剪接支路,進一步提升模型性能;另外,在卷積層后通過批量標準化操作(Batch Normalization,BN)[19]和ReLU 激活函數(shù)的非線性映射,加速網(wǎng)絡(luò)訓(xùn)練速度和增強魯棒性。改進的Inception 模塊相比SSD 算法中的高層特征提取卷積層,對車輛信息的提取能力更強并且加快了網(wǎng)絡(luò)的計算速度,提高了中目標車輛的識別率,故用此模塊替代了SSD 算法中的Conv8 層、Conv9 層和Conv10 層。
圖3 改進Inception 模塊網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of improved Inception module
1.2.2 多尺度特征融合均衡化網(wǎng)絡(luò)
FPN 在SSD 算法自底向上形成的多尺度特征圖基礎(chǔ)上,采用自頂向下的方式從最頂層的特征圖做2 倍上采樣,并把得到的特征圖逐層與前一層的特征圖橫向連接疊加形成新的增強的特征圖,重復(fù)以上步驟,形成特征金字塔,F(xiàn)PN 結(jié)構(gòu)如圖4 虛線框所示。但是FPN 長距離信息流動會導(dǎo)致車輛信息的流失以及更多地關(guān)注相鄰分辨率的這種融合方式會產(chǎn)生車輛特征信息不平衡問題,所以本文在FPN 的基礎(chǔ)上進行改進,提出了多尺度融合均衡化網(wǎng)絡(luò)。
圖4 多尺度特征融合均衡化網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Network structure of multi-scale feature fusion equalization
首先將通過FPN 網(wǎng)絡(luò)形成的每層特征圖根據(jù)上采樣或下采樣等一系列操作變成相同尺度,再進行像素級的聚合均值,然后將聚合均值化的特征圖通過與之前相反的采樣操作形成不同尺度的特征圖,從而得到車輛特征信息更平衡的多尺度特征圖,實現(xiàn)車輛特征的多層復(fù)用和融合均衡化,提高小目標車輛的檢測精度[20-21]。
多尺度特征融合均衡化網(wǎng)絡(luò)具體實現(xiàn)過程如圖4 所示。首先基于SSD 算法生成的多尺度特征圖,考慮到算法的檢測速度,只選取了Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2 層的特征圖構(gòu)成FPN 生成融合后的特征圖{P1,P2,P3,P4,P5},然后對P1、P2分別采用步長為4 和步長為2 的極大值池化生成與P3分辨率一樣的特征圖,對P4、P5分別進行2 倍上采樣和4 倍上采樣生成與P3分辨率一樣的特征圖,再將做變換后的相同大小的5 個特征圖進行求和取均值,得到聚合后的特征圖,接著經(jīng)過一個3×3 的卷積來增強特征。最后將聚合均值后的特征圖通過4 倍上采樣和2 倍上采樣分別得到C1、C2,通過步長為2 和步長為4 的極大值池化分別得到C4、C5,從而得到與之前FPN 相同的多尺度特征圖{C1、C2、C3、C4、C5}。但與FPN 算法生成的特征圖相比,利用相同深度融合的平衡語義特征來增強多層次的特征,使每層包含的車輛語義信息與位置信息更豐富,提高了小目標車輛的識別率。
1.2.3 SENet 模塊
SENet 模塊主要是能讓模型關(guān)注通道與通道之間的關(guān)系,希望模型可以自動學(xué)習(xí)到不同通道特征的重要程度,并對其重要程度進行標定[22]。SENet這種注意力機制可以讓模型更加關(guān)注信息量大的通道特征,而抑制那些不重要的通道特征。SENet 可以分為3 個階段:擠壓(Squeeze),激勵(Excitation)和加權(quán)(Scale),其具體實現(xiàn)方式如圖5 所示。
圖5 SENet 模塊Fig.5 SENet module
首先輸入特征圖x經(jīng)過一系列卷積操作后得到特征圖u,對特征圖u通過全局平均池化(Global Average Pooling)操作進行特征壓縮,得到長度為C2的實數(shù)列,即“擠壓”操作,使較低層也能利用來自網(wǎng)絡(luò)全局感受野的信息。其運算公式如式(2)所示:
其中:H、W表示特征圖的高和寬;uc表示特征圖的第c個通道;uc(i,j)表示第c個通道中的第i行、第j列的像素;zc為擠壓操作的輸出。
然后將squeeze 操作得到的全局特征先經(jīng)過一個全連接層將維度從C2降為12,用ReLU 函數(shù)進行激活,再經(jīng)過一個全連接層將維度升維到原始維度C2,使用sigmoid 激活函數(shù)得到各個通道的權(quán)重系數(shù),即“激勵”操作。運算公式如式(3)所示:
其中:W1和W2為全連接操作;z為擠壓操作的輸出;δ為ReLU 激活函數(shù);σ為sigmoid 激活函數(shù);sc為激勵操作的輸出。
最后將Excitation 操作得到的權(quán)重系數(shù)與特征圖u相乘,實現(xiàn)對特征重要性的重新校準,以此更新特征圖,即“加權(quán)”操作。其運算公式如式(4)所示:
其 中:sc是特征圖第c個通道的權(quán)重是加權(quán)操作的輸出。
由于SENet 本身增加的參數(shù)主要來自于兩個全連接層,對算法的實時性影響較小,因此本文在每個特征層后都加入了SENet。
本次實驗采用的車輛數(shù)據(jù)集是由相機拍攝和從公開數(shù)據(jù)集下載的共2 887 張路面車輛圖片,數(shù)據(jù)集中包含不同顏色、大小、外觀的車輛圖片,并隨機劃分其中的2 300 張為訓(xùn)練集,587 張為測試集。通過LabelImage 圖像標定工具手工標注圖片中的車輛目標區(qū)域以及其所屬類別,生成相應(yīng)的XML 文件,最后將圖片和對應(yīng)的標注文件按照PASCL VOC12 數(shù)據(jù)集格式進行存儲。
本文實驗是在配置為CPU Intel Core i5-8250U、英偉達Tesla V100 顯卡、主頻3.6 GHz 和內(nèi)存8 GB的PC 端上完成。使用的操作系統(tǒng)為Windows10 專業(yè)版,訓(xùn)練和測試框架均為Python3.7.3 環(huán)境下的PaddlePaddle 1.7.1 機器學(xué)習(xí)開發(fā)框架。在模型訓(xùn)練過程中,每次實驗進行8×104次循環(huán)迭代,每迭代5×103次保存一次訓(xùn)練模型,目標類別數(shù)為1,訓(xùn)練批量大小設(shè)為8,采用衰減學(xué)習(xí)率,初始學(xué)習(xí)率設(shè)置為1×10-3,當網(wǎng)絡(luò)訓(xùn)練迭代4×104次和6×104次時,學(xué)習(xí)率分別降為1×10-4和1×10-5。
為更準確地衡量本文所提出算法的性能,本次實驗采用的評價指標為平均精度(Average Precision,AP)和速度指標每秒處理圖片數(shù)(Frame Per Second,F(xiàn)PS)。平均精度AP 是綜合數(shù)據(jù)樣本中某個類別的精確率(P)和召回率(R)的評價指標。其中,精確率是指被正確檢測出來的車輛占全部檢出區(qū)域的百分比,其計算方式如式(5)所示,召回率是指被正確檢測出來的車輛占全部車輛的百分比,其計算公式如式(6)所示:
其中:TP 表示正確檢測出來的車輛數(shù)量;FP 表示非車輛被檢測為車輛的數(shù)量;FN 表示車輛未被檢測出的數(shù)量。
根據(jù)檢測結(jié)果繪制一條縱軸為精確率、橫軸為召回率的P-R 曲線,平均精度值即為P-R 曲線的面積,其計算公式如式(7)所示:
其中:p為精確率;r為召回率。
算法的復(fù)雜度可分為算法的運算復(fù)雜度和空間復(fù)雜度。其中,算法的運算復(fù)雜度即模型的運算次數(shù),常使用浮點運算次數(shù)FLOPs(Floating Point Operations)來衡量,同時,1 GFLOPs=109FLOPs。算法的空間復(fù)雜度即模型的參數(shù)數(shù)量,體現(xiàn)為模型本身的體積。為探究改進SSD 算法相對于SSD 算法的優(yōu)越性,對算法的計算量和模型大小進行了對比,結(jié)果如表1 所示。
表1 不同檢測算法復(fù)雜度對比Table 1 Comparison of complexity of different detection algorithms
從表1 可以看出,改進后的SSD 算法前向傳播一次的GFLOPs 為54.69,所需的計算量遠低于原始的SSD 算法。同時,改進后的SSD 算法模型大小為75.51 MB,比原始SSD 模型大小縮小了近1/4,這在內(nèi)存受限的情況下非常重要。結(jié)果表明,改進后的SSD 算法通過壓縮通道以及在改進的Inception 模塊中使用兩個小的卷積核級聯(lián)代替大卷積核等操作,運算量和參數(shù)數(shù)量相比于原始SSD 算法得以有效削減,更適用于車輛目標檢測。
本文將SSD 算法用改進的Inception 模塊替換了不同的新增特征提取卷積層。因為Conv12 層輸出的特征圖尺寸大小為1×1 像素,不宜使用尺寸3×3 卷積核對其進行特征提取,故只對Conv8、Conv9、Conv10 和Conv11 共4 層新增級聯(lián)卷積層進行了實驗,并與未做任何替換的SSD 算法進行了對比。實驗結(jié)果如表2 所示。從表2 可以看出,將SSD 算法中新增的特征提取層采用改進的Inception 模塊替代較原SSD 算法均有明顯的速度提升效果,在精度上也有小幅上升。在3 種替代方式中,將Conv8 層和Conv9 層采用改進的Inception 模塊替換,在檢測速度上較原SSD 算法提升效果明顯,在精度上也有一定的提升;將Conv10 層也用改進的Inception 模塊替換后,其在速度和精度比上一種替換方式有較小的提升;但將Conv11 層也進行替換后,其速度雖提升了0.13 frame/s,但精度卻下降了0.15 個百分點。綜合考慮,將改進的Inception 模塊替換Conv8、Conv9和Conv10 層時性能提升效果最好,故本文采用此替換方式。
表2 改進Inception 模塊替換不同特征層的性能對比Table 2 Comparison of performance of improved Inception block replacing different feature layers
通過調(diào)用訓(xùn)練過程保存的模型權(quán)重文件,可對車輛數(shù)據(jù)集中的圖片進行相應(yīng)的測試,測試后可自動識別并定位測試圖片中的車輛,顯示相應(yīng)的定位信息和類別信息。不同復(fù)雜背景下車輛的部分測試結(jié)果如圖6 所示。其中粗線矩形邊界框?qū)δ繕塑囕v做出了定位,邊界框的左上角標明了該目標的類別為車輛和被識別車輛的概率。從圖6(a)~圖6(d)可以看出,在不同光照、不同天氣、圖片中車輛有重疊或車輛密集的情況下,模型均能準確識別和定位圖片中的車輛。
圖6 不同背景下模型檢測結(jié)果示例Fig.6 Examples of model detection results under different backgrounds
為驗證本文算法的檢測效果,本文針對SSD、YOLO v4[23]、Faster R-CNN 和本文提出的改進SSD算法在相同的實驗環(huán)境和車輛數(shù)據(jù)集下進行對比實驗。部分實驗結(jié)果如圖7 所示。圖7 中的圖像1 左上角車輛目標小且密集,從圖7(b)和圖7(c)可以看出,YOLO v4、Faster R-CNN 比SSD 算法檢測出了更多的小目標車輛,但仍存在漏檢的現(xiàn)象,而圖7(d)中本文改進的算法能將右上角的車輛全部正確檢測出;圖7 中的圖像2 左上角車輛目標被樹木嚴重遮擋且右上角車輛高度重疊,從圖7(e)~圖7(g)可以看出,原SSD 算法只能檢測出近處的大目標車輛,YOLOv4 算法和Faster R-CNN 能將沒有嚴重重疊和遮擋的車輛目標正確識別和定位,而圖7(h)中本文改進的算法能正確識別圖片中有重疊和遮擋的車輛目標。圖7 結(jié)果表明,本文提出的改進SSD 算法不僅可以檢測到小目標,而且對遮擋目標的識別率也較高,能夠?qū)崿F(xiàn)復(fù)雜背景下更全面、精準的車輛目標檢測。在本文的數(shù)據(jù)集上不同算法實驗后的平均精度和檢測速度如表3 所示。
表3 不同檢測算法性能對比Table 3 Comparison of performance of different detection algorithms
圖7 不同算法模型檢測結(jié)果示例Fig.7 Example of image detection results of different algorithms
從表3 可以看出,本文的改進算法與SSD 和YOLO v4 算法對比,平均精度分別提高了2.65 和1.55 個百分點,檢測速度分別提高了17.41 frame/s和19.07 frame/s,提升效果明顯。Faster R-CNN 在3 種對比算法中檢測精度最高,但在檢測速度上存在明顯劣勢,本文的改進算法相較于Faster R-CNN 算法而言,不僅在檢測速度上有大幅的提高,提高了53.63 frame/s,而且在檢測精度上提升了0.98 個百分點。
為驗證改進后的SSD 算法對特定場景的適用性,對非路面的地下車庫場景進行了車輛檢測。通過自己采集和從互聯(lián)網(wǎng)上下載的地下車庫車輛圖片組成了一個小型車輛測試集,在該測試集上本文算法的性能評估結(jié)果如表4 所示。
表4 在地下車庫場景下不同檢測算法性能對比Table 4 Comparison of performance of different detection algorithms in underground garage scene
從表4 可以看出,本文改進SSD 算法在地下車庫車輛圖片測試集上平均檢測精度和檢測速度分別達到了87.59%和59.51 frame/s,與算法YOLOv4 和Faster R-CNN 相比,在檢測精度和檢測速度上都占據(jù)很大的優(yōu)勢。其次,盡管其平均檢測精度遠高于原始SSD 算法10.82 個百分點,但其檢測速度與其相比也提高了16.03 frame/s,提升效果明顯。實驗結(jié)果表明,本文改進的SSD 算法對于特定的場景,能夠較好且快速地完成檢測任務(wù)。為更加直觀地感受本文改進的SSD 算法的檢測效果,選取檢測圖像進行分析,如圖8 所示。
圖8 地下車庫場景下模型檢測結(jié)果示例Fig.8 Example of model detection results in underground garage scenario
從圖8(a)~圖8(c)可以看出,改進SSD 算法在地下空間內(nèi)的車輛目標較少、重疊程度較小且被遮擋情況不嚴重的情況下,均能表現(xiàn)出較好的檢測效果。而對于如圖8(d)中相對于路面場景包含大量的側(cè)面嚴重重疊的小目標車輛時,改進的SSD 算法能檢測出大部分的重疊小目標,但仍存在一些漏檢的情況,檢測效果有待提升。圖8 結(jié)果表明,本文改進SSD 算法在特定場景地下車庫空間進行車輛檢測時,能正確識別和定位出大部分的車輛,但對極端情況的小目標車輛仍存在少量的漏檢情況,需擴充數(shù)據(jù)集和進一步改進算法,實現(xiàn)在地下車庫空間內(nèi)對車輛更為精準和全面的檢測。
為對圖像中的車輛進行準確且快速的檢測定位,本文提出一種基于改進SSD 算法的車輛檢測算法。該算法通過引入不同空洞率空洞卷積的改進Inception 網(wǎng)絡(luò)模塊代替SSD 網(wǎng)絡(luò)中的Conv8、Conv9和Conv10 層,減少了模型的參數(shù),增強了網(wǎng)絡(luò)對中目標車輛的特征提取能力,提高了檢測速度和精度。為進一步提升對小目標車輛的識別率,設(shè)計多尺度特征融合均衡化網(wǎng)絡(luò),并加入通道注意力機制SENet,加強車輛特征的復(fù)用和融合均衡化。實驗結(jié)果表明,本文算法具備良好的魯棒性和實時性,能夠?qū)崿F(xiàn)實際場景下更全面、精準的車輛目標檢測。