李 軒,李 靜,王海燕
(沈陽航空航天大學(xué) 電子信息工程學(xué)院,遼寧 沈陽 110136)
自深度學(xué)習(xí)發(fā)展以來,目標(biāo)檢測領(lǐng)域已經(jīng)取得了很大進(jìn)展[1-4],基于區(qū)域建議和回歸思想的目標(biāo)檢測算法相繼提出,在準(zhǔn)確率和檢測速度上都有較大的提升。但密集場景的目標(biāo)檢測一直是計(jì)算機(jī)視覺領(lǐng)域中的難點(diǎn)問題。在現(xiàn)實(shí)的交通場景中由于人為因素造成的目標(biāo)遮擋阻塞情況十分常見。造成密集場景檢測困難的原因分為兩種,一種是由同類目標(biāo)相互遮擋造成的類內(nèi)遮擋,另一種是由不同類之間相互遮擋造成的類間遮擋。在常用的交通場景數(shù)據(jù)集中類內(nèi)遮擋較為常見,在City Persons數(shù)據(jù)集[5]中類內(nèi)遮擋率達(dá)48.8%,在KITTI數(shù)據(jù)集中遮擋和截斷率也接近50%,因此在檢測過程中極容易出現(xiàn)漏檢、重復(fù)檢測等情況。
近年來在密集目標(biāo)檢測領(lǐng)域中已經(jīng)取得了一些成果。例如,Wang等[6]提出了一種排斥力損失函數(shù),在有效吸引真值框和預(yù)測框相互接近的同時排斥由其他物體真值的影響,但在現(xiàn)實(shí)操作過程中很難掌握吸引和排斥之間的平衡。文獻(xiàn)[7]從正負(fù)樣本量入手,通過Focal Loss重新定義交叉損失熵,改變難分樣本占總loss的權(quán)重,提高對負(fù)樣本的判斷能力,改進(jìn)了one_stage算法對密集目標(biāo)的檢測能力。文獻(xiàn)[8]使用Jaccard index作為評估檢測質(zhì)量分?jǐn)?shù),重新定義了IoU Loss,提出新型的EM-Merge 單元,致力于解決檢測框重疊歧義問題。盡管在密集場景中的檢測已經(jīng)取得了一些進(jìn)展,但如何在復(fù)雜的遮擋環(huán)境下準(zhǔn)確地對目標(biāo)進(jìn)行定位仍然是交通場景檢測中的難點(diǎn)。
文中在實(shí)驗(yàn)過程中發(fā)現(xiàn)由于人為因素造成的目標(biāo)密集遮擋問題,使面積相對較大,包含特征因素更多的檢測框往往有更高的置信度,這容易在非極大值抑制時使真正更為準(zhǔn)確的檢測框被抑制掉造成目標(biāo)的漏檢。如圖1所示,在檢測過程中,行人A(左)和行人B(右)之間位置接近,在判斷特征得分時極容易出現(xiàn)特征的混淆和重疊,因此圖中實(shí)線預(yù)測框相比虛線預(yù)測框有更高的置信度,在后置的非極大值抑制中導(dǎo)致定位更為準(zhǔn)確的預(yù)測框被當(dāng)作同一目標(biāo)的冗余框而被抑制掉。造成這種目標(biāo)錯檢可能存在兩種情況,一是特征提取不夠完善,二是學(xué)習(xí)過程沒有針對性。解決第一種情況需要學(xué)習(xí)更強(qiáng)壯的特征信息,擴(kuò)增數(shù)據(jù)集訓(xùn)練樣本,文中采用mixup[9]算法重構(gòu)數(shù)據(jù)集,將任意兩張圖像以一定比例融合,構(gòu)成新的樣本集,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的樣本數(shù)量成倍增多;針對第二種情況,文中提出一種新的損失函數(shù)Occlusion Loss,Occlusion Loss中包含兩項(xiàng)內(nèi)容即IoG Loss和UoG Loss。IoG Loss用于衡量圖1中虛線檢測框和陰影之間的相似度,UoG Loss用于降低實(shí)線檢測框?qū)φw檢測的影響。
圖1 相互遮擋造成的錯誤檢測情況
(1)p∩g盡可能大,保證檢測框和真值框盡可能匹配;
(2)在滿足條件1的情況下p盡可能小,防止出現(xiàn)一個檢測框?qū)Χ鄠€目標(biāo)的情況。
基于以上兩點(diǎn)考慮,文中使用IoG和UoG作為損失函數(shù),而不是傳統(tǒng)的IoU。IoG定義為:
(1)
在IoG的定義中,用真值框g取代了p∪g,g是待檢測樣本的自然屬性,在整個檢測過程中保持不變,希望神經(jīng)網(wǎng)絡(luò)能夠通過增大p∩g的值不斷擬合預(yù)測框和真值框的相似程度,并且在這個學(xué)習(xí)過程中損失函數(shù)能不斷減小,因此定義LIoG損失函數(shù)為:
(2)
在IoG函數(shù)中已經(jīng)能夠匹配位置相對準(zhǔn)確的框,UoG函數(shù)用來抑制在同等匹配情況下檢測面積更大的預(yù)測框,UoG定義如下:
(3)
(4)
LUoG、LIoG算法流程如下:
Algorithm:IoG,UoG回歸框損失
計(jì)算P面積
計(jì)算G面積
計(jì)算P,G相交區(qū)域面積
計(jì)算
LIoG=exp(-IoG),LUoG=sigmoid(UoG)
文中采用YOLOv3算法作為主體框架進(jìn)行實(shí)驗(yàn)。YOLOv3網(wǎng)絡(luò)主體為Darknet53殘差網(wǎng)絡(luò),并結(jié)合多尺度檢測,已經(jīng)成為目前為止最優(yōu)秀的目標(biāo)檢測算法之一,常用在交通、工業(yè)等多種場景中[11-14]。在檢測過程中首先將圖片劃分為S×S個小格,當(dāng)目標(biāo)中心落在某個小格時該小格負(fù)責(zé)預(yù)測這個物體。YOLOv3借鑒了類似FPN網(wǎng)絡(luò)[15]的金字塔結(jié)構(gòu)對特征圖進(jìn)行了上采樣和融合做法,分別在13×13,26×26,52×52三個尺寸上進(jìn)行檢測。每個單元格首先借助anchor box預(yù)測3個檢測框,每個檢測框預(yù)測4個相對坐標(biāo)值即中心坐標(biāo)(x,y)與目標(biāo)寬w和高h(yuǎn),再根據(jù)卷積神經(jīng)網(wǎng)絡(luò)輸出的坐標(biāo)對anchor box進(jìn)行修正,修正過程公式如下:
bx=σ(tx)+cx
(5)
by=σ(ty)+cy
(6)
bw=pwetw
(7)
bh=pheth
(8)
其中,cx,cy為目標(biāo)中心所在小格相對于左上角的偏移量,tx,ty,tw,th為網(wǎng)絡(luò)學(xué)習(xí)輸出,pw,ph為預(yù)設(shè)錨點(diǎn)的寬高,坐標(biāo)的損失函數(shù)采用平方誤差損失函數(shù)。
在類別預(yù)測方面,YOLO原有的softmax層假設(shè)一張圖片或者一個待檢測物體都只屬于一個類別,但這并不適用于復(fù)雜的場景,在復(fù)雜的場景中一個待檢測的物體可能分屬于不同的類別,存在多個標(biāo)簽,因此YOLOv3采用邏輯回歸層進(jìn)行類別預(yù)測。在邏輯回歸層加入sigmoid函數(shù)對輸出類別概率值進(jìn)行限制,概率大于0.5,就表示屬于該類。類別公式計(jì)算如下:
Pr(object)*IoU(b,object)=s(t0)
(9)
在損失函數(shù)上,YOLOv3整合了均方誤差調(diào)整目標(biāo)相對單元格的寬高,二值交叉損失熵調(diào)整置信度得分,類別信息和中心坐標(biāo)可抽象表達(dá)為:
loss=∑coord_Err+conf_Err+class_Err
(10)
YOLOv3并沒有將檢測匹配度作為學(xué)習(xí)的模塊,十分適合文中的算法移植。
文中算法檢測流程如圖2所示,首先經(jīng)過DarkNet 53進(jìn)行特征提取,利用多尺度特征的原理在13×13,26×26,52×52三個尺度的特征圖上分別對同一目標(biāo)進(jìn)行不同尺度的預(yù)測。在訓(xùn)練過程中加入了LIoG指導(dǎo)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)更準(zhǔn)確的定位,LUoG防止檢測框中多個特征的情況,得到最終輸出結(jié)果。
圖2 YOLOv3算法檢測過程
文中算法在自動駕駛數(shù)據(jù)集KITTI上進(jìn)行測試。KITTI數(shù)據(jù)集是目前交通場景中公認(rèn)的大規(guī)模算法測試數(shù)據(jù)集,數(shù)據(jù)量達(dá)12 G。存在行人、車輛的互相遮擋截斷情況,反映了現(xiàn)實(shí)中復(fù)雜的交通場景。文中定義兩個目標(biāo)重合度IoU在0.5以上為遮擋阻塞情況,車輛阻塞和截斷情況占總數(shù)的40%以上,行人間的遮擋占總數(shù)的30%左右。
文中檢測主要針對類間遮擋情況,將KITTI原數(shù)據(jù)集重新整理,‘Van’,‘Truck’,‘Tram’標(biāo)簽都重新標(biāo)定為‘Car’類,‘Person_sitting’標(biāo)定到‘Pedestrian’類中,最終檢測類別為‘Car’,‘Cyclist’,‘Pedestrian’。另外將KITTI訓(xùn)練集重新劃分得到新的訓(xùn)練集4 000張,驗(yàn)證集400張,測試集3 081張,評價指標(biāo)基于重新劃分?jǐn)?shù)據(jù)集的結(jié)果。表1展示了經(jīng)過處理后的數(shù)據(jù)集各類別樣本的數(shù)量情況。
表1 KITTI數(shù)據(jù)集樣本數(shù)量統(tǒng)計(jì)
文中算法在開源框架Keras上實(shí)現(xiàn),電腦配置為Intel(R) Core(TM) i3-4170CPU@3.70 GHz,運(yùn)行內(nèi)存8 G,顯卡1050Ti,操作系統(tǒng)為Windows 10。
訓(xùn)練階段參數(shù)設(shè)定動量為0.9,權(quán)重衰減率為0.005,初始學(xué)習(xí)率為0.001,采用Adam優(yōu)化方法。模型在100 K左右收斂,達(dá)到最優(yōu)值Loss=0.254 8,相比改進(jìn)之前有更強(qiáng)的特征表達(dá)能力。
將改進(jìn)后的算法與原YOLOv3進(jìn)行對比,對比結(jié)果如表2所示。在平均準(zhǔn)確率上,文中算法較原算法提升了2.12%,在‘Pedestrian’類別上提升明顯,可見由于行人體積小,并且容易成群結(jié)隊(duì)是交通場景檢測困難的主要因素。
表2 改進(jìn)算法和原算法性能對比
圖3展示了文中算法的部分檢測結(jié)果,可以看出文中算法對于不同場景的車輛和行人的密集場景檢測表現(xiàn)良好,能夠更加準(zhǔn)確地定位,有效減少了漏檢情況,具有很好的魯棒性。
圖3 原YOLOv3(左)與改進(jìn)后的YOLOv3(右)檢測結(jié)果對比
圖4顯示了文中算法和原YOLOv3算法在不同類別上的PR曲線,通過比較曲線下的面積可以看出,在提出的損失函數(shù)指導(dǎo)學(xué)習(xí)后的YOLOv3在‘Car’,‘Cyclist’,‘Pedestrian’三個類別上均獲得了優(yōu)于原算法的性能。
圖4 不同類別的PR曲線
文中提出了針對密集場景檢測的Occlusion Loss。Occlusion Loss包含兩項(xiàng)內(nèi)容:第一項(xiàng)是負(fù)責(zé)更準(zhǔn)確定位的IoG Loss;第二項(xiàng)是負(fù)責(zé)調(diào)整一個檢測框?qū)?yīng)多個目標(biāo)的UoG Loss。將該損失函數(shù)移植到Y(jié)OLOv3網(wǎng)絡(luò)中,在KITTI數(shù)據(jù)集上獲得了更好的表現(xiàn),不僅能準(zhǔn)確匹配到目標(biāo)位置,而且有效抑制了目標(biāo)漏檢,在準(zhǔn)確率和召回率上都有更好的表現(xiàn)。在后續(xù)工作中,將該算法移植到多種框架中,以實(shí)現(xiàn)密集交通場景的車輛多類別識別任務(wù)。