安徽理工大學計算機科學與工程學院 周夢廣
行人檢測在無人駕駛方面具有極其重要的應用場景,然而在檢測的過程中經常忽略圖片中的小目標。本文提出一種選擇性特征融合的檢測算法。通過引入金字塔切分卷積SPC到YOLOv3的主干網中,以獲取不同尺度的感受野,提取不同尺度的信息。同時,為了提高特征融合的效率,在特征融合前捕獲遠程依賴關系。最后,利用焦點損失重構了置信度和目標分類的損失函數,以減輕背景與檢測目標不平衡問題。實驗結果表明,本文算法在保證速度的同時提高了對道路行人的檢測精度,在PASCAL VOC數據集上mAP達到78.23%。與原探測器相比精度提高了1.07%,它在檢測精度和速度方面更好的權衡,表明適合道路狀況檢測的應用。
目標檢測作為一種重要的目標檢測應用,在道路與行人檢測等領域受到了廣泛的關注。通過車載攝像頭對道路上行人及車輛檢測,監控是否有危險情況,及時保證行人及車輛的安全。2014年Ross Girshick提出的卷積神經網絡框架(RCNN)成為傳統目標檢測階段到深度學習的目標檢測階段的分水嶺,傳統目標檢測不能自適應地處理道路圖片上的應用場景,而在深度學習的目標檢測階段圖片的處理更加靈活,不需要手動添加特征。YOLO算法的優點是端到端操作,相比于二階目標檢測算法運行速度更快,因此YOLO算法在道路狀況的檢測的應用廣泛,其中YOLOv3就是應用最廣泛的檢測器之一。但是由于街道圖像上的目標密集、圖片遮擋、特征提取困難、背景和目標樣本不均衡等問題,如果將YOLOv3模型直接應用到路況檢測,不能取得良好的檢測效果,因此需要對模型進行優化,提高模型檢測的精度。在YOLOv3的基礎上,2019年J.Choi等人提出檢測框的可靠性的問題,通過引入高斯分布的特性重新表示邊界框回歸損失,提出Gaussian YOLOv3,使得網絡能夠輸出每個檢測框的不確定性,從而提升了網絡的精度。同年,徐誠極等人在YOLO中引入了注意力機制提出了Attention-YOLO。2020年D.Tian等人將YOLOv3與自注意機制相結合,并且在基于GIoU和焦損失的基礎上,重構目標損失函數,然后提出了SA-YOLOv3。2021年Qiang Chen等人根據FPN的分治策略,利用擴張編碼器提取多尺寸感受野的特征,替代了FPN,并且利用統一匹配解決Positive Anchor在尺寸不同的目標上分布不均勻的問題,提出YOLOF。魏瑋等人先減少部分卷積操作然后引入跳躍連接機制降低特征冗余,將YOLOv3應用到航拍目標檢測中。本文貢獻如下:
(1)在DarkNet-53上引入了金字塔切分卷積策略改進了主干網,在殘差塊后采用金字塔切分卷積,利用不同尺度的卷積核擴大了主干網的感受野;
(2)在高層特征融合前利用Global Context模塊獲取全局語義,并且提取關鍵特征,增加高級特征的語義信息;
(3)結合了Focal Loss思想平衡了背景與目標樣本間的平衡取代傳統的邊界框損失函數。
本文算法框架如圖1所示,以基于Darknet-53的改進SPC-DarkNet-53作為骨干網,擴大了感受野。在特征融合前加入了輕量級的全局上下文(Global Context)模塊,以便更好地捕獲遠程依賴關系。最后將得到的特征圖傳入分支預測網絡中得到三個輸出,再對輸出進行檢測時,使用焦點損失處理正負樣本平衡的問題。

圖1 整體框架Fig.1 The overall frame
YOLOv3骨干網采用了DarkNet-53,借鑒了Resnet中的殘差結構,使檢測模型具有高效的速度優勢。但考慮到模型大量采用1×1或3×3卷積,導致特征圖上的感受野比較小,卷積核上的每個元素對應圖片的區域范圍比較小。因此在骨干網上添加了金字塔分割(SPC)模塊,增加特征圖上每一個元素對圖片的感受野,改進后的骨干網為SPC-DarkNet-53。
SPC模塊結構如圖2所示,SPC模塊把輸入的矩陣分成S組,對每組進行不同的卷積操作。分組處理后的結果在通道上進行拼接處理。分組數量G=2/2,其中k是卷積核的大小,G為分組數。SPC操作把輸入的數據依照通道平均劃分為4組,分別用3×3、5×5、7×7、9×9卷積對不同的組分別處理,提升元素了對圖片的感受野,使特征圖每個元素含有更多豐富的信息。然后,通過對不同分組結果進行拼接,增強了空間之間的聯系,并且關注局部區域中與檢測目標相關的信息。最后進行Sigmoid處理,實數值映射到0~1之間。

圖2 SPC模塊Fig.2 SPC module
特征融合是為了形成一個包含低層與高層特征優點的特征圖,但高層次特征的語義信息中每個單元對應圖片的內容是局部的,因此我們采用選擇性特征融合,具體來說,就是在高層次特征融合前通過Global Context模塊選擇出比較重要的特征圖,然后再獲取遠程依賴關系,以便有效地獲取全局上下文,使其在特征融合前包含更豐富的語義信息。
Global Context模塊如圖3所示,有兩個部分組成,一個是簡化的non-local塊,另一個是SE塊。non-local有很大的感受野,可以考慮全局語義特征。SE可以得出每個特征圖的權重。Global Context融合了兩個模塊的特點,可以更加充分的提取全局信息。Global Context模塊可以表示為如式(1)所示:

圖3 Global Context模塊Fig.3 Global Context module


Global Context模塊結構主要包含Context Modeling和Transform兩種結構。Context Modeling結構是為了獲得全局語義信息,首先采用1×1卷積和Softmax激活函數求取權值,然后再建立全局的長距離依賴關系。Transform用來獲通道之間的依賴,使用1×1卷積、LayerNorm和ReLu激活函數實現。最后,進行特征融合,采用原始特征圖中每個特征與對應位置的特征進行相加操作。Global Context模塊具體表示如式(2)所示:

YOLOv3損失函數由檢測框置信度損失(L),目標分類損失(L)和檢測框定位損失(L)三者構成。YOLOv3中沒有考慮目標檢測框在回歸時出現的背景樣本數目遠大于目標樣本的不平衡問題,本文提出一個新的損失函數,首先使用焦損失函數實現正負樣本的平衡。
改進的L損失:為解決正負樣本不平衡的問題,本文通過聚焦損失得出置信度損失L,如式(3)所示:

改進的分類損失L,如式(4)所示:


本次實驗采用了公開數據集VOC來證明實驗的有效性。我們在VOC2007的訓練數據集和VOC2012的驗證數據集的集合數據集(16551張圖片)上進行訓練,然后使用VOC2007的測試數據集(4952張圖片)做測試樣本。本文在VOC數據集上驗證改進模型的結果。在實驗前把數據集的標簽格式轉換成YOLO(Darknet)格式,數據處理后的尺寸為416×416,每次分批處理的大小為16。
本次實驗的評價指標是mAP@.5和mAP@.5:.95,AP是指PR曲線下面積,其中mAP@.5指預測區域與目標標記區域的交并比IoU>=0.5的mAP值,mAP@.5:.95指從0.5到0.95步長為0.05的IoU閾值上的平均mAP。
本文選擇VOC數據集做對比試驗,因為VOC數據集種類繁多,高達20個種類,該數據集專門拍攝的道路狀況的圖片,更貼近路況檢測的應用場景,并且單個圖片中要檢測目標更加密集,遮擋目標比較多,檢測難度比VOC更大。如表1所示中對比了其他一些著名的對YOLOV3的改進,其中包括在特征融合處加入SPP模塊,比較它的mAP@.5提高了0.29%。

表1 不同算法在VOC數據集上的對比實驗Tab.1 Comparative experiments of different algorithms on VOC dataset
本文選擇VOC數據集做消融試驗,VOC數據集在做YOLO模型檢測時使用比較頻繁,數據集數量也比較大,就對每個修改部分的優劣性比較上更加充分。
本文算法的改進有三個方面:SPA-DarkNet-53、選擇性特征融合、平衡損失函數。如表2所示中的方法1和方法2可以發現在骨干網中加入SPC模塊,使mAP@.5提升了0.67%、mAP@.5:.95提高了1.44%,表明通過添加SPC到骨干網可以擴大特征圖每個元素的感受野,增強了特征提取。方法3在方法2的基礎上在高層特征融合前加入了輕量級Global Context模塊,相比之下mAP@.5提高了0.12%,表明對高層特征獲取全局語義更有利于特征的豐富。最后引入焦損失重構置信度和目標分類損失時mAP@.5又提高了0.37%、mAP@.5:.95提高了0.20%,綜上所述與原模型相比mAP@.5總共提高了1.07%、mAP@.5:.95提高了1.71%。

表2 消融實驗Tab.2 Ablation experiment
本文提出了基于YOLOv3金字塔切分卷積的路況檢測算法,使用了金字塔切分卷積策略改進了主干網的感受野。使用了Global Context模塊選擇關鍵特征進行特征融合。最后利用焦損失重構置信度損失函數和目標分類損失函數,該算法可以有效的提高目標檢測的精度。