吳明杰,云利軍,陳載清,鐘天澤
1.云南師范大學 信息學院,昆明 650500
2.云南省教育廳計算機視覺與智能控制技術工程研究中心,昆明 650500
隨著基于深度學習的目標檢測技術快速發展,結合無人機航拍進行目標檢測的方法越來越普遍。如森林防火、樓道巡檢、農業監測等。無人機在檢測任務中提供了高空視角,但是高空視角的圖像會帶來目標尺度變化大、目標之間相互遮擋的問題,這將導致使用常規的目標檢測算法在進行檢測任務時出現誤檢漏檢問題。因此研究出一個針對無人機視角下的小目標檢測算法模型成為關鍵的研究內容之一。
近幾年以來,伴隨深度學習技術的快速發展,國內外的研究學者逐漸將深度學習技術應用于目標檢測。韓玉潔等人[1]在YOLO上進行數據增強,修改激活函數,添加CIoU,修改后模型精度有所提升,但模型內存占用過大;丁田等人[2]加入注意力以及CIoU,加快了模型收斂的速度,增加檢測準確率,但也增加了計算成本;冒國韜等人[3]對YOLOv5s算法引入多尺度分割注意力,以應對小目標背景復雜及特征提取困難等問題,雖然檢測精度有一定提升,但是犧牲了參數量;Zhu等人[4]在YOLOv5模型中引入CBAM注意力機制以解決航拍圖像目標模糊的問題,但是改進后的模型對硬件性能要求較高,不易實現;Yang等人[5]在YOLOv5網絡的頸部增加上采樣,形成用于收集小目標特征的特征圖,增強了算法的小目標檢測能力,但改進后的算法提取到的小目標特征信息較少,且檢測速度較慢,實時性不足以滿足實際需求。
為了增強YOLOv5s模型對小目標特征捕獲的靈活度、緩解特征圖經過多次降采樣后信息的丟失、提高模型檢測頭的表示能力、解決回歸計算時誤差太大的問題,本文提出了一種基于YOLOv5s的無人機航拍小目標改進算法BD-YOLO。主要貢獻如下:
(1)在模型的11層與12層之間加入雙向路由注意力(bi-level routing attention,BRA)[6],在不增加過多參數量的同時,提升模型在特征提取時對小目標區域的關注度和精確度。
(2)將原模型的目標檢測頭部替換成帶自注意力機制的檢測頭部(dynamic head,DyHead)[7],提高模型檢測層的表示能力,以應對特征圖進行多次下采樣后特征信息嚴重丟失的問題。
(3)使用Focal-EIoU[8]優化CIoU在進行預測框回歸計算時誤差較大的問題,提高模型在背景復雜的圖像中對小目標檢測的魯棒性。
目前針對“小目標”的定義主要有兩種:一種是絕對尺寸,尺寸小于32×32的目標被認為是小目標;另一種是相對尺寸,根據國際光電工程學會定義,小目標為256×256像素的圖像中成像面積小于80像素的目標,即目標的尺寸小于原圖的0.12%則可被認為是小目標[9]。小目標的檢測一直是目標檢測中一個具有挑戰性的難題,對于圖像特征的深刻理解是提升小目標檢測效果的前提。近年來產生了許多有用的方法來提高小目標檢測的性能。
針對小目標檢測的難點,Chen等人[10]提出了Stitcher方法,采用損失函數作為反饋,當小目標貢獻過小時,則在下一次迭代中通過圖片拼貼的方式提高小目標占比以提高小目標訓練效果。Kisantal等人[11]通過復制粘貼小目標來提高在數據集中所占比例,從而提高小目標對網絡的貢獻,提升模型對小目標的檢測效果。由于小目標在圖像中的占比較小,而數據增強中簡單的拼貼可以幫助小目標增加其在圖像中占比,可以在一定程度上提高模型對小目標的檢測效果,但是數據增強只是簡單增加目標的比例,并不會提高對深層語義信息的利用。
由于小目標的尺寸較小且利用信息少,因此可以利用上下文信息的方式來增強模型的檢測能力。李青援等人[12]在SSD模型中引入一條自深向淺的遞歸反向路徑,通過特征增強模塊將深層包含上下文信息的語義特征增強到淺層。但是,并不是所有的上下文信息都是有效的,當圖像中缺少與目標關聯較高的信息時,會產生冗余的信息噪聲。
目標檢測從早期的傳統方法到目前基于深度學習的方法,發展已經有21年。當前基于深度學習的目標檢測算法有兩種:第一種是以Faster RCNN[13]為代表的二階段檢測算法等,該類模型首先利用算法生成預選框,再使用深度卷積網絡對預選框進行檢測類別的分類,二階段檢測算法獲得的精度更高,但速度較慢,不能滿足實時性要求較高的場合;第二種是以YOLO[14]、YOLOv3[15]、YOLOv4[16]、YOLOv5以及SSD[17]為代表的單階段檢測算法,通過將檢測框的定位和分類任務結合到一起,以達到快速檢測出目標位置的效果,通過適當的改進可同時具有更好的實時性與檢測精度。
YOLOv5屬于一種單階段的目標檢測算法,可以實現端到端目標檢測,運行速度快,但是在檢測精度上相較于二階段的RCNN算法略低。YOLOv5一共有4個版本:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,四個版本的區別在于網絡的深度和寬度,YOLOv5s網絡結構是YOLOv5系列中深度最小且特征圖的寬度最小的。另外三種都是在YOLOv5s基礎上不斷加深、不斷加寬。YOLOv5s的網絡結構較簡潔,運行速度也最快,對于小目標應用場景的考慮,本研究選擇使用YOLOv5s模型。其網絡結構如圖1所示。

圖1 YOLOv5s結構Fig.1 YOLOv5s structure
YOLOv5s模型的網絡結構中,可分為輸入端、Backbone網絡、Neck網絡、Head輸出層4個部分。
(1)輸入端:輸入端對輸入進來的圖像進行一個Mosaic數據增強處理,首先對幾張圖像進行隨機縮放、剪裁、排布,然后將圖像進行隨機拼接,如圖2所示。通過Mosaic處理后不僅可以豐富數據集,還可以提升模型訓練的速度。YOLOv5s算法會針對不同類型的數據集自適應計算出最佳的錨點框。

圖2 Mosaic數據增強Fig.2 Mosaic data enhancement
(2)Backbone網絡:YOLOv5s的Backbone網絡中由CSP[18]、CBS和SPPF模塊組成,分別為特征提取模塊、卷積模塊和空間金字塔池化模塊。CSP結構分為兩類:CSP1_X、CSP2_1,其中,Resx模塊中有兩種模式,一種是卷積之后使用shortcut與初始輸入相加后輸出,另一種是卷積之后直接輸出,如圖3所示。CBS由Conv、BN歸一層和Leaky relu激活函數組成,如圖3所示。該版本的SPPF模塊進行多個5×5的MaxPool2d操作,不再使用原先的1×1,5×5,9×9,13×13的最大池化,這樣可以提高模型的推理速度。

圖3 CSP和CBS結構Fig.3 Structure of CSP and CBS
(3)Neck網絡:Neck由特征金字塔網絡(feature pyramid network,FPN)[19]和路徑聚合網絡(path aggregation network,PAN)[20]組成。FPN自頂向下傳達強化語義特征,PAN自底向上傳達強化位置特征,FPN+PAN的結構將不同階段的特征圖進行特征融合,提高了模型對小目標檢測的精度。
(4)Head輸出層:Head的主體為三個Detect檢測器。當輸入的圖像尺寸為640×640時,Head層先對Neck層的三個輸出進行卷積操作,再在三個尺度分別為20×20、40×40、80×80的特征圖上生成對應的預測框。
目前YOLOv5s模型仍然在大多數目標檢測任務中發揮巨大的優勢,但是由于YOLOv5s使用過多的超參數來優化模型訓練,因此模型訓練的時間相對較慢。在檢測小目標時,由于YOLOv5s特征提取網絡使用了較大的感受野,可能導致小目標信息的丟失。在應用場景中,YOLOv5s模型相對復雜的網絡結構需要更高的計算資源,在結合硬件環境部署模型時,將對硬件提出更高的要求。
計算復雜度是指模型進行一次前向傳播所需要的浮點運算次數,可以通過計算模型每層的計算量,然后求和得到整個模型的計算復雜度。對于YOLOv5s算法的復雜度,需要結合參數量、計算量、內存需求和推理速度這幾個方面進行考量。YOLOv5算法中4個不同版本的參數如表1所示。通常來說,一個模型的參數量越多模型越復雜。從表1可以看出,YOLOv5s相較于其他版本是最輕量級的模型。

表1 YOLOv5算法不同版本的參數Table 1 YOLOv5 algorithm different versions of parameters
根據小目標檢測任務的特點,提出了針對小目標檢測的BD-YOLO模型。引入動態稀疏注意力機制BRA來提高小目標檢測精度,使用帶有注意力機制的檢測頭DyHead來提高模型的表達能力,以及采用更適合小目標檢測的損失函數Focal-EIoU Loss來提高模型的預測精度。BD-YOLO算法結構如圖4所示。

圖4 BD-YOLO結構Fig.4 BD-YOLO structure
目前常用的注意力機制SE[21]、CA[22]、ECA[23]、CBAM[24]等,都是在一個全局范圍獲取重點關注的目標,將會導致計算復雜度較高以及消耗大量的內存。為了提高模型特征提取能力,同時在不增加過多網絡計算復雜度的情況下,在模型的11層與12層之間添加一種動態稀疏注意力機制(bi-level routing attention,BRA),以實現更強大的特征提取能力,更靈活地計算分配和內容感知。BRA注意力機制的原理如圖5所示。BRA先將輸入進來的一張特征圖X∈RH×W×C,劃分為S×S個不同的區域,每個區域包含個特征向量,即可將X變為。通過線性映射獲得Q,K,Q,K,V的具體表達式如公式(1)~(3)所示:

圖5 BRA注意力原理Fig.5 BRA attention principle
其中,Wq,Wk,Wv∈RC×C,分別屬于query、key、value的投影權重。然后通過構造一個有向圖找到不同鍵值對對應的參與關系,最后應用細粒度的token-to-token注意力操作,計算公式(4)如下:
其中,Kg和Vg是聚合后key和value的tensor,函數LCE(?)使用深度卷積參數化,在BD-YOLO模型的設計中所使用的參數值為5。BRA通過稀疏性操作直接省略最不相關區域的計算,以實現計算有效分配的目的。全局注意力與BRA注意力實現效果對比如圖6所示。
YOLOv5s模型只有三個檢測頭,當該模型對小目標進行檢測時,對較小的目標可能存在漏檢的現象。目前,許多研究學者會通過在原模型三層檢測層的基礎上增加到四層。俞軍等人[25]在YOLO模型中增加了一層專門針對于小目標的檢測層,使得由更淺層的特征圖融合而來的特征圖具有更強大的語義信息和精確的位置信息。
在YOLOv5s模型中,主干網絡的輸出是一個三維張量,其維度為水平×空間×通道。因此,將YOLOv5s模型的檢測頭部替換為一種可同時實現尺度感知注意力、空間感知注意力和任務感知注意力統一的動態檢測頭DyHead(dynamic head),即在特征張量的每個特定維度上添加注意力機制。在檢測層上給定三維特征張量F∈RL×S×C,該注意力函數計算公式(5)如下所示:
其中,πL(?)、πS(?)、πC(?)分別是應用在維度L、S、C上的三個不同的注意力函數,這三種注意力順序應用于檢測頭部,可以多次疊加使用。在BD-YOLO模型的設計中,使用了四組πL(?)、πS(?)和πC(?)模塊依次疊加,讓檢測頭具備更強的表示能力,從而提升算法對小目標的檢測效果。DyHead結構如圖7所示。

圖7 DyHead結構Fig.7 DyHead structure
YOLOv5s模型使用CIoU Loss計算矩形框損失,其主要由三部分組成:預測矩形框位置的損失(Lbbox)、置信度的損失(Lobj)、分類損失(Lcls),CIoU Loss具體的計算公式如公式(6)所示:
CIoU Loss將重疊的面積、中心距離和矩形框的寬高比同時加入計算,提高了模型訓練的穩定性和收斂速度。但是,CIoU Loss并未真正表示出矩形框的高寬與其置信度的真實差異,這將會導致回歸預測的結果不夠精準。
針對CIoU Loss的問題,將預測框的寬高分別考慮,使用了Focal-EIoU Loss,該損失函數由Focal Loss和EIoU Loss組合而成。Focal Loss將預測框的寬高拆分,分別與最小外界框的寬高作差值運算。EIoU Loss通過減小預測框和真實框寬高上的差異,使得收斂速度更快且有更好的定位結果,其具體的計算公式如公式(7)所示:
其中,LIoU、Ldis、Lasp分別為IoU損失、距離損失、高寬損失。在一張樣本圖片中,回歸誤差小的錨框數量遠遠少于誤差大的錨框數量,質量較差的錨框會產生較大的梯度,這將會直接影響模型的訓練效果。因此,在EIoU Loss基礎上添加Focal Loss,把高質量的錨框與低質量的錨框分開,計算公式如公式(8)所示:
其中,γ是用于控制曲線弧度的超參數。
損失函數Focal-EIoU Loss弱化了易回歸樣本的權重,使模型更專注于預測框與真實框重疊低的樣本,從而實現提高回歸精度的效果。
本文所使用的是公開數據集VisDrone2019[26],該數據集一共包含8 599張由無人機位于高空拍攝的靜態圖像,其中6 471張用于訓練,548張用于驗證,1 580張用于測試。圖像類別包括行人、人、自行車、汽車、面包車、卡車、三輪車、遮陽篷-三輪車、公共汽車和摩托車,一共260萬個標注信息。其中訓練集實例數量分布如圖8所示。

圖8 訓練集實例數量分布Fig.8 Instance distribution of train dataset
VisDrone2019數據集中的圖片尺寸有960×540和1 360×765兩種,各個實例的尺寸大小分布如圖9所示。從圖9中可以看出大部分目標的尺寸的長寬比例小于整張圖像的0.1倍,滿足小目標的相對尺寸定義。

圖9 目標尺寸大小分布圖Fig.9 Object size distribution diagram
實驗所使用的預訓練權重是由COCO數據集上進行訓練得到。訓練模型過程中常用的優化器有SGD、Adam、RMSProp等,優化器的性能會影響訓練的收斂速度和穩定性。實驗中使用了SGD優化器,并使用了表3中的訓練參數,以加快模型的收斂速度。為了實驗的公平性,每次實驗輪數設置為300 epoch。實驗軟硬件環境如表2所示,訓練參數如表3所示。

表2 實驗配置Table 2 Experimental configuration

表3 訓練參數Table 3 Training parameters
在模型檢測小目標時,通常出現誤檢漏檢問題,因此評價一個模型的檢測效果是否精準,通常使用mAP@0.5、mAP@0.5:0.95,mAP指標綜合了不同類別的精準率(Precision,P)和召回率(Recall,R),是一個更加全面的評價指標。在考慮模型檢測效果好壞的同時也需要考慮模型的大小。在評估模型大小時,通常使用模型的參數量和GFLOPs指標。
(1)平均精度均值(mean of average precision,mAP),mAP@0.5是所有類別的IoU閾值在0.5時的平均檢測精度;mAP@0.5:0.95是以步長為0.05,計算IoU閾值在0.5~0.95之間的所有IoU閾值下的平均檢測精度。在目標檢測中,mAP值越高,說明模型檢測效果越好。公式為:
其中,AveragePrecision(?)為某個類的平均精度,Num(?)為數據集所有類別的數量。
(2)精確率,指在所有檢測到的目標中,真實的目標數量與總檢測目標數量之比。精確率公式為:
其中,TP表示真正例,即在檢測的結果中正確檢測出的目標數量;FP表示假正例,即在檢測的結果中被錯誤檢測的目標數量。
(3)召回率,指在所有真實的目標中,被檢測到的目標數量與總真實目標數量之比。召回率公式為:
其中,FN表示假反例,即在正確的目標中未被檢測出的目標數量。
(4)參數量,可以用來評價模型大小和復雜度,是對每一層的權重參數數量進行求和得到。當參數量較小時,表示模型屬于輕量模型;當模型參數量較大時,意味著能更好地捕獲特征,但是也消耗更多的存儲空間和計算資源。
(5)GFLOPs(floating point operations per second),代表模型在推理過程中一秒鐘內執行的浮點運算次數,可以用來評估模型的計算復雜度和性能。
3.4.1 注意力機制對比實驗
在BRA注意力機制中使用了局部上下文增強項(local context enhancement,LCE)[27],函數LCE(?)使用了深度卷積進行參數化。本文設計了實驗以探究不同參數值對模型檢測性能的影響。實驗數據為VisDrone2019數據集,基線模型為YOLOv5s。實驗結果如表4所示。

表4 LCE函數參數值對BD-YOLO性能的影響Table 4 Effect of LCE function parameter values on BD-YOLO performance
由表4可知,當參數值設置為5時,模型的檢測性能可達到最優的效果。當參數值取1和3時,模型性能沒有提升的趨勢;當參數值取5時,較基礎參數1的mAP@0.5和mAP@0.5:0.95指標分別提升了0.011和0.006。當參數值大于5時,精度值呈現出下降的趨勢。綜上實驗所得的結果,本文將函數LCE(?)的參數值設置為5。
為了驗證BRA注意力機制對小目標檢測效果的有效性,將設計實驗使用參數值為5時的BRA與不同注意力進行對比?;€模型為YOLOv5s,數據集為VisDrone2019,訓練次數為300輪。實驗結果如表5所示。

表5 注意力機制對比試驗Table 5 Comparative experiment of attention mechanism
由表5可知,BRA注意力機制憑借其靈活的特征感知能力,使YOLOv5s模型的mAP@0.5指標提升了0.007,對模型精度的影響明顯優于其他注意力機制。CA、SE和CBAM注意力高度依賴通道內的特征信息,由于小目標在通道內的信息相對較少,導致這類注意力很難準確捕獲小目標的特征。EMA注意力[28]通過平滑模型的注意力來減少噪聲,但是因為這種平滑性使得模型很難定位小目標的位置。
3.4.2 DyHead檢測頭性能對比實驗
通過控制不同數量的DyHead塊進行疊加,探究其對模型性能和計算成本的影響。實驗基線模型使用YOLOv5s,對基線模型分別疊加1、2、4、6、8、10個DyHead塊。其中,疊加個數為0的是基線模型。實驗結果如表6所示。

表6 DyHead疊加個數對模型性能的影響Table 6 Effect of number of DyHead superposition on model performance
從表6可看出,動態檢測頭DyHead隨著疊加個數的增加,精度也隨之增加,但是計算成本和參數量也有小幅度增加。本文將算法精度、復雜度和推理速度進行綜合考慮,選擇將4個DyHead塊疊加集成入算法中,此時模型的平均精度達到0.292,參數量增加了0.56 MB,FPS僅降低了26.3%。
3.4.3 損失函數對比實驗
在BD-YOLO模型中所使用的損失函數是Focal-EIoU,為了驗證該損失函數對模型檢測小目標的精度具有更好的提升效果,將對使用不同損失函數后的相同模型進行對比。以YOLOv5s添加注意力機制BRA及修改了帶注意力的檢測頭為基礎的模型進行對比實驗,訓練300輪。實驗結果如表7所示。

表7 損失函數對比實驗Table 7 Loss function comparison experiments
由表7可知,在與其他損失函數相比,Focal-EIoU雖然在GFLOPs和權重文件的大小上都有小幅度增加,但是對模型的檢測效果提升最大,說明損失函數Focal-EIoU更適合小目標的檢測。
3.4.4 綜合對比實驗
為了體現BD-YOLO模型的優越性,使用了目前較為流行的目標檢測模型進行對比,在相同的實驗環境配置與參數的情況下對VisDrone2019數據集進行檢測,模型對比實驗結果如表8所示。

表8 模型對比實驗Table 8 Model comparison experiments
在檢測精度上,BD-YOLO模型在mAP@0.5、mAP@0.5:0.95和R上都具有較大的優勢。mAP@0.5、mAP@0.5:0.95和R指標分別為0.326、0.179、0.53。與近年來最新的檢測模型相比,BD-YOLO的檢測精度優于YOLOv5n、TPH-YOLOv5、VA-YOLO和YOLOv8n,但不如YOLOv3和YOLOv8s這類相對較大的模型。
在算法復雜度上,YOLOv3的GFLOPs是BD-YOLO的5.6倍,參數量多了53.68 MB。YOLOv8s的精度雖然比BD-YOLO高,但是GFLOPs、參數量、權重文件大小分別比BD-YOLO大了0.9 GFLOPs、3.27 MB、6.4 MB。因此,BD-YOLO模型相對較低的計算復雜度和參數量,更有利于存儲和部署在邊緣設備上。
從表9可以看出,與其他模型相比,BD-YOLO在行人和人的目標上的檢測精度是最高的,分別達到了42.6%和34.9%。在自行車、汽車、面包車、三輪車和摩托車類別上的檢測精度僅次于YOLOv3和YOLOv8s。

表9 類別對比實驗結果Table 9 Category comparison experiment results
綜上,BD-YOLO模型對比基線模型YOLOv5s有了明顯提升。與其他模型相比,在精度和復雜度上具有較大的優勢。因此,說明本文的改進是有效的。
3.4.5 消融實驗
為了證明本文提出的每個改進模塊對于模型檢測能力的提升,將對不同模塊對模型檢測的效果做消融實驗進行評估。以YOLOv5s為基線模型,在該模型上逐個添加改進的模塊,首先添加注意力機制BRA,然后添加帶注意力的檢測頭DyHead,最后改用Focal-EIoU損失函數。數據集選用VisDrone2019,圖片大小設置為640×640,使用預訓練權重加速訓練,共訓練300 epoch。
由表10可知,所改進的模塊對模型檢測小目標的準確度均有提升。Baseline模型為無改進的基線模型YOLOv5s,在Baseline上添加注意力機制BRA后,雖然參數量和GFLOPs分別增加了0.27 MB、10.6 GFLOPs,但是mAP@0.5提升了0.007,說明BRA過濾掉最不相關的區域并提高對有價值區域的關注,增強了模型定位小目標的效果;將Baseline上的檢測頭改為DyHead,在mAP@0.5和mAP@0.5:0.95指標上的提升最大,分別提高了0.028、0.016,說明檢測層帶有注意力機制將會大幅提升模型檢測小目標的效果;使用Focal-EIoU Loss損失函數,將高質量的錨框和低質量的錨框分開,會使得模型的檢測精度得到提升;最后,將BRA、DyHead和Focal-EIoU Loss同時作用于基線模型,在mAP@0.5和mAP@0.5:0.95指標上較基線模型提升了0.062和0.037,雖然參數量和GFLOPs有所增加,但是屬于合理范圍。

表10 消融實驗Table 10 Ablation experiment
YOLOv5s算法和BD-YOLO算法的檢測結果如圖10所示,圖(a)和(c)為改進前YOLOv5s算法檢測結果,圖(b)和(d)為改進后的BD-YOLO算法的檢測結果。

圖10 檢測效果對比Fig.10 Comparison of detection effects
針對YOLOv5s模型對無人機高空航拍圖像的小目標進行檢測出現漏檢誤檢的問題,本文基于YOLOv5s模型提出了改進的小目標檢測模型BD-YOLO。首先,在網絡結構中加入注意力機制BRA,提高對小目標檢測區域的關注度;其次,將YOLOv5s中普通的檢測層改為使用帶有自注意力的檢測層DyHead,以改進模型對小目標的表示能力;最后將YOLOv5s中的損失函數CIoU Loss替換成Focal-EIoU Loss,從而進一步提升模型的檢測效果。在數據集VisDrone2019的實驗結果表明,BD-YOLO模型對于小目標的檢測效果都優于其他的主流模型,在沒有添加過多參數量的情況下檢測精度達到了32.6%,可以說明本文改進后的模型在無人機視角下的小目標檢測效果具有優勢。