蘇 靜,劉伊智
(天津科技大學(xué)人工智能學(xué)院,天津 300457)
隨著城市的不斷發(fā)展,人口流動(dòng)更加頻繁,堵車(chē)等交通擁擠問(wèn)題也逐漸得到重視,發(fā)展智慧交通成為了重中之重.車(chē)輛的目標(biāo)檢測(cè)是實(shí)現(xiàn)城市智慧交通的關(guān)鍵技術(shù).視覺(jué)目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)的經(jīng)典任務(wù),旨在定位圖像中存在物體的位置并識(shí)別物體的具體類(lèi)別.目標(biāo)檢測(cè)是許多計(jì)算機(jī)視覺(jué)任務(wù)及相關(guān)應(yīng)用的基礎(chǔ)與前提,直接決定相關(guān)視覺(jué)任務(wù)及應(yīng)用的性能[1].
傳統(tǒng)的目標(biāo)檢測(cè)算法以手工設(shè)計(jì)特征為主,這些特征的泛化能力弱,對(duì)復(fù)雜場(chǎng)景的性能表現(xiàn)較差[2],并且存在速度緩慢和準(zhǔn)確率低等問(wèn)題.現(xiàn)如今基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法已經(jīng)成為主流,此類(lèi)目標(biāo)檢測(cè)算法主要分為兩類(lèi):?jiǎn)坞A段(one stage)算法和兩階段(two stage)算法.兩階段算法的主要代表為R-CNN[3]系列算法,單階段算法最有代表性的是YOLO算法和SSD算法[4],其中YOLO系列算法更是進(jìn)行了多次迭代更新,后續(xù)分別提出了YOLOv2[5]、YOLOv3[6]、YOLOv4等算法.在城市道路交通中,車(chē)輛行駛速度一般在30~120km/h之間,在本文的實(shí)驗(yàn)部分,對(duì)Faster RCNN與YOLOv4進(jìn)行了幀每秒(FPS)的對(duì)比實(shí)驗(yàn),F(xiàn)aster RCNN的平均FPS只有32.4,而YOLOv4原算法FPS為58.1.由實(shí)驗(yàn)可知Faser RCNN算法檢測(cè)速度緩慢,不適用于道路上高速行駛車(chē)輛的檢測(cè).YOLO系列算法具有檢測(cè)速度快、準(zhǔn)確率高的優(yōu)點(diǎn),可以更好地適用于公路上行駛車(chē)輛的目標(biāo)檢測(cè).YOLO系列的第四代算法YOLOv4具有良好的檢測(cè)性能與檢測(cè)速度,但是對(duì)于一些目標(biāo)也存在識(shí)別率不高等問(wèn)題.
李挺等[7]將MobileNetv2作為YOLOv4的主干網(wǎng)絡(luò),加入了Bottom-up連接,并融合了CBAM注意力機(jī)制,在分類(lèi)網(wǎng)絡(luò)中加入了Inception結(jié)構(gòu).雖然在行人檢測(cè)方面的結(jié)果有所提高,但是對(duì)行駛車(chē)輛的檢測(cè)卻會(huì)出現(xiàn)漏檢等問(wèn)題.陳洋等[8]在PANet中加入CBAM模塊,同時(shí)使用加強(qiáng)的k均值聚類(lèi)(k-means)對(duì)目標(biāo)真實(shí)框進(jìn)行聚類(lèi),使算法檢測(cè)錨框更適合于訓(xùn)練集,提高了船艦圖像檢測(cè)的精度,但是卻增大了網(wǎng)絡(luò)參數(shù),使得模型訓(xùn)練緩慢,不夠輕量.王瀅暄等[9]提出了多標(biāo)簽檢測(cè)方法,建立其約束關(guān)系,并提出圖像拼接檢測(cè)方法,以提升網(wǎng)絡(luò)的運(yùn)行效率.
因此,本文提出改進(jìn)YOLOv4車(chē)輛檢測(cè)算法:將主干網(wǎng)絡(luò)改進(jìn)為輕量型的CSPDarknet53-tiny和GhostModule模塊結(jié)合的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特征提取,形成YOLOv4-Ghost-tiny,提高模型的運(yùn)行速度,減少網(wǎng)絡(luò)的規(guī)模大??;將SPPNet替換為ASPPNet[10],增大網(wǎng)絡(luò)感受野并減少模型參數(shù);將注意力機(jī)制SENet[11]結(jié)構(gòu)嵌入其殘差結(jié)構(gòu)當(dāng)中,使其能夠?qū)Σ煌卣鲌D進(jìn)行相應(yīng)處理.
Alexey Bochkovskiy繼承了YOLO系列的理念,在YOLOv3的基礎(chǔ)上進(jìn)行了改進(jìn),發(fā)布了YOLOv4[12].在與EfficientDet網(wǎng)絡(luò)性能相當(dāng)?shù)那闆r下,該算法的推理速度是EfficientDet的2倍左右,比上一代YOLOv3算法的平均精度(AP)和FPS分別提高了10%和12%.
該算法由主干特征提取網(wǎng)絡(luò)CSPDarknet53、特征金字塔SPPNet和檢測(cè)結(jié)構(gòu)YOLO-Head構(gòu)成.主干網(wǎng)絡(luò)CSPDarknet53在YOLOv3主干網(wǎng)絡(luò)Darknet53基礎(chǔ)上,借鑒了CSPNet的思想,在減少參數(shù)計(jì)算量的同時(shí)保證了準(zhǔn)確率.YOLOv4算法在特征金字塔模塊中采用了SPPNet結(jié)構(gòu),進(jìn)一步提高了算法的特征提取能力,而YOLO Head特征層則繼續(xù)使用YOLOv3的結(jié)構(gòu).
GhostModule[13]網(wǎng)絡(luò)模塊來(lái)自GhostNet網(wǎng)絡(luò),網(wǎng)絡(luò)核心是開(kāi)創(chuàng)了一種全新的Ghost模塊,它可以在使用較少參數(shù)的同時(shí)能保留更多的特征.Ghost模塊可以替換任何CNN網(wǎng)絡(luò)中的卷積操作,其優(yōu)點(diǎn)是輕量、高效,效果優(yōu)于輕量級(jí)網(wǎng)絡(luò)MobileNetV3[14].在神經(jīng)網(wǎng)絡(luò)中,Ghost模塊將一個(gè)普通的卷積塊分成兩部分.首先將輸入的特征圖先經(jīng)過(guò)卷積,再通過(guò)逐層深度可分離卷積生成其對(duì)應(yīng)的冗余特征圖,最后將卷積生成的特征圖和深度分離卷積生成的特征圖進(jìn)行堆疊操作.與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)相比,該方法的參數(shù)量和計(jì)算復(fù)雜度均有所降低.
主要核心模塊Ghost Module的原理主要是用Ghost Module代替?zhèn)鹘y(tǒng)卷積.首先采用1×1卷積對(duì)輸入圖片進(jìn)行通道數(shù)的壓縮,然后再進(jìn)行深度可分離卷積[15]得到更多的特征圖,最后對(duì)不同的特征圖進(jìn)行拼接操作,使其拼接到一起,組合成新的輸出圖.Ghost Module結(jié)構(gòu)如圖1所示.
圖1 Ghost Module結(jié)構(gòu)Fig.1 Ghost Module structure
DeepLabv3[16]網(wǎng)絡(luò)的ASPP模塊結(jié)構(gòu)包括1次1×1的普通卷積、3次3×3的空洞卷積和1個(gè)全局池化分支.該網(wǎng)絡(luò)模塊受到空間金字塔池化的啟發(fā),可以對(duì)不同特征的特征圖進(jìn)行有效采樣以及分類(lèi)操作.
ASPPNet利用空洞卷積[17],在不改變其他參數(shù)的情況下增大其感受野,該模塊的組成部分為1次1×1卷積和3次3×3卷積,分別進(jìn)行這些操作計(jì)算,最終將4次卷積結(jié)果進(jìn)行拼接疊加.
通過(guò)引入注意力機(jī)制,使眾多輸入信息能夠聚焦于更為關(guān)鍵的信息,降低對(duì)其余參數(shù)信息的敏感度,過(guò)濾掉無(wú)關(guān)信息,提高任務(wù)處理的效率與準(zhǔn)確率.SENet是Momenta公司2017年在CVPR中提出,并獲得最后一屆ImageNet圖像識(shí)別冠軍.
SENet模塊結(jié)構(gòu)如圖2所示.首先,對(duì)給定輸入特征圖X進(jìn)行全局平均池化操作,得到一個(gè)通道數(shù)為C的特征圖;然后,對(duì)通道數(shù)為C的特征圖進(jìn)行兩次全連接操作,第一次全連接時(shí)的參數(shù)量相比第二次全連接時(shí)的參數(shù)量更少,在兩次全連接操作完成后,對(duì)其特征層的每一層通道進(jìn)行Sigmoid操作,得到權(quán)重值;最后,將權(quán)重值與其原特征層進(jìn)行參數(shù)相乘操作.該模塊可以用到其他網(wǎng)絡(luò)結(jié)構(gòu)中,能夠達(dá)到即插即用的效果,對(duì)大多數(shù)網(wǎng)絡(luò)都有所提升.
圖2 SENet模塊結(jié)構(gòu)Fig.2 SENet module structure
原始的YOLOv4網(wǎng)絡(luò)使用了CSPDarknet53作為其算法的主干網(wǎng)絡(luò),CSPDarknet53對(duì)圖片特征有著很強(qiáng)的提取能力.但是,由于其網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜、參數(shù)繁雜,導(dǎo)致其訓(xùn)練緩慢,在輕量性方面有所欠缺.為了提高速度,將網(wǎng)絡(luò)前驅(qū)部分DarknetConv2D的激活函數(shù)由Mish改為L(zhǎng)eakyReLU.由于模型一般在減少參數(shù)后準(zhǔn)確率往往會(huì)降低,因此對(duì)其網(wǎng)絡(luò)中的Resblock_body模塊進(jìn)行改進(jìn),將該模塊的殘差部分改為GhostModule結(jié)構(gòu),形成ResGhost_body模塊,彌補(bǔ)準(zhǔn)確率降低的缺點(diǎn).ResGhost_body模塊結(jié)構(gòu)如圖3所示.主干網(wǎng)絡(luò)最終提取到3個(gè)有效特征層(52×52、26×26、13×13).
圖3 ResGhost_body模塊結(jié)構(gòu)Fig.3 ResGhost_body module structure
YOLOv4在其主干特征提取網(wǎng)絡(luò)之后連接了特征融合模塊SPPNet,該網(wǎng)絡(luò)結(jié)構(gòu)由He等[18]提出,起初是為了解決R-CNN速度緩慢的問(wèn)題.在原YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)中,SPPNet接在了最后一層特征層的卷積里,并對(duì)其主干網(wǎng)絡(luò)中最后一個(gè)特征層進(jìn)行3次卷積之后,分別利用4個(gè)不同大小的池化層對(duì)其進(jìn)行處理,其池化核大小分別為1×1、5×5、9×9、13×13,最后將得到的4個(gè)特征模塊圖進(jìn)行通道拼接,結(jié)構(gòu)如圖4(a)所示.但是,此模塊會(huì)導(dǎo)致參數(shù)量增大,使網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練減慢,運(yùn)行速度下降.
圖4 SPPNet改進(jìn)圖Fig.4 SPPNet improved diagram
因此,將SPPNet模塊結(jié)構(gòu)替換為與其相似的ASPPNet,不僅能夠減少參數(shù)量,還可以增大網(wǎng)絡(luò)的感受野.該網(wǎng)絡(luò)結(jié)構(gòu)模塊為1個(gè)1×1的普通卷積和3個(gè)3×3的空洞卷積.首先對(duì)輸入的特征圖進(jìn)行3次卷積,之后對(duì)其進(jìn)行1次1×1的普通卷積和3次3×3的空洞卷積,最后將得到的4個(gè)模塊特征圖進(jìn)行疊加,其結(jié)構(gòu)如圖4(b)所示.
原始特征圖在經(jīng)過(guò)了主干網(wǎng)絡(luò)的特征提取及ASPPNet等結(jié)構(gòu)的一系列卷積操作之后,隨著參數(shù)量的增大,產(chǎn)生梯度消失等問(wèn)題,容易失去主要特征,使得最終的準(zhǔn)確率下降.因此,在最后的PANet[19]模塊中加入注意力機(jī)制SENet結(jié)構(gòu),讓網(wǎng)絡(luò)聚焦更為關(guān)鍵的信息.在原始的YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)中,主干特征提取網(wǎng)絡(luò)有2個(gè)分支以及在特征融合模塊之后有1個(gè)分支,這3個(gè)分支會(huì)進(jìn)入PANet結(jié)構(gòu)中,因此為了保留原始分支中的信息,在PANet模塊中加入注意力機(jī)制SENet.改進(jìn)前模塊和改進(jìn)后模塊的結(jié)構(gòu)如圖5所示,其中P1、P2、P3代表其3個(gè)分支.
圖5 PANet結(jié)構(gòu)對(duì)比圖Fig.5 Comparison of PANet structures
本實(shí)驗(yàn)在Windows10操作系統(tǒng)下完成,使用語(yǔ)言為Python,使用框架為PyTorch1.7.0,處理器為Inter i5-9300H,內(nèi)存為16GB,GPU采用GTX 1650 4GB顯卡.
對(duì)于車(chē)輛的目標(biāo)檢測(cè),采用自動(dòng)駕駛BDD100K數(shù)據(jù)集,其中訓(xùn)練集50000張,測(cè)試集15000張.由于本文主要研究對(duì)車(chē)輛的目標(biāo)檢測(cè),因此對(duì)數(shù)據(jù)集進(jìn)行了篩選和清洗,最終訓(xùn)練集36400張,測(cè)試集9256張.
用精確率(precision)、召回率(recall)和平均精度(AP)對(duì)模型進(jìn)行評(píng)估,公式為
式中:NTP為被模型預(yù)測(cè)為正類(lèi)的正樣本,NFP為被模型預(yù)測(cè)為正類(lèi)的負(fù)樣本,NFN為被模型預(yù)測(cè)為負(fù)類(lèi)的正樣本,P、R、Pav分別表示精確率、召回率和平均精度.
為了驗(yàn)證本文算法的有效性,實(shí)驗(yàn)在BDD100K數(shù)據(jù)集上進(jìn)行了測(cè)試,結(jié)果見(jiàn)表1.由表1可知:本文算法通過(guò)改進(jìn)殘差模塊,在殘差分支中加入了GhostModule模塊;對(duì)原網(wǎng)絡(luò)結(jié)構(gòu)中的SPP結(jié)構(gòu)進(jìn)行改進(jìn),增大感受野,提高精度;PANet網(wǎng)絡(luò)結(jié)構(gòu)添加了SENet注意力機(jī)制模塊,使整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)得到了優(yōu)化.較原算法YOLOv4結(jié)構(gòu),AP提升了2.69%,幀每秒(FPS)也有相應(yīng)提升,使算法具備更好的檢測(cè)效果,AP、召回率、精確率結(jié)果對(duì)比如圖6所示.
表1 對(duì)比實(shí)驗(yàn)結(jié)果Tab.1 Results of contrast experiment
圖6 不同算法AP、召回率、精確率結(jié)果對(duì)比Fig.6 Contrast graph of AP,recall and precision of different algorithm
本文模型與原算法YOLOv4在測(cè)試集上進(jìn)行實(shí)驗(yàn),部分檢測(cè)結(jié)果如圖7所示.從圖7中可以看出,原算法對(duì)于部分車(chē)輛檢測(cè)出現(xiàn)了漏檢現(xiàn)象,而本文算法有著更好的檢測(cè)性能.
圖7 YOLOv4算法和本文改進(jìn)算法在測(cè)試集上的效果Fig.7 Effects of YOLOv4 algorithm and improved algorithm on the test set
為了驗(yàn)證本文提出的改進(jìn)YOLOv4算法對(duì)于原算法的提升效果,對(duì)本算法提出的3個(gè)改進(jìn)點(diǎn)分別進(jìn)行消融實(shí)驗(yàn),分別為主干網(wǎng)絡(luò)殘差邊融合GhostModule、ASPP、SENet.消融實(shí)驗(yàn)結(jié)果見(jiàn)表2.
表2 消融實(shí)驗(yàn)結(jié)果Tab.2 Ablation experimental result
由表2可知:在AP方面,改進(jìn)后的算法均比原YOLOv4算法有不同程度的提升,加入ASPP后提升效果最好.
加入SENet模塊之后召回率的提升效果最為明顯,這主要是因?yàn)樽⒁饬C(jī)制可以更加關(guān)注重要的特征通道,提升網(wǎng)絡(luò)的信息提取能力.ASPP和SENet模塊的精確率相對(duì)于YOLOv4算法并沒(méi)有提升,而加入了GhostModule之后,精確率有所提升,這是因?yàn)樵跉埐钸叢糠旨尤隚hostMoudule模塊可以加強(qiáng)其特征提取能力,使得精確率提升.在FPS方面,在將SPP改為ASPP之后,參數(shù)量減少,導(dǎo)致模型檢測(cè)FPS提升最為明顯.因此在加入上述3處改進(jìn)點(diǎn)之后,4個(gè)指標(biāo)都有不同程度的增長(zhǎng).本文中的算法同時(shí)融合了3處改進(jìn)點(diǎn),相對(duì)于GhostModule,犧牲了一部分精確率,但是平均精度和召回率均為上述實(shí)驗(yàn)中的最高值,并且精確率和FPS相對(duì)于YOLOv4算法也有所提升.
為了驗(yàn)證本算法在實(shí)際場(chǎng)景中的應(yīng)用能力,自制搜集相關(guān)數(shù)據(jù)集6000張,對(duì)其進(jìn)行標(biāo)注并將圖片轉(zhuǎn)換為voc格式數(shù)據(jù)集,在實(shí)際場(chǎng)景中對(duì)數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見(jiàn)表3.
表3 網(wǎng)絡(luò)模型在實(shí)際場(chǎng)景下的實(shí)驗(yàn)結(jié)果Tab.3 Experimental result of network model in real scene
由表3可知,本文算法在實(shí)際場(chǎng)景下比YOLOv4算法表現(xiàn)更為優(yōu)秀,平均精度提高了3.31%,且其他指標(biāo)都有不同程度的提高,YOLOv4算法與本文算法在實(shí)際場(chǎng)景下檢測(cè)效果如圖8所示.
圖8 實(shí)際場(chǎng)景下檢測(cè)效果對(duì)比Fig.8 Comparison of detection effects in actual scenarios
(1)本算法在原始算法YOLOv4的主干特征提取網(wǎng)絡(luò)的殘差塊中添加GhostModule模塊,提高其檢測(cè)精度;同時(shí)將特征金字塔中的SPPNet模塊替換為ASPPNet模塊,減少參數(shù)量的同時(shí)增大網(wǎng)絡(luò)感受野;在PANet模塊中的兩個(gè)分支插入SENet結(jié)構(gòu),防止其因?yàn)榫W(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜而出現(xiàn)梯度消失的問(wèn)題,增強(qiáng)網(wǎng)絡(luò)特征的表現(xiàn)能力.
(2)本文算法通過(guò)實(shí)驗(yàn)驗(yàn)證,解決了在交通道路中對(duì)于車(chē)輛的漏檢、誤檢情況,經(jīng)過(guò)改進(jìn)后的YOLOv4算法已經(jīng)可以滿(mǎn)足道路場(chǎng)景下的實(shí)際應(yīng)用需要.但是,目前圖片數(shù)據(jù)集還是不夠全面,之后還需要增加一些處于極端天氣下,比如暴雨和沙塵暴天氣下的車(chē)輛圖片,從而讓模型能夠在任何條件下都擁有良好的檢測(cè)性能.