李 軒,李 靜,王海燕
(沈陽航空航天大學 電子信息工程學院,遼寧 沈陽 110136)
自深度學習發展以來,目標檢測領域已經取得了很大進展[1-4],基于區域建議和回歸思想的目標檢測算法相繼提出,在準確率和檢測速度上都有較大的提升。但密集場景的目標檢測一直是計算機視覺領域中的難點問題。在現實的交通場景中由于人為因素造成的目標遮擋阻塞情況十分常見。造成密集場景檢測困難的原因分為兩種,一種是由同類目標相互遮擋造成的類內遮擋,另一種是由不同類之間相互遮擋造成的類間遮擋。在常用的交通場景數據集中類內遮擋較為常見,在City Persons數據集[5]中類內遮擋率達48.8%,在KITTI數據集中遮擋和截斷率也接近50%,因此在檢測過程中極容易出現漏檢、重復檢測等情況。
近年來在密集目標檢測領域中已經取得了一些成果。例如,Wang等[6]提出了一種排斥力損失函數,在有效吸引真值框和預測框相互接近的同時排斥由其他物體真值的影響,但在現實操作過程中很難掌握吸引和排斥之間的平衡。文獻[7]從正負樣本量入手,通過Focal Loss重新定義交叉損失熵,改變難分樣本占總loss的權重,提高對負樣本的判斷能力,改進了one_stage算法對密集目標的檢測能力。文獻[8]使用Jaccard index作為評估檢測質量分數,重新定義了IoU Loss,提出新型的EM-Merge 單元,致力于解決檢測框重疊歧義問題。盡管在密集場景中的檢測已經取得了一些進展,但如何在復雜的遮擋環境下準確地對目標進行定位仍然是交通場景檢測中的難點。
文中在實驗過程中發現由于人為因素造成的目標密集遮擋問題,使面積相對較大,包含特征因素更多的檢測框往往有更高的置信度,這容易在非極大值抑制時使真正更為準確的檢測框被抑制掉造成目標的漏檢。如圖1所示,在檢測過程中,行人A(左)和行人B(右)之間位置接近,在判斷特征得分時極容易出現特征的混淆和重疊,因此圖中實線預測框相比虛線預測框有更高的置信度,在后置的非極大值抑制中導致定位更為準確的預測框被當作同一目標的冗余框而被抑制掉。造成這種目標錯檢可能存在兩種情況,一是特征提取不夠完善,二是學習過程沒有針對性。解決第一種情況需要學習更強壯的特征信息,擴增數據集訓練樣本,文中采用mixup[9]算法重構數據集,將任意兩張圖像以一定比例融合,構成新的樣本集,神經網絡學習的樣本數量成倍增多;針對第二種情況,文中提出一種新的損失函數Occlusion Loss,Occlusion Loss中包含兩項內容即IoG Loss和UoG Loss。IoG Loss用于衡量圖1中虛線檢測框和陰影之間的相似度,UoG Loss用于降低實線檢測框對整體檢測的影響。

圖1 相互遮擋造成的錯誤檢測情況
(1)p∩g盡可能大,保證檢測框和真值框盡可能匹配;
(2)在滿足條件1的情況下p盡可能小,防止出現一個檢測框對多個目標的情況。
基于以上兩點考慮,文中使用IoG和UoG作為損失函數,而不是傳統的IoU。IoG定義為:
(1)
在IoG的定義中,用真值框g取代了p∪g,g是待檢測樣本的自然屬性,在整個檢測過程中保持不變,希望神經網絡能夠通過增大p∩g的值不斷擬合預測框和真值框的相似程度,并且在這個學習過程中損失函數能不斷減小,因此定義LIoG損失函數為:
(2)
在IoG函數中已經能夠匹配位置相對準確的框,UoG函數用來抑制在同等匹配情況下檢測面積更大的預測框,UoG定義如下:
(3)

(4)
LUoG、LIoG算法流程如下:
Algorithm:IoG,UoG回歸框損失

計算P面積
計算G面積
計算P,G相交區域面積
計算
LIoG=exp(-IoG),LUoG=sigmoid(UoG)
文中采用YOLOv3算法作為主體框架進行實驗。YOLOv3網絡主體為Darknet53殘差網絡,并結合多尺度檢測,已經成為目前為止最優秀的目標檢測算法之一,常用在交通、工業等多種場景中[11-14]。在檢測過程中首先將圖片劃分為S×S個小格,當目標中心落在某個小格時該小格負責預測這個物體。YOLOv3借鑒了類似FPN網絡[15]的金字塔結構對特征圖進行了上采樣和融合做法,分別在13×13,26×26,52×52三個尺寸上進行檢測。每個單元格首先借助anchor box預測3個檢測框,每個檢測框預測4個相對坐標值即中心坐標(x,y)與目標寬w和高h,再根據卷積神經網絡輸出的坐標對anchor box進行修正,修正過程公式如下:
bx=σ(tx)+cx
(5)
by=σ(ty)+cy
(6)
bw=pwetw
(7)
bh=pheth
(8)
其中,cx,cy為目標中心所在小格相對于左上角的偏移量,tx,ty,tw,th為網絡學習輸出,pw,ph為預設錨點的寬高,坐標的損失函數采用平方誤差損失函數。
在類別預測方面,YOLO原有的softmax層假設一張圖片或者一個待檢測物體都只屬于一個類別,但這并不適用于復雜的場景,在復雜的場景中一個待檢測的物體可能分屬于不同的類別,存在多個標簽,因此YOLOv3采用邏輯回歸層進行類別預測。在邏輯回歸層加入sigmoid函數對輸出類別概率值進行限制,概率大于0.5,就表示屬于該類。類別公式計算如下:
Pr(object)*IoU(b,object)=s(t0)
(9)
在損失函數上,YOLOv3整合了均方誤差調整目標相對單元格的寬高,二值交叉損失熵調整置信度得分,類別信息和中心坐標可抽象表達為:
loss=∑coord_Err+conf_Err+class_Err
(10)
YOLOv3并沒有將檢測匹配度作為學習的模塊,十分適合文中的算法移植。
文中算法檢測流程如圖2所示,首先經過DarkNet 53進行特征提取,利用多尺度特征的原理在13×13,26×26,52×52三個尺度的特征圖上分別對同一目標進行不同尺度的預測。在訓練過程中加入了LIoG指導神經網絡學習更準確的定位,LUoG防止檢測框中多個特征的情況,得到最終輸出結果。

圖2 YOLOv3算法檢測過程
文中算法在自動駕駛數據集KITTI上進行測試。KITTI數據集是目前交通場景中公認的大規模算法測試數據集,數據量達12 G。存在行人、車輛的互相遮擋截斷情況,反映了現實中復雜的交通場景。文中定義兩個目標重合度IoU在0.5以上為遮擋阻塞情況,車輛阻塞和截斷情況占總數的40%以上,行人間的遮擋占總數的30%左右。
文中檢測主要針對類間遮擋情況,將KITTI原數據集重新整理,‘Van’,‘Truck’,‘Tram’標簽都重新標定為‘Car’類,‘Person_sitting’標定到‘Pedestrian’類中,最終檢測類別為‘Car’,‘Cyclist’,‘Pedestrian’。另外將KITTI訓練集重新劃分得到新的訓練集4 000張,驗證集400張,測試集3 081張,評價指標基于重新劃分數據集的結果。表1展示了經過處理后的數據集各類別樣本的數量情況。

表1 KITTI數據集樣本數量統計
文中算法在開源框架Keras上實現,電腦配置為Intel(R) Core(TM) i3-4170CPU@3.70 GHz,運行內存8 G,顯卡1050Ti,操作系統為Windows 10。
訓練階段參數設定動量為0.9,權重衰減率為0.005,初始學習率為0.001,采用Adam優化方法。模型在100 K左右收斂,達到最優值Loss=0.254 8,相比改進之前有更強的特征表達能力。
將改進后的算法與原YOLOv3進行對比,對比結果如表2所示。在平均準確率上,文中算法較原算法提升了2.12%,在‘Pedestrian’類別上提升明顯,可見由于行人體積小,并且容易成群結隊是交通場景檢測困難的主要因素。

表2 改進算法和原算法性能對比
圖3展示了文中算法的部分檢測結果,可以看出文中算法對于不同場景的車輛和行人的密集場景檢測表現良好,能夠更加準確地定位,有效減少了漏檢情況,具有很好的魯棒性。

圖3 原YOLOv3(左)與改進后的YOLOv3(右)檢測結果對比
圖4顯示了文中算法和原YOLOv3算法在不同類別上的PR曲線,通過比較曲線下的面積可以看出,在提出的損失函數指導學習后的YOLOv3在‘Car’,‘Cyclist’,‘Pedestrian’三個類別上均獲得了優于原算法的性能。

圖4 不同類別的PR曲線
文中提出了針對密集場景檢測的Occlusion Loss。Occlusion Loss包含兩項內容:第一項是負責更準確定位的IoG Loss;第二項是負責調整一個檢測框對應多個目標的UoG Loss。將該損失函數移植到YOLOv3網絡中,在KITTI數據集上獲得了更好的表現,不僅能準確匹配到目標位置,而且有效抑制了目標漏檢,在準確率和召回率上都有更好的表現。在后續工作中,將該算法移植到多種框架中,以實現密集交通場景的車輛多類別識別任務。