李偉文,李 擎,高 超
(北京信息科技大學(xué) 高動態(tài)導(dǎo)航技術(shù)北京市重點實驗室,北京 100192)
目標(biāo)檢測已成為近年來計算機視覺領(lǐng)域最熱門的研究任務(wù)之一,在無人駕駛車輛、人臉識別、智能交通、目標(biāo)追蹤等領(lǐng)域得到廣泛應(yīng)用。傳統(tǒng)目標(biāo)檢測算法在特征提取階段需要人工選取特征提取方式,例如方向梯度直方圖HOG、局部二值模式算子LBP、尺度不變特征變換SIFT等。但該類方法受光照、目標(biāo)顏色紋理及背景的影響較大,魯棒性較差。
隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測算法成為主流。代表算法有基于候選區(qū)域的RCNN[1]、R-FCN[2]、Fast-RCNN[3],基于回歸的YOLO[4]、SSD[5]、Efficient-net[6]等。但基于候選區(qū)域的算法運行速度慢,難以滿足實時性要求;基于回歸的目標(biāo)檢測算法速度快,精度卻有所降低。文獻[7]提出一種基于改進Faster R-CNN的復(fù)雜環(huán)境車輛檢測算法,提高了運行速度,降低了漏檢率。文獻[9]設(shè)計了基于輕量級Mobile-Net的車輛目標(biāo)檢測網(wǎng)絡(luò),減少了算法的計算量。其將通道域注意力及目標(biāo)中心區(qū)域預(yù)測模塊引入深度網(wǎng)絡(luò)中,提高了對目標(biāo)的檢測精度。文獻[10]提出一種基于特征融合的感受野模型Receptive Field Block,以增強對小目標(biāo)的檢測效果。文獻[11]通過修改YOLOv3的特征提取網(wǎng)絡(luò)來提高對車輛目標(biāo)的檢測精度。
本文在SSD算法中增加自注意力機制ULSAM(ultra-lightweight subspace attention module)[12],并設(shè)計了特征融合模塊來提高算法的精確度,對提高無人車的安全性、實用性有一定意義。
SSD目標(biāo)檢測算法的網(wǎng)絡(luò)結(jié)構(gòu)分為3個部分,分別是主干網(wǎng)絡(luò)VGG16、附加網(wǎng)絡(luò)層和預(yù)測層,如圖1所示。在特征提取過程中會生成多個特征圖,需要用到的有效特征圖為Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)
在有效特征圖上,以每個像素點為中心,生成數(shù)量不同、長寬比不同的先驗框。不同尺寸、位置的先驗框用于快速檢測不同大小的目標(biāo)。生成先驗框的邊長為
(1)
式中:m為先驗框的個數(shù),原SSD算法中為4或6;Smax是先驗框邊長的最大值,Smin是先驗框邊長的最小值。不同尺度特征圖上先驗框的個數(shù)分別為[4,6,6,6,4,4],長寬比為[1,2,3,1/2,1/3]。
在深度卷積網(wǎng)絡(luò)中,注意力機制可看作是一種資源分配的機制,通過調(diào)整網(wǎng)絡(luò)的權(quán)重來提高預(yù)測效果。因此本文在算法的有效特征層后增加自注意力機制ULSAM。
(2)
(3)
(4)
式中:maxpool3×3,1為核為3×3、填充為1的最大池化操作,DW1×1為Depth-wise卷積;PW1為Point-wise卷積;?表示同位置元素相乘;⊕表示同位置元素相加。
本文通過將深層特征圖進行反卷積操作后與淺層特征圖進行像素級融合,得到同時包含豐富語義信息和細節(jié)特征信息的特征圖,來提高算法對目標(biāo)的識別精度。其中,反卷積也稱為轉(zhuǎn)置卷積,是一種上采樣操作,可按照設(shè)置的參數(shù)來增大特征圖的分辨率。
選擇加權(quán)融合的方式,把處理后尺寸相同的特征圖按照一定的權(quán)重相加。由于目的是提高檢測對目標(biāo)的識別精度,而低層特征圖中包含更多的目標(biāo)細節(jié)特征信息,因此在融合時將低層特征的權(quán)重適當(dāng)增大,特征加權(quán)融合的計算公式為
f(x)=α1x1+α2x2+…+αnxn
(5)
本文中的特征融合方式是從最底層特征圖開始,將其反卷積后與高層特征圖融合,并將融合后的特征圖作為新的底層特征圖,然后多次重復(fù)上述操作。具體流程如下:
對特征圖Conv11_2進行反卷積操作,與Conv10_2進行融合得到new_Conv10_2;對new_Conv10_2進行反卷積操作,與Conv9_2進行融合得到new_Conv9_2;對特征圖Conv8_2進行反卷積操作,與Conv7融合得到new_Conv7。在融合Conv4_3和new_Conv7時,由于特征圖尺寸相對較大,為防止過擬合及加快模型的收斂速度,采用了文獻[13]中的融合方式,對new_Conv7進行一次反卷積操作、核為3的卷積操作以及BatchNorm操作;對Conv4_3進行一次核為3的卷積操作以及BatchNorm操作。最后融合兩個BN層輸出的結(jié)果并使用Relu激活函數(shù)得到new_Conv4_3。最后對特征圖new_Conv4_3、new_Convq_2及經(jīng)過注意力機制處理后的特征圖Conv7、Conv_2、Conv10_2、Conv11_2進行回歸和分類預(yù)測。本文的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,其中new_Conv_i是新的特征圖,Conv_i是原特征圖,BN_i是BatchNorm層,ULSAM_i是注意力模塊,5個輸入?yún)?shù)分別為輸入特征圖和輸出特征的的通道數(shù),輸入特征圖的高和寬、分組數(shù)。
圖2 本文網(wǎng)絡(luò)結(jié)構(gòu)
實驗硬件配置:E5-2670、GeForce GTX1080ti顯卡,32 GB內(nèi)存的服務(wù)器。軟件環(huán)境配置:Ubuntu16.04系統(tǒng)、CUDA、深度學(xué)習(xí)框架Pytorch,超參數(shù)設(shè)置如表1所示。
表1 超參數(shù)設(shè)置
本文中的實驗主要分為兩部分,第一部分選取KITTI為數(shù)據(jù)集,驗證本文算法在無人車道路目標(biāo)檢測方面的能力。
第二部分選取PASCAL VOC數(shù)據(jù)集,驗證本文算法的泛化能力。選擇VOC2007和VOC2012的訓(xùn)練集部分作為訓(xùn)練數(shù)據(jù)集,將VOC2007的測試集部分作為測試數(shù)據(jù)集。
在訓(xùn)練過程中分別記錄本文算法和原SSD算法的Loss值,并繪制成曲線,如圖3所示。
圖3 模型訓(xùn)練Loss曲線
在圖3中,位于下方的深色曲線是本文算法的Loss值,位于上方的淺色曲線為原算法的Loss值,可看出本文算法的Loss更小,且收斂速度更快。
計算本文算法和原SSD算法在KITTI數(shù)據(jù)集上的檢測精度mAP,如表2所示,本文算法的mAP提升了3.8%,精度更高。
表2 KITTI數(shù)據(jù)集實驗結(jié)果對比 %
采集實際道路行駛環(huán)境的圖像,測試本文算法與原算法對車輛目標(biāo)檢測的能力,檢測結(jié)果如圖4所示。
圖4 車輛目標(biāo)檢測結(jié)果
圖4中第一列的3張圖片為本文算法的檢測結(jié)果,第二列為原算法的檢測結(jié)果。對比檢測結(jié)果可知,本文算法對車輛目標(biāo)的識別效果更好,能有效檢測出原算法忽略的目標(biāo)。
將本文算法與Fast-RCNN等算法在PASCAL VOC數(shù)據(jù)集上的測試結(jié)果進行對比,如表3所示。
從表3可以看出,本文算法的mAP相較于Fast-RCNN、YOLO算法有明顯提升,相對于原SSD算法提升了1.3%。由于PASCAL VOC中包括的目標(biāo)類別較KITTI多,mAP的提升表明本文算法有一定泛化能力。
表3 PASCAL VOC數(shù)據(jù)集實驗結(jié)果對比 %
為驗證多尺度特征融合的效果,將融合前后的特征圖Conv4_3可視化,如圖5所示。
圖5 Conv4_3特征圖可視化結(jié)果示意
圖5(b)左側(cè)是特征融合前的Conv4_3可視化結(jié)果,右側(cè)是特征融合后Conv4_3可視化結(jié)果,對比可看出,融合后的特征圖中包含了更多的目標(biāo)細節(jié)特征信息,驗證了特征融合的作用。
為提高無人車目標(biāo)檢測精度,本文對原SSD目標(biāo)檢測算法進行改進,將高層特征圖進行反卷積操作后與底層圖融合,同時在有效特征圖后引入自注意力機制,以增強對目標(biāo)的識別能力。經(jīng)實驗驗證,本文方法在一定程度上提高了SSD算法對目標(biāo)的檢測精度,能有效檢測出原算法忽略的目標(biāo)。在未來的研究工作中,將繼續(xù)研究網(wǎng)絡(luò)模型的優(yōu)化問題,提高算法的檢測精度。