齊向明,柴 蕊,高一萌
遼寧工程技術大學 軟件學院,遼寧 葫蘆島 125105
目標檢測是計算機視覺領域的一個重要分支,廣泛應用于工業制造、自動駕駛和醫療影像等領域。其中小目標因特征難區分、分辨率低、背景復雜和上下文信息有限等特點,難以準確識別。小目標檢測主要包括通用小目標、航空遙感小目標、微小人物和小目標實例分割四個方向[1]。
隨著深度學習的發展,卷積神經網絡(convolutional neural networks,CNN)被廣泛應用,基于深度學習的目標檢測技術將目標檢測推向發展新高潮。以SSD(single shot multibox detector)[2]和YOLO(you only look once)[3-7]系列為代表的單階段目標檢測算法,以端到端的檢測方式直接輸出預測結果,因檢測速率優異,成為工業應用的熱門框架。
近年來單階段小目標檢測算法研究中,2021 年,王建軍等人[8]在YOLOv3骨干網絡中擴張淺層特征對應卷積層深度,以提取大量小目標紋理信息,但計算量額外增加較多;陳欣等人[9]通過改進多尺度特征融合方式和并聯通道注意力機制,降低了遙感小目標漏檢率,但數據目標單一,泛化能力不足;Zhu等人[10]結合Transformer檢測頭和CBAM 注意力機制,增加對密集小目標區域的關注,但參數量增幅較大;蔣镕圻等人[11]把scSE 注意力機制嵌入YOLOv4骨干和頸部網絡,以提高對小目標特征的關注度,但實時性被削弱;GEGe等人[12]提出解耦檢測頭和無錨框的YOLOX框架,雖定位多尺度小目標準確,但泛化性不足;2022年,Yang等人[13]提出基于級聯查詢機制的QueryDet,通過粗略定位引導高分辨率下小目標特征預測回歸,顯著提升了推理速度,但檢測精度提升不明顯;趙鵬飛等人[14]應用基于分組殘差的Darknet-53為SSD 主干網絡,擴張小目標特征感受野,但缺乏復雜場景處理能力;Zhang等人[15]在YOLOv5中加入BAM增強對淺層特征圖內小目標信息的關注,在小尺寸人物檢測上表現優異,但參數規模較大;肖進勝等人[16]利用多尺度空洞卷積和特征提純機制重構特征金字塔,雖提升了小目標檢測性能,但網絡復雜度和額外參數開銷方面還有待改進。;2023年,李子豪等人[17]通過減少YOLOv5骨干網絡下采樣倍率,并采用自適應協同注意力機制,提高檢測精度和降低參數規模,但計算量大幅增加;宋懷波等人[18]將ECA 注意力機制嵌入YOLOv7 的重參數化路徑中,提升復雜場景下蘋果幼果檢測精度,但檢測速率降低;賈天豪等人[19]在SSD中引入殘差學習特征映射塊和雙重注意力塊,提高了多尺度小目標檢測性能,但推理速度下降較多;Zhao等人[20]在YOLOv7上集成小目標檢測頭和注意力機制,增強了對海面小目標的檢測性能,但未能合理控制計算量增加;王曉紅等人[21]采用具有全局建模優勢的CoT 模塊和增加最大池化層MaxPool挖掘小目標更多紋理信息,雖將參數增幅控制在合理范圍內,但基線模型過大,可遷移性較弱。綜上所述,單階段小目標檢測算法在以下方面仍存在提升空間:(1)提高各種場景下小目標特征信息捕獲量。(2)減少因提升小目標檢測精度而增加的計算量和參數量。(3)在保持高檢測精度下提升推理速度。(4)提高小目標檢測算法泛化能力。
因小目標背景信息復雜且定位精度要求高,本文選取網絡模型具備一定深度的YOLOv7作為基線,改進小目標檢測算法。主要工作包括以下四點:(1)在骨干網絡中,通過裁剪CBS層、引入SimAM注意力機制和縮小池化核重構SPPCSPC,減少計算量和參數量,關注密集小目標樣本區域,提取更多小目標特征。(2)頸部網絡中,用SPD Conv 替換SConv 改進下采樣,減少光線昏暗場景下小目標特征丟失。(3)添加四倍下采樣分支,將高分辨率特征圖與原來三個尺度的特征圖進行特征融合,提升小目標特征捕獲量,并增加對應尺度的檢測頭,提高小目標檢出率和準確率。(4)損失函數由邊框擬合CIoU 替換為動態非單調聚焦Wise IoU,提升網絡模型收斂速度。
YOLOv7 集合了RepVGG 重參數化思想[22]、跨網格搜索標簽分配策略和分割梯度路徑層聚合架構等先進技術,在相同計算資源下,檢測精度和推理速度,較以前版本都有明顯提高,其網絡結構分別由骨干網絡(Backbone)、頸部網絡(Neck)和頭部網絡(Head)三個部分組成,如圖1所示。工作原理分別介紹如下。

圖1 YOLOv7模型結構圖Fig.1 YOLOv7 model structure diagram
骨干網絡由CBS、ELAN-1、MP和SPPCSPC四種模塊構成。三個堆疊的CBS模塊提取初始特征;層聚合架構ELAN-1 分割梯度流提取首層、底層和中間層特征;下采樣MP提取高級語義信息;空間金字塔池化SPPCSPC擴大不同感受野融合多尺度特征。但SPPCSPC結構內存在卷積冗余,并且擴大的感受野與小目標尺度不匹配,在密集目標相互遮擋時易發生誤檢。
頸部網絡沿用YOLOv5 系列的路徑聚合特征金字塔PAFPN架構,其結合了層聚合架構ELAN-2和最鄰近插值Nearest 進行多尺度特征融合。先由FPN[23]自頂向下傳遞深層特征圖語義信息,再由PANet[24]自底向上傳遞低層特征圖紋理和細節信息,最終PAFPN 架構輸出三個不同尺度特征圖。但進行特征融合的三個尺度特征圖對應的下采樣倍率都較高,提取到的小目標以及微小目標特征信息較少。
頭部網絡主要由重參數化卷積RepConv 和檢測頭IDetect 組成,RepConv 把訓練過程中得到的三個特征圖,在推理過程經矩陣融合和權重相加,形成單特征圖;IDetect 結合隱式知識在特征圖上預測大、中、小型目標。由于三個尺度的檢測頭對應檢測的目標尺度有限,小目標以及微小目標易漏檢。
SimAM 為無參數注意力機制,不包含任何子網絡結構,可以在不增加原始網絡參數的條件下,為特征圖推斷三維注意力權重。其依據神經學說空域抑制原理[25],通過能量函數衡量目標像素點(t)和其他像素點(xi)的線性可分性,當輸入特征圖為X∈RC×H×W時,像素點線性變換如下:
wt和bt為線性變換權重和偏置值,帶入能量函數為:
et為能量函數值,y為某一像素點的標簽值,yt和y0為目標像素點(t)和其他像素點(xi)的標簽值,i為空間維度上的索引,M為某一通道上像素點個數:
基于幀循環超分轉換的SPD Conv,可減少信息丟失,其包括一個從空間到深度的SPD層和一個非跨步卷積層[26]。圖2 以2 倍為例,展示了跨步卷積(SConv)和SPD Conv下采樣過程。SConv將輸入特征圖經步長為2的3×3卷積核壓縮特征圖為原圖寬度和高度的1/2,直接過濾掉了一部分特征信息,見圖2(a)。SPD Conv將輸入特征圖映射切片,得到4 個經2 倍下采樣的子圖,4個子圖包含著原圖的全局空間信息,子圖沿通道維度拼接,由非跨步卷積層調整通道維度,SPD Conv將全局空間特征信息保留在了通道維度,見圖2(b)。

圖2 SConv和SPD Conv的下采樣過程Fig.2 Downsampling process of SConv and SPD Conv
基于動態非單調聚焦機制的Wise IoU[27],可以緩解錨框(anchor box)標注質量對網絡模型整體收斂速度和定位精度的影響,公式如下:
LWIoU為損失函數值,exp 為指數函數,δ和α為超參數,β為anchor box的離群度因子,x和y為預測框中心點坐標,xgt和ygt為真實框中心點坐標,Wg和Hg為預測框和真實框最小包圍盒的寬度和高度,*為計算分離,LIoU為預測框和真實框重疊面積的交并比值。
改進模型結構如圖3所示,其中虛線框部分為改進點,SPPCSPC-S 為重構后的空間金字塔池化模塊,用于提取相互遮擋下更多小目標特征;SM 為改進后的下采樣模塊,可減少光線昏暗場景下小目標特征丟失;紅色虛線框部分為添加的四倍下采樣分支,能夠增加復雜背景下小目標特征捕獲量。

圖3 改進模型結構圖Fig.3 Improved model structure diagram
為增強對密集小目標樣本區域的關注,進一步提高相互遮擋下密集小目標定位精度。本文重構了SPPCSPC結構,重構方法是先裁剪CBS,再引入SimAM,然后縮小池化核,重構前SPPCSPC 和重構后SPPCSPC-S 的結構見圖4(a)和圖4(b)。重構過程如下:

圖4 SPPCSPC和SPPCSPC-S網絡結構Fig.4 SPPCSPC and SPPCSPC-S network structures
(1)裁剪CBS。裁剪掉2個位于池化層之前的CBS層,以減少卷積層對小目標邊緣信息的過濾,只應用一層CBS平滑特征,縮減計算量和參數規模。
(2)引入SimAM。在池化層之前嵌入無參數注意力機制SimAM,劃分目標像素點和其他像素點,并推斷出特征圖的三維注意力權重,以增強對密集小目標區域的關注,減少有效特征損耗,同時抑制混淆特征表達。
(3)縮小池化核。將三個池化核的設定由(5,9,13)改為(3,5,9),使小尺寸池化核擴張的感受野與小目標尺度匹配,有利于提取到更多小目標特征,以進一步提升小目標檢測精度。
通過裁剪CBS層促進網絡加速收斂,再嵌入SimAM注意力機制聚焦密集小目標區域,縮小池化核對應小目標感受野,提取更多更準確的小目標特征,以降低密集小目標漏檢率。為驗證重構SPPCSPC對小目標檢測精度的影響,通過熱力圖可視化方法對比了重構前后模型對密集小目標區域的敏感度情況。從圖5中可以看出,應用SPPCSPC-S后,模型對密集小目標的關注度提高,感知區域更為準確。

圖5 熱力圖可視化Fig.5 Visualization of heat maps
在光線昏暗和圖像模糊的情況下,頸部網絡特征圖內冗余像素點和小目標特征像素點難以準確區分,因此,多次應用SConv 過濾冗余信息的同時,也會將大量小目標關鍵特征一同過濾掉。為減少小目標特征丟失,本文把頸部網絡下采樣MP 結構左分支中的SConv 替換為SPD Conv,應用其SPD 層的切分子圖原理,將小目標全局空間信息映射到通道維度,以達到保留光線昏暗和模糊場景下更多小目標特征信息的目的,在SPD層后添加卷積操作,可調整通道維度與右分支一致。改進后結構為SM見圖6。

圖6 SM網絡結構Fig.6 SM network structure
小目標一個像素點映射到原圖中感受野會小于32個像素點,微小目標的像素點會更少,因而深層次預測特征層極大可能會捕獲不到微小目標。為增加復雜背景下小目標特征捕獲量,進一步提高小目標檢測性能,本文在頸部添加了一個四倍下采樣分支,見圖3紅色虛線框所示。在頸部網絡中,輸入分辨率為160×160 的4倍下采樣特征圖C2,與8 倍、16 倍、32 倍下采樣的特征圖C3、C4、C5,由PAFPN 架構建立橫向連接,實現多尺度特征融合。4 倍下采樣特征圖C2 包含著大量小目標以及微小目標紋理和細節信息,其在依次傳遞并融合的過程中,能給深層特征圖提供更充足的小目標信息,進而提高復雜背景下小目標特征捕獲量。另外,一并增加與4倍下采樣對應尺度的檢測頭,以提高對微小目標的檢測能力。
通過將C2 與C3、C4、C5 融合,獲取到豐富的小目標紋理和細節特征,再結合新增的小目標檢測頭,能夠高效提升復雜背景下小目標以及微小目標的檢出率和準確率。
邊框損失函數大多圍繞預測框和真實框的幾何元素定義計算方法,以不斷優化擬合效果,代表方法有GIoU[28]、CIoU[29]和EIoU[30]等。但數據集中錨框標注質量通常會存在差異性,低質量數據標注在高效擬合損失函數的加持下,反而會干擾模型收斂,影響有效特征學習,為提高模型的泛化能力并加速收斂,本文將網絡模型的邊框損失函數由CIoU替換為Wise IoU。
Wise IoU 基于動態非單調聚焦機制邊框回歸。其動態機制為,依照錨框的離群度因子值動態分配梯度增益,其非單調性為,梯度增益伴隨損失值的增加呈非單調變化,即減小低質量錨框梯度增益的同時也減小高質量錨框梯度增益。離群度計算公式為:
為驗證算法有效性,在公開數據集VisDrone2021上做消融實驗和對比實驗,該數據集包含8 629張圖像,分辨率大小為2 000×1 500 像素左右,約54 萬個標注信息。實驗數據集依照9∶1 比例劃分,訓練集為7 766 張圖像,測試集為863張圖像。
為驗證算法泛化性,在公開數據集VOC2007+2012上做泛化實驗,該數據集包含常見生活場景中的20 個目標類別,主要有飛機、自行車、鳥和船等,訓練集有16 551張圖像,測試集有4 952張圖像。
(1)硬件環境
訓練環境:RTX3090顯卡,24 GB顯存,Intel?Xeon?Platinum 8358P @2.60 GHz CPU,90 GB內存。
測試環境:RTX3070顯卡,8 GB顯存,AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz CPU,16 GB內存。
(2)軟件環境
Windows 10,CUDA 11.3,Pytorch 1.11.0,Python 3.8.0。
(3)參數設置
輸入圖像分辨率為640×640,總迭代次數為300,迭代批量為8,優化器為SGD,動量為0.937,學習率為0.01,權值衰減系數為0.000 5,采用余弦退火學習算法對學習率進行更新。
3.3.1 重置先驗框
應用K-means 算法在VisDrone2021 數據集上生成12種先驗框,尺寸大小如表1所示。

表1 先驗框尺寸Table 1 Prior box size
聚類過程可視化如圖7所示。先驗框的精確選取,可減小其與物體之間的匹配誤差,從而減少誤檢和漏檢。

圖7 K-means聚類可視化Fig.7 K-means clustering visualization
3.3.2 數據增強
采用Mosaic-4和Mix up方法進行數據增強。Mosaic-4每次處理4 張圖片,先依據隨機中心點位置裁剪、縮放原始圖片,再隨機排列拼接;Mix up每次處理2張圖片,先分別將其翻轉、縮放和變化色域,再按照一定比例混合。上述兩種方法可以豐富數據集,增加小目標樣本數量。
本文選取了目標檢測任務中常見的六種評價指標:Precision、Recall、mAP、FPS、Params、GFLOPs 衡量改進算法的有效性,各指標介紹如下。
(1)Precision 為精準率,指預測的正樣本中實際為正樣本的概率,計算公式為:
TP為預測成正類的正樣本數,FP為預測成正類的負樣本數。
(2)Recall 為召回率,指預測的所有樣本中實際為正樣本的概率,計算公式為:
FN為預測成負類的正樣本數。
(3)mAP為平均精度均值,指所有類別檢測準確率的均值,計算公式為:
c為檢測類別數,AP 為某一類別P-R曲線下的面積,AP計算公式為:
(4)FPS為幀率,指圖像刷新幀數,計算公式為:
FrameNum為檢測圖片總數,ElapsedTime為耗費的總時間。
(5)Params為網絡模型的參數量,單位為MB。
(6)GFLOPs為網絡模型的浮點運算次數。
3.5.1 消融實驗
(1)數據分析
共做N1~N6 六組消融實驗,分別驗證各改進點的有效性,“√”表示某一組實驗應用的改進點,各項評價指標見表2,實驗結果分析如下:

表2 消融實驗Table 2 Ablation experiment
①第一組為原算法的實驗結果,mAP0.5值為45.73%,參數量為37.24 MB,計算量為105.26,FPS為42,作為評價指標基線。
②第二組是把SPPCSPC 重構為SPPCSPC-S 后,計算量和參數量都小幅減少,推理速度提升為45,mAP0.5值提高1.05個百分點。
③第三組是添加四倍下采樣分支,雖計算量從105.26增加到119.69,推理速度也有所降低,但是mAP0.5值提高2.58個百分點,大幅提升了小目標檢測性能。
④第四組是把MP 改進為SM 后,計算量和參數量均有小幅減少,檢測精度也有小幅上升,mAP0.5值提高0.61個百分點。
⑤第五組是把邊框損失函數CIoU 替換為WiseIoU,在保證沒有增加參數量和計算量的條件下,加快網絡模型收斂,同時mAP0.5值提升0.87個百分點。
⑥第六組是集合所有改進點后,雖推理速度小幅下降,也額外增加了一部分計算量,但參數量從37.24 MB減少為34.74 MB,mAP0.5值提高5.09個百分點,表明本文構建的算法能夠顯著提升小目標檢測的平均精度均值。
(2)可視化分析
圖8 中1~3 列分別是光線昏暗、密集小目標和微小目標三種復雜樣本,1~3 行分別是原始圖片、N1 組算法檢測后圖片、N6 組算法檢測后圖片。使用不同顏色的標識框區分數據集內目標類別,標識框上方標注了目標置信度分數。從視覺效果可以看出,本文算法檢測出的小目標人物和車輛的數量明顯增多,并且小目標置信度分數明顯提高,表明漏檢率降低,準確率提高。

圖8 檢測效果對比Fig.8 Comparison of detection effect
3.5.2 對比實驗
YOLO系列的代表算法有YOLOv5L、TPH-YOLOv5、YOLOXL、YOLOv6M、YOLOv8L、ACAM-YOLO 和YOLOv7。在公開數據集VisDrone2021上,將本文算法與上述算法做對比實驗,結果見表3。

表3 算法對比實驗Table 3 Algorithm comparison experiment
YOLOv5L 算法比本文算法mAP0.5值低11.25 個百分點,參數量高11.41 MB,表明該算法對小目標檢測效果一般,且參數開銷較大;TPH-YOLOv5 算法的mAP0.5值接近YOLOv6M,比原YOLOv5L 算法高3.89 個百分點,但比本文算法低7.36個百分點;YOLOXL算法的計算量僅次于YOLOv8 算法,比本文算法增加了38.9,mAP0.5值比本文算法低7.72個百分點,表明該算法在此數據集上檢測效果不佳;YOLOv6M算法的計算量是七組算法中最少的,參數量和本文算法接近,但mAP0.5值低7.17個百分點;YOLOv8算法是目前YOLO系列的最先進算法,mAP0.5值比原YOLOv7算法高出1.16個百分點,但比本文算法低3.93個百分點;ACAM-YOLO算法是基于YOLOv5L 改進的,參數量約為本文算法1/2,mAP0.5值在七組算法中僅次于本文算法達到49.52%,但計算量高出10%,比YOLOv5L算法高出21%。
綜合上述分析,本文算法在計算量小幅增加和參數量縮減的條件下,實現了檢測平均精度均值的顯著提升,因而對復雜場景下的小目標具有更強的辨識能力。
3.5.3 泛化實驗
在公開數據集VOC2007+2012 上,將本文算法與YOLOv7、YOLOv8和CS-SSD算法做泛化實驗,驗證本文算法的通用性,結果見表4。

表4 泛化實驗Table 4 Generalization experiment 單位:%
本文算法與YOLOv7相比,mAP0.5值從81.12%提升為84.47%,精準率提升5.07 個百分點,召回率提升1.46個百分點;與YOLOv8 相比,mAP0.5值提升1.82 個百分點,精準率提升3.49 個百分點,召回率提升1.02 個百分點;與CS-SSD相比,mAP0.5值提升0.87個百分點。
綜合上述分析,本文構建的小目標檢測算法不僅能夠提高相互遮擋、背景復雜和特征點少場景下的小目標檢測效果,而且也能提高常規場景下大中尺度目標檢測效果,表明具有通用性。
針對小目標圖像檢測中存在的難點,本文基于YOLOv7提出重構SPPCSPC 與優化下采樣的小目標檢測算法。通過重構SPPCSPC 模塊加強小目標特征提取,替換頸部下采樣結構中的SConv 為SPD Conv 減少深層特征圖關鍵小目標特征丟失,添加四倍下采樣分支提高小目標檢出率和準確率,把邊框損失函數由CIoU 替換為Wise IoU 提升收斂速度和定位精度。實驗結果表明,本文算法對小目標的檢測效果優于參考文獻中最優算法,有效提升了小目標檢測精度,且通用性良好。為工業應用提供了一定的參考價值,在輕量化方面仍有進步空間,需繼續研究探索。