秦憶南 施衛(wèi) 張馳皓 陳程
摘要:針對(duì)在城市街道中檢測(cè)目標(biāo)因?yàn)橄嗷フ趽?、尺寸小、密集分布等?wèn)題導(dǎo)致檢測(cè)困難,檢測(cè)目標(biāo)丟失,提出一種改進(jìn)的YOLOv5s算法。首先通過(guò)將CA注意力模塊與C3模塊相結(jié)合加入C3CA注意力模塊;其次加入SPPFCSPC空間金字塔池化模塊代替SPPF,進(jìn)一步擴(kuò)大感受野,提升模型的精度。最后改變Neck結(jié)構(gòu)變?yōu)镾lim-Neck結(jié)構(gòu),通過(guò)替換Conv模塊為GSConv模塊,并將Slim-Neck中的C3模塊中的Conv模塊替換為GSConv模塊。實(shí)驗(yàn)使用優(yōu)化后的KITTI數(shù)據(jù)集。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的算法與YOLOv5s相比在平均精度值上提升了2.3%,小目標(biāo)漏檢的情況也有了明顯改善。
關(guān)鍵詞:目標(biāo)檢測(cè);YOLOv5s;CA注意力模塊;空間金字塔;Slim-Neck
中圖分類(lèi)號(hào):TP18? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)31-0005-04
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID) :
0 引言
隨著科技發(fā)展與城市道路規(guī)劃的推陳出新,對(duì)自動(dòng)駕駛的要求也越來(lái)越嚴(yán)苛。如何能夠更快更加精準(zhǔn)地進(jìn)行目標(biāo)檢測(cè)一直是自動(dòng)駕駛汽車(chē)所需要解決的關(guān)鍵問(wèn)題。
對(duì)目標(biāo)準(zhǔn)確檢測(cè)主要包括兩方面:一方面是在復(fù)雜的道路環(huán)境下識(shí)別出檢測(cè)目標(biāo)的信息,并用邊界框?qū)⑵湓趫D片或影像中標(biāo)識(shí)出。另一方面則是通過(guò)深度學(xué)習(xí)等模擬人思維的決策對(duì)邊界框中的目標(biāo)進(jìn)行識(shí)別檢測(cè),確定類(lèi)別與名稱(chēng)以及置信度。這個(gè)過(guò)程中由于環(huán)境的復(fù)雜性和行人狀態(tài)的多樣性以及行人行為的不可確定性,需要自動(dòng)駕駛擁有模擬人的思維做出相應(yīng)的對(duì)策。機(jī)器學(xué)習(xí)、深度學(xué)習(xí)可以幫助行駛車(chē)輛在不同的場(chǎng)景環(huán)境下學(xué)習(xí)并識(shí)別各種物體,并通過(guò)識(shí)別的結(jié)果做出相應(yīng)的對(duì)策,這就使得機(jī)器學(xué)習(xí)、深度學(xué)習(xí)顯得尤為重要。
目前的深度學(xué)習(xí)主要分為二階段和一階段這兩大類(lèi)[1]。二階段的代表算法有R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]等,二階段算法這一類(lèi)的算法是先生成候選框,然后對(duì)這些選框進(jìn)行分類(lèi)。兩階段目標(biāo)檢測(cè)為了追求高精度,增加了復(fù)雜性,降低了檢測(cè)速度。相較于兩階段目標(biāo)檢測(cè),一階段直接通過(guò)卷積后在圖像上直接生成預(yù)測(cè)目標(biāo)的位置和分類(lèi),大大降低了運(yùn)算的復(fù)雜性,提升了速度,但在提升速度的同時(shí),也犧牲了一定的精度。這一類(lèi)代表的算法有SSD[5]、YOLO系類(lèi)[6]等。在自動(dòng)駕駛中檢測(cè)速度和檢測(cè)精度一樣重要,一階段目標(biāo)檢測(cè)因?yàn)樗俣扰c精度都有涉及,而廣泛用于自動(dòng)駕駛。
在自動(dòng)駕駛中行人檢測(cè)因其不確定性,狀態(tài)復(fù)雜性一直是目標(biāo)檢測(cè)的難點(diǎn),行人檢測(cè)的難點(diǎn)主要存在小目標(biāo)漏檢,密集行人漏檢以及遮擋目標(biāo)漏檢。為了降低行人目標(biāo)檢測(cè)過(guò)程中誤檢、漏檢,本文以YOLOv5算法為基礎(chǔ)模型,提出了一種城市街道場(chǎng)景中目標(biāo)檢測(cè)的改進(jìn)YOLOv5算法。首先加入Coordinate Attention (CA) [7]注意力模塊,增加檢測(cè)精度;之后將SPPF[8]池化金字塔與CSP結(jié)構(gòu)相結(jié)合生成SPPFCSPC模塊,擴(kuò)大感受野,降低誤檢、漏檢;最后通過(guò)GSConv[9]卷積替換Conv降低模型參數(shù)量,提高速度。通過(guò)上述網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整后,使本文的算法能夠更好地適應(yīng)城市街道,獲得較好的檢測(cè)效果。
1 YOLOv5網(wǎng)絡(luò)模型改進(jìn)
針對(duì)在城市街道中檢測(cè)目標(biāo)因?yàn)橄嗷フ趽?、尺寸小、密集分布等?wèn)題導(dǎo)致檢測(cè)困難,檢測(cè)目標(biāo)丟失,對(duì)YOLOv5算法進(jìn)行改進(jìn)。首先加入C3CA注意力模塊,通過(guò)將CA注意力模塊與C3模塊相結(jié)合,在增加長(zhǎng)距離關(guān)系提取能力,擁有橫向與縱向位置信息提取能力的同時(shí),單獨(dú)降低加CA的計(jì)算量、參數(shù)量。其次加入SPPFCSPC空間金字塔池化模塊代替SPPF,進(jìn)一步擴(kuò)大感受野,提升模型的精度。最后在Neck層加入GSConv模塊代替Conv模塊,通過(guò)降低計(jì)算量的方法來(lái)提升速度,并替換Neck層中使用Conv的C3,使Neck層變?yōu)镾lim-Neck。
1.1 注意力添加-CA模塊
YOLOv5s在對(duì)目標(biāo)進(jìn)行檢測(cè)時(shí),某些小目標(biāo)或者被遮擋的目標(biāo)往往會(huì)漏檢,導(dǎo)致檢測(cè)效果不佳。因此,本文將Coordinate Attention(CA)注意力模塊與C3模塊相結(jié)合,在不改變Backbone網(wǎng)絡(luò)主體架構(gòu)的情況下加入注意力模塊。如圖1為CA注意力模塊結(jié)構(gòu)圖。
開(kāi)始時(shí)沒(méi)有使用全局平均池化,而是分別向X水平軸方向和Y垂直軸方向進(jìn)行平均池化。這樣能夠允許在捕捉單方向上的長(zhǎng)距離關(guān)系的同時(shí),保留另一個(gè)方向上空間的信息,幫助準(zhǔn)確定位目標(biāo)。通過(guò)兩個(gè)方向池化過(guò)后,會(huì)得到兩個(gè)單獨(dú)方向的特征圖,將這兩個(gè)特征圖進(jìn)行拼接并用1×1大小的卷積核進(jìn)行卷積,生成過(guò)渡特征圖。通過(guò)批量歸一化以及線(xiàn)性回歸的操作后再次將過(guò)渡特征圖拆分成單獨(dú)方向的特征圖,并再次使用1×1大小的卷積核進(jìn)行卷積,獲得與輸入時(shí)相一致的通道數(shù)。通過(guò)激活函數(shù),分配其權(quán)重比并與開(kāi)始的通道輸入值相乘獲得最后的輸出值,從而達(dá)到強(qiáng)化特征的目的。
C3CA模塊是在C3模塊內(nèi)部的最后添加了CA注意力模塊。本文沒(méi)有選擇直接在BackBone網(wǎng)絡(luò)中加入CA模塊,而是選擇在Bottleneck C3中加入CA模塊。如圖2所示是C3CA的結(jié)構(gòu)圖。
如圖3(a)是在Bottleneck C3模塊加入CA的網(wǎng)絡(luò)結(jié)構(gòu)圖和圖3(b)CA模塊直接加入BackBone網(wǎng)絡(luò)結(jié)構(gòu)圖。可以看出,在Bottleneck C3模塊加入CA后,整個(gè)YOLOv5s的框架并不會(huì)發(fā)生改變,而在BackBone網(wǎng)絡(luò)加入后,因?yàn)槭峭暾夭迦肓艘粋€(gè)新的層,所以后面的層要往后推一個(gè)位置。雖然因?yàn)檩斎氲年P(guān)系,上下兩層會(huì)自己調(diào)節(jié),但有4個(gè)Concat還額外接受其他層的信息,而它所接受的C3層和Conv層因?yàn)镃A模塊的加入需要進(jìn)行調(diào)節(jié)。當(dāng)CA直接加入BackBone網(wǎng)絡(luò)后,整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生了改變。當(dāng)其被訓(xùn)練時(shí),會(huì)因?yàn)榻Y(jié)構(gòu)與預(yù)訓(xùn)練權(quán)重中結(jié)構(gòu)不符合而增加多余的訓(xùn)練量。同時(shí)因?yàn)闊o(wú)法找到結(jié)構(gòu)中對(duì)應(yīng)的位置,YOLOv5s.pt中的權(quán)重將不再采用,map值將會(huì)從很低的值開(kāi)始運(yùn)算,大大增加了訓(xùn)練時(shí)間和訓(xùn)練次數(shù)。
1.2 空間金字塔池化SPPFCSPC
在復(fù)雜場(chǎng)景中,會(huì)出現(xiàn)目標(biāo)遮擋漏檢或者小目標(biāo)漏檢。為了滿(mǎn)足在增大感受野的同時(shí)加快運(yùn)行速度,本文提出了將SPPF與CSP結(jié)構(gòu)相結(jié)合而成的SPPFCSPC模塊,如圖4所示。
SPPF是在SPP空洞卷積的基礎(chǔ)上提出的,能在計(jì)算量不變的同時(shí)降低FLOPS。SPPF的作用是增大感受野,通過(guò)5、9、13、1這4種不同尺度的最大池化獲得4種不同的感受野,來(lái)區(qū)分大小目標(biāo)。
CSP結(jié)構(gòu)將原輸入分為2個(gè)分支。一支通過(guò)1×1的卷積降維使通道數(shù)減少,另一支通過(guò)1×1卷積降維后升維來(lái)降低計(jì)算量并進(jìn)行SPPF模塊處理。最后兩者再相結(jié)合并通過(guò)1×1的卷積升維,實(shí)現(xiàn)輸入與輸出維度一致。
通過(guò)SPPF模塊與CSP結(jié)構(gòu)結(jié)合后的SPPFCSPC與SPPF相比較,獲得更高的精度和感受野,與SPPCSPC相比,速度方面得到了提升。
1.3 Neck網(wǎng)絡(luò)輕量化改進(jìn)
在自動(dòng)駕駛中因?yàn)槟繕?biāo)的復(fù)雜性和場(chǎng)景的實(shí)時(shí)性,對(duì)檢測(cè)算法的準(zhǔn)確性和速度都有比較高的要求。標(biāo)準(zhǔn)卷積SC在卷積過(guò)程中因?yàn)榫矸e核的通道與圖片通道相同,所以可以直接得到卷積結(jié)果,并且可以保留各通道之間的隱藏連接。而深度可分離卷積DSC先是將圖片的各通道分別卷積得到3個(gè)通道數(shù),而后再通過(guò)一個(gè)pointwise核將這3個(gè)數(shù)卷積。由于行人檢測(cè)的復(fù)雜性,需要在圖片上提取眾多的屬性,此時(shí)DSC相較于SC可以節(jié)省很多的參數(shù),提升了預(yù)測(cè)的速度。但DSC由于通道分開(kāi)卷積的原因?qū)儆谙∈杈矸e,丟失了各通道之間的隱藏連接,直接導(dǎo)致了精確度的下降。
本文采用GSConv卷積來(lái)代替一部分Conv卷積,在降低計(jì)算量提升預(yù)測(cè)速度的同時(shí)提高精度。GSConv卷積中融合了深度可分離卷積DSC與標(biāo)準(zhǔn)卷積SC。如圖5所示,通過(guò)分組卷積,一半使用SC,一半采用DSC并將兩者進(jìn)行Concat。之后使用shuffle將SC生成的密集卷積操作信息融入DSC生成的信息中,如圖5所示。
GSConv盡可能地保存了這些連接,同時(shí)因?yàn)檎{(diào)用了DSC也降低了運(yùn)算的參數(shù)量。但如果所有的卷積Conv都用GSConv來(lái)代替,只會(huì)導(dǎo)致網(wǎng)絡(luò)升度的進(jìn)一步加深,計(jì)算量參數(shù)量的增大只會(huì)增加推理時(shí)間。對(duì)于駕駛中的汽車(chē)來(lái)說(shuō),速度與準(zhǔn)確同樣重要,所以GSConv替換的最好方式就是僅在Neck中使用。當(dāng)GSConv僅在Neck中運(yùn)行時(shí)可以將自身所產(chǎn)生的冗余信息降到最小,同時(shí)可以讓加入的注意力CA效果更好。
輕量化Neck層使其變?yōu)镾lim-Neck就是替換掉其中的Conv,用更加輕量級(jí)的GSConv代替。GSConv計(jì)算成本大約只有標(biāo)準(zhǔn)卷積的60%~70%,但精確度毫不遜色。除了Neck中的Conv以外,還能夠更改Neck中同樣由Conv組成的C3模塊變成VoV-GSCSP。通過(guò)對(duì)比VoV-GSCSP與C3模塊,發(fā)現(xiàn)前者的FLOPs降低了20%。
2 實(shí)驗(yàn)設(shè)置與結(jié)果分析
實(shí)驗(yàn)環(huán)境配置基于Windows 10操作系統(tǒng),CPU為AMD Ryzen 5 5600X 6-Core Processor 3.70 GHz,GPU 為NVIDIA GeForce RTX 3060 Ti,深度學(xué)習(xí)框架為PyTorch 1.12.1搭建網(wǎng)絡(luò)模型,Python 3.9編譯代碼。
2.1 數(shù)據(jù)集
本文所使用的數(shù)據(jù)集是KITTI數(shù)據(jù)集,KITTI數(shù)據(jù)集是著名的交通場(chǎng)景分析數(shù)據(jù)集,該數(shù)據(jù)集主要包括行人與車(chē)輛在不同的交通場(chǎng)景下的現(xiàn)實(shí)圖像數(shù)據(jù),圖像素材大小為1 224×370。原數(shù)據(jù)集包括Car、Van、Truck、Pedestrian、Pedestrian(sitting)、Cyclist、Tram和Misc這8種類(lèi)別。對(duì)原始數(shù)據(jù)集進(jìn)行種類(lèi)重劃分以及格式轉(zhuǎn)換。由于Cyclist和Misc在整個(gè)數(shù)據(jù)集中數(shù)量較少且識(shí)別度不高,所以去除這2類(lèi)。將Car、Van、Truck、Cyclist、Tram合并為Car這一類(lèi),將 Pedestrian和Pedestrian(sitting)合并為Pedestrian一類(lèi)。處理過(guò)后獲得7 481張圖片,包含Car和Pedestrian兩種類(lèi)別作為實(shí)驗(yàn)數(shù)據(jù),按照8∶2的比例劃分出5 885張圖片作為訓(xùn)練集,1 596張圖片作為驗(yàn)證集。
2.2 消融實(shí)驗(yàn)
為了驗(yàn)證改進(jìn)部分對(duì)YOLOv5模型的影響,對(duì)上述的改進(jìn)方法進(jìn)行消融實(shí)驗(yàn)。評(píng)估指標(biāo)包括多類(lèi)別平均精度(mAP50/%、mAP50:95/%)、計(jì)算量(FLOPS)和參數(shù)量(Params),實(shí)驗(yàn)結(jié)果如表1所示。
表1結(jié)果說(shuō)明,直接加入CA注意力模塊雖然在mAP上會(huì)有所上漲,但Params以及FLOPS都會(huì)上漲不少,而融合過(guò)后的C3CA的mAP提升了0.9%,同時(shí)Params以及FLOPS幾乎沒(méi)有什么變化,證明了C3CA模塊優(yōu)于直接加入CA模塊。Slim-Neck通過(guò)替換Conv為GSConv的操作,每個(gè)卷積可以節(jié)約70%的計(jì)算量,在mAP提升0.7%的同時(shí)降低了1.3個(gè)GFLOPS。最后替換SPPFCSPC金字塔模塊因?yàn)楸旧淼哪P蛷?fù)雜程度大于SPPF增加了不少計(jì)算量,但同時(shí)也增加了0.7%的mAP值,總體上mAP50/%漲了2.3%,mAP50:95/%上漲了5%。
2.3 檢測(cè)結(jié)果
本文采用訓(xùn)練完成的YOLOv5權(quán)重以及改進(jìn)過(guò)后的權(quán)重對(duì)從測(cè)試集中選取的四組圖片進(jìn)行檢測(cè),檢測(cè)結(jié)果如圖6所示。
由圖6可以看出,通過(guò)改進(jìn)后的算法相較于原始的YOLOv5在目標(biāo)檢測(cè)方面,置信度更高,漏檢誤檢率下降,一些漏檢測(cè)的小目標(biāo)也在改進(jìn)后的算法檢測(cè)中被檢測(cè)到。
3 結(jié)論
本文提出了一種YOLOv5的改進(jìn)方式,主要用于降低被檢目標(biāo)由于目標(biāo)小、重疊等于原因出現(xiàn)漏檢、誤檢的問(wèn)題。首先加入C3CA模塊代替C3模塊,相較于直接添加CA注意力模塊,不僅使mAP值有了一部分的提升,在速度和計(jì)算效率方面也大大降低了計(jì)算量(FLOPS)和參數(shù)量(Params);之后將原SPPF與CSP結(jié)構(gòu)相結(jié)合設(shè)計(jì)出SPPFCSPC池化金字塔模塊,擁有了更大的感受野,降低目標(biāo)漏檢情況;最后使用GSConv模塊代替原始的Conv卷積模塊,每一個(gè)GSConv都只需要Conv的70%計(jì)算量。通過(guò)卷積模塊的替換,Neck網(wǎng)絡(luò)變?yōu)镾lim-Neck網(wǎng)絡(luò),在輕量化網(wǎng)絡(luò)模型的同時(shí),進(jìn)一步提升算法的平均精度。將改進(jìn)的算法與原始YOLOv5作對(duì)比,在檢測(cè)精度方面改進(jìn)后的算法提升了2.3%,在檢測(cè)速度方面因?yàn)镾PPFCSPC的加入,總體參數(shù)量變多,計(jì)算量相較于YOLOv5還相對(duì)減少了一些。
參考文獻(xiàn):
[1] 劉穎,劉紅燕,范九倫,等.基于深度學(xué)習(xí)的小目標(biāo)檢測(cè)研究與應(yīng)用綜述[J].電子學(xué)報(bào),2020,48(3):590-601.
[2] GIRSHICK R,DONAHUE J,DARRELL T,et al.Rich feature hierarchies for accurate object detection and semantic segmentation[EB/OL].[2022-06-20].2013:arXiv:1311.2524.https://arxiv.org/abs/1311.2524.pdf.
[3] GIRSHICK R.Fast R-CNN[C]//2015 IEEE International Conference on Computer Vision (ICCV).IEEE,2016:1440-1448.
[4] REN S Q,HE K M,GIRSHICK R,et al.Faster R-CNN:towards real-time object detection with region proposal networks[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,39(6):1137-1149.
[5] 侯慶山,邢進(jìn)生.基于Grad-CAM與KL損失的SSD目標(biāo)檢測(cè)算法[J].電子學(xué)報(bào),2020,48(12):2409-2416.
[6] BOCHKOVSKIY A,WANG C Y,LIAO H Y M.YOLOv4:optimal speed and accuracy of object detection[EB/OL].[2022-06-20].2020:arXiv:2004.10934.https://arxiv.org/abs/2004.10934.pdf.
[7] HOU Q B,ZHOU D Q,F(xiàn)ENG J S.Coordinate attention for efficient mobile network design[C]//2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR).IEEE,2021:13713-13722.
[8] HE K M,ZHANG X Y,REN S Q,et al.Spatial pyramid pooling in deep convolutional networks for visual recognition[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2015,37(9):1904-1916.
[9] LI H L,LI J,WEI H B,et al.Slim-neck by GSConv:a better design paradigm of detector architectures for autonomous vehicles[EB/OL].[2023-02-20].2022:arXiv:2206.02424.https://arxiv.org/abs/2206.02424.pdf.
【通聯(lián)編輯:唐一東】