趙一兵,邢淑勇,劉昌華,李賓,王威淇,王?,|
1.大連理工大學 汽車學院,遼寧 大連116204
2.廣東交通職業(yè)技術學院 運輸與經(jīng)濟管理學院,廣東 廣州 510650
對于自動駕駛而言,隨著目標檢測算法研究的不斷深入,通用的目標檢測算法已經(jīng)基本能夠滿足一般交通場景下的目標檢測問題。但在復雜交通場景下,存在大量的目標遮擋和小目標檢測問題,檢測精度難以滿足要求。因此解決密集目標遮擋以及小目標檢測問題是復雜交通場景下目標檢測算法的關鍵,近年來也成為目標檢測領域的研究熱點。
李松江等[1]和Cai等[2]提出了Cascade R-CNN算法,通過4 個階段的級聯(lián)分類器調整交并比(intersection overunion,IoU)閾值,減少了檢測框的噪聲干擾,對遮擋目標和小目標的檢測精度有一定的提高;陳幻杰等[3]把目標進行分類處理,對于小占比目標,利用反卷積和區(qū)域映射操作,在高分辨率特征圖上進行特征提取,實現(xiàn)了對小目標的檢測;李軒等[4]針對遮擋問題提出了一種回歸損失函數(shù)Occlusion Loss,可以使訓練得到的預測框與真實框的匹配程度更高,從而獲得更為準確的位置信息,有效解決了目標漏檢的情況;采用基于回歸YOLO 系列算法處理速度快,正確率高,在實際工業(yè)部署中得到了廣泛應用[5];YOLOv2[6-9]、YOLOv3[10]在YOLO 算法的基礎上進一步改進,使得檢測效果進一步加強。但速度較快的基于回歸的檢測算法網(wǎng)絡結構仍然較大。BOCHKOVSKIY等[11]對近幾年來目標檢測領域內比較優(yōu)秀的算法進行移植和對比試驗,提出了YOLOv4,對各種目標的檢測效果大幅提升。
本文根據(jù)以往研究成果提出改進的YOLOv4目標檢測算法,解決復雜交通場景下的常見道路目標檢測問題。主要進行了3 個方面的改進:改進非極大值抑制算法,提出Soft-DIoU-NMS,能夠返回更準確的目標邊界框;改進K-means 聚類算法,生成更加準確的候選框;改進損失函數(shù),引入焦點損失(focal loss),緩解樣本之間的不平衡問題。改進后的YOLOv4 算法能夠在保證實時性的情況下,較為準確地檢測出復雜交通場景下的遮擋目標和小目標,檢測能力較為突出。
YOLOv4 網(wǎng)絡結構主要由主干網(wǎng)絡層、特征增強層和分類回歸層組成。以輸入圖像分辨率416×416 為例,首先將圖像經(jīng)過CSPDarknet53 主干網(wǎng)絡進行特征提取,然后先后通過SPP[12]和PANet[13]特征金字塔結構進行特征增強和融合處理,最終得到52×52、26×26 和13×13 這3 種不同分辨率的特征圖,最后通過分類回歸層得到最終的檢測結果。
YOLOv4 的主干網(wǎng)絡是Darknet53,其在YOLOv3[14]主干網(wǎng)絡Darknet53 的基礎上添加了跨階段初等網(wǎng)絡(cross stage paritial network,CSPNet)[15]。CSPNet 主要解決的是網(wǎng)絡在優(yōu)化過程中梯度信息重復引起的計算量過大的問題。CSPNet 先將基礎層的特征映射劃分為2 部分:一部分進行殘差連接緩解梯度爆炸和過擬合問題,另一部分跳躍連接減少計算;然后通過跨階段層次結構將它們合并,在保證準確率的同時減少了計算量,加快了訓練速度。
在目標檢測領域,為了更好地提取融合特征,通常在主干網(wǎng)絡和輸出層之間插入特征增強層,主要用于特征提取增強以及不同特征層之間的融合。YOLOv4 的特征增強層主要采用了SPP 模塊和PANet 模塊。在SPP 模塊中,主干網(wǎng)絡的輸出經(jīng)過4 種不同尺度的最大池化(max pooling)操作,然后再將不同尺度的特征圖進行拼接。SPP模塊可以將不同分辨率的圖像生成固定尺寸的圖像,很大程度上增加感受野,分離出最顯著的上下文特征,起到特征增強的作用;PANet 模塊對特征反復提取與融合,主要包含F(xiàn)PN 和PAN 這2 個子模塊。PANet 通過2 次特征金字塔操作,將FPN 傳達的強語義信息與PAN 傳達的強定位特征在對應的檢測層上進行特征融合,可以在淺層網(wǎng)絡和深層網(wǎng)絡同時獲取精準的定位信息和豐富的語義信息,提高小目標的檢測能力和目標定位精度。
非極大值抑制(non-maximum suppression,NMS)算法是一種廣泛應用于計算機視覺領域的后處理算法,其本質思想是搜索局部最大值,抑制非極大值[16]。傳統(tǒng)NMS 算法核心的思想是通過迭代的方式,每當置信度得分最高的基準框M與預測框bi的IoU 值大于或等于閾值Nt時,直接將bi的置信度si置0,即直接過濾掉這些預測框。傳統(tǒng)NMS 的置信度重置公式為
傳統(tǒng)NMS 在一般情況下效果良好,但難以解決遮擋較為嚴重的問題。由于目標之間互相遮擋,檢測器產(chǎn)生的預測框排列十分緊密,傳統(tǒng)NMS 無法區(qū)分某個預測框隸屬于哪個目標,使得本應屬于另一個目標的預測框在算法中超過閾值而被抑制掉,最終導致漏檢的情況。為此本文提出一種新的非極大值抑制算法Soft-DIoU-NMS,使用DIoU[17]作為距離的評判指標,并采用高斯衰減策略,其置信度重置公式為
K-means 聚類作為生成先驗框的重要算法對于先驗框的準確性產(chǎn)生了重要的影響,距離度量作為數(shù)據(jù)之間的聚類依據(jù),直接決定著最終的聚類結果。適當增大距離值可以緩解局部最優(yōu)解的問題,提高生成先驗框的準確率。本文為緩解局部最優(yōu)問題,對聚類距離度量進行修改。修改前的距離度量公式為
式中:b為聚類的樣本框,c為聚類中心。
修改后的距離度量公式為
K-means 聚類改變前后距離度量隨IoU 值改變的對比圖如圖1 所示。由圖1 可知,實線為修改后的曲線,修改之后的距離度量函數(shù)值在IoU 值域內總大于改變之前,這表明優(yōu)化之后的距離度量的確可以放大IoU 對距離的影響,提高聚類準確率。
圖1 改變前后距離度量函數(shù)曲線對比
在訓練目標檢測模型的時候,損失函數(shù)作為樣本評判的重要依據(jù),很大程度上決定了模型最終收斂的效果。在YOLOv4 算法中,損失函數(shù)由回歸損失函數(shù)、分類損失函數(shù)以及置信度損失函數(shù)組成。其中回歸損失采用CIoU Loss 函數(shù),分類損失函數(shù)和置信度損失函數(shù)均采用交叉熵損失函數(shù),具體表示為
目前基于anchor 的目標檢測算法在檢測過程中產(chǎn)生大量的預測框樣本,但其中只有小部分包含目標正樣本,絕大多數(shù)預測框只包含背景負樣本,正負樣本數(shù)量相差懸殊。正樣本一般情況下是易分類樣本,這直接導致了容易分類的正樣本占據(jù)了樣本中的絕大多數(shù),造成了嚴重的樣本不均衡問題。
為解決復雜交通場景下目標相互遮擋且存在大量小目標,一定程度上會加劇樣本不均衡的問題,本文引入焦點損失函數(shù)[18]代替交叉熵損失函數(shù),焦點損失函數(shù)的表達式為
式中:a為類別權重因子,γ為調制因子。
改進后的YOLOv4 損失函數(shù)為
本文在訓練過程中涉及到大量的圖片處理和計算過程,需要一定的軟硬件要求,具體的軟硬件環(huán)境如下。操作系統(tǒng):Windows10 專業(yè)版;CPU:Inter i7-8 700 3.20GHz;GPU:NVIDIA GTX 1080Ti;內存:32GB 內存,16GB 顯存;編程語言:Python3.6;CUDA:Cuda10.0;Cudnn:Cudnn7.4;深度學習框架:tensorflow、keras。
本次實驗選取的通用數(shù)據(jù)集包括PASCAL VOC2007、MS COCO2017 和KITTI 自動駕駛數(shù)據(jù)集,為適應本文對復雜交通場景下常見道路目標的檢測,需對這3 種數(shù)據(jù)集標注信息進行處理,去除多余的標注信息并將剩下的數(shù)據(jù)集標簽改為“vehicle”、“person”、“bicycle”、“motorbike”。此外,針對復雜交通場景,本文手動標注了復雜交通場景(complex traffic scene,CTS)數(shù)據(jù)集,CTS數(shù)據(jù)集含有更多的遮擋目標和小目標,可以提高模型對復雜交通場景下目標的檢測能力。實驗選用的訓練集是本文提出的CTS 數(shù)據(jù)集和KITTI 目標檢測數(shù)據(jù)集,各交通場景下每張圖片最多包含40 個目標,包含較多的遮擋目標和小目標。實驗數(shù)據(jù)集共包含14 797 張圖片,按8∶1∶1 的比例將數(shù)據(jù)集分為訓練集、測試集和驗證集,得到訓練集圖片11 839 張,測試集和驗證集圖片各1 479 張。
本文實驗使用深度學習框架tensorflow-gpu 1.13.1 和Keras 2.1.5 對改進前后的YOLOv4 算法進行訓練。訓練時,初始階段圖片批量大小設置為32,即一次性加載32 張圖片進入內存,初始學習率設為0.001,采用自適應矩估計(Adam)優(yōu)化器優(yōu)化模型,迭代5 000 次之后,圖片批量大小改為8,使用keras 中的“ReduceLROnPlateau”函數(shù)對學習率進行衰減。關注模型的性能,當?shù)? 次而模型性能不提升時,后一次訓練的學習率變?yōu)樵瓉淼?.9,同時使用“EarlyStopping”函數(shù)對驗證集損失進行監(jiān)控,當?shù)? 次而模型性能不提升時,停止訓練,加快訓練速度。
3.3.1 遮擋目標檢測實例
復雜交通場景之下目標之間相互遮擋,原始算法存在漏檢問題。如圖2 近處較為密集致使目標之間存在一定的遮擋,原始YOLOv4 算法結果如圖2(a)所示,近處5 輛汽車僅僅檢測出了3 輛,對于后面遮擋較為嚴重的2 輛汽車出現(xiàn)了目標漏檢問題,嚴重影響檢測結果。改進后的YOLOv4算法檢測結果如圖2(b)所示,算法可以返回更為準確的目標邊界框,能夠很好地檢測出被遮擋的汽車目標,檢測更為準確。
圖2 算法改進前后遮擋目標檢測實例
3.3.2 小目標檢測實例
為了比較直觀地顯示算法對小目標的檢測能力,實驗選取汽車行車記錄儀攝像頭視頻,分別使用修改前后的YOLOv4 算法進行復雜交通目標檢測,該視頻共456 幀,每隔150 幀記錄一次檢測結果。圖3 展示了YOLOv4 改進前后對該視頻流的部分檢測效果對比圖。
圖3 改進前后YOLOv4 算法對視頻流的檢測效果
由圖3 可以看出,在第151 幀圖像中,圖像右側區(qū)域存在多個小目標和密集目標,改進之前的YOLOv4 算法對此區(qū)域出現(xiàn)了大量的漏檢情況,改進之后的YOLOv4 算法就不會出現(xiàn)目標漏檢的問題。在第301 幀圖像中,目標受遮擋程度不大且較為明顯,改進前后的算法均能夠成功檢測出所有目標,但改進之后的YOLOv4 算法的檢測置信度明顯更高,檢測性能更好。以圖中局部放大行人目標和汽車目標為例,改進后的行人目標置信度提升到0.85,汽車目標置信度提升到0.99,與改進前相比分別提升了0.44 和0.09。在第451 幀圖像中,圖像左側存在3 個小目標且較為模糊,改進之前的YOLOv4 算法漏檢了這些目標,而改進之后的YOLOv4 算法則有效地將這些小目標檢測出來。由檢測結果可知,改進之后的YOLOv4 算法不僅提升了檢測目標的置信度,也檢測出了之前漏檢的目標,檢測能力明顯提升。
3.3.3 算法綜合檢測能力對比實驗
為了實驗改進前后YOLOv4 算法對于多類別的綜合檢測能力,本小節(jié)分別在CTS、VOC2007、COCO2017 以及KITTI 數(shù)據(jù)集中通過各類別的平均精度均值(mean average precision,mAP)對算法進行評估。實驗過程中,置信度閾值取0.5,非極大值抑制閾值取0.3。
圖4 給出了YOLOv4 算法改進前后不同數(shù)據(jù)集上對于常見道路目標檢測的平均精度變化情況。在本文提出的CTS 數(shù)據(jù)集上,mAP 值從改進前的85.15%提升到89.91%;在較為簡單的VOC-2007 數(shù)據(jù)集上,檢測精確率能夠達到更高的水平,YOLOv4 算法在改進前mAP 值為88.90%,改進后達到了91.16%;在較為復雜的COCO2017 數(shù)據(jù)集上,檢測精確率與CTS 數(shù)據(jù)集相比下降不多,YOLOv4 改進前的mAP 值為81.50%,改進后提升到84.16%;在自動駕駛交通場景數(shù)據(jù)集KITTI 上,檢測能力也較為突出,YOLOv4 改進前后mAP 值從86.17%提升到88.53%。這些實驗結果表明,改進后的YOLOv4 算法對小目標和遮擋目標檢測效果不佳、漏檢率較高的問題具有一定的解決能力,使得算法在復雜交通場景中依然具有很高的綜合檢測能力,且適合不同交通場景,能夠滿足自動駕駛汽車的實際要求。
圖4 YOLOv4 改進前后不同數(shù)據(jù)集上的mAP 曲線
3.3.4 本文算法與其他算法結果對比
本小節(jié)將改進后的YOLOv4 算法與Faster RCNN、SSD、YOLO、YOLOv4 等目標檢測算法在CTS 數(shù)據(jù)集上進行對比實驗,選取的評價指標為mAP 以及幀率。
表1 給出了不同算法的目標檢測評估結果。從評價結果分析可知,改進后的YOLOv4 目標檢測算法在精確率方面遠遠領先于其他算法,達到了89.91%;在檢測速度方面,檢測速度達到35.52 f/s,雖然與YOLO 和YOLOv4 相比有所下降,但仍能滿足自動駕駛30 f/s 的實時性要求,充分說明本文提出的YOLOv4 改進算法的有效性。
表1 不同目標檢測算法結果對比
1)針對復雜交通場景下目標遮擋問題,基于CIoU Loss 回歸損失函數(shù),本文提出了Soft-1DIoUNMS 非極大值抑制算法作為后處理算法,使得改進后的YOLOv4 算法能夠提高目標定位精度。實驗結果表明,改進后的YOLOv4 算法能夠有效解決目標遮擋問題,在各種數(shù)據(jù)集上均能發(fā)揮突出的檢測性能,具有良好的泛化能力。雖然檢測速度略有下降,但依然能夠滿足自動駕駛汽車實時性要求。
2)對復雜交通場景下小目標檢測問題,提出改進的K-means 方法,獲得更加準確的先驗框,為解決樣本不均衡的問題,引入焦點損失修改損失函數(shù),同時訓練時使用Mosaic 數(shù)據(jù)增強方法增加小樣本以豐富數(shù)據(jù)集。實驗結果表明,改進后的YOLOv4 算法能夠提升召回率和精確率,對小目標漏檢和虛檢問題解決能力突出,同時算法在各種數(shù)據(jù)集上檢測精度均有不同程度的提升,具備復雜交通場景下良好的道路目標綜合檢測能力。
3)本文使用的YOLOv4 是一種基于anchor的目標檢測算法,此類方法先在特征圖上生成大量的anchor 后進行分類和位置精修,但是大量冗余的anchor 造成正負樣本不均衡的問題,并且需要額外的非極大值抑制后處理算法,損害了算法的實時性。因此基于anchor-fre 的目標檢測算法將會是一個比較重要的突破點,值得繼續(xù)開發(fā)研究。