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