肖雨晴楊慧敏
(東北林業大學 工程技術學院,哈爾濱 150040)
在現代交通追求更安全、更智能的背景下,自動駕駛技術發展迅速[1]。深入研究自動駕駛問題,不僅可以促進汽車與人工智能、通信等技術的深度融合,還可以推動自動駕駛生態產業的發展[2]。在自動駕駛技術中,道路交通目標的精準檢測是關鍵的研究問題。傳統算法利用哈爾特征(Haar-like feature,Haar)、局部二值模式(Local binary pattern,LBP)和方向梯度直方圖(Histogram of oriented gradient,HOG)等特征與機器學習結合的方式檢測識別交通場景目標,檢測效率低,難以實現不同尺度目標的實時檢測定位[3-6]。隨著研究的深入,基于深度學習的目標檢測算法憑借檢測速度快的優點被廣泛應用在道路目標檢測[7-8]。例如,Xu等[9]利用通道注意力(Squeeze and excitation network,SENet)改進YOLOv3算法,車輛檢測的速度和精度均有提升,但算法的參數量增大;Choi等[10]通過高斯建模邊界框坐標,實現了檢測速度與精度的良好平衡,但對圖像尺寸有一定要求;Chen等[11]通過剪枝YOLOv3_tiny算法來檢測車輛目標,大幅提升了檢測速度,可以實現嵌入式設備應用,但對小目標和遮擋目標檢測存在局限性。Cai等[12]利用可變卷積構造新型主干網絡并添加特征融合模塊,解決了車載計算平臺資源有限問題,促進了自動駕駛的研究。
盡管基于深度學習的目標檢測算法表現出強大的優越性,但交通場景目標檢測仍存在多尺度信息丟失和小目標檢測精度低的問題[13]。因此,本文提出一種適應交通場景的YOLOv3_4d目標檢測算法。主要解決如下問題:①四尺度檢測網絡。在檢測網絡上增加一個檢測尺度,獲取不同尺度特征信息;②注意力殘差單元。設計注意力殘差單元構造主干網絡(DarkNet_SE),增強特征圖中關鍵信息的權重;③特征增強模塊。利用不同卷積核的最大池化對特征圖進行增強操作,獲取高維融合特征,提高目標檢測精度;④損失函數。引入GIoU函數對邊界框回歸,優化反向傳播過程,替換置信度損失函數為Focal函數,平衡正負樣本,增強算法的魯棒性。
交通場景中小目標覆蓋區域較小,檢測十分困難。圖1中綠色框為未檢測出的目標。經過分析,小目標檢測困難的原因主要有以下3點[14-15]:①特征信息較少。小目標在圖像中占用像素少,標注面積占比小,特征信息不易提取,且易受噪聲、遮擋等因素干擾,進而無法精準定位;②卷積神經網絡下采樣率大,在卷積神經網絡下采樣提取特征過程中,輸出特征圖尺度不斷縮小,當下采樣率大于小目標尺寸時,傳遞的特征圖則不能包含需要的小目標信息;③正負樣本分布不均。常用數據集包含的小目標樣本數占比少,而中、大樣本數居多,在訓練過程中,算法會更加關注中、大目標樣本而忽略小目標樣本,從而使小目標樣本不能充分訓練,造成小目標檢測困難。

圖1 小目標檢測效果Fig.1 Small targets detection effect
道路場景中存在車輛由近及遠、由遠及近的尺度變化情況[16]。圖2中,道路目標種類多樣,不同目標尺度變化很大,甚至同種類型目標也出現了一定程度變形等情況。車輛在行駛過程中攝像頭的視角和高度存在差異,會造成多尺度信息丟失的問題,影響交通目標檢測的效果。

圖2 不同道路交通場景Fig.2 Different road traffic scenes
改進算法由主干網絡(Darknet_SE)、特征融合網絡和檢測網絡3部分組成,如圖3所示。依據卷積網絡在大尺度特征圖上檢測小目標效果好的特點,在YOLOv3算法原有3個檢測尺度的基礎上,對特征融合網絡和檢測網絡進行設計,增加1個檢測小目標的大尺度特征輸出圖,設計的算法稱為YOLOv3_4d算法。為適應新增特征圖的尺度變化,特征融合網絡在原先2個拼接模塊(Concat)的基礎上新增1個拼接模塊,同時在主干網絡后增加1個特征增強模塊。主干網絡第3個殘差塊輸出的64×64特征圖通過1次上采樣與第2個殘差塊輸出的特征圖128×128進行拼接,隨后交替使用3×3和1×1的卷積操作映射得到張量數據(YOLO_Head)。主干網絡輸出的4、8、16、32倍下采樣的特征向量,經過一系列特征融合形成具有4層檢測層的檢測網絡,分別對小、中、大目標獨立檢測。
由表1可知,主干網絡(DarkNet_SE)由5個殘差塊組成,每個殘差塊由多個注意力殘差單元構成,注意力殘差單元由卷積層(Conv2d)和注意力(SE)模塊組成。其中,Conv2d是基本組成構件,包括卷積,批歸一化和Leaky Relu激活函數。注意力殘差單元可以獲取高維信息,在遠景小目標的檢測上考慮更加充分。

圖3 YOLOv3_4d算法Fig.3 YOLOv3_4d algorithm

表1 主干網絡Tab.1 Backbone network
通道注意力(SENet)模塊易于實現,并且很容易引入現有的算法框架中,不僅如此,SENet模塊能夠顯著改善網絡的特征提取能力,并且對算法的負面影響較小[17-19]。SENet結構如圖4(a)所示,將SENet模塊改進,提取深層次圖像語義信息。
注意力殘差單元結構如圖4(b)所示,具體實現如下內容:①輸入為特征圖H×W×C,經過2層卷積(Conv2d)處理,特征圖的尺寸與通道數保持不變;②處理后的特征圖通過全局平均池化層生成特征圖1×1×C,然后輸入第1層全連接層后特征圖變為1×1×C/r,利用激活函數ReLU非線性變換后輸入第2層全連接層恢復為1×1×C,r為縮放系數,取值為16;③全連接層處理后的1×1×C特征圖通過Sigmoid函數生成權重系數矩陣,再將權重系數乘以對應的通道數生成H×W×C特征圖。④將卷積(Conv2d)輸出特征圖與H×W×C特征圖進行相加操作獲取融合特征圖。
交通場景圖像中含有豐富的空間與位置信息,應該充分提取其特征,提高目標檢測效果。而對于目標檢測任務,網絡的層數達到一定數量時再繼續增加,會發生精度下降等情況[20]。所以算法設計特征增強模塊,利用不同卷積核的最大池化對主干網絡輸出的特征圖進行深度提取,增強特征圖的表現性能,并通過跳躍連接實現深層特征與增強特征的融合[21-22]。
特征增強模塊如圖5所示,輸入尺度為H×W×C的特征圖,使用卷積核為5、9、13的3個最大池化對特征圖進行特征增強并利用Concat模塊拼接不同尺度增強特征圖,融合特征圖尺度不變,但通道數由C擴大為4×C,再經過卷積(Conv2d)降維通道數為C進行目標預測。

圖4 注意力殘差單元Fig.4 Res_block_SE unite

圖5 特征增強模塊Fig.5 Feature enhance module
YOLOv3算法的邊界框損失采用均方差損失函數,該函數主要有2方面不足:一是4個坐標的預測是獨立的,與實際情況不符;二是4個坐標沒有實現正則化[23]。在此基礎上,曠世科技提出IoU損失函數(公式中用IoU表示),將4個坐標看作整體進行預測,使預測更為精確。但IoU仍然有一定局限性,當2框之間沒有重疊面積時,不能預測目標[24]。因此,算法引入GIoU函數(公式中用LossGIoU表示),如公式(1)和(2)所示[25]。

式中:IoU為預測框(b)與真實框(bgt)的交并比;B為真實框與預測框相并的面積;Ac為包含真實框與預測框的最小包閉區域面積。
此外,在訓練過程中一些難以檢測的正樣本不能充分學習,制約交通目標檢測效果。所以,算法引入Focal函數(公式中用LossFocol表示)作為置信度損失函數,如公式(3)所示。該函數是在交叉熵函數中添加動態因子,減少易分樣本損失,增大難分樣本損失,加強網絡對難樣本的學習和挖掘[26]。

式中:α代表平衡參數,取值為0.25;γ代表聚焦參數,取值為1.5;y′為預測標簽概率。
至于目標分類損失仍采用交叉熵函數(公式中用LLosscls表示),如公式(4)所示,y為真實標簽概率。所以,改進算法的損失函數(公式用Loss表示)如式(5)所示。

(1)BDD 100K數據集[27]。該數據集是目前內容最具多樣性的自動駕駛數據集,共有70 000張訓練圖像,10 000張測試圖像,包含公交汽車、交通標志和騎行人等10類目標。數據集標簽采用json格式,訓練前將格式轉為符合YOLO算法的txt格式。為平衡不同類別樣本的數量,將Train類目標去除,構建包含9類目標的交通場景數據集。
(2)VOC 2012數據集[28]。該數據集是目標檢測任務的基準數據集,來自Pascal VOC計算機視覺挑戰賽,共有11 540張圖像,訓練圖像5 717張,測試圖像5 823張。包含車輛、行人和自行車等20個類別,標簽統一采用xml格式,需要進一步轉換為txt格式。
實驗軟件平臺為Ubuntu 18.04系統,Cuda 10.2,硬件平臺為Intel (R) Xeon (R) CPU E5-2678 v3
處理器和RTX 2080Ti顯卡,內存11 G。編程語言為Python 3.6,使用Pytorch 1.6.0框架訓練算法。訓練時采用隨機梯度下降法優化損失函數,初始學習率為0.001,批量大小為8。
算法采用平均精度均值(mean Average Precision,mAP)作為評價指標,如公式(6)—(9)所示。其中,大(大于96×96像素)、中(小于96×96像素,大于32×32像素)、小(小于32×32像素)目標按照COCO數據集劃分[29]。


式中:TP為真正例;FP為假正例;FN為假負例;Precision為準確率;Recall為召回率;AP為準確率與召回率下的面積;mAP值越高表示算法在全部目標檢測中的綜合性能越高。
另一個重要的評價指標是算法的檢測速度,單位為每秒幀率(Frames per second,FPS),即每秒內檢測的圖像數量。每秒內處理的圖像越多,表示算法的實行性越好。
3.4.1 損失函數實驗結果
改進算法的Loss值為組合損失函數值,由邊界框損失、置信度損失與分類損失獲得。實驗采用遷移學習手段,在獲得預訓練權重下迭代10個Epoch(BDD 100K)和30個Epoch(VOC 2012),在第3個Epoch和第4個Epoch后損失函數逐漸趨于穩定。由圖6可知,YOLOv3_Loss算法的損失值明顯低于YOLOv3算法,并且擬合過程平穩,收斂效果好。

圖6 損失函數實驗結果Fig.6 Experimental results of loss function
3.4.2 BDD 100K實驗結果
實驗依次改進四尺度網絡、注意力殘差單元、特征增強模塊和損失函數4個部分進行消融實驗。由表2可知,當對所有模塊進行改進時,算法的檢測性能提升顯著。相對YOLOv3算法,Ours算法的mAPS值增加了2.3%,mAPM和mAPL值分別增加了4.7%和5.4%。此外,實驗結果顯示注意力殘差單元和四尺度檢測網絡對檢測效果的提升更為重要。當改進四尺度檢測網絡時,YOLOv3_FD算法的mAP50值增加了2.2%,mAPS值增加了1.6%;而當網絡添加注意力殘差單元時,YOLOv3_SE算法的mAP50值大幅增加了8.6%,mAPS值增加了2.2%。雖然改進算法利用GIoU函數和Focal函數對于mAP50值來說僅僅增加了1.8%,但在網絡收斂方面發揮了自身的作用。另外,YOLOv3_FE算法添加特征增強模塊的mAP50值增加了1.5%。

表2 BDD 100K實驗結果Tab.2 BDD 100K experimental results %
3.4.3 VOC 2012實驗結果
實驗進一步驗證改進算法的檢測效果。由表3可知,算法改進四尺度檢測網絡、注意力殘差單元、特征增強模塊和損失函數4個部分的mAP50值分別為81.1%、82.3%、81.2%和81.1%。在經過多次訓練后,實驗發現替換注意力殘差單元,YOLOv3_SE算法的mAPS值、mAPM值、mAPL值分別增加了2.7%、4.6%、2.7%,優化效果較明顯。其次為增加特征增強模塊,YOLOv3_FE算法的mAPS值、mAPM值、mAPL值分別增加了2.5%、4.6%、2.3%。算法增加四尺度檢測對mAP值提升不大,YOLOv3_FD算法的mAPS值、mAPM值、mAPL值分別增加了2.3%、4.6%、2.2%。當對4種模塊進行改進時, Ours算法的mAPS值增加了3.2%,mAPM值、mAPL值分別增加了5.1%、3.0%。改進算法的mAP50值與MAP75值分別增加了4.0%和3.1%,算法的檢測精度有明顯提升。

表3 VOC 2012實驗結果Tab.3 VOC 2012 experimental results %
3.4.4 對比實驗結果
實驗將改進算法與其他算法比較,驗證改進算法的有效性。由表4可知,BDD 100K數據集上,改進算法的mAP50值為30.0%,相比YOLOv3、YOLOv4_tiny[30]、CenterNet算法,mAP50值分別增加了9.2%、2.0%、21.7%。改進算法的檢測速度為11幀/s,檢測速度一般。VOC 2012數據集上,改進算法的mAP值相對SSD[31]、YOLOv3、YOLOv5s[32]算法增加了9.1%、4.0%、4.0%,檢測速度需要進一步提高。

表4 對比實驗結果Tab.4 Experimental results of comparison
3.4.5 算法測試
實驗選取部分圖像進行可視化。由圖7可以明顯看出,YOLOv3算法出現了部分漏檢和誤檢現象,且對小目標檢測效果較差。改進算法可以全面檢測出惡劣天氣環境下道路交通場景目標,魯棒性較高,能夠定位出中心點和目標框的精確位置,并且小目標的檢測效果優良。但也出現了誤檢現象,可以進一步深入研究后處理算法等方面[33-34]。

圖7 算法測試Fig.7 Algorithm demo
針對道路小目標檢測精度低和多尺度信息丟失的問題,本文提出改進的YOLOv3_4d算法。算法首先設計四尺度檢測網絡,有效檢測不同尺度目標,緩解了不同目標尺度差異帶來的信息丟失等負面影響。其次,算法設計注意力殘差單元構造主干網絡,添加特征增強模塊,獲取深層次特征信息。另外,算法引入GIoU和Focal設計損失函數,加快收斂速度,平衡正負樣本。實驗選用BDD 100K和VOC 2012數據集,結果表明改進算法的mAP50值分別增加了9.2%和4.0%,對小目標檢測效果良好,符合交通場景目標檢測應用需求。