貴向泉,秦慶松+,孔令旺
(1.蘭州理工大學(xué) 計(jì)算機(jī)與通信學(xué)院,甘肅 蘭州 730050;2.甘肅省氣象信息與技術(shù)裝備保障中心 氣象數(shù)據(jù)質(zhì)量控制室,甘肅 蘭州 730020)
目前,廣泛使用的基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)方法可以分為兩類[1]。第一類是兩階段目標(biāo)檢測(cè)方法,如R-CNN、Fast R-CNN、Faster R-CNN[2]等;第二類是一階段的目標(biāo)檢測(cè)方法,如SSD、YOLO[3,4]系列。在YOLOv4以前,基于兩階段的目標(biāo)檢測(cè)算法雖然精度較高,但速度較慢,難以滿足實(shí)時(shí)性的要求;而一階段的目標(biāo)檢測(cè)方法,雖然具有更快的檢測(cè)速度,但精度有所欠缺。在YOLOv4以后以及YOLOv5的發(fā)布,使得一階段的目標(biāo)檢測(cè)算法與兩階段的目標(biāo)檢測(cè)算法相比無(wú)論是在檢測(cè)速度上還是在檢測(cè)精度上都有所提升[5]。
在實(shí)際的應(yīng)用中我們發(fā)現(xiàn)當(dāng)前社區(qū)、街道、景區(qū)的監(jiān)控?cái)z像機(jī)架設(shè)位置較高,使用目前主流的目標(biāo)檢測(cè)算法對(duì)其回傳的圖像進(jìn)行檢測(cè),容易導(dǎo)致對(duì)遠(yuǎn)距離的小目標(biāo)和密集場(chǎng)景下的遮擋目標(biāo)產(chǎn)生漏檢、誤檢等問(wèn)題,而使用效果較好的YOLOv5l、YOLOv5x等網(wǎng)絡(luò)進(jìn)行檢測(cè)又會(huì)受到計(jì)算機(jī)硬件設(shè)備的制約,難以達(dá)到實(shí)時(shí)性的要求。為了解決上述問(wèn)題,本文在YOLOv5 6.1版本的基礎(chǔ)上,從優(yōu)化定位損失函數(shù)、添加小目標(biāo)檢測(cè)層、引入CARAFE[6]上采樣算子和添加CBAM[7]注意力機(jī)制4個(gè)方面對(duì)YOLOv5s進(jìn)行相關(guān)研究和改進(jìn)。
YOLOv5s的損失函數(shù)由邊界框定位損失(Lboxloss)、分類損失(Lclassloss)、置信度損失(Lobjectloss)這3部分組成;其中在計(jì)算置信度損失時(shí),計(jì)算所有正負(fù)樣本的損失;而在計(jì)算分類和定位損失時(shí),只計(jì)算正樣本的損失;總損失的計(jì)算方法如式(1)所示(λ是超參數(shù))。其中Lobj和Lcls采用二值交叉熵作為計(jì)算損失;Lloc采用CIOU作為計(jì)算損失,計(jì)算方法如式(2)所示
Loss=λ1Lcls+λ2Lobj+λ3Lloc
(1)
(2)
在式(2)中,IOU代表的是真實(shí)的邊界框與預(yù)測(cè)邊界框之間的交并比,ρ2代表的是兩個(gè)邊界框中心點(diǎn)之間的歐式距離,b和bgt分別代表預(yù)測(cè)框和真實(shí)框的中心點(diǎn),c表示的是預(yù)測(cè)邊界框和真實(shí)邊界框的最小外接矩形框的對(duì)角線長(zhǎng)度;v表示邊界框自身寬高比之間的關(guān)系,a在求導(dǎo)時(shí)作為常數(shù)項(xiàng)不參與梯度的更新,v和a的定義如式(3)、式(4)所示。其中,w和h分別為預(yù)測(cè)框的寬和高,wgt和hgt分別為真實(shí)框的寬和高
(3)
(4)
雖然CIOU綜合了IOU的交叉面積占比損失、DIOU[8]的中心偏移損失和自身寬高比3種損失;但通過(guò)公式中的v反映的僅僅是真實(shí)框和預(yù)測(cè)框之間長(zhǎng)寬比的差異,而并不是w與wgt和h與hgt之間的真實(shí)關(guān)系;當(dāng) {w=kwgt,h=khgt} (k為正實(shí)數(shù)),都有v=0,使CIOU會(huì)退化為DIOU,所以會(huì)導(dǎo)致邊界框收斂速度慢和定位不準(zhǔn)確的問(wèn)題。針對(duì)上述問(wèn)題,EIOU[9]在CIOU的基礎(chǔ)上進(jìn)行改進(jìn),將公式v反映的橫縱比拆分開,如式(5)所示
(5)
式(5)中的wc和hc是覆蓋預(yù)測(cè)邊界框和真實(shí)邊界框的最小外接矩形框的寬度和高度。也就是說(shuō),我們將損失函數(shù)分為3部分:IOU損失LIOU、距離損失Ldis和方位損失Lasp。這樣與CIOU相比,一方面可以保留CIOU損失函數(shù)的特性,另一方面,從更多的維度來(lái)考慮預(yù)測(cè)框和真實(shí)框之間的差異,來(lái)提高邊界框的回歸速度和定位精度。
另外,由于訓(xùn)練樣本中不同質(zhì)量的錨框樣本數(shù)量存在不均衡的問(wèn)題,即回歸誤差較小的高質(zhì)量錨框的數(shù)量遠(yuǎn)小于回歸誤差較大的低質(zhì)量錨框;進(jìn)而會(huì)導(dǎo)致模型在訓(xùn)練時(shí),低質(zhì)量的錨框會(huì)產(chǎn)生過(guò)大的梯度,從而影響模型的訓(xùn)練結(jié)果。因此,為了避免低質(zhì)量的錨框?qū)p失函數(shù)帶來(lái)的影響,加強(qiáng)高質(zhì)量錨框在訓(xùn)練過(guò)程中的作用,進(jìn)一步對(duì)定位損失函數(shù)進(jìn)行優(yōu)化;在EIOU的基礎(chǔ)上結(jié)合Focal Loss[10]損失函數(shù)構(gòu)建Focal-EIOU loss,如式(6)所示。其中,IOU為預(yù)測(cè)框和真實(shí)框的交并比,γ為超參數(shù)
LFocal-EIOU=IOUγLEIOU
(6)
從式(6)中可以看出IOU越大時(shí)損失函數(shù)越大,以突出高質(zhì)量錨框在訓(xùn)練過(guò)程中的作用,從而提高邊界框的定位精度。因此本文選用Focal-EIOU作為邊界框的定位損失函數(shù)。
為了提高YOLOv5s對(duì)遠(yuǎn)距離小目標(biāo)的檢測(cè)精度,本文對(duì)YOLOv5s的Neck部分進(jìn)行優(yōu)化。在Backbone的第2層經(jīng)過(guò)4倍下采樣處,增加一個(gè)小目標(biāo)檢測(cè)層,同時(shí)將算法的Neck部分修改為四尺度融合,經(jīng)過(guò)PAN[11]結(jié)構(gòu)與8倍下采樣處、16倍下采樣處和32倍下采樣處產(chǎn)生的特征圖進(jìn)行特征融合。融合后,當(dāng)輸入圖像為640×640時(shí),最終輸出的特征圖大小為160×160,與其它尺度的特征圖相比擁有更小的感受野,以便于檢測(cè)更多的小目標(biāo)。修改后的網(wǎng)絡(luò)為YOLOv5s-p2,如圖1所示。其中Neck部分的實(shí)線內(nèi)是增加的小目標(biāo)特征融合部分,Head部分的實(shí)線內(nèi)增加的是小目標(biāo)的檢測(cè)頭。
圖1 YOLOv5s-p2的網(wǎng)絡(luò)結(jié)構(gòu)
上采樣算子在FPN[12]結(jié)構(gòu)中起著關(guān)鍵性的作用,負(fù)責(zé)多尺度特征信息的融合。常用的上采樣算子有最近鄰插值上采樣,雙線插值上采樣,轉(zhuǎn)置卷積上采樣。在YOLOv5s中采用的是最近鄰插值上采樣,由于圖像中的小目標(biāo)分辨率較低,有效特征信息少,且最近鄰插值上采樣和雙線插值上采樣算子的感受野較小,在多尺度特征融合時(shí),產(chǎn)生的有效特征圖會(huì)損失很多有關(guān)小目標(biāo)的特征信息,不利于小目標(biāo)的檢測(cè)。而轉(zhuǎn)置卷積上采樣時(shí)通常需要使用較大的卷積核,會(huì)引入大量的參數(shù)和計(jì)算量。因此在本文中我們采用具有大感受野的輕量級(jí)上采樣算子CARAFE來(lái)代替原來(lái)的最近鄰插值上采樣算子。CARAFE上采樣算子的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,由上采樣核預(yù)測(cè)模塊和特征重組模塊組成。
圖2 CARAFE上采樣算子的網(wǎng)絡(luò)結(jié)構(gòu)
在上采樣核預(yù)測(cè)模塊部分中,為了減少模型計(jì)算量,提高CARAFE上采樣的效率,首先對(duì)輸入大小為H*W*C的特征圖進(jìn)行通道壓縮操作,壓縮后的通道數(shù)為Cm;然后利用K*K大小的卷積層對(duì)壓縮后的特征圖進(jìn)行特征編碼,編碼之后的特征圖,在空間區(qū)域內(nèi)擁有更多的上下文信息,并對(duì)編碼后的特征圖在通道上進(jìn)行上采樣核預(yù)測(cè)(其中λ為上采樣的倍數(shù));其次再進(jìn)行空間維度擴(kuò)展后得到一個(gè)λH*λW*K2大小的上采樣核特征圖;最后利用Softmax函數(shù)對(duì)每個(gè)通道的上采樣核進(jìn)行歸一化,使得每個(gè)通道上卷積核的權(quán)重和為1。在特征重組模塊中,首先以輸入特征圖中通道上的每個(gè)位置為中心點(diǎn)取出K*K大小的區(qū)域,然后與歸一化后該通道的上采樣核做點(diǎn)積操作,最終得到經(jīng)過(guò)上采樣后的特征圖。
注意力機(jī)制是深度學(xué)習(xí)中一種常見的改進(jìn)策略,源自于人類視覺的研究,本質(zhì)上是使神經(jīng)網(wǎng)絡(luò)對(duì)于更加需要關(guān)注的信息,賦予更高的權(quán)重,從而突出有用信息,抑制無(wú)用信息。注意力機(jī)制具有即插即用和不會(huì)大幅增加模型計(jì)算量的優(yōu)點(diǎn),且現(xiàn)有的注意力機(jī)制在神經(jīng)網(wǎng)絡(luò)上取得了很好的效果,如通道注意力機(jī)制SE[13]和ECA[14]等。但通道注意力機(jī)制通常會(huì)忽略目標(biāo)的位置信息,不能夠充分融合不同位置特征之間的信息。因此,為了進(jìn)一步提高YOLOv5s特征圖對(duì)遠(yuǎn)距離小目標(biāo)的信息提取能力,在本文中引入融合空間注意力機(jī)制和通道注意力機(jī)制的CBAM結(jié)構(gòu)。CBAM結(jié)構(gòu)由CAM模塊和SAM模塊組成,其網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 CBAM注意力機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu)
CBAM結(jié)構(gòu)作為一個(gè)即插即用的模塊,理論上可以插入在每一個(gè)輸出特征層的后面進(jìn)行加強(qiáng)處理。而在本研究中,為節(jié)省計(jì)算資源,使用預(yù)訓(xùn)練的權(quán)重進(jìn)行初始化;若在Backbone中添加注意力機(jī)制,由于其隨機(jī)初始化權(quán)重,會(huì)破壞預(yù)訓(xùn)練的初始化權(quán)重,減弱Backbone的提取能力。因此本文在YOLOv5s-p2的基礎(chǔ)上,在Neck部分的每一個(gè)C3模塊后添加注意力機(jī)制,修改后的模型結(jié)構(gòu)為最終的ST-YOLOv5,網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 ST-YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)
本文所采用的實(shí)驗(yàn)環(huán)境見表1。
表1 實(shí)驗(yàn)環(huán)境配置
在網(wǎng)絡(luò)訓(xùn)練時(shí),為了節(jié)省計(jì)算資源,加快模型的收斂速度,使用YOLOv5s在COCO數(shù)據(jù)集上預(yù)訓(xùn)練的權(quán)重對(duì)模型進(jìn)行初始化;使用autoanchor機(jī)制自動(dòng)對(duì)數(shù)據(jù)集重新進(jìn)行錨框聚類;采用SGD優(yōu)化器,學(xué)習(xí)率為0.01,動(dòng)量參數(shù)為0.937,BatchSize大小為32,模型迭代200次。
為驗(yàn)證本文改進(jìn)的算法在小目標(biāo)檢測(cè)上的有效性,使用 VisDrone[15]數(shù)據(jù)集進(jìn)行驗(yàn)證。VisDrone數(shù)據(jù)集由天津大學(xué)的AISKYEYE團(tuán)隊(duì),使用無(wú)人機(jī)在中國(guó)的14個(gè)城市的不同場(chǎng)景和不同天氣及光照條件下進(jìn)行收集,涵蓋了大量密集場(chǎng)景下的小目標(biāo),標(biāo)簽大小分布如圖5所示,橫縱坐標(biāo)的數(shù)值代表標(biāo)簽寬高占整張圖像的比例。其中,訓(xùn)練集有6471張圖像,驗(yàn)證集有548張圖像,測(cè)試集有1610張圖像,最大分辨率不超過(guò)2000*1500,共有10個(gè)類別。
圖5 標(biāo)簽大小分布
在YOLOv5s訓(xùn)練時(shí),輸入端默認(rèn)采用Mosaic-4的方式進(jìn)行數(shù)據(jù)增強(qiáng),即在一個(gè)BatchSize批次中隨機(jī)選取4張圖片進(jìn)行隨機(jī)平移、縮放和裁剪,然后拼接成和原圖一樣大小的圖片。而在本研究中,為了擴(kuò)充小目標(biāo)的數(shù)量,提高模型的魯棒性,對(duì)Mosic-4數(shù)據(jù)增強(qiáng)進(jìn)行改進(jìn),選用Masic-9的方式進(jìn)行數(shù)據(jù)增強(qiáng),即在一個(gè)BatchSize批次中隨機(jī)選取9張圖像進(jìn)行隨機(jī)平移、縮放、裁剪和拼接。通過(guò)這種方式進(jìn)行數(shù)據(jù)增強(qiáng),一方面可以擴(kuò)充原始數(shù)據(jù)集中小目標(biāo)的數(shù)量,另一方面可以變相的增加BatchSize,減少顯存的占用。VisDrone數(shù)據(jù)集增強(qiáng)后的效果如圖6所示。
圖6 VisDrone數(shù)據(jù)集增強(qiáng)后的效果
(7)
(8)
(9)
(10)
其中,Precision為精準(zhǔn)率,Recall為召回率,TP為預(yù)測(cè)正確的樣本、FP為預(yù)測(cè)錯(cuò)誤的樣本、FN為漏檢的樣本;AP代表的是以Recall為橫坐標(biāo),以Precision為縱坐標(biāo)所圍曲線的面積。
2.4.1 損失函數(shù)改進(jìn)的對(duì)比實(shí)驗(yàn)分析
為了驗(yàn)證改進(jìn)定位損失函數(shù)的有效性,在YOLOv5s的基礎(chǔ)上,將算法中原有的CIOU定位損失函數(shù)分別替換為本文引入的Focal-EIOU以及GIOU[16]和DIOU兩種常用的定位損失函數(shù),其余部分不做修改,修改后的算法分別稱為YOLOv5-Focal-EIOU、YOLOv5-GIOU、YOLOv5-DIOU,并在VisDrone數(shù)據(jù)集上做了以下3組對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表2。
表2 不同損失函數(shù)的對(duì)比實(shí)驗(yàn)結(jié)果
從表2中可以看出,將原始的CIOU定位損失函數(shù)替換為GIOU和DIOU后,mAP@0.5和mAP@0.5:0.95均有所下降,而改進(jìn)后的EIOU定位損失函數(shù)與CIOU相比,在mAP@0.5上增加0.6%,在mAP@0.5:0.95上增加0.7%,因此可以驗(yàn)證Focal-EIOU定位損失函數(shù)的有效性。
2.4.2 更換上采樣的對(duì)比實(shí)驗(yàn)分析
為了驗(yàn)證CARAFE上采樣算子的有效性,分別在YOLOv5s中引入雙線插值上采樣、轉(zhuǎn)置卷積上采樣,然后與基準(zhǔn)模型最近鄰插值上采樣作對(duì)比。在VisDrone數(shù)據(jù)集上做了以下4組對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3。
表3 不同上采樣算子的對(duì)比實(shí)驗(yàn)結(jié)果
從表3中可以看出,使用雙線插值上采樣,模型的性能只會(huì)得到小幅的提升,雖然使用轉(zhuǎn)置卷積上采樣能夠提高模型的性能,但也會(huì)帶來(lái)一定的計(jì)算量。而使用CARAFE算子上采樣,相比于鄰近插值上采樣在模型上性能有很大的提升,參數(shù)量只是小幅增加,且不會(huì)影響模型的實(shí)時(shí)性。因此驗(yàn)證了CARAFE上采樣算子的有效性。
2.4.3 消融實(shí)驗(yàn)
為了綜合驗(yàn)證4種改進(jìn)方法的有效性,本文在上述兩組對(duì)比實(shí)驗(yàn)的基礎(chǔ)上,增加融合不同改進(jìn)方法之后的消融實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果見表4,其中√代表了使用的改進(jìn)策略。
表4 VisDrone數(shù)據(jù)集上的消融實(shí)驗(yàn)結(jié)果
2.4.4 對(duì)比實(shí)驗(yàn)
同時(shí),為了進(jìn)一步驗(yàn)證本文改進(jìn)算法的有效性,將本文所改進(jìn)的算法與當(dāng)前主流的YOLOv3、YOLOv3-SPP、YOLOv5n、YOLOv5s、YOLOX-s、YOLOv5m目標(biāo)檢測(cè)算法在VisDrone數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表5。
表5 不同模型之間的對(duì)比實(shí)驗(yàn)結(jié)果
從表5中可以看出,在YOLOv3的基礎(chǔ)上引入SPP模塊后,模型在小幅增加計(jì)算量的情況下,增加了模型的檢測(cè)精度;但與本文改進(jìn)的算法相比,參數(shù)量和計(jì)算量偏大,不利于模型在嵌入式設(shè)備上部署。而YOLOv5n雖然具有較快的檢測(cè)速度,但在精度上有所欠缺,在密集場(chǎng)景下容易產(chǎn)生漏檢和誤檢等問(wèn)題。最后與檢測(cè)精度較為相近的YOLOv5m算法相比,本文改進(jìn)的算法參數(shù)量?jī)H是YOLOv5m的35%,計(jì)算量?jī)H是YOLOv5m的41%,且速度能達(dá)到76 FPS。由此可見,本文所改進(jìn)的算法,無(wú)論是在檢測(cè)精度上,還是在檢測(cè)速度上都有一定的優(yōu)越性。
同時(shí),為了更加直觀評(píng)價(jià)本文改進(jìn)的算法,在VisDrone數(shù)據(jù)集中選取不同場(chǎng)景下的3張圖像對(duì) YOLOv3算法、YOLOv5s算法和改進(jìn)后的算法ST-YOLOv5的檢測(cè)效果進(jìn)行可視化對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 不同算法的檢測(cè)結(jié)果對(duì)比
從圖7中可以看出,在遠(yuǎn)距離的密集場(chǎng)景下,本文提出的ST-YOLOv5算法,與當(dāng)前主流的目標(biāo)檢測(cè)算法相比,具有更高的檢測(cè)精度和置信度,解決了當(dāng)前主流目標(biāo)檢測(cè)算法在遠(yuǎn)距離小目標(biāo)檢測(cè)任務(wù)中存在的誤檢和漏檢等問(wèn)題。
本文為解決當(dāng)前主流目標(biāo)檢測(cè)算法對(duì)圖像中遠(yuǎn)距離小目標(biāo)產(chǎn)生的漏檢和誤檢等問(wèn)題,在YOLOv5s算法的基礎(chǔ)上,分別從優(yōu)化定位損失函數(shù)、添加小目標(biāo)檢測(cè)層、引入CARAFE上采樣算子和添加CBAM注意力機(jī)制4個(gè)方面對(duì)其進(jìn)行改進(jìn)。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)后的算法在VisDrone數(shù)據(jù)集上mAP@0.5和mAP@small分別提高了4.2%、3.2%,且檢測(cè)速度可以達(dá)到76 FPS;與目前主流的目標(biāo)檢測(cè)算法相比在精度和速度方面都有一定的優(yōu)越性,能夠很好地應(yīng)用于不同場(chǎng)景下的小目標(biāo)檢測(cè)任務(wù)中。