陳艷菲,晏彰琛,周 超,黃鈺量
(武漢工程大學 電氣信息學院,武漢 430205)
車輛檢測是自動駕駛技術的基礎,車輛檢測的高精度與實時性對于自動駕駛技術的實現至關重要[1],在自動駕駛場景中,由于其它車輛與車載攝像頭的距離不同,造成車輛在車載攝像頭中的成像尺度不同,現階段的車輛檢測算法,對大目標車輛檢測效果較好,但容易漏檢小目標車輛[2],嚴重威脅自動駕駛技術的安全性。
傳統目標檢測算法的泛化性和魯棒性較差[3],難以適用于復雜的自動駕駛場景。基于深度學習的目標檢測算法,以其檢測精度高、速度快,廣泛應用于自動駕駛領域[4]。基于深度學習的目標檢測算法分為以R-CNN 系列[5-7]為代表的基于候選區域生成的雙階段目標檢測算法,和以YOLO 系列[8-11]、SSD(single shot multibox detector)[12]為代表的直接對目標類別和位置進行回歸的單階段目標檢測算法。其中雙階段目標檢測算法檢測速度慢,不滿足實時檢測的要求。單階段目標檢測算法檢測速度快,滿足實時檢測的要求,但是檢測精度不如雙階段高。由于自動駕駛技術對目標檢測算法實時性的要求,目前單階段目標檢測算法開始應用于自動駕駛場景。文獻[13]改進YOLOv4 算法,針對YOLOv4 算法對小目標檢測效果不足,設計了新的特征融合網絡PAN++,使用5 個檢測尺度來提高自動駕駛場景小目標的檢測精度,但改進算法的檢測速度慢。文獻[14]提出輕量車輛檢測算法GS-YOLO,使用輕量級網絡GhostNet 替換YOLOv4 的主干特征提取網絡,然后結合深度可分離卷積,大幅度減少算法的內存占用和算力要求,適用于算力不足的嵌入式設備,但算法的檢測精度不高。
上述改進算法均存在難以平衡目標檢測精度和速度的問題。本文基于YOLOv4 算法,改進YOLOv4 的特征融合網絡,增加小目標檢測層,使得算法能夠檢測到更小的目標; 然后將EIoU 損失函數作為YOLOv4 的邊界框回歸損失函數,降低模型的訓練損失,提高目標的定位精度與檢測精度。經實驗證明,本文提出改進的YOLOv4 算法,在滿足實時檢測的條件下,較原YOLOv4 算法,在各類車輛的檢測精度上均有明顯提升。
YOLOv4[11]是一種兼具檢測精度和速度的單階段目標檢測算法,YOLOv4 的網絡結構可以分為3個部分:
(1)主干網絡:YOLOv4 使用CSPDarkNet53[15]作為主干特征提取網絡,將輸入416×416 尺寸的圖像分別提取52×52、26×26、13×13 這3 種不同尺度的特征圖,作為頸部特征融合網絡的輸入。
(2)頸部:為了加強目標的特征提取,YOLOv4首先構建了SPP[16](spatial pyramid pooling)結構,增強13×13 尺度特征圖的感受野,然后利用PANet[17](path aggregation network)結構,融合主干網絡提取的3 種不同尺度特征圖,將特征圖的淺層與深層信息進行融合,輸出兼具深層語義信息和淺層位置信息的52×52、26×26、13×13 尺度的檢測層。
(3)預測:利用頸部輸出的3 層檢測層,其中每層檢測層分配3 個錨框,通過調整錨框的中心坐標、寬、高等參數,對輸入圖像進行目標檢測,輸出目標的類別、置信度、位置信息。
在交通圖像數據集KITTI 中,標注的目標車輛先驗框寬高如圖1 所示,可知駕駛場景中由于視距造成的小目標車輛十分普遍。雖然YOLOv4 算法使用了多尺度目標檢測策略,利用52×52 檢測層去檢測小目標,但該檢測層是由主干網絡的8 倍下采樣特征層,再經過特征融合網絡生成,經過的卷積層較多,損失了大量的淺層位置信息,且小目標車輛在圖像中所占的像素較少,經過深層卷積網絡后,導致小目標車輛的特征信息丟失,造成小目標車輛漏檢。

圖1 KITTI 數據集標注車輛大小散點圖Fig.1 Scatter diagram of vehicle size marked on KITTI dataset
針對上述問題,為了保留有效的淺層位置信息,輸出主干網絡的4 倍下采樣特征層,改進YOLOv4的特征融合網絡,將4 倍下采樣特征層與其它特征層進行融合,新增104×104 尺度的檢測層。改進YOLOv4的網絡結構如圖2 所示,能夠檢測到更小的目標,而且充分地發揮了淺層特征層的位置信息與深層特征層的語義信息,降低小目標車輛的漏檢率。

圖2 改進YOLOv4 網絡結構Fig.2 Improved YOLOv4 network architecture
損失函數能夠衡量模型與實際數據之間的差距,是模型訓練過程中十分重要的部分,合適的損失函數有助于提高模型的檢測精度。
YOLOv4 使用CIoU[18]損失函數計算邊界框的回歸損失,CIoU 的計算公式為

式中:IoU(intersection over union)表示預測框與真實框的交并比;ρ2(b,bgt)表示預測框與真實框中心點的距離;c2表示預測框與真實框的最小閉包框對角線距離;wgt與w 分別表示真實框和預測框的寬;hgt與h 分別表示真實框和預測框的高。
CIoU 對寬高縱橫比定義比較模糊,而且其寬高縱橫比不能代表實際數據的預測框與真實框之間的寬高比。當{w=kwgt,h=khgt∣k∈R+}時,會出現υ=0的情況;以及υ 對w,h 梯度的符號相反,如式(4)、式(5)所示,當w 或h 中一個增加時,另一個就會減少,以上兩點顯然不符合模型訓練過程中預測框的寬高變化情況[19]。


EIoU 在CIoU 的基礎上進行改進,解決了CIoU對寬高縱橫比定義的問題,明確了預測框與真實框在寬高上的差異,計算公式如式(6)所示。因此采用EIoU 損失函數作為YOLOv4 的邊界框回歸損失函數。

式中:cw,ch分別表示預測框與真實框最小閉包框的寬高;ρ2(w,wgt),ρ2(h,hgt)分別表示預測框與真實框寬和高距離。
實驗軟硬件環境配置情況如表1 所示。

表1 實驗軟硬件環境Tab.1 Experimental software and hardware environment
本文在自動駕駛領域使用最為廣泛的KITTI 數據集上開展實驗。KITTI 訓練集標注了7481 張圖像,包含鄉村、市區、高速公路等道路場景,每張圖像中最多存在15 輛車,且目標還有不同程度的遮擋與截斷[20]。數據集一共包含8 個類別:Car,Van,Truck,Tram,Pedestrain,Person,Cyclist,Misc。
在數據集的準備階段,本文保留其中的Car,Van,Truck 三類,刪除其它類別,然后將不含目標的標注文件和圖像刪除。KITTI 數據集剩余6798 張圖像和對應的標注文件,然后將數據集以8∶1∶1 劃分為訓練集,驗證集與測試集。
在數據處理階段,首先將圖像統一縮放到416×416 大小作為輸入,為了增強模型對小目標的訓練效果,采用Mosaic 數據增強的方法,在訓練集中隨機挑選4 張圖像,通過隨機縮放、裁剪、翻轉、色域變化等方式拼接成一張新的圖像,如圖3 所示,并加入到訓練集中進行訓練。

圖3 Mosaic 數據增強Fig.3 Mosaic data enhancement
對于檢測錨框的選取,根據本文改進YOLOv4算法的要求,采用K-Means 聚類算法,將KITTI 數據集中車輛錨框的寬高聚為12 類,錨框的聚類與分配結果如表2 所示。

表2 KITTI 數據集錨框聚類與分配結果Tab.2 Anchor box clustering and allocation results of KITTI dataset
為了加速模型的訓練,引入遷移學習的思想,在模型訓練過程中加載主干網絡預訓練權重,并將模型的訓練分為2 個階段,第一階段凍結網絡主干,對特征融合網絡參數進行微調,初始學習率(learning rate)為0.001,批量大小(batch size)為16,訓練50輪;第二階段解凍主干網絡,對整個模型進行訓練,初始學習率為0.0001,批量大小為4,訓練250 輪。兩個階段均采用隨機梯度下降法(SGD),動量(momentum)為0.9,權值衰減(weight_decay)為0.0005。本文改進YOLOv4 算法在訓練過程中的損失曲線如圖4 所示。

圖4 改進YOLOv4 算法損失曲線Fig.4 Loss curve of improved YOLOv4 algorithm
改進YOLOv4 算法的訓練損失和驗證損失隨著訓練輪次的增加不斷降低,模型在100 輪之后趨于穩定,逐漸收斂,沒有產生欠擬合和過擬合現象,最終訓練損失收斂在1 左右,驗證損失收斂在1.5左右。
為了驗證上述改進策略的有效性,設計消融實驗,所有模型的訓練方法和訓練環境均一致。首先以YOLOv4 作為基準算法,然后驗證新增小目標檢測層以及采用EIoU 損失函數作為YOLOv4 的邊界框回歸損失函數的檢測效果。消融實驗結果如表3所示。

表3 消融實驗結果Tab.3 Ablation experimental results
由表3 可知,新增小目標檢測層對YOLOv4 車輛檢測算法的檢測精度提升很大,對Car,Truck,Van的檢測精度均有明顯提高,平均檢測精度(mAP)提高2.38%;使用EIoU 改進YOLOv4 算法的損失函數后,平均檢測精度提高0.9%。因此新增小目標檢測層,使用EIoU 改進損失函數,對YOLOv4 算法的檢測精度均有提高。雖然整體改進YOLOv4 算法的檢測速度下降3.07 幀/s,但算法的平均檢測精度提高2.84%,而且改進YOLOv4 算法的檢測速度也達到37.12 幀/s,滿足自動駕駛場景實時檢測的需求。
為了直觀驗證改進YOLOv4 算法的有效性,從測試集中選取3 幅有代表性的圖像,使用本文改進YOLOv4 算法進行車輛目標檢測,結果如圖5 所示。可知本文改進YOLOv4 算法對小目標車輛以及存在遮擋的車輛都有很好的檢測效果。

圖5 改進YOLOv4 算法檢測結果Fig.5 Improved YOLOv4 algorithm detection results
為了驗證改進YOLOv4 算法的優越性,選取具有代表性的目標檢測算法SSD,CenterNet[21],EfficientDet[22],YOLOv3,YOLOv5 在相同的實驗條件和數據集下,進行車輛目標檢測的性能對比實驗,檢測結果如表4 所示。可知本文改進YOLOv4 算法在輸入圖像尺寸較小的情況下,檢測精度最高。在要求實時檢測與高精度檢測的自動駕駛場景中,本文改進YOLOv4 算法相比其它算法更優。

表4 目標檢測算法性能對比Tab.4 Performance comparison of target detection algorithms
針對自動駕駛場景車輛檢測算法對遠距離小目標車輛檢測效果不好的問題,本文在數據處理階段采用Mosaic 數據增強的方法,加強模型對小目標車輛的訓練,然后提出改進YOLOv4 算法,設計新的特征融合網絡以及改進YOLOv4 算法的邊界框回歸損失函數,最后使用K-Means 聚類算法選出更合適的錨框,提升了模型檢測精度。相比SSD,YOLOv5 等具有代表性的目標檢測算法,本文提出改進YOLOv4 算法更適合自動駕駛場景的車輛檢測。但是本文改進YOLOv4 算法模型較大,未來在車載端部署,對車載系統的存儲空間和算力有較高的要求,下一步將進行車輛檢測算法的輕量化研究。