戚玲瓏,高建瓴
(貴州大學大數據與信息工程學院,貴陽 550025)
目標檢測作為計算機視覺領域中如目標追蹤、目標分割等其他更高層次視覺任務的基礎,其主要任務包括識別圖片目標類別和定位目標所在位置兩個部分[1]。傳統目標檢測算法主要依賴于手工構建特征,存在速度慢、精度低等問題,是早期目標檢測常用的算法。隨著卷積神經網絡的提出,基于深度學習的目標檢測算法因其結構簡單、檢測效果好等特點,成為目標檢測方向的研究主流。
基于深度學習的目標檢測模型[2]主要分為兩類:兩階段(two-stage)模型和單階段(one-stage)模型。其中:前者通過卷積神經網絡得到一系列候選區域,進而完成分類和定位任務;后者利用回歸思想將輸入圖片送入卷積神經網絡中,經檢測后直接輸出得到結果。
與其他計算機視覺任務相比,小目標檢測(Small Object Detection,SOD)的歷史相對較 短。2014 年,通用數據集MSCOCO 將分辨率小于32×32像素的目標定義為小目標。2016 年,文獻[3]提出了基于深度學習的小目標檢測網絡,通過引入小目標檢測數據集以及數據集的評估指標,從相對大小出發將同類別目標中目標框面積占總面積0.05%~0.58%的部分定義為小目標,為探索小目標檢測奠定了一定的基礎。文獻[4]提出一種基于上采樣的技術,在小目標檢測中取得了更好的效果。2018 年,文獻[5]將反卷積RCNN 應用于遙感小目標檢測。隨后,在Faster RCNN[6]、SSD[7]以及YOLO 系列網絡模型的基礎上,研究人員提出了很多小目標檢測網絡模型。
ReDet[8]、Oriented Bounding Boxes[9]以及Box Boundary-Aware Vectors[10]通過旋轉預測框和旋轉檢測器提升了小目標檢測效果,但針對的只是遙感場景;TPH-YOLOv5[11]通過增加目標檢測層,使用transformer 預測頭集成CBAM 注意力模塊[12],有效提升了網絡對小目標的檢測性能,但在不密集的情況下容易造成漏檢;YOLO-Z[13]雖然通過將PAFPN替換為Bi-FPN,擴大Neck 層等一系列操作,使中淺層特征得到很好融合,但并不適用于目標尺寸變化大的場景。
為解決上述問題,本文提出一種改進的YOLOv7 目標檢測模型。通過結合特征分離合并的思想,對MPConv 模塊進行改進,以減少特征提取過程中的有效特征缺失及漏檢情況。針對小目標檢測中的誤檢,引入注意力機制,并結合卷積注意力機制和自注意力機制實現特征優化。最終通過改進損失函數,將兩錨框中心點連線與水平方向形成的最小角納入考慮,以提高網絡對于目標尺寸的魯棒性。
YOLOv7[14]是YOLO 系列中的基本模型,在5~160 幀/s 范圍內,其速度和精度都超過了多數已知的目標檢測器,在GPU V100 已知的30 幀/s 以上的實時目標檢測器中,YOLOv7 的準確率最高。根據代碼運行環境的不同(邊緣GPU、普通GPU 和云GPU),設置了3種基本模型,分別稱為YOLOv7-tiny、YOLOv7 和YOLOv7-W6。相比于YOLO 系列其他網絡模型,YOLOv7 的檢測思路與YOLOv4[15]、YOLOv5[16]相似,其網絡架構如圖1 所示。

圖1 YOLOv7 網絡架構Fig.1 YOLOv7 network architecture
YOLOv7 網絡模型主要包含了輸入(Input)、骨干網絡(Backbone)、頸部(Neck)、頭部(Head)等4 部分。首先,圖片經過輸入部分數據增強等一系列操作進行預處理后,被送入主干網,主干網部分對處理后的圖片提取特征;隨后,提取到的特征經過Neck模塊特征融合處理得到大、中、小3 種尺寸的特征;最終,融合后的特征被送入檢測頭,經過檢測之后輸出得到結果。
YOLOv7 網絡模型的主干網部分主要由卷積、E-ELAN(Extended-ELAN)模塊、MPConv 模塊以及SPPCSPC 模塊構成。E-ELAN 模塊在原始ELAN 的基礎上,在改變計算塊的同時保持原ELAN 的過渡層結構,并利用expand、shuffle、merge cardinality 來實現在不破壞原有梯度路徑的情況下增強網絡學習的能力。SPPCSPC 模塊在一串卷積中加入并行的多次MaxPool 操作,避免了由于圖像處理操作所造成的圖像失真等問題,同時解決了卷積神經網絡提取到圖片重復特征的難題。在MPConv 模塊中,MaxPool 操作將當前特征層的感受野進行擴張再與正常卷積處理后的特征信息進行融合,提高了網絡的泛化性。
在Neck模塊,YOLOv7 與YOLOv5 網絡相同,也采用了傳統的PAFPN 結構。在檢測頭部分,本文的基線YOLOv7 選用了表示大、中、小3 種目標尺寸的IDetect 檢測頭,RepConv 模塊在訓練和推理時其結構具有一定的區別。
注意力機制[17]是機器學習中的一種數據處理方法,廣泛應用在自然語言處理、圖像處理及語音識別等各種不同類型的任務中。
由于注意力機制的引入,可使網絡集中的目標區域獲得更多細節性的信息。對于目標檢測任務而言,網絡中注意力模塊的添加,可使網絡模型的表征能力得到提升[17],有效減少無效目標的干擾,從而提升對關注目標的檢測效果,達到提高網絡模型整體檢測效果的目的。機器學習中的注意力機制主要分為卷積注意力機制和自注意力機制兩類。
本文對YOLOv7 的主干網絡進行多次實驗,發現在特征提取的過程中,許多對于小目標檢測及其重要的中、淺層紋理和輪廓信息都沒有被充分提取,對小目標檢測產生了一定程度的影響,容易造成目標漏檢。因此,本文從增強網絡對小目標的注意力出發,兼顧輸入與輸入之間的關系及輸入與輸出之間的關系,減少漏檢情況的發生。
在目標檢測網絡中,目標定位依賴于一個邊界框回歸模塊,而IoU 損失函數的作用就是使預測框靠近正確目標從而提升目標框的定位效果[18]。2019年,針對在兩框不相交情況下IoU 很難衡量回歸框好壞的問題,GIoU[19]通過引入能夠包圍預測框和真實框的最小框(類似于圖像處理中的閉包區域)來獲取預測框、真實框在閉包區域中的比重。次年,考慮到當預測框和真實框處于水平位置時GIoU 就會退化為IoU 的情況,DIoU[21]在IoU 的基礎上,將預測框和真實框中心點之間的距離納入考慮,從而提高了損失函數的收斂速度。之后,為了得到更加精準的預測框,CIoU[22]對DIoU 進行改進,將長寬比引入計算,提升了回歸框的檢測效果。
由于在遇到預測框和真實框長寬比相同的情況時,CIoU 損失函數長寬比的懲罰項恒為0,收斂過程波動相對較大。因此,本文對損失函數進行更細致的表示,以達到損失函數平穩收斂的目的,使目標框具有更好的定位精度。
在YOLOv7 網絡中,MPConv 模塊上的分支在最大池化層后連接一個k=1、s=1 的卷積;下分支在k=1、s=1 的卷積后連接一個k=3、s=2 的卷積。其中,最大池化層和1×1 卷積進行級聯,通過選取局部最大值對圖像的邊緣和紋理信息進行學習,而另一分支通過兩個卷積級聯,提取得到了圖像的更多細節信息。兩分支合并為網絡帶來了更好的信息融合效果。如圖2 所示,當選擇卷積核為3、步長為2 的卷積時,卷積過程會造成一些細粒度的丟失,從而使得網絡產生低效率的特征表示學習。

圖2 stride 為2 時的卷積過程Fig.2 Convolution process with stride of two
為避免這類由于步長為2 的卷積對小目標網絡所造成的特征缺失,需進行分離合并操作,操作原理如圖3 所示。對于一張含有S×S像素的圖片,本文將其分離成4 個S/2×S/2 的子圖,然后將4 個子圖按照通道進行拼接。經過分離合并后的特征再通過1×1卷積就可以得到S/2×S/2×1 大小的特征。

圖3 分離合并操作示意圖Fig.3 Schematic diagram of separation and merging operation
如圖4 所示,改進后MPConv 模塊的右分支與改進前相同,達到了特征圖尺寸減半的目的,但操作過程中不會造成特征的缺失。

圖4 MPConv 框架Fig.4 MPConv framework
為進一步探究改進后MPConv 模塊放在網絡哪個位置能夠最大程度地提升檢測效果,本文針對以下3 種情況進行了實驗,實驗結果如表1 所示。其中,mAP@0.5 和mAP@0.5∶0.95 分別表示IoU=0.5、0.5≤IoU≤0.95 時各個類別的平均AP 值。

表1 不同情況下的實驗結果對比Table 1 Comparison of experimental results under different conditions
1)只將Backbone 結構中的MPConv 模塊替換為改進后的MPConv 模塊。
2)只將Neck 結構中的MPConv 模塊替換為改進后的MPConv 模塊。
3)將網絡中所有MPConv 模塊替換為改進后的MPConv 模塊。
從表1 的實驗結果可以看出,只將Neck 結構中的MPConv 模塊替換為改進后的MPConv 模塊時,網絡表現最佳,相比于原網絡,提取到了更多有效的特征信息。
在注意力機制中,卷積注意力模塊多注重輸入與輸出的關系,而自注意力模塊則多注重輸入與輸入之間的關系。受CoAtNet[23]網絡的啟發,本文結合自注意力和卷積注意力兩者的優點,引入ACmix注意力模塊[24]以增強網絡對于小目標的注意力。如圖5 所示,ACmix 注意力模塊由卷積注意力和自注意力兩個模塊并行組合而成。

圖5 ACmix 原理圖Fig.5 Principle diagram of the ACmix
ACmix 原理如下:將H×W×C的特征通過3 個1×1×C卷積進行投影后分成N片,得到3×N個尺寸為(H×W×C/N)的子特征。
對于上分支(內核為k的卷積路徑),網絡像傳統卷積注意力一樣從局部感受野收集信息,子特征通過3N×K2N的全連接層后,對生成的特征進行移位和聚合以及卷積處理,得到H×W×C的特征;對于下分支(自注意路徑),網絡像自注意力一樣在考慮全局的同時并聚焦重點,3N個子特征對應的3 個H×W×C/N尺寸的特征圖分別作為查詢、鍵和值,并遵循傳統的多頭自注意力模型,通過移位、聚合、卷積處理得到H×W×C的特征。最終,對兩條路徑的輸出進行Concat 操作,強度由兩個可學習的標量控制,如式(1)所示:

其中:Fout表示路徑的最終輸出;Fatt表示自注意力分支的輸出;Fconv表示卷積注意力分支的輸出;參數α和β的值均為1。
兩分支的輸出結果經過合并后,兼顧了全局特征和局部特征,從而提升了網絡對于小目標的檢測效果。
YOLOv7 網絡模型中損失函數如式(2)所示:

其中:Lloc,Loss表示定位損失;Lconf,Loss表示置信度損失;Lclass,Loss表示分類 損失。
置信度損失和分類損失均采用BCEWithLogits Loss 函數進行計算,而坐標損失采用CIoU 進行計算,計算公式如下:

其中:b表示預測框;bgt表示真實框;c表示能夠同時包含預測框和真實框的最小閉包區域的對角線距離;α為平衡參數;v用來衡量長寬比是否一致。從式(4)可以看出,當預測框與真實框的長寬比一樣大時,v取0,此時長寬比的懲罰項并沒有起到作用,CIoU 損失函數得不到穩定表達。
因此,使用SIoU[25]損失函數替換原網絡中的CIoU,將角度成本納入考慮,使用角度成本對距離重新進行描述,減少損失函數的總自由度,SIoU 損失函數所用到的參數如圖6 所示。

圖6 SIoU 損失函數的計算Fig.6 Calculation of SIoU loss function
2.3.1 角度成本
通過角度是否大于45°,判斷使用最小化β還是α,角度成本的計算如式(6)所示:

2.3.2 距離成本
距離成本代表預測框與真實框兩框的中心點距離。結合上述定義的角度成本,SIoU 對距離成本重新定義如式(10)所示:

當α趨向于0 時,距離成本的貢獻大幅降低。相反,當α越接近π/4 時,距離成本的貢獻越大。隨著角度的增大,γ被賦予時間優先的距離值。
2.3.3 形狀成本
形狀成本Ω的定義如式(14)所示:

此處θ的值定義了形狀損失的關注程度,本文設置為1,它將優化形狀的長寬比,從而限制形狀的自由移動。
綜上,SIoU 損失函數的最終定義如式(17)所示:

由于角度成本的增加,損失函數在得到更充分表達的同時,減少了懲罰項為0 出現的概率,使得損失函數收斂更加平穩,提高了回歸精度,從而降低了預測誤差。
網絡實驗環境為Ubuntu18.04、Python2.7.17 和PyTorch1.12.1,相關硬件配置和模型參數如表2 所示,其中訓練數據量為300。

表2 實驗相關硬件配置和模型參數Table 2 Experiment related hardware configuration and model parameters
實驗采用歐卡智舶發布的無人船視角下內河漂浮垃圾數據集,該數據集是全球第一個真實內河場景下無人船視角的漂浮垃圾檢測數據集。在FloW-Img 子數據集中,超過1/2 的目標都是小目標(Area<32×32 像素),可以支持針對小目標檢測的研究。數據集采集于不同的光照和波浪條件下,在不同方向和視角上對目標進行觀測。數據集共包括2 000 張圖片。為滿足實驗需求,本文以6∶2∶2 比例劃分為訓練集、驗證集和測試集。數據集示例如圖7所示。

圖7 本文數據集示例Fig.7 Sample data sets for this paper
通過對比同樣實驗環境下改進前后的網絡模型對幾種類型圖像的檢測差異來評估漏檢、誤檢情況,主要選取準確率-召回率(P-R)曲線和平均準確率(Average Precision,AP)、平均精度均值(mean Average Precision,mAP)等3 個指標,計算公式如下:

其中:TTP表示正確預測;FFP表示錯誤預測,包括把不是瓶子的目標檢測為瓶子和漏檢兩種情況;FFN表示誤把瓶子目標檢測為其他類別的情況;P為準確率;R為召回率。在P-R曲線中,P-R曲線與坐標軸圍成的面積等于AP 值大小。對所有類別的AP 值取平均值就可以得到mAP,一般地,使用mAP 來對整個目標檢測網絡模型的檢測性能進行評價。
在同一網絡模型同種實驗環境下,對YOLOv7損失函數的收斂性進行驗證。兩種Loss 函數隨著迭代次數的變化曲線如圖8 所示。其中,兩條曲線分別表示邊框損失使用CIoU 和SIoU 時平均邊界框損失的情況。

圖8 損失函數迭代對比Fig.8 Loss function iteration comparison
從圖8 可以看出,隨著迭代次數的增加,SIoU 和CIoU 最終都處于收斂狀態。但是SIoU 相對于CIoU損失值更小,穩定性也得到了一定的提升。所以,使用SIoU 作為本文數據集的邊界框損失函數,對網絡模型的性能提升有著更重要的意義。
改進前后網絡模型對于水面漂浮小目標檢測得出的P-R曲線對比如圖9 所示。P-R曲線與坐標軸圍成的面積大小描述了水瓶的AP 值。可以明顯看出,改進后的YOLOv7 網絡模型在小目標數據集的檢測中取得了較好的性能,檢測目標的AP 值明顯高于改進前網絡模型。

圖9 改進前后網絡模型P-R 曲線對比Fig.9 Comparison of network models P-R curves before and after improvement
針對實際情況中目標密集圖像、小目標圖像、超小目標圖像等3 種類型的圖片,基礎YOLOv7 網絡模型與改進YOLOv7 網絡模型的檢測效果如圖10~圖12 所示。圖10 對于目標密集圖片,原圖共有11 個目標,原網絡模型檢測到9 個目標,漏檢2 個,改進后網絡模型全檢測出;圖11 針對小目標圖片,改進前后網絡模型均檢測出2 個目標,但改進后網絡模型的預測框置信度明顯大于原網絡模型;對于圖12 超小目標(目標框大小為0.05×0.04)的圖片,原網絡模型漏檢,而改進后的網絡模型仍能檢測出目標。

圖10 目標密集圖片檢測結果對比Fig.10 Comparison of detection results of target dense pictures

圖11 小目標圖片檢測結果對比Fig.11 Comparison of detection results of small target pictures

圖12 超小目標圖片檢測結果對比Fig.12 Comparison of detection results of ultra-small target pictures
在保證配置環境及初始訓練參數一致的情況下,本文將改進的YOLOv7 網絡模型與其他網絡模型進行實驗來驗證改進網絡模型的有效性,結果如表3 所示。可以看出,改進后的YOLOv7 網絡模型在輸入相同尺寸圖片的情況下,mAP 值超過了其他經典網絡模型,更適合小目標檢測場景。

表3 不同網絡模型實驗結果對比Table 3 Comparison of experimental results of different network models
針對小目標檢測困難的問題,本文提出一種改進的YOLOv7 檢測模型。通過將分離合并思想與卷積相結合,對MPConv 模塊進行改進,提取圖片中的細節信息。同時,將傳統卷積注意力機制與自注意力機制進行融合,并加入ACmix 注意力模塊,在此基礎上,對IoU 損失函數進行優化,引入SIoU 損失函數增強網絡的定位能力,從而提高網絡檢測精度,減少檢測過程中小目標誤檢、漏檢情況。實驗結果表明,改進后的YOLOv7 網絡模型檢測效果優于原網絡模型和傳統經典目標檢測網絡模型。下一步通過對數據集進行擴增,增加數據集中的檢測類別,擴大檢測范圍,以提高模型在實際應用中的檢測性能。