梁禮明, 熊 文, 彭仁杰, 藍(lán)智敏
(江西理工大學(xué)電氣工程與自動(dòng)化學(xué)院, 贛州 341000)
隨著中國經(jīng)濟(jì)的飛速發(fā)展,機(jī)動(dòng)車數(shù)量逐年遞增,每年發(fā)生的交通事故不計(jì)其數(shù),如何通過先進(jìn)的車輛檢測技術(shù)減少交通事故的發(fā)生已成為城市交通管理的一項(xiàng)重要工作[1]。
車輛檢測作為目標(biāo)檢測領(lǐng)域的重要研究內(nèi)容,在智能交通、車輛跟蹤、無人駕駛等領(lǐng)域具有廣泛的應(yīng)用需求和重要的研究價(jià)值[2]。自深度學(xué)習(xí)在圖像分類任務(wù)[3-4]中取得巨大成功后,基于深度學(xué)習(xí)的方法被廣泛用于目標(biāo)檢測任務(wù)中,諸如Faster R-CNN[5]、SSD[6]、YOLO[7]等通用目標(biāo)檢測算法均取得了不錯(cuò)的效果。上述方法均采用了目標(biāo)檢測領(lǐng)域流行的錨框機(jī)制來遍歷特征圖生成目標(biāo)的候選區(qū)域,但是錨框的長寬比和尺度需要根據(jù)特定的數(shù)據(jù)集預(yù)先設(shè)計(jì),常用的方法為采用K-means算法[8]或K-means++算法[9]通過特定數(shù)據(jù)集的真實(shí)邊界框進(jìn)行聚類,從而得到初始錨框的參數(shù),聚類值的選擇對(duì)最終生成的錨框參數(shù)影響較大,從而產(chǎn)生不同的聚類偏差,并最終影響到模型的綜合性能。
針對(duì)此問題,有關(guān)學(xué)者嘗試采用關(guān)鍵點(diǎn)的方法來對(duì)目標(biāo)定位和分類。Law等[10]提出通過計(jì)算目標(biāo)的一對(duì)左上角點(diǎn)和右下角點(diǎn)來回歸出目標(biāo)的位置,但是在海量的角點(diǎn)信息中分辨出屬于具體的目標(biāo)時(shí)存在精確度差和耗時(shí)過久的問題,從而導(dǎo)致大量不正確的檢測框產(chǎn)生。Duan等[11]提出在一對(duì)角點(diǎn)中增加一個(gè)中心點(diǎn),形成的關(guān)鍵點(diǎn)三元組(左上角點(diǎn)、中心點(diǎn)、右下角點(diǎn))可以更準(zhǔn)確地定位檢測框位置。Zhou等[12]提出用4個(gè)極值點(diǎn)來和1個(gè)中心點(diǎn)來生成目標(biāo)的真值熱圖[10],并以此預(yù)測出目標(biāo)的位置。上述三種方法采用的關(guān)鍵點(diǎn)個(gè)數(shù)較多,在后續(xù)步驟中需要額外對(duì)關(guān)鍵點(diǎn)進(jìn)行分組,檢測效率不高。
為了提高檢測效率,現(xiàn)借鑒Centernet算法[13]設(shè)計(jì)思路,采用中心點(diǎn)檢測的方法回歸車輛的邊界框和類別信息。
本文算法流程如圖1所示。具體地,首先將輸入圖像大小調(diào)整為512×512像素,并采用兩次步長為2的卷積操作將圖像分辨率縮小4倍;然后通過特征提取網(wǎng)絡(luò)Hourglass反復(fù)提取車輛特征,得到車輛不同層次的特征信息;車輛特征信息經(jīng)預(yù)測模塊處理后輸出3個(gè)預(yù)測分支,分別預(yù)測車輛中心點(diǎn)位置、車輛檢測框尺度和車輛中心點(diǎn)位置偏移;最后基于預(yù)測信息回歸出車輛檢測框,完成最終的車輛檢測任務(wù)。
圖1 算法流程Fig.1 Algorithm process
采用堆疊沙漏網(wǎng)絡(luò)Hourglass[14]車輛特征提取網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。Hourglass網(wǎng)絡(luò)采用2個(gè)堆疊的沙漏網(wǎng)絡(luò)模塊構(gòu)成,每個(gè)沙漏網(wǎng)絡(luò)模塊中除中間過渡層外分別進(jìn)行了5次降采樣和5次上采樣操作,并不斷提取各層次車輛特征信息,低層的卷積層可提取到各種類別車輛的邊緣、線條等局部細(xì)節(jié)信息,高層的卷積層可從低層獲取的局部細(xì)節(jié)信息中學(xué)習(xí)到更為復(fù)雜的語義信息。由于深層網(wǎng)絡(luò)可能會(huì)存在隨著網(wǎng)絡(luò)的加深出現(xiàn)梯度消失和梯度爆炸的現(xiàn)象,從而導(dǎo)致網(wǎng)絡(luò)性能退化的問題[15]。通過在Hourglass網(wǎng)絡(luò)中引入殘差網(wǎng)絡(luò)[16]較好地避免了此類問題的發(fā)生。由于在Hourglass網(wǎng)絡(luò)中反復(fù)對(duì)輸入圖像進(jìn)行降采樣和上采樣操作,可能會(huì)存在車輛有效特征信息丟失的情況,從而導(dǎo)致最終的檢測模型出現(xiàn)車輛漏檢和誤檢現(xiàn)象發(fā)生,通過融合通道數(shù)與尺度相同的各層特征圖,保證層與層之間的最大信息流。
圖2 Hourglass網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Hourglass network structure
1.2.1 可變形卷積
在多類別的車輛檢測任務(wù)中,常受車輛種類、大小、視覺變化以及非剛體形變等因素的影響,從而導(dǎo)致車輛檢測精度低的問題。傳統(tǒng)卷積模型受其自身固定的幾何結(jié)構(gòu)限制,缺乏幾何形變建模能力,不利于網(wǎng)絡(luò)訓(xùn)練時(shí)損失函數(shù)的擬合從而導(dǎo)致建模的失敗。為克服上述問題,引入可變形卷積[17]輛特征提取網(wǎng)絡(luò)重建,以此提高網(wǎng)絡(luò)中各卷積層的車輛特征表達(dá)能力。傳統(tǒng)卷積和可變形卷積在車輛檢測中的示意圖如圖3所示,其中采樣點(diǎn)為3×3,可以看出可變形卷積在采樣時(shí)更能適應(yīng)多類別車輛的形狀與尺寸。假設(shè)一個(gè)3×3卷積k定義為
圖3 傳統(tǒng)卷積與可變形卷積Fig.3 Traditional convolution and deformable convolution
k={(-1,1),(0,1),(1,1),(-1,0),(0,0),(1,0),(-1,-1),(0,-1),(1,-1)}
(1)
對(duì)輸入特征圖f(*)采用傳統(tǒng)卷積操作后,在局部位置αλ處的特征映射T可定義為
(2)
式(2)中:w()為采樣點(diǎn)權(quán)重值;αn為k的局部位置,n=1,2,…,|k|。在可變形卷積中加入偏移量Δαn的學(xué)習(xí)之后,可根據(jù)不同種類、形狀、尺寸的車輛目標(biāo)動(dòng)態(tài)調(diào)整可變形卷積核的大小和位置,從而高效完成多類別車輛檢測任務(wù)??勺冃尉矸e定義為
(3)
在CenterNet算法中預(yù)測模塊分為三個(gè)預(yù)測分支,即中心點(diǎn)位置(x,y)預(yù)測、車輛檢測框尺度(w,h)預(yù)測、中心點(diǎn)位置偏移(offset)預(yù)測。三個(gè)預(yù)測分支的總輸出可作為車輛檢測框回歸的重要依據(jù)。
針對(duì)中心點(diǎn)位置采用帶有懲罰項(xiàng)的邏輯回歸損失[18],即
(4)
針對(duì)車輛檢測框和中心點(diǎn)位置偏移分別采用L1距離損失函數(shù)
(5)
(6)
車輛檢測框和中心點(diǎn)位置偏移均采用L1距離損失函數(shù),但是評(píng)價(jià)模型性能的重要參考指標(biāo)是真實(shí)框A與預(yù)測框B的IoU(intersection over union)。在模型訓(xùn)練時(shí),L1距離損失函數(shù)值通過不斷迭代達(dá)到最優(yōu)時(shí),并不能代表預(yù)測框與真實(shí)框的重合程度達(dá)到最大。若將IoU引入損失函數(shù)中,當(dāng)真實(shí)框與檢測框無交集時(shí),無論兩者距離如何變化,IoU始終為零,最終導(dǎo)致模型性能無法進(jìn)行優(yōu)化。針對(duì)此問題,引入GIoU[19](generalized intersection over union)實(shí)框與檢測框重合程度的新標(biāo)準(zhǔn),GIoU可定義為
(7)
(8)
式中:T表示包含真實(shí)框與檢測框的最小封閉框;T(A∪B) 表示最小封閉框區(qū)域T不包含A與B的部分。A、B和T的關(guān)系如圖4所示。GIoU可作為一種距離度量指標(biāo),當(dāng)A與B無交集時(shí),GIoU可表示為
圖4 A、B和T的關(guān)系Fig.4 Eelationship of A, B and T
(9)
當(dāng)A∪B為定值時(shí),T不斷減小,A與B將不斷向有交集的情況進(jìn)行優(yōu)化。
為解決評(píng)價(jià)指標(biāo)IoU與目標(biāo)函數(shù)不統(tǒng)一的問題,本文在原有損失函數(shù)的基礎(chǔ)上增加一項(xiàng)衡量預(yù)測框(Pre)與真實(shí)框(Tru)的距離損失,即
(10)
新的組合損失函數(shù)為
L=Lc+γ1Loffset+γ2Lwh+LG
(11)
式(11)中:γ1、γ2為損失權(quán)重系數(shù),設(shè)為0.1和1。
本次實(shí)驗(yàn)選用國際公開的KITTI庫[20]和自制數(shù)據(jù)庫對(duì)模型進(jìn)行訓(xùn)練和評(píng)估,根據(jù)實(shí)驗(yàn)要求,將兩數(shù)據(jù)庫標(biāo)注格式均轉(zhuǎn)化為VOC2007數(shù)據(jù)集格式,保留實(shí)驗(yàn)需要的4個(gè)類別標(biāo)簽(Car、Van、Truck和Tram),并從中篩選出高質(zhì)量的車輛圖像,最終得到公開數(shù)據(jù)庫中的7 000張圖像,自制數(shù)據(jù)庫中的3 000張圖像,訓(xùn)練集和測試集按3∶1比例劃分。為了有效降低模型過擬合的風(fēng)險(xiǎn),此次實(shí)驗(yàn)還采用隨機(jī)縮放、水平翻轉(zhuǎn)以及對(duì)比度變換等數(shù)據(jù)增強(qiáng)方法來提高模型的泛化能力。
本次實(shí)驗(yàn)的仿真平臺(tái)是PyCharm,使用PyTorch深度學(xué)習(xí)框架,計(jì)算機(jī)配置為Intel?CoreTMi7-6700H CPU,16 G內(nèi)存,Nvidia GeForce GTX 2070 GPU,操作系統(tǒng)為Ubuntu16.04.2。網(wǎng)絡(luò)參數(shù)配置如下:最大迭代次數(shù)為500次;批量大小設(shè)置為8;采用學(xué)習(xí)率衰減的方式訓(xùn)練,初始學(xué)習(xí)率為0.000 25,網(wǎng)絡(luò)每迭代100次,學(xué)習(xí)率下調(diào)10倍。
實(shí)驗(yàn)采用均值平均精度(mean average precision,mAP)與傳輸速率來評(píng)估本文模型的綜合性能,并與目標(biāo)檢測通用算法Faster R-CNN[5]、SSD[6]、 CornerNet[10]、CenterNet[13]以及YOLOv3[21]對(duì)比實(shí)驗(yàn),所有算法均在公開數(shù)據(jù)庫上訓(xùn)練和測試。表1顯示本文算法與其他算法的實(shí)驗(yàn)對(duì)比結(jié)果。
如表1所示,本文算法在公開數(shù)據(jù)庫上取得了93.42%的mAP,精度優(yōu)于其他算法,并以49 f/s的檢測速度達(dá)到了實(shí)時(shí)檢測的要求。表1中前三種算法皆采用錨框機(jī)制來遍歷特征圖生成車輛的候選區(qū)域,并以此回歸出車輛檢測框信息,其中YOLOv3在精度和檢測速度上都要優(yōu)于其他兩種算法。后三種算法均采用關(guān)鍵點(diǎn)檢測方法回歸車輛類別和位置信息,擺脫了錨框的依賴性,3種關(guān)鍵點(diǎn)檢測方法在精度方面好于錨框機(jī)制方法。CornerNet算法由于采用目標(biāo)左上角點(diǎn)和右下角點(diǎn)定位目標(biāo)檢測框,在目標(biāo)車輛預(yù)測中存在對(duì)角點(diǎn)分組的步驟,此步驟增加了網(wǎng)絡(luò)計(jì)算的復(fù)雜度,極大地降低了算法的檢測速度。
表1 不同算法在公開數(shù)據(jù)庫上對(duì)比結(jié)果Table 1 The comparison results of different algorithms on public database
2.2.1 不同改進(jìn)模塊對(duì)模型性能的影響
為了驗(yàn)證本文算法引進(jìn)的可變形卷積模塊和GIoU損失模塊對(duì)模型性能產(chǎn)生的影響,采用控制變量法,在原CenterNet算法基礎(chǔ)上依次加入以上所提改進(jìn)模塊,實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同模塊對(duì)本文模型性能的影響Table 2 The impact of different modules on the performance of the model
當(dāng)只引入可變形卷積后,模型測試精度相對(duì)CenterNet算法只有0.72個(gè)百分點(diǎn)的提高;損失函數(shù)加入GIoU損失項(xiàng)時(shí),精度提高了0.94個(gè)百分點(diǎn);當(dāng)同時(shí)引入可變形卷積和GIoU損失項(xiàng)時(shí),模型精度得到最大提升。
為了驗(yàn)證本文算法在其他車輛數(shù)據(jù)集上的檢測性能,在自制數(shù)據(jù)庫上對(duì)本文算法和CenterNet算法進(jìn)行訓(xùn)練和測試,其中測試集有圖像1 000張,圖像中總共含有車輛數(shù)目為3 253輛。通過比較兩種算法在車輛檢測時(shí)出現(xiàn)漏檢和誤檢的情況,得到測試結(jié)果如表3所示。
表3 原算法和本文算法對(duì)比結(jié)果Table 3 The comparison results of the original algorithm and our algorithm
本文算法相比原算法在自制數(shù)據(jù)庫上也具有一定的優(yōu)勢性,不僅減少了車輛漏檢情況的發(fā)生,同時(shí)也降低了車輛誤檢數(shù)。本文算法相比原算法精確率和召回率分別提高了2.7%和5.6%,這充分說明本文算法可適應(yīng)不同場景下的車輛檢測任務(wù)。
將兩種數(shù)據(jù)庫中的圖像輸入到本文模型中測試,得出部分圖像檢測效果如圖5所示,其中檢測框左上角為目標(biāo)車輛類別和score,IoU閾值設(shè)置為0.7,score閾值設(shè)置為0.3,每張圖像的下方顯示了從圖像最左端到最右端依次檢測出的目標(biāo)類別及score。圖5中前3張圖像來源于公開數(shù)據(jù)庫,后3張圖像來源于自制數(shù)據(jù)庫,公開數(shù)據(jù)庫中目標(biāo)車輛個(gè)數(shù)較多,背景中非檢測目標(biāo)對(duì)待檢測目標(biāo)車輛的分類和定位產(chǎn)生一定的干擾。從圖5中可以看出本文方法在多類別車輛檢測中,檢測框與目標(biāo)車輛重合程度大,誤檢、漏檢和重復(fù)檢測現(xiàn)象較少。
圖5 兩種數(shù)據(jù)庫中的部分圖像檢測效果Fig.5 Partial image detection effect in two databases
借鑒通用目標(biāo)檢測算法CenterNet思路,將其應(yīng)用到多類別車輛檢測任務(wù)中。針對(duì)車輛類別多及形狀大小各異等檢測難點(diǎn),引進(jìn)可變形卷積對(duì)CenterNet網(wǎng)絡(luò)重建,提高網(wǎng)絡(luò)對(duì)各種車輛特征提取能力??紤]到CenterNet損失函數(shù)的局部最優(yōu)時(shí)不等價(jià)于模型評(píng)價(jià)指標(biāo)IoU的局部最優(yōu),通過引進(jìn)GIoU損失使原損失函數(shù)更為合理。在公開數(shù)據(jù)庫和自制數(shù)據(jù)庫上的仿真實(shí)驗(yàn)結(jié)果表明,本文算法的綜合性能要優(yōu)于其他算法。在后續(xù)工作中,將對(duì)算法流程進(jìn)行簡化,使車輛檢測速度與精度得到更大的提升。