周 攀,徐向榮,朱永飛, 陶兆勝
(安徽工業(yè)大學(xué) 安徽馬鞍山 243032)
自動駕駛、智能交通等研究領(lǐng)域的發(fā)展使得道路目標(biāo)檢測技術(shù)的應(yīng)用變得愈加廣泛。道路場景目標(biāo)檢測是運用計算機(jī)視覺判斷道路上是否含有車輛、行人等目標(biāo)并識別出目標(biāo)的種類及其具體位置,對維護(hù)道路安全暢通、實時監(jiān)測道路信息等具有重要作用。
傳統(tǒng)目標(biāo)檢測算法主要依賴人為設(shè)計特征,首先從圖像中利用窮舉法選取候選區(qū)域,然后提取其特征,最后利用分類器對其進(jìn)行分類,特征提取主要使用HOG[1]、SIFT[2]等,分類器主要使用SVM[3]、Adaboost[4]等。然而人為設(shè)計特征的泛化性和魯棒性差,難以適應(yīng)復(fù)雜的實際場景;并且利用窮舉法提取候選區(qū)域的時間復(fù)雜度高滿足不了實時性。自2006年HINTON等[5]學(xué)者提出深度學(xué)習(xí)的概念后,基于深度學(xué)習(xí)的目標(biāo)檢測算法逐漸成為計算機(jī)視覺領(lǐng)域研究的熱點,憑借強(qiáng)大的特征表達(dá)能力取得廣泛應(yīng)用。目前主流算法包括基于區(qū)域推薦的檢測算法和基于回歸的檢測算法,前者主要包括R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8]等,后者主要包括YOLOV1[9]、YOLOV2[10]、YOLOV3[11]、SSD[12]等。
2014年,GIRSHICK等人提出R-CNN模型,首次將卷積神經(jīng)網(wǎng)絡(luò)的概念引入目標(biāo)檢測領(lǐng)域,但是每個區(qū)域建議框都要單獨進(jìn)行特征提取導(dǎo)致難以滿足實時性。針對R-CNN的不足,2015年GIRSHICK R等人提出Fast R-CNN算法,運用SPP-Net[13]的原理,通過ROI[7](regions of interest) Polling層將不同大小的特征圖統(tǒng)一采樣成固定大小,并且將分類損失和邊界框坐標(biāo)回歸損失統(tǒng)一訓(xùn)練,極大提高檢測速度。2015年提出的Faster R-CNN增加了RPN[8](region proposal network)層,并且提出一種全新的映射機(jī)制——錨框(anchor box),通過設(shè)置不同尺度的錨框在RPN的特征層中提取候選框來代替選擇性搜索等傳統(tǒng)的候選框選取方法,實現(xiàn)網(wǎng)絡(luò)的端到端訓(xùn)練。
2015年,REDMON團(tuán)隊提出YOLOV1模型,將目標(biāo)檢測和類預(yù)測任務(wù)集成到神經(jīng)網(wǎng)絡(luò)模型中,同時預(yù)測邊界框位置和類別并實現(xiàn)端到端檢測,但是由于定位損失過大,所以對小物體的檢測效果不好。YOLOV2采用Darknet-19為特征提取網(wǎng)絡(luò),沿用Faster R-CNN的錨框機(jī)制,提升速度和精度,但是對復(fù)雜環(huán)境的目標(biāo)檢測效果不理想。2018年REDMON J團(tuán)隊提出YOLOV3算法,由于其檢測速度較高,近年來被廣泛應(yīng)用于道路場景檢測中,李漢冰等[14]在原始YOLOV3的基礎(chǔ)上使用反殘差網(wǎng)絡(luò)進(jìn)行特征提取減少參數(shù)量以提高模型的檢測速度;張富凱等[15]設(shè)計6個卷積特征圖與殘差網(wǎng)絡(luò)中相應(yīng)尺度的特征圖進(jìn)行融合以提高特征融合的融合效果;鄭秋梅等[16]根據(jù)待檢測目標(biāo)的尺寸調(diào)整損失函數(shù)的影響權(quán)重以改善小目標(biāo)及遮擋環(huán)境的檢測效果;杜金航等[17]通過精簡Darknet53骨干網(wǎng)絡(luò)構(gòu)建了含30個卷積層的卷積神經(jīng)網(wǎng)絡(luò)兼顧檢測速度和檢測精度。雖然YOLOV3已經(jīng)取得較好的實時檢測效果,但對于道路場景檢測來說仍有不足。
本文針對道路目標(biāo)檢測中存在檢測精度低和實時性不足的問題,提出一種基于YOLOV3改進(jìn)的道路目標(biāo)檢測算法。為提高特征提取部分的特征學(xué)習(xí)能力,對特征提取部分的網(wǎng)絡(luò)結(jié)構(gòu)作出改進(jìn),利用ResNext[18]網(wǎng)絡(luò)代替原YOLOV3結(jié)構(gòu)中基于ResNet[19]的殘差結(jié)構(gòu),同時采用K-means[20]算法聚類得出錨框參數(shù)以提升在特定任務(wù)下的目標(biāo)檢測精度,提高模型的檢測速度和檢測精度。
YOLOV3的網(wǎng)絡(luò)結(jié)構(gòu)主要由特征提取部分DarkNet53骨干網(wǎng)絡(luò)和多尺度預(yù)測部分YOLO網(wǎng)絡(luò)組成。 Darknet-53部分由卷積層、批量歸一化層、張量連接層等組成。Darknet-53相比YOLOV2采用的Darknet-19,加深了網(wǎng)絡(luò)層數(shù),可以充分提取圖像的內(nèi)部特征,并且引入ResNet的殘差塊結(jié)構(gòu)和跨層連接操作,緩解反向傳播中的梯度彌散問題,其處理速度雖然比Darknet-19慢,但是比同精度下的ResNet快。YOLO部分主要由卷積層、批量歸一化、激活層組成,借鑒特征金字塔[21]思想,采用多尺度融合的檢測方法對不同尺度的目標(biāo)檢測具有較好的魯棒性。
YOLOV3的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示,DBL和Res unit分別表示卷積模塊和殘差模塊,resn(res1、res2…)表示該殘差結(jié)構(gòu)中含有n個Res unit模塊。其中輸入圖像的尺寸是416×416×3,在經(jīng)過特征提取網(wǎng)絡(luò)DarkNet53處理后,得到尺寸分別為208×208、104×104、52×52、26×26、13×13的特征圖。采用上采樣和特征融合方法,通過 13×13、26×26和 52×52 三個不同尺度的融合特征圖對目標(biāo)進(jìn)行獨立檢測,有效地增強(qiáng)了對大小不同物體和被遮擋物體的檢測效果。
圖1 YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)
卷積經(jīng)網(wǎng)絡(luò)在特征提取過程中, 淺層特征圖感受野較小包含位置信息較為豐富,深層特征圖感受野較大包含語義信息較為豐富,YOLOV3采用多尺度融合的檢測方式,得到分別經(jīng)過下采樣32倍、16倍以及8倍處理的特征圖,每個特征圖劃分為S×S的單元格,每個單元格通過B個預(yù)測框?qū)個類別進(jìn)行檢測,得到每個檢測框的坐標(biāo)信息和置信度。每個特征圖的輸出維度是S×S×[3×(4+1+C)],式中:S×S是輸出特征圖的單元格數(shù),3是每個單元格錨框數(shù)目,1是預(yù)測框的置信度,C是目標(biāo)類別數(shù),4是每個錨框的網(wǎng)絡(luò)預(yù)測坐標(biāo)信息tx、ty、tw、th。如式(1)所示,對坐標(biāo)信息進(jìn)行解碼得到檢測框的最終坐標(biāo)
(1)
式(1)中:cx、cy——網(wǎng)格的坐標(biāo)偏移量;pw、ph——預(yù)設(shè)錨框的長寬;bx、by、bw、bh——最終預(yù)測框的坐標(biāo)值;tx、ty、tw、th——網(wǎng)絡(luò)預(yù)測坐標(biāo)。
如圖2所示,對錨框的預(yù)測坐標(biāo)修正得到檢測框最終坐標(biāo)信息,σ(tx)和σ(ty)是預(yù)測框中心點基于左上角的坐標(biāo)點的偏移量,σ是激活函數(shù),pw和ph是預(yù)選框的寬和高。
圖2 錨框修正圖
損失函數(shù)作為深度神經(jīng)網(wǎng)絡(luò)對誤檢樣本評判的依據(jù),在很大程度上影響神經(jīng)網(wǎng)絡(luò)模型收斂的效果。如式(2)所示,YOLOV3的損失函數(shù)由坐標(biāo)誤差損失、置信度誤差損失及分類誤差損失三部分相加組成。坐標(biāo)損失包括中心點坐標(biāo)值損失和寬高值損失,采用平方和損失函數(shù),分類誤差和置信度誤差采用二元交叉熵?fù)p失函數(shù),將所有類別的分類問題歸結(jié)于是否屬于這個類別,即二分類問題。交叉熵?fù)p失函數(shù)可以避免均方誤差損失函數(shù)出現(xiàn)的因為梯度彌散導(dǎo)致的學(xué)習(xí)速率降低的問題,只有當(dāng)預(yù)測值和真實值無限接近時,損失才趨近于0,從而保證模型的收斂速度。
(2)
YOLOV3的特征提取網(wǎng)絡(luò)Darknet-53利用基于ResNet殘差網(wǎng)絡(luò)結(jié)構(gòu)的跳躍連接機(jī)制,其中卷積層部分采用1×1和3×3卷積核,通過設(shè)置卷積核的個數(shù)保證殘差結(jié)構(gòu)中的輸入和輸出的維度保持不變。但是該種卷積層的設(shè)置使得參數(shù)量過多,檢測速度變慢。
為提高道路場景目標(biāo)的檢測速度,本文著重于在保證檢測精度的前提下減少參數(shù)量。YOLOV3中的Darknet-53主體結(jié)構(gòu)中包含有5組殘差網(wǎng)絡(luò),每組網(wǎng)絡(luò)中各包含有1,2,8,8,4個殘差模塊,每組網(wǎng)絡(luò)的結(jié)構(gòu)相似,只有卷積核的尺寸和輸出的特征圖的尺度不同。雖然網(wǎng)絡(luò)層的深度越深意味著模型的抽象層級會加深,有更強(qiáng)非線性表達(dá)能力從而學(xué)習(xí)到更復(fù)雜的表達(dá),可以擬合更加復(fù)雜的特征輸入,但是網(wǎng)絡(luò)層過深將導(dǎo)致模型結(jié)構(gòu)過于復(fù)雜,訓(xùn)練參數(shù)過多導(dǎo)致訓(xùn)練過程繁瑣,滿足不了實時性并且增大對數(shù)據(jù)量的要求。如圖3所示,將Darknet-53網(wǎng)絡(luò)進(jìn)行精簡,精簡后結(jié)構(gòu)中每組網(wǎng)絡(luò)包各含有1,2,6,6,4個殘差模塊,參數(shù)量減少17%導(dǎo)致運算復(fù)雜度降低從而提高檢測速度。
圖3 特征提取網(wǎng)絡(luò)改進(jìn)
原YOLOV3算法中的殘差結(jié)構(gòu)是基于ResNet,利用基于ResNext的殘差結(jié)構(gòu)網(wǎng)替換它,ResNet的殘差結(jié)構(gòu)和ResNext的殘差結(jié)構(gòu)分別如圖4(a)、(b)所示。ResNext提出一種介于普通卷積核和深度可分離卷積的策略:分組卷積,通過控制分組的數(shù)量達(dá)到兩種策略的平衡。分組卷積的思想源自Inception,Inception需要人工設(shè)計每個分支,而ResNext的每個分支的拓?fù)浣Y(jié)構(gòu)是相同的。ResNext通過1×1的卷積的網(wǎng)絡(luò)層控制通道數(shù)先進(jìn)行降維,再進(jìn)行升維,保證輸入和輸出的維度保持不變。利用多分支結(jié)構(gòu)提升網(wǎng)絡(luò)的寬度,讓每層結(jié)構(gòu)可以學(xué)習(xí)到更加豐富的特征,如不同方向、不同頻率的紋理特征,進(jìn)一步提高目標(biāo)特征的判別能力。假設(shè)輸入維度和輸出維度均為256為例,ResNext網(wǎng)絡(luò)分為32個分支,如式(3)、(4)所示為二者參數(shù)量計算式,雖然ResNext相比ResNet來說增加了網(wǎng)絡(luò)寬度,但是參數(shù)量比ResNet結(jié)構(gòu)少57%,極大降低訓(xùn)練復(fù)雜度。
32×(256×1×1×4+4×4×3×3+4×1×1×256)=70144 ,
(3)
256×1×1×64+64×3×3×256=163840,
(4)
(a)基于ResNet的殘差結(jié)構(gòu) (b)基于ResNext的殘差結(jié)構(gòu)
錨框數(shù)量/個 圖5 錨框數(shù)量和平均交并比的關(guān)系
錨框是Faster R-CNN算法用于取代傳統(tǒng)的圖像金字塔方法預(yù)測多尺度目標(biāo)開創(chuàng)的一種機(jī)制,它的平移不變性和多尺度有利于提取圖像中不同尺度目標(biāo)物體的特征,SSD算法和YOLOV3算法均延續(xù)這一機(jī)制。Faster R-CNN 在特征圖的每個單元格處采用3個不同的尺度和高寬比產(chǎn)生9個錨框,SSD使用6個寬高比生成6個錨框。原YOLOV3采用基于COCO數(shù)據(jù)集的高寬維度固定的錨框,提前優(yōu)化錨框的個數(shù)和寬高維度可以加快模型的收斂速度并提高檢測精度。
本文采用基于K-means的聚類算法,通過對數(shù)據(jù)集的邊界框聚類分析選取最適合數(shù)據(jù)集的預(yù)選框,K-means算法的距離定義如式(5)所示,最終確定錨框參數(shù)為(8,7)、(14,10)、(8,22)、(26,21)、(19,16)、(36,20)、(22,49)、(58,32)、(95,59)、(139,194)、(182,187)、(218,198)。
d(box,centroid)=1-IOU(box,centroid),
(5)
式(5)中:box代表樣本中提前標(biāo)注的樣本框,centroid代表K-means算法中的聚類中心,IOU 表示樣本框大小和聚類框大小的交互比,作為衡量兩個框大小相似的度量。
采用KITTI[22]數(shù)據(jù)集,該數(shù)據(jù)集由德國卡爾斯魯厄理工學(xué)院和豐田美國技術(shù)研究院聯(lián)合創(chuàng)辦,包含大量采集于市區(qū)、鄉(xiāng)村以及高速公路等場景中的圖像數(shù)據(jù),主要應(yīng)用于目標(biāo)檢測、光流、3D跟蹤等計算機(jī)視覺任務(wù)。
表1 訓(xùn)練期間超參數(shù)取值
使用KITTI數(shù)據(jù)集中應(yīng)用于目標(biāo)檢測任務(wù)的部分,將原數(shù)據(jù)集的“Car”“Truck”“Van”“Tram”合并為“Car”類,“Pedestrian”“Person (sit-ting)”合并為“Pedestrian”類,“Cyclist”類不變,忽略“Misc”類。選擇7481張圖片作為實驗數(shù)據(jù)集,其中5000張作為訓(xùn)練驗證集,2481張作為測試集。
實驗在Win10系統(tǒng)上運行,采用英偉達(dá)公司的GenForce RTX 2070顯卡。深度學(xué)習(xí)環(huán)境是Tensorflow-GPU 1.13、CUDA 10.0、CUDNN 7.5。訓(xùn)練參數(shù)如表1所示。
模型采用平均精度(mAP)和檢測速度(fps)作為衡量指標(biāo)如式(6)(7)所示。
(6)
(7)
式中:N代表數(shù)據(jù)集中的目標(biāo)種類數(shù)目,Pi代表第i個種類的精確度, frame代表幀數(shù),second代表時間(秒數(shù))。
如圖6所示為本文提出的改進(jìn)算法在KITTI數(shù)據(jù)集中的檢測效果,圖a、b、c、d分別顯示了普通道路場景、光照較強(qiáng)的道路場景、具有遮擋物的道路場景、具有遮擋物的光照較強(qiáng)的道路場景中的檢測實例。圖6(a)中包含尺度大小不同的車輛,圖6(b)中包含處在較強(qiáng)光照環(huán)境中的行人,圖6(c)中包含相互遮擋的車輛目標(biāo),圖6(d)中包含處在較強(qiáng)光環(huán)境并且相互遮擋的車輛目標(biāo),從檢測效果圖中可以看出該算法在復(fù)雜多樣的道路場景目標(biāo)檢測任務(wù)中具有較好的魯棒性,但是對某些光照較強(qiáng)環(huán)境的小目標(biāo)檢測效果不理想,比如圖6(b)中較遠(yuǎn)處的小目標(biāo)被漏檢。
將YOLOV3算法和本文改進(jìn)的YOLOV3算法分別進(jìn)行訓(xùn)練,在KITTI測試集上通過檢測精度測試其性能。通過比較真實值和計算值的誤差計算模型的查全率(recall)和查準(zhǔn)率(precision),計算P-R曲線下面積(area under curve,AUC),驗證本文改進(jìn)算法的性能。如圖7所示,其中 a、b、c、d子圖中左右分別為原算法及改進(jìn)算法P-R曲線圖及mAP值,本文改進(jìn)的YOLOV3算法在“Pedstrain”“Cyclist”“Car”類中AP值分別提高3.47%、1.50%、0.91%,整體的mAP值為87.60%,相較于原YOLOV3算法的85.68%提高1.92%。綜上所述,本文改進(jìn)算法在“Pedstrain”“Cyclist”“Car”類的檢測中均取得檢測精度的提升。
為進(jìn)一步驗證本文改進(jìn)算法的性能,利用Faster R-CNN、SSD、YOLOV3等目標(biāo)檢測算法在KITTI數(shù)據(jù)集上進(jìn)行測試,通過對比檢測精度和檢測速度兩個指標(biāo)對上述算法和本文改進(jìn)算法比較,如表2所示,本文的改進(jìn)算法在檢測精度上相對于SSD、Faster R-CNN、原YOLOV3等分別有6.12%、4.86%、1.92%的提高,并且本文改進(jìn)算法的檢測速度達(dá)到75.32fps,相比于原YOLOV3算法有了顯著的提高,在實際道路場景檢測中可以滿足實時性。
表2 不同方法在KITTI數(shù)據(jù)集上的效果對比
綜上所述,本文的改進(jìn)YOLOV3的性能相比原YOLOV3有所提升,通過K-means算法聚類得出適合于數(shù)據(jù)集的錨框參數(shù),使目標(biāo)的定位更加準(zhǔn)確;對特征提取網(wǎng)絡(luò)作出精簡,利用多分支網(wǎng)絡(luò)提升網(wǎng)絡(luò)的特征學(xué)習(xí)能力,兼顧了檢測速度的同時提高了檢測精度。但是復(fù)雜多變的背景環(huán)境和光照條件、目標(biāo)之間的遮擋、目標(biāo)距離的動態(tài)變化、精確性與實時性的兼顧是道路場景目標(biāo)檢測面臨的主要挑戰(zhàn)。
提出一種基于YOLOV3改進(jìn)的道路目標(biāo)檢測算法,對特征網(wǎng)絡(luò)結(jié)構(gòu)作出精簡和改進(jìn),利用K-means聚類分析確定錨框參數(shù)。實驗表明,本文的改進(jìn)算法比原YOLOV3算法的檢測效果好,可用于實際的道路場景目標(biāo)檢測任務(wù)中。然而道路目標(biāo)檢測領(lǐng)域依然具有一定挑戰(zhàn)性,在后續(xù)的研究中,還需要注重在保證實時性的前提下提高復(fù)雜場景中目標(biāo)檢測的精確度,減少容易誤檢、漏檢的情況。相信隨著深度學(xué)習(xí)技術(shù)的進(jìn)一步發(fā)展,智能交通將帶來前所未有的出行體驗,并且隨著硬件設(shè)備的發(fā)展,運算量將不會成為實時檢測的掣肘。