陳義平, 劉世圣, 時(shí) 穎
(黑龍江科技大學(xué) 電子與信息工程學(xué)院, 哈爾濱 150022)
車輛檢測(cè)與車型識(shí)別是智能交通系統(tǒng)運(yùn)行中的核心技術(shù),能為智能交通調(diào)度和交通狀態(tài)數(shù)據(jù)分析提供有效支撐。傳統(tǒng)車輛檢測(cè)算法如背景更新法[1]、幀差法[2]和光流法[3]等通過(guò)提取視頻中運(yùn)動(dòng)目標(biāo)來(lái)識(shí)別車輛,在精度、計(jì)算量和適用場(chǎng)景等方面均存在著較大缺陷,無(wú)法滿足智能交通系統(tǒng)所需的實(shí)時(shí)、高精度車輛檢測(cè)需求。隨著人工智能技術(shù)的迅速發(fā)展,深度學(xué)習(xí)成為智能交通領(lǐng)域中解決車輛檢測(cè)及車型識(shí)別問(wèn)題的有效方法。
車輛檢測(cè)技術(shù)主要依賴于目標(biāo)檢測(cè)算法,而目前基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法分為雙階段和單階段兩種。在雙階段方案中,典型的網(wǎng)絡(luò)有R-CNN[4]、Fast R-CNN[5]、Faster R-CNN[6]和SPP-Net[7]等,盡管這一類網(wǎng)絡(luò)具有較高的準(zhǔn)確性,但是候選框選擇時(shí)間過(guò)長(zhǎng),導(dǎo)致檢測(cè)速度較慢,無(wú)法滿足智能交通的實(shí)時(shí)性要求。在單階段方案中,具有代表性的是YOLO系列算法[8],該系列算法直接通過(guò)CNN預(yù)測(cè)目標(biāo)物體的方位和類別,不再選取候選框,檢測(cè)速率有了很大提升,但是準(zhǔn)確度低于雙階段算法。YOLOv3[9]目標(biāo)檢測(cè)算法能有效協(xié)調(diào)檢測(cè)速度與準(zhǔn)確率之間的關(guān)系,綜合性能較好,與其他網(wǎng)絡(luò)模型相比,在速度和準(zhǔn)確率方面均處于較高水平,但對(duì)于車輛數(shù)量大、車型種類多的交通系統(tǒng),該算法仍存在網(wǎng)絡(luò)模型臃腫、計(jì)算量過(guò)大的問(wèn)題。為此,筆者通過(guò)引入新特征提取網(wǎng)絡(luò)減少參數(shù)量,優(yōu)化特征損失函數(shù),運(yùn)用非極大值抑制算法,提高車輛檢測(cè)與車型識(shí)別性能。
YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)主要由兩部分組成,分別是圖片特征提取網(wǎng)絡(luò)Darknet-53和檢測(cè)層,其利用的是全卷積層,調(diào)整或修改特征圖尺寸均由卷積層實(shí)現(xiàn)。該特征提取網(wǎng)絡(luò)是一種典型的深層網(wǎng)絡(luò),既能夠確保對(duì)特征進(jìn)行表達(dá),還可以防止網(wǎng)絡(luò)過(guò)深帶來(lái)的梯度問(wèn)題,通過(guò)利用ResNet增加網(wǎng)絡(luò)的層數(shù)來(lái)提高網(wǎng)絡(luò)檢測(cè)的準(zhǔn)確率。在檢測(cè)網(wǎng)絡(luò)中還引進(jìn)了FPN,對(duì)三種尺度不相同的特征圖進(jìn)行檢測(cè),增強(qiáng)了對(duì)各種尺度目標(biāo)的檢測(cè)能力。網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
針對(duì)車輛識(shí)別網(wǎng)絡(luò)模型的臃腫和計(jì)算量過(guò)大的問(wèn)題,通過(guò)引入一個(gè)優(yōu)化特征提取網(wǎng)絡(luò)MobileViT-HS來(lái)減少YOLOv3的參數(shù)量,其次考慮到車輛檢測(cè)漏檢的情況,結(jié)合特征損失函數(shù)和非極大值抑制算法進(jìn)一步優(yōu)化車輛檢測(cè)與識(shí)別算法。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig. 1 YOLOv3 network structure
YOLOv3中特征提取網(wǎng)絡(luò)是Darknet-53,但該網(wǎng)絡(luò)在進(jìn)行特征提取時(shí)會(huì)增加網(wǎng)絡(luò)的參數(shù)量和計(jì)算量,而且其網(wǎng)絡(luò)過(guò)深,會(huì)出現(xiàn)冗余參數(shù)、梯度消失等問(wèn)題。由于移動(dòng)設(shè)備的計(jì)算資源有限,使網(wǎng)絡(luò)模型移植愈發(fā)困難,整個(gè)網(wǎng)絡(luò)的訓(xùn)練難度也會(huì)更大,因此文中將Darknet-53替換為MobileViT網(wǎng)絡(luò),以此進(jìn)行優(yōu)化網(wǎng)絡(luò)性能。
1.1.1 MobileViT網(wǎng)絡(luò)
文獻(xiàn)[10]提出了MobileViT結(jié)構(gòu),將CNN和ViT的優(yōu)勢(shì)結(jié)合起來(lái),既滿足輕量化要求,同時(shí)還能保證低延遲的網(wǎng)絡(luò)。MobileViT可以通過(guò)不同的角度來(lái)學(xué)習(xí)全局表征,在不同任務(wù)和數(shù)據(jù)集上的效果明顯優(yōu)于CNN和ViT網(wǎng)絡(luò)。MobileViT的結(jié)構(gòu)圖如圖2所示。MV2是MobileNetV2模塊的縮寫,如圖3所示。執(zhí)行向下采樣操作標(biāo)記為↓2,對(duì)于輸入張量中的局部和全局信息,該模塊能夠用較少的參數(shù)對(duì)其進(jìn)行建模。給定一個(gè)輸入張量X∈RH×W×C,MobileViT先通過(guò)一個(gè)n×n標(biāo)準(zhǔn)卷積層對(duì)局部空間信息進(jìn)行編碼;接著進(jìn)行逐點(diǎn)(或1×1)卷積,利用學(xué)習(xí)輸入通道的線性組合將張量投影到高維空間中,得到XL∈RH×W×d;接著將XL展開,變成N個(gè)互相不重疊的圖像塊XU∈RP×N×d,其中,P=WH,N=HW/P。通過(guò)Transformer實(shí)現(xiàn)各個(gè)圖像塊之間的編碼,其關(guān)系為
XG(p)=T(XU(p)),1≤p≤P。
(1)
圖2 MobileViT結(jié)構(gòu)Fig. 2 MobileViT structure
圖3 MobileViT模塊Fig. 3 MobileViT block
在MobileViT中,各個(gè)像素都可以感知到其他像素,如圖4所示。中心的紅色像素利用Transformer模型能夠感知到其他圖像塊中對(duì)應(yīng)位置的像素(藍(lán)色像素)。由于藍(lán)色像素已經(jīng)通過(guò)卷積的方法對(duì)相鄰像素的信息進(jìn)行了編碼,這就為紅色像素對(duì)該圖片中所有像素信息的編碼提供了前提條件。
MobileViT模塊用更深的全局處理來(lái)替代卷積中的局部處理,所以MobileViT具有卷積類似的特性。MobileViT模塊通過(guò)標(biāo)準(zhǔn)卷積和Transformer分別學(xué)習(xí)局部表征和全局表征時(shí),用這些層設(shè)計(jì)出的網(wǎng)絡(luò)參數(shù)量非常大,但MobileViT利用卷積和Transformer,使MobileViT模塊不但有卷積的特性,還能夠?qū)θ诌M(jìn)行建模,因此MobileViT能夠以更少的通道數(shù)和更淺的網(wǎng)絡(luò)去實(shí)現(xiàn)更好的網(wǎng)絡(luò)性能[11]。
圖4 MobileViT block中的各個(gè)像素Fig. 4 Individual pixels in MobileViT block
1.1.2 MobileViT網(wǎng)絡(luò)的優(yōu)化
由圖2可知,MobileViT算法中MobileNetV2模塊幾乎貫穿整個(gè)MobileViT算法。 MobileNetV2中的Swish[12]激活函數(shù)相當(dāng)于是Sigmoid函數(shù)與輸入x二者的結(jié)合,Swish激活函數(shù)及其導(dǎo)數(shù)的表達(dá)式為
(2)
(3)
由于Swish激活函數(shù)中包含著Sigmoid函數(shù),而Sigmoid函數(shù)在反向傳播中的求導(dǎo)運(yùn)算比較復(fù)雜且收斂情況不夠穩(wěn)定。H-Swish函數(shù)相當(dāng)于Swish激活函數(shù)的簡(jiǎn)化版[12]。由于ReLU6激活函數(shù)比較簡(jiǎn)單,在計(jì)算成本方面遠(yuǎn)低于Swish激活函數(shù),因此H-Swish激活函數(shù)Swi(x)把Swish激活函數(shù)的思想與ReLU6激活函數(shù)R(x)相結(jié)合,其計(jì)算公式為
(4)
R(x)=min(6,max(0,x))。
(5)
H-Swish整體是通過(guò)ReLU變體得來(lái)的,利用ReLU6限制ReLU輸出的最大值,使其變?yōu)?,此后當(dāng)輸出大于6時(shí),其導(dǎo)數(shù)則變?yōu)?,降低了該函數(shù)的計(jì)算量。式(4)中的(R(x+3))/6可近似看成Si(x),但它的計(jì)算方式更簡(jiǎn)便,有助于提升計(jì)算效率。其導(dǎo)數(shù)為
(6)
由式(6)可知,H-Swish是一個(gè)分段函數(shù),當(dāng)-3 傳統(tǒng)的目標(biāo)檢測(cè)一般采用均方誤差損失函數(shù)在預(yù)測(cè)框的中心位置坐標(biāo)和寬高上直接進(jìn)行回歸預(yù)測(cè),但是估計(jì)預(yù)測(cè)框每個(gè)點(diǎn)的坐標(biāo)數(shù)值只是將這些點(diǎn)視為獨(dú)立的變量,并沒(méi)有把目標(biāo)看作一個(gè)整體去進(jìn)行預(yù)測(cè)。研究者們給出了一種方法:用IoU損失函數(shù)取代MSE損失函數(shù),在諸多IoU類型的損失函數(shù)中,CIoU引入了長(zhǎng)與寬的比值,所以收斂速度更快,目標(biāo)框的回歸也變得更加穩(wěn)定,計(jì)算公式為 (7) LCIoU=1-βIoU+βCIoU, (8) 式中:ρ2(b,bgt)——真實(shí)框中心點(diǎn)與預(yù)測(cè)框中心點(diǎn)之間的歐氏距離; c——同時(shí)包含A框和B框的最小封閉圖形中的對(duì)角線距離。 α和ν的公式為 (9) (10) 式中:wgt、hgt——真實(shí)框的寬和長(zhǎng); w、h——對(duì)應(yīng)預(yù)測(cè)框的寬和長(zhǎng)。 由于CIoU考慮了真實(shí)框與預(yù)測(cè)框的中心點(diǎn)間距、重疊率和長(zhǎng)寬比,使其對(duì)預(yù)測(cè)框的回歸變得更加穩(wěn)定,不會(huì)出現(xiàn)訓(xùn)練發(fā)散問(wèn)題。而且CIoU對(duì)預(yù)測(cè)框尺度的改變并不敏感,具有尺度不變特性,故選取CIoU Loss替代文中車輛識(shí)別算法中的回歸損失,完成損失函數(shù)的優(yōu)化操作。 YOLOv3使用非極大值抑制算法(Non-maximum suppression,NMS)對(duì)區(qū)域候選網(wǎng)絡(luò)輸出的冗余候選框進(jìn)行篩除。在車輛檢測(cè)任務(wù)中,道路上容易出現(xiàn)車輛較為密集(車輛重疊)的情況,該情況下NMS算法會(huì)抑制原本屬于兩個(gè)車輛的邊框,導(dǎo)致出現(xiàn)漏檢現(xiàn)象。 針對(duì)NMS的缺點(diǎn),Bodla等[13]提出了Soft-NMS算法。該算法能有效提升模型的容錯(cuò)率,NMS計(jì)算公式為 (11) Soft-NMS計(jì)算公式為 (12) 式中,σ——n個(gè)預(yù)測(cè)框的計(jì)算復(fù)雜度。 Soft-NMS算法是在原始總的預(yù)測(cè)框列表B中取出一個(gè)預(yù)測(cè)框bi,先計(jì)算這個(gè)框和框M的IoU,其與NMS不同的是,如果IoU大于預(yù)先設(shè)定的閾值Nt,列表B和檢測(cè)得分列表S并不會(huì)直接將預(yù)測(cè)框bi及其得分si進(jìn)行刪除,而是將框bi與框M的IoU值和該預(yù)測(cè)框的檢測(cè)得分si相乘,然后把相乘得到的值重新作為該預(yù)測(cè)框bi的檢測(cè)得分繼續(xù)執(zhí)行檢測(cè)。利用該方法能夠逐漸降低預(yù)測(cè)框bi的檢測(cè)得分,而不是像NMS算法那樣直接被刪除,所以文中在檢測(cè)階段引入了Soft-NMS算法來(lái)避免原有的NMS中對(duì)大于閾值的候選框直接進(jìn)行刪除的情況,Soft-NMS在車輛密集情況下能有效避免車輛重疊的區(qū)域候選框,減少誤檢和漏檢問(wèn)題,從而提高車輛檢測(cè)的精度。 基本實(shí)驗(yàn)環(huán)境為:Win10系統(tǒng),NVIDIA GeForce RTX2070 Super顯卡,PyTorch深度學(xué)習(xí)架構(gòu),編譯環(huán)境為Python3.8,開發(fā)環(huán)境為PyCharm Community Edition 2021.1.3。 2.1.1 數(shù)據(jù)集 UA-DETRAC數(shù)據(jù)集是一個(gè)有14萬(wàn)多幀和8 000多張人工注釋的汽車數(shù)據(jù)集,該數(shù)據(jù)集中將汽車種類分為四類,分別是car(轎車)、bus(公共汽車)、van(面包車)和others(其他)。為了防止數(shù)據(jù)集樣本過(guò)于單一,本實(shí)驗(yàn)的數(shù)據(jù)集中還加入了VOC數(shù)據(jù)集,減少過(guò)擬合現(xiàn)象的同時(shí),還能增加訓(xùn)練樣本的全面性,其車輛類型有轎車、公共汽車、自行車等。實(shí)驗(yàn)中所有網(wǎng)絡(luò)的訓(xùn)練和測(cè)試,一共包含16 573張圖像。將這16 573張圖像劃分成3個(gè)子集,分別用于訓(xùn)練、驗(yàn)證以及測(cè)試。 2.1.2 數(shù)據(jù)增強(qiáng) 文中對(duì)數(shù)據(jù)集使用Mosaic數(shù)據(jù)增強(qiáng),它是一個(gè)比較綜合的增強(qiáng)方法,核心思想則是隨機(jī)裁剪多張圖片,再加以拼接從而形成新的圖像(將4張圖片按一定的比例組合成1張新的圖片)。該方法將圖像縮放、裁剪和旋轉(zhuǎn)相結(jié)合,不僅提高了圖片背景信息的多樣性,還增加了每次輸入網(wǎng)絡(luò)的圖像批量,使每次獲取到的信息量也更多,其流程如圖5所示。 圖5 Mosaic數(shù)據(jù)增強(qiáng)流程Fig. 5 Mosaic data enhancement flow 為保證結(jié)果公平性,文中實(shí)驗(yàn)?zāi)P途褂猛粩?shù)據(jù)集。文中每次實(shí)驗(yàn)均訓(xùn)練150輪(epoch),該150輪分成了兩個(gè)階段,前50epoch都采用凍結(jié)訓(xùn)練,學(xué)習(xí)率為0.001,步長(zhǎng)為1,gama為0.98,這個(gè)階段的模型主干都被凍結(jié),網(wǎng)絡(luò)只進(jìn)行微調(diào),既可以提高訓(xùn)練效率,又能避免權(quán)值被破壞,剩下的100輪則是解凍訓(xùn)練,模型的主干將不再被凍結(jié),網(wǎng)絡(luò)參數(shù)均會(huì)發(fā)生變化,學(xué)習(xí)率為0.000 1,長(zhǎng)為10,gama為0.9。 2.2.1 直接訓(xùn)練 直接使用傳統(tǒng)的YOLOv3與文中提出的輕量化模型進(jìn)行訓(xùn)練,訓(xùn)練后模型用于檢測(cè),本次實(shí)驗(yàn)均使用Mosaic數(shù)據(jù)增強(qiáng),對(duì)比實(shí)驗(yàn)結(jié)果如表1所示。 從表1可知,文中提出的輕量化算法相比于YOLOv3算法準(zhǔn)確度略有提升,提高了0.46%,在模型參數(shù)量方面表現(xiàn)優(yōu)異,參數(shù)量不足原來(lái)的二分之一,僅為YOLOv3參數(shù)量的42%,因此訓(xùn)練時(shí)間也縮減了約30%,F(xiàn)PS也得到了很大提升。這說(shuō)明通過(guò)Mosaic數(shù)據(jù)增強(qiáng)、優(yōu)化YOLOv3網(wǎng)絡(luò)提取特征等方法進(jìn)行訓(xùn)練后,提升了算法效率,并在一定程度上提高了該算法的準(zhǔn)確度,其檢測(cè)效果如圖6所示。 表1 直接訓(xùn)練結(jié)果對(duì)比 圖6 車輛檢測(cè)效果Fig. 6 Vehicle detection 由圖6可以看出,即使在車輛圖片模糊的狀態(tài)下,文中算法依舊可以精確地檢測(cè)。 2.2.2 損失函數(shù)優(yōu)化實(shí)驗(yàn)分析 為了驗(yàn)證損失函數(shù)優(yōu)化的有效性,針對(duì)兩種損失函數(shù)在算法中的性能表現(xiàn)進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)均使用Mosaic數(shù)據(jù)增強(qiáng)、NMS算法,設(shè)置相同置信度等參數(shù)進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果如表2所示。 表2 損失函數(shù)優(yōu)化的AP和mAP對(duì)比 由表2可知,MobileViT經(jīng)過(guò)損失函數(shù)優(yōu)化后性能略有提升,mAP提高了約0.13%。 損失函數(shù)對(duì)比曲線如圖7所示。由圖7可以看出,訓(xùn)練剛開始時(shí),兩者的損失值比較接近,隨著epoch的增加,這兩個(gè)損失值也逐漸下降,在epoch達(dá)到50時(shí),損失值的收斂速度變快, YOLOv3算法中的損失值最終穩(wěn)定在2.7左右,而改進(jìn)后算法的損失值大約是0.91。相對(duì)于YOLOv3算法中的MSE損失函數(shù),將其替換成CIoU作為邊界框回歸損失后,模型的損失有所減少,檢測(cè)效果也就更好。 圖7 損失對(duì)比曲線Fig. 7 Loss contrast curve 2.2.3 特征提取網(wǎng)絡(luò)優(yōu)化實(shí)驗(yàn)分析 為了驗(yàn)證特征提取網(wǎng)絡(luò)優(yōu)化的有效性,對(duì)MobileViT和MobileViT-HS網(wǎng)絡(luò)性能進(jìn)行比較,實(shí)驗(yàn)均使用Mosaic數(shù)據(jù)增強(qiáng)和NMS方法,損失函數(shù)為CIoU,結(jié)果如表3所示, 表3 特征提取網(wǎng)絡(luò)的AP、mAP和訓(xùn)練時(shí)間對(duì)比 總體來(lái)看,整體準(zhǔn)確度比原算法提高了0.07%,在此基礎(chǔ)上,優(yōu)化后算法的訓(xùn)練時(shí)間比原算法縮減了0.2 h,證明了H-Swish激活函數(shù)在計(jì)算量方面占有優(yōu)勢(shì),該激活函數(shù)更適合應(yīng)用在移動(dòng)設(shè)備上。 2.2.4 綜合實(shí)驗(yàn)分析 為了驗(yàn)證優(yōu)化網(wǎng)絡(luò)輕量化模型的有效性,對(duì)MobileViT與采用MobileViT-HS優(yōu)化網(wǎng)絡(luò)的輕量化模型進(jìn)行比較,實(shí)驗(yàn)均使用Mosaic數(shù)據(jù)增強(qiáng),實(shí)驗(yàn)結(jié)果如表4所示。 從表4可以看出,隨著算法的不斷改進(jìn),準(zhǔn)確度也在不斷提高,與最原始的算法相比,文中提出的算法在識(shí)別各種車型時(shí)的精確度均有所提升,整體的精確度提高了0.77%。針對(duì)車輛漏檢的情況進(jìn)行優(yōu)化,其結(jié)果對(duì)比如圖8所示。 表4 綜合實(shí)驗(yàn)結(jié)果 圖8 算法優(yōu)化前后效果對(duì)比Fig. 8 Comparison of effect before and after algorithm improvement 由圖8可見(jiàn),MobileViT+MSE+NMS算法會(huì)由于車輛重疊或遮擋等原因易產(chǎn)生車輛漏檢問(wèn)題,而文中在使用CIoU損失函數(shù)和Soft-NMS算法后,車輛漏檢得到了有效的解決,達(dá)到了預(yù)期目標(biāo),證明了文中對(duì)算法優(yōu)化的有效性。 (1)從車輛識(shí)別算法準(zhǔn)確度的提升、網(wǎng)絡(luò)模型參數(shù)的減少以及實(shí)際應(yīng)用場(chǎng)景中面臨的各種問(wèn)題三個(gè)方面進(jìn)行了深入研究。通過(guò)將YOLOv3算法的特征提取網(wǎng)絡(luò)調(diào)整為MobileViT網(wǎng)絡(luò),并對(duì)MobileViT網(wǎng)絡(luò)的激活函數(shù)進(jìn)行優(yōu)化,使改進(jìn)算法的參數(shù)量?jī)H為YOLOv3的42%,訓(xùn)練時(shí)間減少了約29%,F(xiàn)PS提升了近40%。 (2)針對(duì)車輛目標(biāo)漏檢問(wèn)題,文中對(duì)車輛識(shí)別算法進(jìn)行了有針對(duì)性的優(yōu)化,對(duì)其損失函數(shù)和非極大值抑制算法進(jìn)行調(diào)整,實(shí)驗(yàn)證明,改進(jìn)后的算法在保證檢測(cè)精度的情況下,收斂速度更快且漏檢問(wèn)題得到了有效改善。1.2 損失函數(shù)優(yōu)化
1.3 非極大抑制算法優(yōu)化
2 實(shí)驗(yàn)與分析
2.1 數(shù)據(jù)集及數(shù)據(jù)增強(qiáng)
2.2 實(shí)驗(yàn)結(jié)果與分析
3 結(jié) 論