潘 瑋,韋 超,錢春雨,楊 哲
蘇州大學計算機科學與技術學院,江蘇 蘇州 215006
在無人機(unmanned aerial vehicle,UAV)平臺上,通過機載相機捕捉的實時畫面進行目標檢測,在緊急救援、邊境巡邏、測繪評估、環境檢測等領域有著廣泛的應用。從無人機視角進行目標檢測,常常擁有復雜的環境背景,一般以俯視角拍攝,目標尺寸通常很小且相對模糊,還會有巨大的角度變化。而且由于無人機的硬件條件限制了模型的規模,導致檢測效果并不理想。
目前,以深度學習為基礎的目標檢測算法可以分為兩類,一類是基于回歸的單階段(one-stage)算法,如Centernet[1]、RetinaNet[2]、SSD 系列[3]、YOLO 系列[4-6]等;另一類是基于區域建議的兩階段(two-stage)算法,如R-CNN[7]、Fast R-CNN、Faster R-CNN[8]等。兩階段算法檢測速度慢,不適用于無人機視角的實時檢測;單階段算法實時性好,但是精度低,尤其對小目標的檢測方面需要優化。
目前,性能較好的YOLO系列模型已廣泛應用于其他領域的檢測任務中,如何使用YOLO進行無人機視角下的目標檢測,既保證目標檢測的精度,又能保持較小的模型規模,是目前的研究難點。陳衛彪等人[9]在YOLOv5 基礎上采用深度可分離多頭網絡結構,降低了模型參數量和體積。陳范凱等人[10]引入上采樣算子CARAFE(content-aware reassembly of features),加強高、低分辨率特征圖之間的融合,使小目標檢測效果有所提升。劉濤等人[11]根據無人機視角圖像分布密集的特點,重新聚類錨框,并融合通道注意力機制構建SEC2f 模塊,實現更精準地檢測。Li 等人[12]在YOLOv8中引入Bi-PAN-FPN 的思想提高不同尺度間的特征融合,并用GhostblockV2 結構代替部分卷積模塊,得到了精度上的大幅提升,但在所有的小目標類別中無法獲得比其他模型更好的結果。Lou等人[13]提出一種新的下采樣方法,并改造YOLOv8 的特征融合網絡,提升對密集小目標的檢測能力,但總體提升效果不是很高。Guo等人[14]提出一種密集連接機制,設計新的網絡結構模塊C3D替換YOLOv8中的C2f以更全面地保留信息,但是提升了計算量。Wang等人[15]針對無人機圖像的小目標特點,在YOLOv8 的Neck 中嵌入小目標檢測結構STC(small target detection structure),充分捕獲全局信息和上下文信息,并引入全局注意力GAM 減少采樣過程中特征信息的丟失,得到較高的性能提升,但是導致了大幅增加的參數量。Wang等人[16]融合了BiFormer注意力機制優化骨干網絡,并提出FFNB(focal FasterNet block)特征處理模塊,增加了兩個新的檢測尺度,實現五個尺度進行檢測,大大降低漏檢率,但對于自行車等很小物體的檢測精度仍然不高。
盡管上述方法在一定程度上提升了無人機目標檢測的性能,但由于無人機視角圖像數據集的復雜性與特殊性、無人機硬件平臺的限制性,難以平衡檢測性能和硬件資源消耗的關系。本文以YOLOv8s 模型為基礎,提出一種融合了多種注意力機制的改進模型,在無人機硬件資源受限的情況下,提升模型的檢測性能。首先,引入由RFAConv 改進后的RFCBAM 模塊替換骨干中的卷積,并改造主干中的C2f 模塊加強特征提取能力;其次,使用大型可分離卷積注意力改造金字塔池化層,并增加一個小目標檢測層,加強特征融合能力;最后,使用inner-IoU 改造后的innner-MPDIoU 損失函數改善檢測邊框回歸效果。
YOLOv8 是ultralytics 公司在2023 年1 月發布的最新YOLO 模型,從小到大有v8n、v8s、v8m、v8l、v8x 五個版本。隨著模型大小的提高,模型精度不斷提升,可以根據任務需要選擇不同深度和寬度的網絡模型進行目標檢測、圖像分類、實例分割、關鍵點檢測任務。目前的YOLOv8模型仍在不斷更新中,本文采用YOLOv8.0.202版本。
基于無人機設備的硬件限制,本文選取體積小、精度高的YOLOv8s模型,它主要由骨干網絡(Backbone)、頸部(Neck)、檢測頭(Head)三部分組成。
Backbone部分主要進行特征提取,采用了Darknet-53框架,引入了全新的C2f(CSPLayer_2Conv)模塊進行殘差學習,借鑒了CSP 和ELAN,采用更多的跳層連接和額外的Split 操作,將梯度變化從頭到尾集成到特征圖中。Conv卷積模塊和C2f模塊串行疊加4次,每疊加一次稱為一個stage。最后采用YOLOv5 等架構采用的SPPF(spatial pyramid pooling fusion)模塊,固定不同尺度特征圖的向量大小。
Neck部分主要進行特征融合,同樣使用C2f模塊替換C3 模塊,采用PAN(path aggregation networks)-FPN(feature pyramid networks)的思想,實現自上向下和自下向上的特征金字塔。同時,YOLOv8去除了YOLOv5、YOLOv6中上采樣前的1×1卷積,直接對Backbone不同階段輸出的特征進行上采樣操作。
Head 部分變化較大,由YOLOv5 的anchor-based 耦合頭變成anchor-free 的解耦頭,不再有objectness 分支,僅有解耦的分類分支和使用DFL(distribution focal loss)的回歸分支。
作為最后的預測部分,Head 部分包含了三個擁有不同尺寸特征圖的檢測頭來對不同大小的目標物體進行檢測輸出。
面對低空無人機數據集中目標所占像素少、分布密集、類別不均衡的問題,原始的YOLOv8s 存在漏檢誤檢、精度低的問題。針對低空無人機數據集特點,做出以下改進:
(1)使用RFAConv改造CBAM得到的RFCBAM模塊替換骨干中的卷積,以及設計全新的模塊C2f_RFCBAM替換骨干中的C2f,增強網絡骨干的特征提取能力。
(2)將LSKA(large separable kernel attention)融合到SPPF(spatial pyramid pooling fusion)中,提升不同特征層間的語義融合。
(3)根據無人機視角圖像的小目標特點,改善頸部結構,增加具有豐富小目標語義信息的特征層,四個檢測頭輔助進行目標檢測任務。
(4)用inner-IoU 損失函數的思想改造MPDIoU,以inner-MPDIoU 作為模型邊框回歸的損失函數,提升對困難小樣本的學習能力。改進后的模型網絡結構如圖1所示。

圖1 改進的YOLOv8s模型結構Fig.1 Structure of improved YOLOv8s network
感受野注意力卷積(receptive-field attention convolutional operation,RFAConv)[17]是在關注空間注意力特征的基礎上,將注意力引向感受野空間特征,解決卷積核參數共享的問題。RFAConv 以參數和計算工作量的小幅增加為代價就可以替代標準卷積,并帶來顯著性能提升。在CBAM[18](concentration-based attention module)注意力機制中,已經從空間和通道兩個維度賦予卷積注意力權重,將CBAM 中的空間注意力機制的注意力引到感受野空間特征中,消除卷積參數共享的問題,得到RFCBAM(receptive-field concentration-based attention module),以類似自注意力機制的方式獲得長程信息依賴,提升卷積性能。
改進后的RFCBAM模塊和原始CBAM模塊的對比如圖2 所示,不再是單獨執行通道和空間注意力,而是兩者同時進行加權,并且為了減少計算開銷,用SE(squeeze-and-excitation)注意力替代CBAM中的通道空間注意力,去除了平均池化的分支,用分組卷積提取感受野空間特征,減少特征重疊。

圖2 CBAM與RFCBAM的結構對比圖Fig.2 Structure comparison diagram of CBAM and RFCBAM
用RFCBAM 改造主干中的C2f 模塊的Bottleneck,可以獲得更好的特征信息,具體結構如圖3所示。RFCBAM改造的C2f模塊主要用RFCBAM_neck替換原模塊中的Bottleneck。在RFCBAM_neck 中,依然采用兩個卷積模塊,同樣先經過一個Conv 層,將第二個Conv 使用RFCBAM 替換。因為RFCBAM 中就進行了殘差信息連接的信息融合,在RFCBAM_neck中不再進行殘差連接。YOLOv8s 模型的Backbone 主要進行特征提取,將原始模型Backbone中的普通卷積Conv和C2f卷積全用RFCBAM、C2f_RFCBAMF 替換,在原提取機制上既增加了感受野注意力改進后的空間特征,又增加了通道注意力,從空間和通道兩個維度增強模型的特征提取能力。

圖3 C2f_RFCBA模塊與子模塊示意圖Fig.3 Structure of C2f_RFCBAM and sub modules
SPPF將輸入串行通過三個5×5大小的最大池化層,每層的輸出都拼接起來,得到多尺度的特征。LSKA[19]中將k×k卷積核平均分為1×k和k×1 的可分離卷積核,以級聯方式處理輸入特征,有效減少大卷積核帶來的參數量大幅增長。
使用LSKA 改進SPPF 如圖4 所示,將原始SPPF 模塊中經過多個池化層拼接后的結果先輸入11×11 的LSKA卷積模塊,通過大型可分離卷積注意力獲得長距離依賴,以更大感受野進行特征提取,然后再通過普通卷積進行特征融合,調整模型Backbone 部分最終輸出的特征向量大小。融合了LSKA注意力機制的SPPF層并沒有增加很多參數,卻在多尺度特征中得到了更加豐富的感受野信息,有助于模型進行更好地特征融合。

圖4 SPPF和SPPF-LSKA模塊示意圖Fig.4 Structure of SPPF and SPPF-LSKA
在無人機目標檢測任務中,成像距離遠、速度快、低空飛行等特點會產生運動模糊,導致目標物體較小,難以捕捉特征,影響網絡的訓練效率。原始的YOLOv8模型有80×80、40×40、20×20 三種保留不同尺度特征層信息的檢測頭,但模型本身經過了高倍數下采樣后,小目標的特征已經不夠明顯,甚至融入背景中。
因此改造neck 增加一個具有豐富小目標語義信息的特征層SODH(small object detection head)。SODH通過與backbone 中160×160 尺度的特征向量進行殘差連接,在當前融合全局信息的較深語義中加上淺層的特征信息,以160×160的大尺度可以更好地保留小目標的相關特征信息,擴大模型分辨率,增強對小目標的感知能力,四個檢測頭共同輔助模型做出最后的檢測任務。
邊框回歸的目的是通過對檢測器輸出的檢測窗口進行微調去接近真實檢測窗口。IoU(intersection over union)自提出后就成為了檢測領域預測框損失評價的主流標準,其公式如式(1)所示:
基于IoU 的邊框回歸損失函數不斷迭代發展,如GIoU、DIoU、CIoU、EIoU、SIoU 等,YOLOv8s 中采用了CIoU,計算公式如式(2)所示:
這些改進的損失函數仍一直是通過加入新損失項來加速收斂,并沒有意識到IoU 自身的限制。inner-IoU[20]提出以輔助邊框來計算IoU,提升泛化能力,具體計算過程如式(3)~(7)所示,用尺度因子比ratio 來控制輔助邊界框的大小。
通過式(3)、(4)可以對檢測框的中心點進行一個變換得到輔助檢測框的角頂點。對模型輸出的預測框和真實框都做相應變換,用bgt、bpred分別表示真實框、預測框的計算結果。
所以,如式(5)-(7)所示,inner-IoU實際上計算的是輔助邊框之間的IoU。ratio∈[0.5,1.5],ratio<1 時,輔助邊框比實際邊框小,回歸的有效范圍小于IoU 損失,但梯度絕對值比IoU 損失所得的梯度大,可以加速高IoU樣本的收斂。ratio>1 時,輔助邊框比實際框大,擴大回歸的有效范圍,有益于低IoU樣本的回歸。
MPDIoU[21]是一種直接最小化預測框和真實框對應左上角、右下角間點距離的改進算法,對于邊界框重疊與不重疊的情況都能很好處理,提高收斂速度。
實驗使用由天津大學機器學習與數據挖掘實驗室所整理公開的VisDrone2019數據集[22],數據集共包含10類航拍檢測目標,包括行人、人、自行車、汽車、面包車、卡車、三輪車、遮陽三輪車、公共汽車、摩托車,訓練集、驗證集、測試集分別由6 471 張、548 張、1 610 張圖片組成。數據集中,像素面積小于16×16 像素的極小目標占比為12.05%,像素面積小于32×32 的小目標占比為44.7%,人和行人的類別中小目標占比更是分別高達77.45%、64.59%。訓練集中共有353 550 個目標,其中被部分遮擋的目標個數為142 873,被嚴重遮擋的目標個數為33 804,近50%的目標都被遮擋[23]。
為了驗證改進有效性,還使用了SHWD(safety helmet(hardhat)wearing detect dataset)數據集和CARPK 數據集。SHWD 數據集有戴頭盔和不戴頭盔的頭兩個類別,由5 944張訓練集和1 637張驗證集組成;CARPK數據集[24]是無人機在40 m 低空拍攝的單類別汽車檢測數據集,包含從不同停車場拍攝的近90 000輛汽車,由989張訓練集和459張測試集組成。
實驗使用的GPU為NVIDIA A100-PCIE-40 GB,使用了6 核CPU,pytorch 框架版本為2.0.0+cu117,python版本為3.9.0,cuda版本為11.7。具體的實驗環境參數設置如表1所示。

表1 訓練參數設置Table 1 Traning parameters setting
實驗中所有模型的輸入圖像尺寸都為640×640,在同樣的實驗環境下使用相同訓練參數都訓練300 epochs,當模型近50輪訓練中并沒有得到性能提升時,將觸發早停機制提前結束訓練。所有的YOLO模型在兩個數據集上均采用表1中的設置進行訓練。
對YOLOv8s 模型進行改進,并對每個改進的結果進行統計分析,結果如表2所示。其中,A、B、C、D分別表示在YOLOv8s模型的基礎上各自加上LSKA、RFCBAM、SODH、inner-MPDIoU改進后的實驗結果,可以看出A、B 在僅增加少量計算量的情況下就能夠將注意力機制融入原始模型有效提升各項指標,mAP@0.5 分別提升0.016、0.018;C 雖然增加了較大計算量,但是模型整體大小下降0.8 MB,性能提升明顯,P、R、mAP@0.5 分別提升了0.028、0.028、0.033,有助于在實際無人機硬件上的部署;D 替換檢測框回歸的損失函數,在不改變模型大小和計算量的前提下,mAP@0.5 也可以有效提升0.005。E、F、G 將不同的改進方法分別加入模型中,都能夠在原改進基礎上再次得到優化,將這四個改進同時加入模型的實驗結果H,雖然P 比G 下降了0.003,但R和mAP@0.5 分別提升了0.13 和0.08,整體上替換損失函數還是提升了模型性能。與原始模型相比,H模型大小僅增加1.7 MB,但P、R、mAP@0.5 分別提升了0.047、0.051、0.063,可以更好實現無人機視角圖像的目標檢測任務。

表2 消融實驗Table 2 Ablation experiments
對于inner-MPDIoU 損失函數中的ratio,取不同值的消融實驗結果如表3所示。

表3 ratio 消融實驗Table 3 Ablation experiments of ratio
當ratio=1 時,inner-MPDIoU 損失函數實質就是MPDIoU 損失函數,實驗結果表明,對于無人機視角的圖像都是小目標,標注框略有偏移,IoU 就較低,當ratio>1 時,輔助邊框比實際框大,有益于低IoU的樣本回歸。所以在ratio>1 時的實驗效果基本優于ratio≤1時。當ratio=1.4 時,實驗整體取得一個最佳的結果,但在ratio>1時,效果也并不是ratio越大越好,在ratio=1.25 和ratio=1.5 時,實驗效果有所波動,ratio的具體取值需要針對實驗數據集進行調整。
3.3.1 改進效果對比實驗
為了更直觀地感受模型的改進效果,將原模型和改進的模型放在同樣的實驗平臺進行測試,效果對比如圖5所示。

圖5 改進效果對比Fig.5 Comparison of improvement effects
可以看出改進模型和原模型收斂的速度差不多,但是改進模型整體性能更優,mAP曲線更為平滑,且觸發了YOLOv8s 的早停機制,近50 輪沒有優化就提前結束了模型訓練,節省計算資源。
為了驗證改進模型的檢測性能,將改進模型與YOLOv3s、YOLOv5s、YOLOv6s等具有代表性的網絡以及其他針對無人機視角的YOLO改進模型進行對比,實驗結果如表4 所示。YOLOv3s 總體上實現了最佳的性能,但是模型參數量和計算量太大,不太適用于無人機的硬件設備,且對小目標的檢測結果APs效果不如改進模型,而無人機視角下的圖像大多為小目標。更輕量的模型YOLOv5s 參數小,但是在檢測性能各項指標上不如其他模型,滿足不了無人機視覺檢測任務對性能的要求。

表4 算法對比實驗Table 4 Algorithm comparative experiments
本文的改進模型在YOLOv8s 的基礎上僅增加1.8 MB的模型大小,mAP、P、R分別提升了16.1%、9.3%、14.9%,特別是對于像素面積小于32×32 的小目標檢測的性能比原模型提升了0.044,成為所有對比模型中的最佳。改進后的模型大小和計算量比YOLOv8m 的一半還少,但除了對大目標的檢測略低于YOLOv8m,其余性能全面超過YOLOv8m,mAP 提升了0.028。即使和參數量是本文改進模型400%的YOLOv8l相比,也提升了P、R 和對小目標的檢測精度APs,在無人機視角以小目標為主的情況下,mAP 總體仍可以提升3.2%。雖然對比之下,改進模型的FPS 有所下降,但仍在60 之上,可以較好適用于無人機的實時場景檢測。目前小型無人機基本都滿足30 FPS 的拍攝,追求更流暢畫質的升級款可以實現50 FPS 甚至60 FPS,但高幀數的畫質會大大占用存儲內存,非商業需要的拍攝基本采用50幀以下。針對無人機平臺硬件空間小、算力低的情況,本文的改進模型不僅模型占用硬件空間小,滿足實時畫面的幀率,而且提升了檢測性能,可以更好實現檢測任務。
3.3.2 通用性對比實驗
盡管本文實驗圍繞YOLOv8s,其模型大小和性能更適配于無人機的硬件條件,但為了驗證模型改進的有效性,不僅適用于YOLOv8s,對其他規模的YOLOv8模型做實驗驗證如表5 所示。實驗證明,在YOLOv8n、YOLOv8s、YOLOv8m 上應用本文改進方法,各方面指標都能有效提升。但考慮到無人機的實際硬件情況,仍應以YOLOv8s為宜。

表5 YOLO驗證實驗Table 5 Validation experiments on YOLO
在CARPK數據集上,用改進方法分別在YOLOv8n、YOLOv8s、YOLOv8m 上進行實驗,驗證改進對無人機視角下目標檢測的普適性,實驗結果如表6所示。

表6 在CARPK數據集上驗證實驗Table 6 Validation experiments on CARPK
實驗證明,改進方法不僅僅是針對VisDrone 數據集,在其他無人機視角下的數據集上,改進算法也同樣有效。將改進方法應用于YOLOv8n和YOLOv8s上,都能夠全面實現模型性能提升。但值得注意的是,由于CARPK數據集是小規模的單類別數據集,較為簡單,在太復雜的網絡結構上如YOLOv8m 上已經出現了性能退化,YOLOv8m的P、mAP@0.5:0.95已經低于YOLOv8s,改進的方法用于YOLOv8m 使網絡更復雜,使得R、mAP@0.5出現下降,但是還是提升了P、mAP@0.5:0.95。
在SHWD 數據集上,采用改進方法在YOLOv8n、YOLOv8s、YOLOv8m 進行實驗,驗證改進對小目標的普適性,實驗結果如表7所示。

表7 在SHWD數據集上驗證實驗Table 7 Validation experiments on SHWD
實驗證明,本文對模型的改進方法不僅僅是針對無人機視覺的特定種類目標檢測任務,對于小目標數據集都能夠實現有效提升。在SHWD 數據集上,盡管原始模型的精度已經很高,本文改進方法仍然能在較高水平的基礎上將n、s、m三種規格的原始模型的P、R、mAP@0.5、mAP@0.5:0.95 進行提升,如改進后YOLOv8n 分別提升了1.1%、7%、2.7%、2.2%,使得YOLOv8n的性能接近YOLOv8s。
圖6、圖7分別展示了YOLOv8s原始模型和本文的改進模型在同一實驗條件和參數下訓練后,對無人機視角下密集目標和稀疏目標的檢測效果。左邊是原始模型的檢測效果,右邊是改進后模型的效果。

圖6 密集目標檢測效果對比Fig.6 Comparison of dense object detection results

圖7 稀疏目標檢測效果對比Fig.7 Comparison of sparse object detection results
從圖6 可以看出,在密集小目標場景中,改進模型可以更準確地檢測出更多的小目標,如場景1草原中遠處的行人、場景2密集小目標中的電動車、場景3夜晚道路上密集的電動車和路邊昏暗光線下的行人與院子里的汽車,有效減少了漏檢情況。
同樣地,在稀疏小目標場景中,改進模型能有效減少漏檢、誤檢情況。如圖7 所示,場景1 中,原始模型錯誤地將船識別為行人和卡車,將人識別為摩托。場景2中,原始模型只能識別出motor,改進模型不僅能識別出行駛中的motor 還識別出了motor 上的人,正確地識別出更多的人和遠方的車。場景3中,改進模型有效避免了原模型將路燈誤檢為行人的情況,準確檢測出所有的行人。本文的改進模型有效地改善了YOLOv8s對無人機視角下小目標的檢測效果。
本文提出一種高效的YOLOv8s改進模型對無人機視角的圖像進行目標檢測任務。通過引入RFCBAM改進backbone 中的Conv 和C2f,增強網絡的特征提取能力;在SPPF 中增加LSKA 來提升不同特征層間的語義融合;增加具有豐富小目標語義信息的特征層來改善頸部結構更好地處理小目標;用inner-IoU 改造后的inner-MPDIoU作為模型邊框回歸的損失函數,提升對困難小樣本的學習能力。在YOLOv8s基礎上改進的模型大小和計算量小于YOLOv8m 的一半,性能基本全面超過YOLOv8m,較小的模型較高的精度可以滿足無人機設備的硬件條件。接下來將繼續研究模型性能的提升,并對模型進行剪枝輕量化,優化對無人機視角密集小目標的檢測能力。