陳佳慧,王曉虹
1.遼寧石油化工大學 人工智能與軟件學院,遼寧 撫順 113000
2.遼寧石油化工大學 信息與控制工程學院,遼寧 撫順 113000
近些年,無人機在軍事領域和民用市場都處于快速發展時期,無人機航拍檢測技術在電路巡檢、防火巡查、交通監管、農作物監察等民用領域以及緝毒偵察、應急救援等軍事領域都被廣泛應用。隨著卷積神經網絡的創新發展,基于深度學習的目標檢測算法因其展現出優異的檢測性能,被廣泛推行使用。
基于深度學習的目標檢測算法主要分為單階段檢測和雙階段檢測兩種,雙階段目標檢測算法以SPPNet、R-CNN 系列等為代表,首先通過區域提議網絡生成候選區域,然后對候選區域進行分類和定位預測。以RetinaNet、YOLO 系列等為代表的單階段目標檢測算法是基于錨框來預測目標的類別和定位,在不進行候選區域的情況下完成端到端的目標檢測。雙階段目標檢測算法的平均精度高、誤檢率和漏檢率低,但由于其復雜的網絡架構,以及對候選框提取等操作,導致網絡計算量龐大、檢測速度慢,難以滿足實時檢測的需求。而單階段目標檢測算法的模型結構簡單、檢測速度快、復雜度低,在實時性方面展現出更優異的檢測性能。
主流的目標檢測模型大多是面向自然場景圖像設計的,而自然場景圖像與無人機航拍圖像存在明顯差異:(1)無人機飛行高度高、拍攝角度高導致航拍圖像中存在大量小目標且目標之間尺寸跨度大,可提取到的有效特征過少。(2)航拍圖像中背景復雜多變、密集小目標相互遮擋且易受環境干擾,導致檢測效果不佳。(3)無人機運動速度變化劇烈,拍攝的圖像模糊,模型的檢測精度低。(4)無人機搭載的硬件設備計算能力有限、存在一定成本開銷,對模型的檢測速度和輕量化有較高要求。近些年,許多研究者為了提高小目標檢測算法的性能,提出許多有用的方法。Kisantal 等人[1]通過復制粘貼小目標的操作來提高數據集中小目標的占比,從而提高小目標對網絡的貢獻。但這僅僅只是增加小目標物體在數據集中的樣本數量,并不能保證在訓練時正負樣本數量的平衡,而且沒有對小目標的特征信息加以利用。Lin 等人[2]提出經典的特征金字塔網絡(feature pyramid network,FPN)和Liu 等人[3]提出的路徑聚合網絡(path aggregation network,PAN)通過采用自上而下和自下而上的連接方式將不同層級的特征信息相融合,這種多尺度學習方法在一定程度上提高了網絡的多尺度特征提取能力。但是僅通過簡單的元素相加來融合不同層級的特征圖,忽略了不同層級的特征圖擁有不同細粒度和價值的事實:淺層特征圖的細粒度信息更有助于獲取小目標的位置信息,而深層特征圖的細粒度特征對語義信息的提取尤為重要。直接地相加或者拼接操作還會導致冗余信息和沖突的產生,增加網絡的參數量,減慢了訓練速度。TPH-YOLOv5[4]采用CBAM(convolutional block attention module)[5]注意力機制模塊,先通過通道注意力,然后再經過空間注意力,將二者串聯起來以提高空間和通道信息的利用率,增強有效特征的權重,并設計了帶有Transformer[6]的檢測頭以提高網絡的預測精度。QueryDet[7]首先在低分辨率特征圖上粗略地預測小目標的位置,然后用這些粗略的位置信息引導高分辨率特征圖更精確地計算出小目標位置。這樣既可以得到更精確的預測回歸,也可以對背景目標進行更少的計算。綜上所述,雖然現有的小目標檢測算法一定程度上提高了檢測性能,但仍存在一些不足:(1)前景背景樣本不平衡。(2)不同場景下目標特征捕獲量不足。(3)為了提高精度而增加計算量和參數量,導致推理速度變慢,無法滿足無人機實際部署應用。(4)模型的遷移能力弱,泛化性降低,適用性有限。
為了從航拍圖像上小目標的有限特征中獲取關鍵有效的特征信息,從而提高模型對小目標檢測的精度,本文提出了一種針對密集小目標檢測的算法模型RDSYOLOv5。主要改進如下:
(1)在網絡中增添一個160×160 的小目標檢測層,并通過K-means 聚類算法對無人機航拍數據集生成12個不同尺度的預設錨框,有效緩解由于錨框設定所帶來的誤檢和漏檢問題。
(2)設計了一種具有等級制的殘差結構的多尺度特征提取模塊C3Res2Block。在減少網絡參數量和計算開銷的同時在更細粒度級別上表示多尺度特征,從而抑制多尺度特征融合沖突,以提高網絡的多尺度特征表征能力。
(3)在預測網絡中,采用解耦檢測頭將分類任務與定位任務分離,減少兩個任務之間的差異,加強模型的定位能力。
(4)使用軟化非極大值抑制算法Soft NMS 對候選框進行優化,在不增加額外參數的情況下,提升模型在密集且遮擋場景下對小目標的檢測精度。
YOLOv5兼并了許多算法的優點,能很好地平衡檢測精度和速度,能夠做到實時性檢測目標,是目前推行和使用最多的目標檢測算法之一。YOLOv5共有s、m、l、x四個版本,其網絡整體架構完全一致,但網絡深度和寬度則依次變大。考慮到實際的應用場景和無人機硬件部署,YOLOv5s 的網絡層次最少,網絡結構清晰簡潔,計算資源的開銷成本最低,運行速度最快,更方便移植到其他設備,本文對YOLOv5s算法開展研究。
如圖1 所示,YOLOv5s 的網絡結構分為骨干網絡(Backbone)、頸部網絡(Neck)和頭部網絡(Head)三個部分,基于回歸方法來快速高效地完成目標檢測任務。Backbone 對輸入圖像進行不同倍率的下采樣并在此上提取特征;Neck 通過FPN 和PAN 將不同層級的特征進行融合;Head 設計了三個不同尺寸的檢測層分別用于預測大、中、小目標的類別和邊界框回歸。

圖1 YOLOv5s網絡結構圖Fig.1 Architecture of YOLOv5s
除此之外,YOLOv5算法還提供了圖像預處理操作和許多數據增強的方法,如馬賽克(Mosaic)、隨機仿射變換(Random affine)、混合(MixUp)等。在訓練、推理和部署方面也提供了像自動錨框、余弦學習率、混合精度訓練、遺傳超參數進化、標簽平滑處理、多種優化器等多種功能。這些方法的集成極大地增強了模型的檢測效果,并且可以便捷、廣泛地應用于實際場景中。
本文以Ultralytics 6.1版本的YOLOv5s算法為基礎設計了如圖2 所示的RDS-YOLOv5 目標檢測算法。Backbone 部分對輸入圖像分別進行4、8、16、32 倍的下采樣,然后通過Neck部分將不同層級的特征進行融合,獲得更豐富的上下文信息。其次使用C3Res2Block 模塊替換Backbone 和Neck 中部分的C3 模塊,對C3 模塊中的殘差結構進行重新設計,構造出具有等級制的殘差結構的多尺度特征提取模塊,以達到提高網絡精度的同時減少參數量的目的。然后將融合后的四個尺寸的特征圖送入解耦檢測頭Decoupled Head 中完成類別分數的預測和邊界框坐標參數的回歸。最后,采用Soft NMS 算法消除冗余的預測候選框,提升網絡在復雜背景下對密集小目標的檢測效果。

圖2 RDS-YOLOv5結構圖Fig.2 Architecture of RDS-YOLOv5
原始的YOLOv5算法對輸入圖像分別進行8倍、16倍和32 倍的下采樣,生成80×80、40×40、20×20 的預測特征圖,以檢測小目標、中目標和大目標。而無人機航拍圖像中小目標實例多,尺度占比很小,經過多次下采樣后,特征圖中的目標信息變得非常稀少,原有的三個檢測層已無法滿足對微小目標的檢測,容易產生漏檢現象。因此,在網絡原有的三個檢測層的基礎上新引入了一個160×160的小目標檢測層,該層的高分率預測特征圖中保留了更多關于小目標的位置信息和更豐富強大的細節特征,可以更好地獲取到小目標的位置信息。同時,因為基于錨框的算法對初始設定的錨框尺度較為敏感,所以還要通過K-means聚類算法為數據集重新聚類生成12 個不同的預設錨框尺度,改進后的預設錨框尺度如表1 所示。這樣能夠有效地減少由于數據集中目標物體過小而錨框過大導致目標被忽略的情況,降低模型檢測的漏檢率和誤檢率。

表1 預設錨框尺度分配表Table 1 Anchor boxes scale assignment
為了提高網絡的多尺度特征提取能力,本文設計了一種具有等級制的殘差結構的多尺度特征提取模塊,稱為C3Res2Block模塊(C3 Res2Net Block)。如圖3所示。

圖3 C3Res2Block結構圖Fig.3 Structure of C3Res2Block
輸入特征圖分別經過兩個具有相同大小的卷積核且輸出通道數減半的卷積層,并通過歸一化和Sigmoid操作分出兩個分支,以達到降維和特征提取的目的。然后一個分支再經過Res2Net模塊后與另一個分支在通道維度上進行拼接。最后再次通過卷積、歸一化和Sigmoid函數處理生成包含多尺度特征信息的輸出特征圖。
使用該模塊對原YOLOv5 的Backbone 處第8 層的C3 模塊以及Neck 處第21 層、24 層、27 層、30 層的C3模塊進行替換。其中,第8 層的Res2Net 有短連接,第21 層、第24 層、第27 層、第30 層的Res2Net 沒有短連接。采用這種方法能夠有效增強網絡的多尺度特征表征能力。
考慮到不同層級的特征圖的細粒度對小目標的貢獻不同,僅在平等級別上融合特征可能會產生冗余信息和沖突,影響上下文信息,干擾網絡對小目標的學習,還會增加參數量,使得推理速度變慢。因此,本文引入了Res2Net 對C3 中的殘差結構進行重新設計。如圖4 所示,Res2Net 在單個殘差塊內使用分組卷積對輸入特征圖的通道進行均等劃分;對劃分出來的小組使用一組小卷積核,使模型輕量化;并采用階梯的方式連接起來,以增加輸出特征圖所能代表的尺度數量。

圖4 Res2Net模塊結構圖Fig.4 Structure of Res2Net module
Res2Net的計算公式如下所示:
假設Res2Net通過一個1×1卷積后特征圖的輸出通道數變為n,然后采用split操作將輸入特征圖沿通道方向均等地劃分成s個子集,用xi表示,其中i={1,2,…,s}。每個特征圖子集xi與特征圖具有一樣的尺度,但是通道數變為n/s。除了第一組卷積x1之外,每個xi后都有對應的3×3卷積處理,用Ki()表示卷積層,并將xi卷積后的輸出用yi表示,其中i={1,2,…,s}。當前的xi與上一次輸出的yi-1相加后的結果作為Ki()的輸入,因此每一個Ki()的輸入都包含了之前{xi,j≤i}的小組特征,同時又采用等級制階梯狀的連接方式,使得每個yi都在yi-1的基礎上提取到更豐富更多尺度的特征。
由公式(1)可知,s值越大就有更大的感受野可以被學習。但是s值越大導致網絡越冗余,根據文獻[8]將s設置為4,使輸出特征圖中包含不同大小及數量的感受野。這種具有等級制的殘差結構,使得各層級之間不再提取單一尺度的特征信息,而是在更細粒度級別上表示多尺度特征,抑制沖突信息的生成,使融合后的特征圖具備更強大更豐富的語義信息和紋理細節,從而提高網絡對小目標的關注度。
YOLOv5 的檢測頭通過卷積改變輸入特征圖的通道數,使其輸出通道數含有目標邊界框回歸參數、置信度分數以及類別分數,將多種信息集成在一個特征圖里。分類任務和定位任務是共享權重強耦合在一起的,這種耦合檢測頭對兩個任務的檢測效果并不能達到最佳。
考慮到分類任務和定位任務之間存在沖突,本文采用解耦檢測頭(decoupled head)為兩個任務分別解耦出單獨的特征通道,有效地避免了不同任務之間的差異所帶來的預測偏差,緩和了兩者的沖突,從而加強模型的定位和分類能力,提高模型的檢測精度。如圖5 所示,解耦檢測頭首先使用1×1 卷積操作對輸入特征圖的通道數進行降維處理,以減少計算參數量。然后分出兩條路線:一條路線使用2 個3×3 卷積,再使用1×1 卷積,將輸出通道數變為網絡需要預測的類別個數,完成分類任務;另一條路線同樣使用2個3×3卷積進行特征提取,然后再將特征圖分為兩個,一個使用1×1卷積計算目標邊界框的中心點坐標、寬高,另一個也使用1×1 卷積計算目標邊界框與真實邊界框的交并比,獲取置信度分數,完成定位任務。

圖5 耦合檢測頭和解耦檢測頭的比較Fig.5 Comparison of coupled head and decoupled head
目標檢測任務的相關算法在檢測過程中,通常會在目標周圍生成大量的候選框,大部分的檢測算法都使用非極大值抑制算法(non-maximum suppression,NMS)來消除冗余的候選框。NMS是一種通過臨近最大值挑選候選框的算法,即對重疊度高的候選框打分,只保留分數最高的候選框。但是得分高的候選框不一定是最合適的框,像無人機航拍圖像這種存在重疊、遮擋且密集情況的數據集來說,該算法在刪除重復候選框的同時也會誤將候選框中不同類別目標得分較低的候選框刪除,即強制刪除一些重疊但有效的候選框,導致召回率降低,出現漏檢、誤檢的現象。因此,使用軟化非極大值抑制算法(soft non-maximum suppression,Soft NMS)[9]優化檢測時對候選框的處理操作,從而提升模型的檢測精度。
Soft NMS算法是在NMS算法改進的基礎上而來,為了解決線性的分數并不連續所帶來的跳變問題,Soft NMS提出了高斯重置函數進行優化,計算公式為:
式(2)中,Si為當前候選框的得分,IoU為交并比,M為權重最高的框,bi是在檢測時生成的候選框,Ni為IoU的閾值,D是最終檢測結果的集合,σ是高斯懲罰系數。相對于NMS算法,Soft NMS算法中的超參數僅在驗證和測試階段使用,在訓練時不會引入其他額外的參數。因此,選用Soft NMS 算法對候選框的置信度進行優化,有效地解決了對密集小目標的漏檢現象,提高了模型的檢測精度。
為驗證RDS-YOLOv5 算法模型的有效性,本文所有的實驗均在公開數據集VisDrone2019[10]上進行實驗。該數據集是由天津大學機器學習與數據挖掘實驗室團隊使用不同型號的無人機在中國14個不同的城市和鄉村、不同的背景場景以及不同的天氣和光照條件下拍攝而來的。數據集中有10類標簽,分別為pedestrian、people、bicycle、motor、car、bus、truck、van、awning-tricycle、tricycle,共260 萬個標注。根據圖6 訓練集長寬分布圖可知,更多的數據點集中在左下角,說明數據集中目標的長寬比例小于原圖的1/10,符合小目標的定義,與本文研究的問題相關。

圖6 訓練集長寬分布圖Fig.6 Training set length and width distribution
本文使用Windows10操作系統,編譯器是Python3.8,PyTorch 1.10,CUDA11.1。所有模型在NVIDIA RTX 2080Ti GPU 上進行訓練、驗證、推理,訓練時的超參數情況如表2所示。
選取均值平均精度(mean average precision,mAP)、參數量(parameters,Params)、GFLOPs、FPS 評價指標對改進算法的檢測性能進行準確的評估。mAP0.5表示所有目標類別在IoU 閾值為0.5 時的平均檢測精度。mAP0.5:0.95代表以步長為0.05,計算IoU 閾值從0.5~0.95的所有10個IoU閾值下的檢測精度的平均值[11]。IoU閾值越高說明對模型的檢測能力要求越嚴苛。如果在高閾值下模型的檢測指標越高,說明模型的檢測性能越好,那么模型的檢測結果更滿足實際應用的需求。Params代表模型的參數量,用來衡量計算內存資源的開銷[11]。GFLOPs為每秒10億次的浮點運算數,用于衡量模型訓練時的計算復雜度[11]。FPS是指模型每秒能檢測多少張圖像,用于衡量模型檢測的實時性[11]。
為了驗證添加小目標檢測層P2、多尺度特征提取模塊C3Res2Block、解耦檢測頭Decoupled Head以及引入Soft NMS算法的有效性,本文選擇YOLOv5s作為基準模型,通過相同實驗條件下的消融實驗評估不同模塊與方法相互組合時對目標檢測性能的影響,消融實驗結果如表3所示。

表3 消融實驗結果Table 3 Ablation experiment results
從表3 消融實驗結果可以看出,本文提出的模塊和方法對模型檢測小目標的精度均得到一定程度的提升。從單獨添加某一模塊而言,B 實驗將小目標檢測層加入特征融合和預測后,mAP0.5提升了5 個百分點,mAP0.5:0.95提升了3.2個百分點。說明新增小目標檢測層在一定程度上可以提升模型檢測的平均精度均值,也說明了使用K-means 聚類算法給四個檢測層重新分配不同尺度的預設錨框,使模型可以很好地適應無人機航拍場景下小目標尺寸變化劇烈等問題。通過C實驗可知,C3Res2Block 模塊在減少模型參數量和浮點運算數的同時對mAP0.5和mAP0.5:0.95也有0.8 和0.3 個百分點的提升。說明該模塊中具有等級制的殘差結構可以增強網絡的多尺度特征提取能力,使用的分組卷積可以減少模型參數,起到輕量化的作用。D實驗引入了解耦檢測頭后,模型的mAP0.5和mAP0.5:0.95分別提高了2和1.3個百分點。說明解耦檢測頭在一定程度上緩解了兩個任務之間的沖突,降低網絡的預測偏差,提高小目標的定位精度。但是由于解耦檢測頭新增了額外的卷積層,導致網絡的參數量和浮點運算數增加。從不同模塊的相互組合方面而言,E、F、G實驗可以看出,將三種模塊組合時,模型的精度得到了明顯的提升,雖然C3Res2Block與其他模塊組合時mAP0.5相較理論上降低了0.2 個百分點,但是組合后mAP0.5:0.95卻有大幅度的提升。最后,通過H實驗可知,雖然采用Soft NMS 算法會導致網絡的推理速度變慢,但是Soft NMS 算法在沒有增加額外訓練參數的情況下,大幅度地提高了模型的檢測精度,其mAP0.5和mAP0.5:0.95分別提高了5.3 個百分點和5.8 個百分點,充分展現了該方法對密集小目標的有效性。
綜上所述,集成四個方面改進后的模型RDSYOLOv5 較基準模型YOLOv5s 而言,其mAP0.5和mAP0.5:0.95分別提高了12.9和10.6個百分點,證明了改進后的模型RDS-YOLOv5能夠有效完成對無人機航拍圖像小目標的檢測任務。
為了驗證RDS-YOLOv5 算法的優越性,除了與當前主流的檢測算法進行對比實驗外,還與YOLO系列算法進行比較。同時,還與VisDrone數據集競賽的獲獎模型TPH-YOLOv5以及針對小目標的QueryDet算法進行對比。主要以mAP和FPS為評價指標測試算法模型的檢測精度和檢測速度。
從表4可以看出,本文改進的算法模型在基本滿足實時檢測的要求下,其檢測精度相較于主流算法模型來說達到了最高,mAP0.5和mAP0.5:0.95分別達到了46.9%和29.2%。相比YOLO 系列在2023 年推出的最新算法YOLOv7和YOLOv8而言,本文提出的RDS-YOLOv5算法無論是mAP0.5還是mAP0.5:0.95均明顯高于二者,但是FPS卻不如二者優秀。對比VisDrone 數據集競賽的獲獎算法TPH-YOLOv5 來說,RDS-YOLOv5 算法在檢測精度和檢測速度上明顯優于該模型,檢測精度提升了5.4 個百分點。雖然本文引進的Soft NMS算法會增加模型的推理時間,但是相較于針對小目標檢測的算法QueryDet來說,在檢測精度方面仍表現出明顯的優勢,檢測精度提高了16.7個百分點。

表4 不同檢測算法的對比實驗Table 4 Comparison experiments of different detection algorithms
綜上可知,RDS-YOLOv5 算法在滿足一定實時性要求的基礎上,顯著提高了對無人機航拍圖像密集小目標的檢測精度,展現出更大的優勢。
為了驗證本文改進的算法模型在實際應用場景下檢測的有效性,在VisDrone測試集中選取在不同場景下拍攝的圖片進行測試。檢測效果圖7(a)是在光線變化場景下,可以發現改進的算法模型受光線變化影響較小。圖7(b)是在復雜背景干擾下的檢測結果圖,可以看出改進的算法仍能檢測到更多的目標。圖7(c)是在拍攝圖像模糊失真情況下的檢測結果,可以發現改進的模型能夠精準地檢測到目標,展現出較好的魯棒性和判別性,可以有效地應對實際場景下的檢測需求。

圖7 不同場景檢測效果Fig.7 Detection effects in different scenarios
為了進一步評估本文算法的檢測性能,還選取了目標密集且遮擋、高空角度拍攝,以及夜間黑暗場景下的圖像分別對基準模型YOLOv5和本文提出的RDS-YOLOv5算法進行對比測試。如圖8所示,左圖為YOLOv5算法的檢測效果,右圖為RDS-YOLOv5算法的檢測效果。

圖8 檢測效果對比Fig.8 Comparison of detection effects
圖8(a)是在真實街道場景下的檢測對比,圖8(b)對高空拍攝下的小目標檢測對比,可以看出改進后的算法在面對小目標密集且遮擋的情況,不僅可以檢測出被樹遮擋的目標,而且在因為高層建筑物遮擋導致光線昏暗場景下也能將騎車的人和摩托車、自行車以及不同類別的車區分開來。除此之外,也能精準地檢測到遠處受遮擋且重疊的小目標。圖8(c)是在夜間黑暗場景下的檢測對比,RDS-YOLOv5 相比YOLOv5,學習到了更充分更細節的小目標特征,夜間低照度并沒有影響模型對檢測目標的判斷和檢測,沒有產生了誤檢和漏檢現象。總的來說,改進后的算法模型對不同環境背景下的無人機航拍圖像小目標具備更強的檢測能力。
針對現有目標檢測算法對無人機航拍場景下的小目標存在誤檢、漏檢、檢測效果差等問題,本文提出了RDS-YOLOv5目標檢測算法以解決上述問題。
首先,針對無人機航拍圖像的特點,在原YOLOv5的三個預測特征圖基礎上新增一個專門針對小目標的高分辨率特征圖,該特征圖包含了更淺層的位置信息與深層的語義信息,使模型更容易檢測到小目標的位置。同時,采用K-means聚類算法重新生成對應的預設錨框尺度,以適應無人機場景下小目標尺寸變化劇烈等問題,降低了模型的誤檢率和漏檢率。其次,針對數據集中小目標實例多、類別多樣等問題,設計了具有等級制的殘差結構的多尺度特征提取模塊C3Res2Block,該模塊不僅可以減少網絡的參數量和計算量,還能提高網絡的多尺度特征提取能力,增加網絡對小目標的關注度。在預測時,采用解耦檢測頭Decoupled Head 將分類任務與回歸任務解耦,緩和兩者之間的沖突,提升模型的分類和定位能力。最后,采用Soft NMS 算法進一步優化對候選框的處理,提高模型對密集遮擋的小目標的檢測精度。通過在VisDrone數據集上的實驗結果表明,改進后的算法與多種主流的目標檢測算法相比取得了最好的檢測精度,并且在大幅度提高檢測精度的同時也滿足了無人機航拍實時性檢測的要求。