梁 策 王景中 王寶成
(北方工業(yè)大學(xué)信息學(xué)院 北京100144)
行人與車輛識別是智能交通的核心技術(shù),此技術(shù)通過對行人、車輛目標(biāo)進行檢測識別,以對路況進行實時計算,對信號燈時間長短進行規(guī)劃。在遠(yuǎn)程調(diào)度指揮、擁堵情況報警等方面具有重要應(yīng)用價值[1]。而對行人與車輛識進行識別是目標(biāo)檢測技術(shù)一種具有研究意義的應(yīng)用。
由于深度學(xué)習(xí)具有強大的學(xué)習(xí)與泛化能力,基于深度學(xué)習(xí)的目標(biāo)檢測方法日益發(fā)展與成熟。目前基于深度學(xué)習(xí)的目標(biāo)檢測方法有兩類,一類是基于候選區(qū)域檢測的方法,例如R-CNN[2-3]、Fast R-CNN[4]、Faster R-CNN[5];另一類是基于回歸檢測的方法,如YOLO[6-7]、YOLO 9000[8]、SSD[9]、YOLOv3[10-11]。YOLOv3算法使用了特征金字塔[12](Feature Pyramid Networks,FPN)策略,其特征提取主干網(wǎng)絡(luò)Darknet-53采用殘差網(wǎng)絡(luò)結(jié)構(gòu),在提高網(wǎng)絡(luò)深度、增強特征復(fù)用的同時,避免梯度消失、網(wǎng)絡(luò)退化的情況。
然而,以上方法在面對交通圖像中出現(xiàn)的目標(biāo)尺度多、目標(biāo)尺度過小、遮擋情況嚴(yán)重等情況時存在一些不足。傳統(tǒng)方法的泛化能力不足,并且實時性較差;基于候選區(qū)域的目標(biāo)檢測方法擁有更高的準(zhǔn)確度,但是檢測速率較慢,并不適合對于檢測實時性需求較高的應(yīng)用場景;回歸的目標(biāo)檢測方法具有更快的檢測速率,例如YOLOv3算法,更適合行人車輛檢測的性能需求。對于YOLOv3的FPN多尺度優(yōu)化工作例如PANet[13],它通過自底向上的路徑增強,利用準(zhǔn)確的低層定位信號增強整個特征層次,從而縮短了低層與頂層特征之間的信息路徑?;赑ANet改進的ZigZagNet[14]通過預(yù)測層之間的雙向交互完成了一種雙向的多尺度上下文信息增強。而針對YOLOv3中NMS算法出現(xiàn)的誤刪候選框問題也出現(xiàn)了各種解決方案,例如:郭進祥等[15]通過線性衰減置信得分的方式,對非極大值抑制算法NMS進行優(yōu)化。Jiang等[16]通過在NMS階段引入定位得分作為排序指標(biāo)而不是采用傳統(tǒng)的分類得分,解決分類置信度和定位置信度不匹配的問題。Hosang等[17]通過一個新的網(wǎng)絡(luò)架構(gòu)來執(zhí)行NMS算法,基于CNN來實現(xiàn)NMS網(wǎng)絡(luò)架構(gòu)。
本文針對交通監(jiān)控圖像存在的目標(biāo)尺度多樣、目標(biāo)圖像小和目標(biāo)被遮擋等問題,對YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)與NMS算法進行改良:① 針對多尺度目標(biāo)及小目標(biāo),向YOLOv3網(wǎng)絡(luò)中加入新的預(yù)測層以獲取更多尺度的特征圖,并進行特征融合,使特征圖具有高層語義信息的同時,還具有底層的位置信息,從而增強算法對多尺度目標(biāo)、小目標(biāo)的預(yù)測能力;② 針對被遮擋目標(biāo),使用以高斯分布的連續(xù)函數(shù)作為權(quán)重的衰減置信得分的NMS算法,降低被遮擋目標(biāo)框被誤刪的風(fēng)險,從而提高算法對被遮擋目標(biāo)的識別能力。
YOLOv3算法的前身是YOLOv1、YOLOv2算法。YOLO系列算法的主要流程是先通過卷積神經(jīng)網(wǎng)絡(luò)提取圖像的特征圖,再將特征圖輸入到預(yù)測網(wǎng)絡(luò)層進行預(yù)測,最后輸出預(yù)測結(jié)果。YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3較其前身做出了一些改進:引入了殘差網(wǎng)絡(luò)(ResNet)[18]、特征金字塔等思想。借助殘差網(wǎng)絡(luò)深化網(wǎng)絡(luò)以避免梯度消失的能力,構(gòu)建出Dartnet-53網(wǎng)絡(luò)作為特征提取的骨干網(wǎng)絡(luò),該骨干網(wǎng)絡(luò)由5個殘差塊組成,每個殘差塊由多個殘差單元組成。如圖2所示,殘差單元由兩個DBL單元組成,每個DBL單元由卷積層、批歸一化(batch normalization)[19]層和激活函數(shù)(Leaky ReLU)層組成;YOLOv3利用特征金字塔的思想,將第3、4、5個殘差塊生成的不同尺度的特征圖進行融合,形成3個新的特征圖,三種特征圖的尺寸分別為(52×52)、(26×26)、(13×13),這種融合后的特征圖在具有高層特征圖的詳盡語義信息的同時,還擁有底層特征圖的詳盡位置信息,分別用于預(yù)測小、中、大三種尺度的目標(biāo)。
圖2 DBL單元與殘差單元結(jié)構(gòu)圖
檢測網(wǎng)絡(luò)使用特征提取骨干網(wǎng)絡(luò)生成的三個不同特征圖進行預(yù)測,以13×13的特征圖為例,將圖像分為相等的13×13的網(wǎng)格,每個網(wǎng)格只負(fù)責(zé)預(yù)測中心在落在其中的目標(biāo),每個網(wǎng)格生成b個預(yù)測框,每個預(yù)測框?qū)?yīng)C+5個值(維度),C為檢測類別數(shù),5代表預(yù)測框的5個數(shù)值,分別為中心點橫坐標(biāo)x、縱坐標(biāo)y、高度h、寬度w及預(yù)測框是否包含檢測物體P(Oobject),再通過式(1)計算預(yù)測框的置信得分Sconfi。
Sconfi=P(C|||Oobject)×P(Oobject)×I(truth,pred)
(1)
式中:P(C|||Oobject)為網(wǎng)絡(luò)預(yù)測目標(biāo)為i類的置信得分;I(truth,pred)為預(yù)測框與目標(biāo)框的交并比,如果預(yù)測框包含預(yù)測目標(biāo),則P(Oobject)=1,否則P(Oobject)=0。
最后使用非極大值抑制NMS算法對預(yù)測框進行篩選,將置信得分Sconfi最高的預(yù)測框作為候選框。NMS算法公式如下:
(2)
式中:i為類別編號;M為置信得分較大的候選框;bi為待處理的預(yù)測框;I(M,bi)為M與bi的交并比;Nt為抑制閾值。
在YOLOv3中,特征提取網(wǎng)絡(luò)Darknet-53使用后3個殘差層生成的特征圖對原圖像進行檢測,此設(shè)計能夠檢測一定范圍尺度的目標(biāo),但對于檢測交通監(jiān)控圖像這種多尺度目標(biāo)、小目標(biāo)過多的圖像還存在一定局限性;而NMS這種非連續(xù)性、抑制程度較大的預(yù)測框篩選方式,極大可能會誤刪被遮擋物體的預(yù)測框,影響對被遮擋目標(biāo)的檢測效果。
對于多尺度的目標(biāo)檢測,需要多種分辨率的特征圖,低分辨率的特征圖適用于對大目標(biāo)的識別,高分辨率的特征圖更適用于小目標(biāo)的識別。對于特征圖,底層的特征圖語義信息較少,目標(biāo)位置準(zhǔn)確;高層的特征圖語義信息較為豐富,目標(biāo)位置比較粗略。頂層特征圖在不斷卷積的過程中,可能會忽略了很多小物體的信息,而特征金字塔可以將不同層次的特征進行尺度變化后,再進行信息融合,從而能夠提取到較為底層的信息。本文對YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)進行改進,并結(jié)合多尺度預(yù)測、特征融合技術(shù),提出一種高分辨率、預(yù)測尺度詳細(xì)、對小目標(biāo)識別效果好的網(wǎng)絡(luò)。
為使網(wǎng)絡(luò)獲得更多種分辨率的特征圖,提高對多尺度目標(biāo)的檢測率,本文將YOLOv3原網(wǎng)絡(luò)中DarkNet-53的第2個殘差塊輸出的下采樣特征圖作為一個新的尺度,將第3個殘差塊輸出的下采樣特征圖進行2倍上采樣,與新的特征圖進行融合,從而增加了一個新的預(yù)測層。
對于YOLOv3網(wǎng)絡(luò),各個尺度的預(yù)測層輸出預(yù)測結(jié)果之前,都需要經(jīng)過6個DBL單元和1個卷積層。為了增強特征的復(fù)用以及避免梯度消失,本文將6個DBL單元變?yōu)?個DBL單元和4個殘差單元,如圖3所示。
圖3 改進6×DBL層
改進的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,使用第2個殘差塊輸出的下采樣特征圖,生成新的預(yù)測層。并將該特征圖與第3個殘差塊輸出的特征圖進行融合,以增加新的預(yù)測層,將殘差網(wǎng)絡(luò)生成的特征圖處理網(wǎng)絡(luò)結(jié)構(gòu)由6個DBL層調(diào)整為2個DBL單元和4個殘差單元組成的殘差塊。
圖4 改進YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖
改進后YOLOv3算法具有更多的預(yù)測尺度及更高的分辨率。更多的預(yù)測尺度意味著算法能夠識別更多尺寸的目標(biāo);對多個特征進行融合可以提升算法對小目標(biāo)的識別能力;優(yōu)化殘差結(jié)構(gòu)會讓網(wǎng)絡(luò)層次更深預(yù)測能力更強。三種對網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化都提升了YOLOv3算法對交通監(jiān)控圖像中的行人車輛檢測能力。
如圖5所示,在車道中的行駛的A、B兩輛汽車,A車的預(yù)測框的置信得分為0.85,B車的預(yù)測框置信得分為0.7,A車預(yù)測框與B車預(yù)測框的交并比(IOU)大于0.5。因此,在使用改進前的NMS算法時,由于A、B車預(yù)測框的IOU大于YOLOv3算法的默認(rèn)閾值(0.5),因此算法會保留預(yù)測框置信得分最高的A車,會將B車的預(yù)測框置信得分置為0,導(dǎo)致無法對B車進行識別。造成上述情況的重要原因在于被覆蓋目標(biāo)的預(yù)測框與置信度得分最高的預(yù)測框交并比過大而超過閾值,被算法認(rèn)定為是對同一目標(biāo)的檢測框,由于其置信得分不是最高,因此被算法淘汰,將置信得分直接置為0。
圖5 目標(biāo)遮擋情況
為此,對于與置信得分最高的預(yù)測框交并比超過閾值的預(yù)測框,采用不直接將該預(yù)測框的置信得分至于0,而是采用更平滑的處理方式,利用高斯函數(shù)對預(yù)測框置信得分進行處理,與置信得分最高的預(yù)測框交并比越大,則預(yù)測框的置信得分下降越多。式(3)為優(yōu)化后的NMS算法表示:
(3)
式中:σ為高斯函數(shù)處理后的置信得分;i為類別編號;M為置信得分較大的預(yù)測框;bi為被比較的目標(biāo)預(yù)測框;iou(M,bi)為M與預(yù)測框bi的交并比;D為處理后的預(yù)測框集合。優(yōu)化后的NMS算法偽代碼如算法1所示。
算法1改進NMS算法
輸入:B={b1,b2,…,bn},S={s1,s2,…,sn},Nt,其中:B為候選預(yù)測框集合;S為所有候選框的置信得分集合;Nt為NMS算法置信得分篩選閾值。
輸出:篩選后候選框的得分集合S;篩選后的候選框集合D。
1.begin
2.D←{}
3.whileB≠emptydo
4.m←argaxS
//獲取置信得分最高的候選框行號
5.M←bm
//提取出置信得分最高的候選框
6.D←D∪MB←B-M
7.forbiinBdo
//對其他預(yù)測框高斯衰減函數(shù)處理
9.end
10.end
11.fordiinDdo
//刪除D中置信分?jǐn)?shù)小于閾值的預(yù)測框
12.ifsi 13.D←D-diS←S-si 14.end 15.end 16.returnD,S //獲取結(jié)果 17.end 算法流程如下: ① 將所有候選預(yù)測框集合D、候選框?qū)?yīng)置信得分集合S、置信得分閾值Nt作為算法輸入; ② 選取置信得分最大的預(yù)測框,將其存入集合D中,并從集合B中刪除; ③ 計算置信得分最大的預(yù)測框與其他預(yù)測框的IOU值; ④ 使用式(3)對置信分?jǐn)?shù)其他預(yù)測框進行高斯衰減處理,重新計算其置信分?jǐn)?shù); ⑤ 對剩余的預(yù)測框重復(fù)步驟②-步驟④,直到B所有預(yù)測框都被存入D中; ⑥ 刪除D中置信度分?jǐn)?shù)小于閾值的預(yù)測框,顯示置信分?jǐn)?shù)大于閾值的預(yù)測框,即該預(yù)測框為目標(biāo)的最終檢測結(jié)果。 傳統(tǒng)的NMS算法是一種簡單的閾值比較法,改進后的NMS算法通過對其衰減規(guī)則的改進,采用高斯衰減得分的方式對重疊復(fù)選框進行篩選,盡量避免將被遮擋目標(biāo)的預(yù)測框誤刪,從而提高算法對遮擋目標(biāo)的召回能力。 本文就YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)和NMS算法進行改進。改進后的NMS算法不再是簡單的閾值比較法,而是通過一種高斯權(quán)重的置信得分衰減方法,有效避免對被遮擋目標(biāo)的預(yù)測框的誤刪,從而提升對遮擋目標(biāo)的檢測能力;將DBL層替換為殘差塊,強化網(wǎng)絡(luò)等級,增強對特征的復(fù)用,并有效避免梯度消失的情況出現(xiàn)。 實驗使用操作系統(tǒng)為Ubuntu14.04,處理器為Intel Core i7 8700K,搭載NVIDIA 1070 GPU,內(nèi)存容量為32 GB的計算機,神經(jīng)網(wǎng)絡(luò)基于深度學(xué)習(xí)框架Tensorflow運行。 實驗使用UA-DETRAC[20]車輛數(shù)據(jù)集與PASCAL VOC[21]數(shù)據(jù)集。其中UA-DETRAC車輛檢測數(shù)據(jù)集包含121萬個帶標(biāo)簽的車輛邊界框,圖像分辨率為960×540,數(shù)據(jù)集包含了白天、夜晚與各種天氣條件的視頻幀。從UA-DETRAC數(shù)據(jù)集中篩選出8 000幅含有遮擋情況的圖像,從PASCAL VOC數(shù)據(jù)集中提取了2 000幅分辨率較高、目標(biāo)較小且出現(xiàn)遮擋情況的行人、車輛圖像。兩個數(shù)據(jù)集共計10 000幅圖片,將其中8 000幅圖片作為訓(xùn)練數(shù)據(jù)集,剩余2 000幅作為測試數(shù)據(jù)集。 將YOLOv3與本文改進后的YOLOv3網(wǎng)絡(luò)中NMS算法的閾值設(shè)定為默認(rèn)值0.5,將兩種網(wǎng)絡(luò)的網(wǎng)絡(luò)動量設(shè)置為0.9。初始學(xué)習(xí)率設(shè)置為0.001,學(xué)習(xí)率衰減系數(shù)為0.005,并將學(xué)習(xí)率在迭代20 000次時降為0.000 1,在迭代25 000次時降為0.000 01,讓損失函數(shù)繼續(xù)收斂。 圖6為改進YOLOv3網(wǎng)絡(luò)的損失值收斂曲線。由圖可見,經(jīng)過25 000次迭代后,Loss值降至0.2左右,由此得出,改進后YOLOv3網(wǎng)絡(luò)在30 000次迭代后的訓(xùn)練效果較為理想。 圖6 Loss函數(shù)曲線 本文主要針對YOLOv3算法的改進點在于增強其對多尺度目標(biāo)以及被遮擋目標(biāo)的識別能力,因此為了驗證改進效果,使用PASCAL VOC數(shù)據(jù)集中目標(biāo)大小尺度不一、目標(biāo)小且遮擋情況較多的行人車輛圖像進行對比實驗。 1) 針對多尺度目標(biāo)檢測。測試集中包含537幅車輛行人目標(biāo)大小不一的圖像,使用Faster R-CNN[5]、FSSD[22]、YOLOv3[10-11]、具有PANet[13]結(jié)構(gòu)的YOLOv3(PANet-YOLOv3)、具有ZigZagNet[14]結(jié)構(gòu)的YOLOv3(ZigZagNet-YOLOv3)與改進后檢測方法進行對比實驗。 如圖7所示,使用不同檢測方法對多尺度行人車輛圖像進行檢測。當(dāng)不同尺度目標(biāo)數(shù)量為10時,F(xiàn)aster R-CNN、FSSD、YOLOv3、PANet-YOLOv3、ZigZagNet-YOLOv3改進方法的召回率均超過75%。當(dāng)不同尺度目標(biāo)數(shù)量為30時,F(xiàn)aster R-CNN為51.3%,YOLOv3為59.6%,F(xiàn)SSD為57.5%,PANet-YOLOv3為66.1%,ZigZagNet-YOLOv3為69.2%,改進方法為76.4%。隨著圖像中不同尺度的目標(biāo)數(shù)量逐漸增加,召回率逐漸降低,當(dāng)不同尺度目標(biāo)數(shù)量為50時,F(xiàn)aster R-CNN的召回率為17.6%, FSSD為23.3%,YOLOv3為29.8%,PANet-YOLOv3為40.2%,ZigZagNet-YOLOv3為45.9%,本文方法為56.4%,明顯高于其他方法。由此可知,通過增加YOLOv3網(wǎng)絡(luò)預(yù)測層的方式,提高了其對多尺度目標(biāo)的預(yù)測能力。 圖7 本文方法與其他方法在多尺度目標(biāo)檢測的召回率對比 2) 針對小目標(biāo)檢測。從測試數(shù)據(jù)集中選擇1 233幅包含共2 618個小目標(biāo)的圖片,對改進前YOLOv3算法與本文方法進行準(zhǔn)確率與召回率統(tǒng)計。由于在人車識別中,小目標(biāo)雖然有一定機會被識別,但過小的車輛目標(biāo)可能會被識別為行人目標(biāo),因此本階段實驗以準(zhǔn)確率與召回率作為評價標(biāo)準(zhǔn)。 從表1中結(jié)果可知,本文方法相比改進前的YOLOv3算法,在小目標(biāo)識別方面的準(zhǔn)確率提升了4.3百分點,召回率提升了5.9百分點。實驗證明通過新增特征融合預(yù)測層的方法,能夠提升YOLOv3對小目標(biāo)的檢測能力。 表1 YOLOv3與本文方法小目標(biāo)檢測對比(%) 3) 針對遮擋情況的檢測。測試數(shù)據(jù)集中包含677幅存在遮擋情況的圖片,將其按照橫縱遮擋比例進行分組,對遮擋方向、遮擋比例的不同情況對改進前的YOLOv3算法與本文方法進行檢測比較。 從表2中結(jié)果可以看出,在水平遮擋、遮擋比例低于20%的條件下,兩種算法的準(zhǔn)確率數(shù)值基本接近;遮擋比例處于20%~40%時,本文方法比YOLOv3的準(zhǔn)確率數(shù)值高23百分點左右;遮擋比例高于40%時,相比與改進前YOLOv3算法仍然具備更高的準(zhǔn)確率數(shù)值。在垂直遮擋,遮擋比例低于20%的條件下,相比YOLOv3的準(zhǔn)確率數(shù)值高11百分點左右;在遮擋比例處于20%~40%時,本文方法的準(zhǔn)確率值已經(jīng)高于YOLOv3 28百分點左右;遮擋比例高于40%時,仍然相比于YOLOv3有更好的識別準(zhǔn)確度。 表2 目標(biāo)遮擋情況下本文方法與YOLOv3檢測效果對比(%) 圖8為本文方法與YOLOv3對于目標(biāo)遮擋情況下的檢測效果對比圖。圖8(a)、(b)為車輛遮擋比例為20%的情況,兩種算法均能檢測到目標(biāo)車輛;圖(c)、(d)為車輛遮擋比例80%的情況,YOLOv3算法無法檢測被遮擋目標(biāo),但本文方法能夠識別被遮擋目標(biāo);圖(f)、(e)為行人遮擋比例為20%的情況,兩種算法均能識別出被遮擋目標(biāo);圖(g)、(h)為行人遮擋比例為40%的情況,改進后方法可識別被遮擋的行人目標(biāo)。結(jié)果證明對NMS算法置信得分高斯加權(quán)衰減的改進取得了理想效果。 (a) (b) 4) 算法整體性能。實驗使用全部測試集對本文方法與各類檢測方法進行性能對比,從表3可知,改進后算法的準(zhǔn)確率達到了86.1%,召回率達到了91.9%。相比于ACF的準(zhǔn)確率提升了40.7百分點,召回率提升了40.7百分點;相比于R-CNN的準(zhǔn)確率提升了35.3百分點,召回率提升33.9百分點;相比于Faster R-CNN準(zhǔn)確率提升了27.3百分點,召回率提升22.6百分點相比于YOLOv3算法,準(zhǔn)確率提升8.4百分點,召回率提升了10.4百分點。由上述階段的實驗結(jié)果可知,通過改進NMS算法與增加新的特征融合預(yù)測層,本文方法能夠?qū)OLOv3的識別能力進行提升。 表3 各種檢測方法的準(zhǔn)確率與召回率對比(%) 本文將YOLOv3算法應(yīng)用于行人車輛檢測識別領(lǐng)域,實現(xiàn)了對交通監(jiān)控圖像中行人、車輛的實時準(zhǔn)確檢測。針對多尺度目標(biāo)、目標(biāo)過小及目標(biāo)遮擋的問題,本文提出了對網(wǎng)絡(luò)結(jié)構(gòu)與NMS算法的優(yōu)化思路。本文使用PASCAL VOC和UA-DETRAC數(shù)據(jù)集進行訓(xùn)練與測試。實驗結(jié)果證明:本文方法能夠改善YOLOv3算法對多尺度、小目標(biāo)、被遮擋目標(biāo)的檢測能力,將行人車輛識別的檢測準(zhǔn)確率從77.7%提升至86.1%,召回率從81.5%提高到91.9%。但是本文向YOLOv3算法加入了更多的預(yù)測層及更復(fù)雜的高斯權(quán)重計算,因此對檢測速率的優(yōu)化是后續(xù)的研究方向。3 實驗與結(jié)果分析
3.1 實驗條件與數(shù)據(jù)集
3.2 模型訓(xùn)練
3.3 實驗結(jié)果分析
4 結(jié) 語