黃俊霖,張鵬超(通信作者),張家俊
1.陜西理工大學機械工程學院,陜西漢中,723000
2.陜西省工業自動化重點實驗室,陜西漢中,723000
朱鹮作為瀕臨滅絕的鳥類之一,了解和掌握野生朱鹮的最新種群數量,是評估和保護朱鹮種群的重要依據[1]。由于朱鹮棲息地廣泛,生活環境復雜,傳統的人工巡察方法效率較低。隨著計算機技術的發展,利用移動設備和計算機視覺技術可以長期監測朱鹮的棲息區域,因此,基于計算機視覺的方法可以有效替代人工巡察,對朱鹮的保護具有重要的意義。
然而,傳統目標檢測提取的特征多為顏色、紋理、結構等低層圖像特征,沒有充足表示位置和類別的語義信息,精度一直處于較低水平;深度學習目標檢測算法[2]能直接從預處理后的圖像數據中自動提取特征,不再需要人工參與特征提取,且能夠學習到圖像的高級語義特征,分為兩階段檢測算法和一階段檢測算法。典型的兩階段檢測算法如R-CNN[3]、Fast-R-CNN[4]、Faster-RCNN[5],在執行時需要分兩步完成,先獲得候選區域,然后進行區域內目標分類;典型的一階段檢測算法如YOLO(You Only Look Once)系列[6-10]和SSD[11](Single Shot Multibox Detector),可以直接預測出目標的類別和位置信息,檢測速度較快、實時性好,但是相比于兩階段檢測算法精度較低,處理實際任務中出現的遮擋、漏檢等問題仍需進一步研究。本文的主要內容如下。
(1)從漢中朱鹮國家級自然保護區拍攝部分圖像資料,同時在互聯網中獲取部分,并使用LabelImg軟件對圖像中朱鹮的位置進行標注,構建一個數據量相對充足的數據集。
(2)提出了一種基于YOLOv7[12]的小目標檢測算法,旨在提高YOLOv7目標檢測網絡的準確性。首先,改進算法重新設計了預測錨框與特征融合框架,調整了頸部特征提取層的檢測尺度;接著,將協調注意力機制(Coordinate Attention,CA)融入主干網絡;最后,引入深度可分離卷積來輕量化整體網絡。
(3)設計基于自建數據集的橫向對比實驗和縱向消融實驗,以及基于COCO數據集的對比實驗,證明改進算法模型對實際檢測朱鹮的有效性。
針對實際檢測中出現的朱鹮目標漏檢、誤檢問題,基于YOLOv7網絡框架設計高性能朱鹮檢測算法結構,網絡結構如圖1所示,其中“ELAN-D”模塊和“EW-DS”模塊為輕量化模塊,未提及模塊為YOLOv7原模塊[12]。本文的主要工作有以下三個方面。

圖1 YOLOv7-DSCA 網絡結構圖
自建野生朱鹮數據集中存在部分小目標,因此,對網絡結構的優化改進需要對小目標檢測進行考慮,以提高整個網絡的檢測能力。拓寬頸部特征聚合結構,用于生成160×160的特征圖,增大網絡的感受野,同時采用K-means聚類[8]方法生成針對小目標的錨框,具體操作如圖1紅色虛線框所示。對于所增加的檢測頭,仍采用YOLOv7網絡的設計,在推理時執行重參數化以將多個網絡轉換為單頭網絡,等效于多個網絡參與決策,因此,有更快的推理速度。之所以不采用直連結構,是因為在研究YOLOv7的論文中,實驗證明直連的重參數化模塊會破壞殘差和拼接結構,對不同的特征圖產生梯度多樣性[13]。
改進后的YOLOv7網絡結構雖然有足夠的深度,卻導致網絡模型的參數量及計算量較大,不適合移動設備的搭載使用,為此設計了輕量化模塊“ELAN-D”模塊及“EW-DS”模塊。采用深度可分離卷積(DWSConv)替換ELAN模塊與ELAN-E模塊中的部分3×3卷積。普通卷積對輸入特征圖做卷積計算時計算量(Floating point operations,FLOPs)記為F1;使用深度可分離卷積代替普通卷積后的計算量,記為F2。公式如下:
標準卷積計算量:
深度可分離卷積計算量:
兩者之商:
其中,DK代表卷積核大小,DF代表輸入特征圖大小,M代表輸入特征圖通道數,N代表輸出特征圖通道數,從式(3)可以看出,所替換標準卷積的卷積核為1時,在通道數較多的情況下對網絡參數的影響較小,所替換的普通卷積的卷積核為3,替換后的理論計算量縮減為原來的1/9~1/8。
相比于目前使用較多的SE[14]、CBAM[15]注意力機制,協調注意力機制彌補了SE注意力機制只考慮內部通道信息而忽略了位置信息的缺點;同時彌補了CBAM注意力機制無法捕獲長程依賴信息的缺點。為了闡明CA注意力機制的核心概念,定義以下公式:
沿特征圖X方向全局平均池化:
沿特征圖Y方向全局平均池化:
沿空間維度拼接后進行卷積激活操作:
生成X方向的注意力向量:
生成Y方向的注意力向量:
權重計算:
其中,z為全局平均池化后的輸出,h、w為像素點對應的橫縱坐標,xc表示對應坐標像素點的值;中括號表示沿空間維度的拼接操作,F1表示利用1×1卷積的操作,表示為非線性激活操作,為輸出特征圖;對沿X、Y兩個維度拆分得到、,、表示對得到的兩個特征圖進行卷積操作,表示進行sigmoid激活操作,生成0~1之間的數作為注意力機制權重,表示為、;表示最終生成的特征,表示上層輸出特征,表示沿X方向的注意力向量,表示沿Y方向的注意力向量,需要注意的是,這里的乘積不是矩陣向量相乘,而是元素一一對應相乘。如圖2所示,將CA注意力機制融入ELAN模塊。其中“DSCBS”模塊由深度可分離卷積經過批標準化操作后采用SiLU激活函數,卷積核為“3*3”,步長為2;“CBR”模塊代表使用ReLU激活函數的卷積塊。

圖2 “E-DSCA”模塊示意圖
由于野生朱鹮屬于瀕危野生動物,并且活動范圍較廣,棲息環境復雜,數據獲取困難,所以數據集的制作采用少量實地拍攝結合網絡渠道獲取的數據。本次實驗共獲取原始圖像2000張,包括3215個對象。采用8∶2的比例劃分數據集,最終選擇1600張作為訓練集、400張作為測試集,采用LabelImg標注工具對每張圖片進行標注。
實驗硬件環境見表1,在此基礎上搭建軟件環境Ubuntu18.04LTS、Python、Pytorch、CUDA等。

表1 硬件環境
訓練優化器采用隨機梯度下降優化器(Stochastic Gradient Descent,SGD),可以避免模型陷入局部最優,導致最后精度過低等問題。將訓練網絡的初始學習率設置為0.01,學習率動量因子設置為0.937,權重衰減系數設置為0.0005,批次大小設置為8,訓練次數為300輪。
評價目標檢測性能的指標為測試樣本的平均精度均值(Mean Average Precision,mAP)、模型的參數量或模型大小和網絡計算量。以Recall為橫軸、Precision為縱軸繪制P-R曲線,并對其積分求出曲線下的面積即為AP(Average-Precision,AP),判斷目標檢測結果是否正確的評價指標為重疊度(Intersection over Union,IOU),當IOU閾值取0.5時,得到的平均精度記為PmAP@0.5,當IOU閾值在0.5到0.95之間等間隔共取10個值時,得到10個平均精度值再取均值得到的評價指標,記為PmAP@0.5:0.95。
2.4.1 橫向對比實驗
在自建朱鹮數據集上的實驗結果見表2,從中可以看出,與YOLOv7算法相比,改進后的網絡模型在檢測精度方面得到提升,且參數量較少;相比大型框架YOLOv7-X,所提算法的檢測精度仍有提高,并且模型參數量降低了60.14%,計算量降低了62.67%,證明引入深度可分離卷積對整體網絡架構的輕量化有明顯作用;相比YOLOv5l,PmAP@0.5上升超過5個百分點;與改進后的YOLOv5s算法[17]相比,對朱鹮目標的檢測精度有明顯的提升。為了進一步驗證本文算法的魯棒性與泛化性,將本文所提出的網絡模型在公共數據集MS COCO數據集[16]上進行了實驗。網絡模型訓練參數設置與前文保持一致,其中缺省項表示未在公開數據中找到對應數據。相比YOLOv7網絡模型,本文模型在檢測精度方面有明顯提升;與輕量型網絡算法EfficientDet-D1[18]相比,在模型參數數量與計算量方面雖有差距,但檢測精度比其高出15個百分點;對比同時期的兩階段檢測算法Mask R-CNN[21],改進算法作為弱勢的單階段檢測算法在檢測精度方面仍有優勢,具體見表3。

表2 朱鹮數據集上的橫向對比實驗

表3 MS COCO 數據集上的橫向對比實驗
在改進網絡模型后,因擴張Neck和引入CA,網絡模型參數量與計算量均略微提升,替換深度可分離卷積后保留了CA帶來的特征提取能力,同時降低了模型參數量與計算量,解決了特征提取不充分導致的部分朱鹮圖片或視頻檢測目標丟失的問題。如圖3所示為在常規環境、目標較小、遮擋等情況下的檢測結果。

圖3 改進前后效果對比圖
2.4.2 縱向對比實驗
在自建朱鹮數據集上設計消融實驗,首先對YOLOv7框架的頸部提取層擴張;然后引入E-DSCA模塊進行訓練測試;最后引入EW-DS模塊進行測試實驗。結果見表4,改進后的網絡模型相比YOLOv7的PmAP@0.5提升2.3%,PmAP@0.5:0.95提升3.5%,參數量降低24.3%,計算量降低32.4%。僅擴張頸部提取層后模型參數僅上升0.8M,計算量上升14.3GFLOP,同時PmAP@0.5提升了1.5%,PmAP@0.5:0.95提升了7.7%,證明特征金塔結構的擴張帶來的尺度增加能解決朱鹮數據集中小目標特征捕獲丟失的問題;同樣,引入E-DSCA模塊帶來的精度提升,證明了CA注意力機制改善了正負樣本不平衡的問題;使用深度可分離卷積組成的輕量化模塊后,網絡模型的模型參數數量及計算量均有明顯減少,分別降低了37.1%以及51.9%,平均檢測精度僅降低約2個百分點;然后,分別對所提模塊兩兩組合,在同時添加擴張Neck和CA注意力機制時,PmAP@0.5有一定的提升,反映出這兩模塊并無較大沖突,同時,使用該算法能促進網絡性能提升;同時添加深度可分離卷積和擴張Neck,模型參數量有所下降,但PmAP@0.5也有一定程度的降低;同時添加深度可分離卷積和CA注意力機制,PmAP@0.5:0.95下降明顯,部分原因是兩者組合特征提取過于細化,過分提取關鍵部位,導致過度推理,出現重復檢測造成精度降低。

表4 消融實驗結果
本文提出了一種基于YOLOv7的朱鹮檢測算法,對YOLOv7目標檢測網絡進行了檢測能力的提升并壓縮了網絡模型。首先,在主干網絡中添加協調注意力模塊,使算法更準確地捕捉朱鹮特征信息;接著,擴張特征金字塔結構,增大模型對數據中較小特征的感受野;最后,替換部分卷積塊,降低模型參數量。同時,設計了消融實驗與對比實驗證明改進方法的有效性。對解決實際朱鹮檢測時,遇到目標較小、遮擋等情況下導致的檢測目標丟失問題有一定參考性。