李安達,吳瑞明,李旭東
浙江科技學院 浙江省食品物流裝備技術研究重點實驗室,杭州 310023
目標檢測是深度學習在計算機視覺中應用的重要領域,其主要任務是在圖像中識別目標類別和目標位置。在目標檢測領域中,微小目標檢測雖然檢測難度高,但無論是在生活還是工業上的應用都極為廣泛。在目標檢測的算法中,傳統目標檢測算法依賴于人工構建特征并且存在普適性低、速度慢、精度低等問題。而基于深度學習算法研發的目標檢測算法結構簡單,檢測效果好,相比于傳統目標檢測算法更能適應人們日益提高的檢測要求,成為目前目標檢測算法領域的主流。基于深度學習研發的目標檢測算法大致兩種[1],一種是以RCNN系列為代表的兩階段(two-stage)算法,還有一種是以SSD和YOLO系列為代表的單階段(one-stage)[2]檢測算法。
兩階段算法是通過卷積神經網絡得到可能包含物體的多個候選區域,對這些候選區域進行處理來完成分類任務和定位任務。這種兩階段算法的優點是準確度高,缺點是計算量較大,檢測速度慢,而單階段算法[3]相比兩階段算法少了提取候選區域的步驟,直接對每個特征圖進行回歸預測,因此檢測速度較快,但準確度比不上兩階段算法。
本次研究任務是利用單階段算法改善小目標檢測(small object detection,SOD),相比于其他目標檢測任務,小目標檢測的歷史較短,發展還不夠完善。小目標的定義目前有兩種,一種是基于相對尺度即同一類別所有目標實例的邊界框面積與圖像面積之比的中位數在0.08%到0.58%之間[4],另一種基于絕對尺度來對小目標定義,在2014 年,目標檢測領域的通用數據集——MS COCO數據集,將小目標定義為分辨率小于32像素×32像素的目標[5]。
近期,因為CNN 的成功,目標檢測的任務取得了非常大的進步,以往的研究員針對檢測目標在以往FasterRCNN、SSD 的系列模型基礎上提出了一系列改進模型[6],但就目前而言,小目標檢測任務上,現有的網絡模型依然有較大需要改進的空間。
以YOLO 系列模型為例,針對小目標檢測,陳富榮等人[7]提出將Coordinate attention 嵌入到YOLOv5 網絡中,在其發布的數據中該方法僅可以有效提高模型的召回率,無法有效提高模型整體性能。韓俊等人[8]提出將S-ECA和AFF結構應用到YOLOv5s的頸部網絡結構中提高對小目標的檢測性能,但相比于模型計算參數的增加和計算復雜性的提高檢測性能提升較小。張徐等人[9]提出對Swin Transformer[10]結構利用余弦注意力機制和后正則化方法進行優化總結出了cosSTR模塊并引入到YOLOv7 模型中,雖然有效改善多尺度小目標檢測問題,但在相同數據集訓練下參數量遠超YOLOv7 模型,并且該結構不適用于特征不明顯的小目標檢測。Zhu等人[11]提出在YOLOv5 的基礎上用Transformer prediction heads(TPH)替代原有的預測頭,并利用convolutional block attention module(CBAM)結合骨干網提取目標特征,該結構可以有效提高對密集小目標的處理卻無法適用于較為稀疏的小目標場景。
針對上述問題,本次研究以YOLOv7 為改進基礎,在骨干網上提出將Focal NeXt block[12]與ELAN模塊進行融合,參考ConvNext[13]的框架結構,充分利用ELAN模塊的最短和最長的梯度路徑結構來加強Focal NeXt block 圖像特征的交互能力,使網絡能夠學習到更多的特征的同時結合更多的上下文信息,提高網絡模型針對各種場景小目標檢測的泛化能力,且優化后的結構多基于傳統卷積,可以在提高模型整體性能的同時盡量減少參數量的增加。
在骨干網基礎上,為了進一步提高模型的性能簡化模型結構,在頭部網絡,本次研究還引入了具有大卷積核的RepLKDeXt結構,該結構是在RepLK Block[14]結構的基礎上添加一條Cat操作的分支卷積結構,可以有效豐富RepLK Block 的輸出特征結合更多的淺層網絡信息。本文利用RepLKDeXt 結構取代了SPPCSPC 結構,相比于SPPCSPC 多種不同大小卷積的池化,多層的小卷積堆疊的結構組成,RepLKDeXt 以更少的傳統卷積組成方式有效地簡化了模型的整體結構,除此之外,經實驗驗證RepLKDeXt 取代SPPSCPC 結構,還可以加強模型的整體性能,結合骨干網大卷積提高模型性能的方法,本次研究還利用RepLKDeXt 結構對頭部網絡的ELAN-H 模塊進行改進優化,最終利用淺層網絡融合操作和大卷積多通道結構來加強模型的輸出特征,提高模型針對特征不明顯的小目標的檢測性能。
在損失函數上,CIOU 損失函數存在預測框和真實框長寬比相同懲罰項為0 的情況,這時CIOU 函數無法穩定表達,導致網絡模型的魯棒性下降。為了完善模型的魯棒性,本次研究引入了SIOU[15]損失函數,相比于CIOU 損失函數,SIOU 損失函數將角度成本納入考量,重新定義了懲罰項的指標,可以有效提高網絡模型的魯棒性。
本次研究基于YOLOv7模型,YOLOv7是YOLO系列的基本模型,該模型主要包含了輸入端(Input)、骨干網(Backbone)、頭部(Head)等三個部分,其整體算法的結構如圖1所示。

圖1 YOLOv7模型Fig.1 YOLOv7 model
YOLOv7模型是2022年7月由Wang等人[16]發出的目標檢測網絡,據文獻發布的數據,YOLOv7 在檢測性能上已經超越了YOLOv5、YOLOx、PPYOLOE、YOLOR等目標檢測模型,在5 FPS到160 FPS范圍內的檢測速度和準確度超越以往檢測網絡,在GPU V100上30 FPS或更高的實時檢測器上具有55.8%AP的準確度。YOLOv7網絡模型相比以往的YOLO 系列網絡模型在主干網絡上的不同主要在于采用了ELAN 模塊這種高效的網絡結構,該結構通過控制最短和最長的梯度路徑,使網絡能夠學習到更多的特征,并且具有更強的魯棒性。
除此之外,YOLOv7的作者在原始ELAN的基礎上還設計了E-ELAN(Extended-ELAN)結構,該結構在改變計算塊的同時保持原ELAN 的過渡層結構,并利用expand、shuffle、merge cardinality 等方法保持梯度路徑不變的情況下提高網絡的學習能力。在模型的頭部網絡結構上,YOLOv7 用SPPCSPC 模塊適應不同分辨率的圖像獲得不同的感受野在提高模型精度的同時減少計算量并用傳統的PANet結構加強特征融合提高輸出數據質量,最后將RepVGG[17]的模型重參數化思想引入到網絡架構中形成RepConv模塊,該模塊對應兩種可以等價替換的結構分別應用于訓練和推理,可以提高模型精度,加快推理速度。
在小目標檢測中,小目標的分辨率較低,可視化信息少,難以提取到具有鑒別力的特征,且極易被環境因素干擾,而且相對于大目標,小目標容易出現聚集現象[18],當小目標聚集出現時,聚集區域相鄰的小目標無法區分,針對小目標獲得的特征信息較少,所以對這些較少的信息更需要挖掘不同類別目標彼此間微小的差異,而Focal NeXt block可以提高細粒度本地的交互能力,可以使得網絡模型產生更強的細粒度特征,放大彼此間微小的差異,提高模型的分類能力。小目標檢測的難點還在于小目標在圖像中覆蓋的面積小,尤其在以小卷積層堆疊獲得更大感受野的YOLOv7模型中,包含的上下文信息更少,語義信息表達能力較弱,而相比于小卷積核,在相同層數下,大卷積核雖然會帶來更多的參數但可以獲得更多的有效感受野增加輸出的上下文信息,該原理如圖2所示。

圖2 不同大小卷積核的輸出Fig.2 Output of convolutional kernels of different sizes
圖2中的Fin為輸入的特征圖,a、b分別表示小卷積核、大卷積核,a′和b′分別為輸入特征經小卷積核和大卷積核卷積后產生的輸出特征,由圖1可以看出大卷積核b相比于小卷積核a在輸入特征圖上覆蓋范圍更大,因此卷積后輸出的特征b′相比于a′感受野更大,上下文信息包含更多,而卷積是一個不斷丟失特征的過程,在Ding等人發布的數據中表明,當小卷積核通過堆疊達到與大卷積核相同感受野的同時會丟失更多的小目標特征。
在本文backbone 網絡采用的Focal NeXt block 模塊相比于YOLOv7 的CBS 模塊傳統的3×3 卷積核采用更大的7×7卷積核來豐富模型輸出的上下文信息,并進一步用深度卷積增強模型的語義表達能力,最終提高模型對小目標的檢測精度,Focal NeXt block的結構如圖3所示。

圖3 ConvNeXt和Focal NeXt blockFig.3 ConvNeXt and Focal NeXt block
圖3 中的d7×7 是指卷積核為7×7 的深度卷積(depthwise conv),LN 為層歸一化(layer norm),LN 與BatchNorm 不同的是它是對單個batch 進行歸一化,相比于BatchNorm的批量歸一化,它的優點是可以加速網絡的收斂并減少過擬合,GELU(Gaussian error linear units)是一種基于高斯誤差函數的激活函數,相較于ReLU等激活函數,GELU更加平滑,有助于提高訓練過程的收斂速度和性能。由圖2 可知,Focal NeXt block的結構主要是在ConvNeXt 結構的基礎上添加了兩個Shortcut 連接[19]和一個Depth-wise[20]卷積結構。這里的Shortcut是將淺層網絡和深層網絡的圖片特征進行張量求和,在保持輸出維度不變的狀態下增加了輸出特征的信息量。該模塊通過兩個Shortcut連接不僅可以減輕梯度消失問題,能夠使得模型更快收斂,而且Shortcut連接將淺層網絡與深度網絡的特征相結合,增強模型細粒度的本地交互放大了目標特征間的細微差異,除此之外,Shortcut連接增加了模型支路使得模型的有效感受野擴大,增加了目標特征的獲取。
圖3中7×7的Depth-wise卷積結構相比于傳統的3×3卷積可以利用大卷積獲得更大的感受野,包含更多的上下文信息外,還可以通過對各個輸入通道進行單獨的卷積運算來降低計算參數[21]。Depth-wise卷積的工作原理如圖4所示。

圖4 Depth-wise卷積Fig.4 Depth-wise convolution
圖4中的Cin和Cout分別代表輸入特征圖和輸出特征圖的通道數,Dmul為深度乘數,M和N代表特征的空間維度,P為輸入特征,W代表卷積層的可訓練內核(7×7),O為輸出特征。在深度卷積中,將輸入特征P的Cin個通道分別進行Dmul個點積,將每個輸入通道的M×N維特征轉化為Dmul多維特征,擴大了模型的有效感受野,獲得更多的目標特征。并且,Focal NeXt block將Shortcut連接和Depth-wise卷積相結合,有效避免了Depth-wise卷積加深網絡導致的模型性能退化,相比ConvNeXt[22]結構進一步加強了粗粒度的全局交互和細粒度的本地交互,更有利于模型對小目標特征的獲得和檢測。
本次研究將Focal NeXt block 網絡結構和ELAN結構進行融合,經過推理和實驗得到以下兩個結構ELAN-F(a)、ELAN-F(b),如圖5和圖6所示。

圖5 ELAN-F(a)Fig.5 ELAN-F(a)

圖6 ELAN-F(b)Fig.6 ELAN-F(b)
圖5 中的ELAN-F(a)在ELAN 的長短梯度路徑內以Focal NeXt block 取代CBS 模塊,在將Focal NeXt block放入ELAN模塊時,本次研究參考了Zhuang Liu等人提出的ConvNeXt 結構,該結構采用了MobileNetV2中的Inverted Bottleneck[23]的兩頭窄中間寬的主體框架,并在已發布的實驗數據里驗證了該框架的優越性。
在本次研究中,經過實驗推理,發現將通道數較多的Focal NeXt block 放在結構中間,兩端通道數減小,在不影響淺層網絡進行Cat操作的同時盡量保持主干類似Inverted Bottleneck兩頭窄中間寬的框架結構可以有效提高模型檢測性能,然后將經過Focal NeXt block完善后的深層特征和淺層特征通過Concat結合起來,進一步加強小目標的特征信息。
圖6中的ELAN-F(b)模塊,是在ELAN-F(a)的基礎上對Cat后的特征再次以Focal NeXt block結構進行加強,該結構主要用于Backbone 和Head 部分的過渡最后將信息更加豐富的數據輸出到頭部網絡,使得模型最后輸出的信息更加完善,降低模型對小目標識別的難度。
圖7 中是為了驗證ELAN-F(a)的優越性在本次研究中進行實驗的模型結構。

圖7 ELAN的改進實驗結構Fig.7 Improved experimental structure of ELAN
本次研究對圖7 中的六個結構以Flow-Img 數據集進行消融實驗,消融實驗對比結果如表1所示。

表1 ELAN與改進結構對比Table 1 Comparison between ELAN and improved structure
由表1中的數據可以看出,在相同條件下,結構(2)至結構(5)的檢測性能相近,且結構(2)的mAP@0.5:0.95的數值最高檢測性能最好,但是該結構帶來的參數量最大,相比YOLOv7增大了計算成本,結構(4)帶來的參數量最少,但魯棒性太差輸出結果起伏較大,而結構(5),參數量少,魯棒性相比結構(4)更好,減少計算成本的同時可以達到同等檢測效果。因此本次研究以結構(5)為ELAN-(a)。在本次研究中提出的ELAN-F(b)結構的特點是在以ELAN-F(a)為骨干輸出到頭部網絡時,繼續以Focal NeXt block 結構替代原有的CBS 模塊作為過渡,對輸出數據做進一步加強,經實驗驗證該結構可以提高模型性能,該實驗結果如表2所示。

表2 骨干網改進結構對比Table 2 Comparison of improved backbone network structures
表2 中的ELAN-F(a,b)是指在骨干網同時采用了ELAN-F(a)、ELAN-F(b)結構,由表2可以看出,在骨干網同時采用ELAN-F(a)、ELAN-F(b)結構可以有效提高模型的mAP值。
在本次研究中,對骨干網進行了改進后發現大卷積的結構可以有效提高模型在稀疏場景下檢測小目標的整體性能,且在Ding在2022年發表的文獻中表明:相比于傳統的3×3小卷積核的多層堆疊,大卷積核可以獲得更多的有效視野域。而且大卷積核的應用除了本身可以減少上下文信息的損失外還可以有效改善模型在下游任務中的整體性能,提高模型在實際應用中的利用價值。為此,本次研究在模型的頭部網絡引入了RepLKDeXt(https://blog.csdn.net/qq_38668236/article/details/127107145)模塊,該模塊是根據Ding等人提出的RepLK Block 結構進行了優化,圖8 中分別為RepLK Block和改進后的結構RepLKDeXt。

圖8 RepLK Block和RepLKDeXtFig.8 RepLK Block and RepLKDeXt
圖8 中的RepLK Block 結構中的DW(depthwise seperable convolution)為深度可分離卷積可以加深網絡增強模型的語義表達能力,有效減少大卷積核帶來的計算量。RepLKDeXt優化的思路在RepLK Block的基礎上再添加一個梯度路徑,這里是在模型RepLK Block輸出特征的基礎上再次融合淺層網絡信息可以豐富模型輸出的特征[24],除此之外,這種多分支結構可以有效避免加深網絡導致的模型性能退化。在本次研究中,為了進一步簡化網絡結構,在頭部網絡利用了RepLKDeXt結構取代SPPCSPC 結構,相比于SPPCSPC 結構,RepLKDeXt Block 的組成主要為傳統的卷積結構,結構更加簡單,可以有效減少模型的參數量,降低模型的計算難度,且以數據集FloW-Img為例的實驗表明,該結構的性能更加優越,實驗結果如表3所示。

表3 SPPCSPC與RepLKDeXt結構對比Table 3 Comparison of SPPCSPC and RepLKDeXt Structures
從表3可以看出RepLKDeXt結構相比SPPCSPC結構在數據集FloW-Img上性能提高幅度較大。接著本次研究將優化后的RepLKDeXt 結構應用到頭部網絡的ELAN-H結構進行改進,目的是獲得更多的小目標特征以及使ELAN-H改進后減少上下文信息的損失,在獲得更大有效感受野的同時不帶來較大的計算量,改進后得到結構為ELAN-H-R,如圖9所示。

圖9 ELAN-H和ELAN-H-RFig.9 ELAN-H and ELAN-H-R
ELAN-H-R結構是在原有的ELAN-H模塊基礎上利用RepLKDeXt進行改進,改進的目的是利用RepLKDeXt的大卷積核獲得原有模塊多層傳統3×3 小卷積核堆疊得到的近似感受野的同時減少上下文的信息的損失,且RepLKDeXt取代一個CBS模塊和淺層網絡進行連接并對輸出結果進行Cat 操作,從圖9 可以看出該模塊的主干結構相比原有模型的CBS模塊通道數增加,這使得網絡模型可以獲取更多的小目標特征。
而且,在該結構中,相比原模型,ELAN-H-R將主干首端的Cat分支進行了上移避免了和下側分支操作相同造成冗余的同時和更淺層的網絡信息進行融合[25],使得模型獲得更多的淺層小目標特征,加強了淺層語義信息,有利于模型的性能提高。
同時,為了驗證該結構的優越性,本次研究對該結構以數據集FloW-Img為例進行了消融實驗如表4所示。

表4 ELAN-H模塊和ELAN-H-R結構實驗對比Table 4 Experimental comparison of ELAN-H module and ELAN-H-R structure
從表4 可以看出本次研究中改進的ELAN-H-R 模塊可以有效提高模型性,ELAN-H-R相比ELAN-H的卷積核增大通道數增加,在針對稀疏場景下的小目標ELAN-H-R可以用13×13的大卷積獲得更多的上下文信息[26]來建立長期依賴,并且ELAN-H-R 用大卷積核、多通道和深淺層網絡信息融合的結構方式改進ELAN-H模塊,這種改進方式雖然會增加模型的計算參數導致模型的推理速度降低但可以獲得更多小目標特征加強輸出特征的淺層語義信息,減少大卷積核導致的目標紋理特征的損失提高模型輸出的mAP值。
結合ELAN-F(a,b)、RepLKDeXt及ELAN-H-R結構,可以得出YOLOv7改進后的網絡結構,如圖10所示。

圖10 YOLOv7改進網絡模型Fig.10 YOLOv7 improved network model
目標檢測模型在損失上分為坐標損失、目標置信度損失和分類損失三部分,YOLOv7模型在目標置信度損失和分類損失上均采用BCEWithLogitsLoss,在坐標損失上采用的是CIOU損失,本次研究針對YOLOv7模型的坐標損失函數進行優化,用Gevorgyan 提出的SIOU損失函數代替YOLOv7本身的CIOU損失函數,CIOU[27]的原理如下列公式所示:
式中,wgt、hgt分別代表真實框的寬和高,w和h分別代表預測框的寬和高,V主要用來衡量長寬比是否一致,α為平衡參數,P表示預測框;Pgt表示真實框,由式(1)中可知,當wgt/hgt與w/h的值相等時,V值等于0,此時LCIOU無法穩定表達。CIOU Loss 雖然考慮了邊界框回歸的重疊面積、中心點距離、縱橫比,但寬高比相同時的CIOU 損失會阻礙模型有效的優化相似性[28],降低網絡的魯棒性。本次研究為了進一步提高網絡的魯棒性,引入了SIOU 損失函數來取代CIOU 函數[29],SIOU 損失函數主要四個代價函數組成分別為Angle cost、Distance cost、Shape cost和IoU cost。
(1)Angle cost
圖11中的B為預測框,BGT為真實框,σ為真實框和預測框中心點間的距離,ch為真實框和預測框中心點的高度差,cw為兩中心點間的水平距離,arcsin(ch/σ)為α,arcsin(cw/σ)為β,角成本計算公式為:

圖11 SIOU的角成本計算Fig.11 Calculation of corner cost for SIOU
式中:
在上述計算中α≤π/4 時,使用最小化α,否則使用最小化β。
(2)Distance cost
圖12 中的cw和ch為真實框和預測框最小外接矩形的寬和高,對應的距離成本定義的公式為:

圖12 邊界框的距離計算Fig.12 Calculation of distance between bounding boxes
式中:
當α趨向于0 時,距離成本的貢獻越小,α趨向于π/4 時,距離貢獻成本越大,角度越大,處理越困難,所以這里γ隨著角度的增加,需要被賦予時間優先的距離值。
(3)Shape cost
圖13 中的H、W和HGT、WGT分別代表預測框和真實框的高和寬,形狀成本定義的公式為:

圖13 IOU的計算Fig.13 Calculation of IOU
式中:
θ控制對形狀損失的關注程度,為了避免過于關注形狀損失而降低對預測框的移動,Zhora 使用遺傳算法計算出θ接近4,θ參數范圍為[2,6],本文θ取4。
(4)SIOU
結合上述三類成本損失可以得出SIOU 損失函數,如式(13)所示:
式中:
相比于CIOU 損失函數,SIOU 考慮了角度成本,重新定義了懲罰指標,減少了懲罰項為0 的情況,提高了網絡的魯棒性。
(5)SIOU效果展示
本文模型結構對應不同損失算法得到的mAP@0.5的性能指標如圖14。

圖14 不同損失函數對應的mAP@0.5性能指標折線圖Fig.14 Correspondence of different loss function mAP@0.5 performance index line chart
從圖14 可以看出本文算法結合CIOU 損失函數得出的結果波動較大,網絡模型的魯棒性較差,而引入的SIOU損失函數結合本文算法后的得出的結果相對波動較小,模型的魯棒性得到有效提升。
而且SIOU 損失函數添加角懲罰成本,減少了損失的總自由度,因此,相比于CIOU 損失函數,SIOU 損失函數可以有效提高網絡模型的推理速度,本次研究將本文模型結合上述兩種損失函數分別在數據集VisDrone2019和數據集FLOW-Img上進行實驗,實驗結果如表5所示。

表5 本文模型的SIOU和CIOU檢測速度對比Table 5 Comparison of SIOU and CIOU detection speeds for this model
由表5 可以看出相比于CIOU 采用SIOU 對應算法FPS值更高,檢測速度更快,對應的推理時間也更少。
VisDrone2019[30]數據集為天津大學機器學習和數據挖掘實驗室的AISKYEY團隊制作的。該數據集所有圖片和視頻由各種無人機攝像頭捕獲,覆蓋范圍廣泛,包含10 209 幅靜態圖像,其中6 471 張用于訓練,548 張用于驗證,1 580張用于測試,該數據集的檢測目標共有10個類別標簽,分別為pedestrain、person、bicycle、car、van、truck、tricycle、awning-tricycle、bus 以及motor。該數據集涉及在不同的場景、不同的天氣和光照條件下的觀測結果并使用超過260萬個目標框手工標注,滿足場景可見性,對象類和遮擋等重要屬性。本次研究對數據集VisDrone2019進行了驗證計算,得出滿足目標邊框面積與圖像面積比值開方小于0.03 的檢測目標約占總目標的66.24%,滿足數據集小目標檢測物占據多數的實驗要求。訓練集采用VisDrone2019-DET-train,驗證集為VisDrone2019-DET-val。該數據集特點是目標密度大,多類別。
FloW-Img[31]數據集是歐卡智舶聯合AI 專家、圖靈獎得主Yoshua Bengio的Mila實驗室、清華大學和西北工業大學的研究人員發布的城市水域漂浮垃圾檢測數據集,FloW-Img 數據集包含2 000 張圖像,單個類別bottle,為了提高實驗數據的可信程度,本次研究對FloW-Img 數據集進行了驗證計算,最后得出滿足面積小于32×32的目標檢測物占總數據集的54.16%,滿足數據集小目標檢測物占據多數的實驗要求。數據集采用6∶2∶2的比例劃分出訓練集、驗證集和測試集。該數據集特點是目標較為稀疏,單類別。
本次研究使用的系統為Ubuntu20.04 系統,實驗所使用的環境為python3.8,pytorch1.10.0,Cuda11.3,實驗采用顯卡RTX3090 進行模型訓練,本次研究的以VisDrone2019 為數據集訓練的epochs 設置為150,batchsize 為16,以FloW-Img 為訓練數據集的epochs 設置為300,batchsize為32。兩者的超參數相同,初始的學習率為0.01,分辨率為640×640。
本文所有實驗的評價指標分別為P(precision),mAP@0.5,mAP@0.5:0.95,GFLOPs,Params,FPS。計算公式如下:
其中,TP表示實際為正被預測為正的樣本數量,FP表示實際為負但被預測為正的樣本數量,FN表示實際為正但被預測為負的樣本的數量;P為準確率;R為召回率,AP為平均準確率,對所有類別的AP值取平均值就可以得到mAP,mAP@0.5 表示所有目標類別的IOU閾值在0.5時的平均檢測精度,mAP@0.5:0.95則是代表以步長為0.05,計算IoU 閾值從0.5~0.95 的所有10 個IoU 閾值下的檢測精度的平均值,GFLOPs 為每秒10 億次的浮點運算數,Params 為參數量大小,FPS 為每秒檢測多少幀圖片。
本次研究通過消融實驗來評估不同的模塊、不同的數據集給最終目標檢測性能帶來的影響。消融實驗的結果如表6所示。

表6 FloW-Img消融實驗Tabel 6 FloW-Img ablation experiment
表6 中各模塊的改進對比數據是在數據集FloWImg上進行對比實驗得出,從表中可以看出本次研究提出的各個模塊都可以有效提高YOLOv7 模型在數據集FloW-Img上的檢測性能,且根據表中的數據可以看出,相比于精度上的提高,本文算法中的各個模塊在召回率上的提升幅度更大,表明本文利用大卷積核來提高輸出特征的上下文信息含量有利于提高模型對小目標檢測的定位精度。
表中,YOLOv7+RepLKDeXt算法以RepLKDeXt模塊取代SPPCSPC 模塊,在表中減少的參數量最大,且mAP 值上漲,由此可以看出該步驟可以有效簡化模型結構,減少不必要的計算參數。在表中本文最終算法引入SIOU 損失函數,雖然相比于CIOU 損失函數的mAP值有所降低,但結合圖14 所示,SIOU 損失函數進一步提高了網絡模型的魯棒性,并且根據表5所示該算法可以有效加快模型推理。
最后根據本文算法得出的結果,改進后算法相比于YOLOv7 算法在FloW-Img 數據集上的mAP@0.5 的值提高9.05個百分點,參數值下降接近3×106,GFLOPS下降8.7。
在本次研究中為了驗證本文算法的優越性,將本文算法各類主流算法進行對比,在保證配置環境及初始訓練參數一致的情況下,為了進一步驗證本文算法的泛化性能,本次研究將分別在小目標較為稀疏的FloW-Img和小目標密集度較高的VisDrone2019 數據集上進行算法對比實驗。
由表7可以看出,YOLOv7算法在FloW-Img數據集中的檢測性能遠低于其他YOLO系列算法,根據mAP@0.5 和mAP@0.5:0.95 的值可以看出,除了本文算法外,YOLOv8[32]是上述算法中在數據集FloW-Img 上檢測性能最好的模型,其mAP@0.5的值比YOLOv7高5.84個百分點,mAP@0.5:0.95的值比YOLOv7高7.27個百分點。

表7 FloW-Img各算法對比實驗數據Table 7 Comparative experimental data of FloW-Img algorithms
本次研究對YOLOv7算法進行改進后,可以看出在數據集FloW-Img 上檢測性能超越YOLOv8 算法,比YOLOv8的mAP@0.5的值高3.21個百分點,mAP@0.5:0.95 的值比YOLOv8 高0.22 個百分點,只是在實時性檢測上本文算法的FPS 從表中可以看出數值最低,為43幀/s,相比YOLOv7算法改進后檢測速度下降幅度較大,但FPS大于30,滿足實時性檢測要求[33]。
表8中,本文算法在小目標密度高的VisDrone2019數據集上的檢測性能遠超表中其他主流算法,與YOLOv7算法性能近似相同,且根據前文可知,在性能相同的狀況下,本文算法的計算參數更少,計算復雜度更低,但在實時檢測性能上,相比YOLOv7 下降幅度較大,輸出的FPS 數值為55 滿足實時檢測要求,且檢測速度超過TPH-YOLOv5。

表8 VisDrone2019各算法對比實驗數據Table 8 VisDrone2019 comparative experimental data of various algorithms
由表7、表8 可以總結出,在目標檢測的mAP 指標上:(1)本文算法在小目標密度高的場景下和YOLOv7模型檢測性能近似,但結構更加簡單,且超過表中其他YOLO系列算法。(2)在小目標較為稀疏的場景下,本文算法在YOLOv7 的檢測基礎上性能大幅提高且同樣強于其他常規的YOLO 系列算法。在實時檢測性能上:本文算法在骨干網加深了網絡深度整體上采用了大卷積核和加寬網絡的模型結構導致算法的實時檢測性能降低,相比YOLOv7 算法的檢測速度較低,但依然滿足實時檢測要求。
本文提出的算法在稀疏場景的FloW-Img數據集的檢測成果通過挑選距離較遠、光照條件不同和遮擋較為嚴重等屬性的場景進行檢測效果對比,圖15 中展示的是本文算法和YOLOv7 算法在不同場景下的檢測結果對比。

圖15 距離較遠導致目標特征不明顯的目標檢測結果對比Fig.15 Comparison of target detection results with obvious target features
從圖15的兩處場景對比可以看出本文算法在距離較遠等小目標特征不明顯的場景能識別更多的小目標,在該方面的識別性能遠高于YOLOv7模型,針對特征不明顯的小目標本文算法相比于YOLOv7 算法采用了多通道結構來獲取更多小目標特征并通過增加淺層網絡信息的融合來加強淺層語義信息,因此輸出的不明顯的小目標的特征得以完善和加強進一步降低了模型的識別難度。
從圖16上下兩處場景檢測對比可以看出在光照強度較高致使湖面檢測目標特征不明顯的場景下,YOLOv7算法檢測效果較差,僅檢測出單個目標而本文算法檢測出多處目標,本文算法相比于YOLOv7算法模型在輸出特征上獲得的上下文信息更多,有利于長期依賴的建立,相比于YOLOv7 算法在不同光照條件下的性能差異,本文算法可以有效削弱光照條件的影響。

圖16 光照條件導致目標特征不明顯的目標檢測結果對比Fig.16 Comparison of object detection results with obvious target features caused by illumination conditions
從圖17 可以看出,針對遮擋小目標嚴重的場景YOLOv7 算法出現漏檢和誤檢的狀況,而本文算法可以有效識別被遮擋住的小目標特征,相比于YOLOv7算法本文算法在骨干網絡和頭部網絡引入了大卷積核,通過大卷積核模型在識別這些受到遮擋的小目標時可以獲得更多上下文信息,從更多上下文信息中模型可以獲得更多的小目標的周圍特征進行對比并且模型還可以通過細粒度特征的交互增強放大目標與背景間的差異來降低檢測難度,由圖17看出,本文算法在檢測受到遮擋小目標的性能上高于YOLOv7算法。

圖17 遮擋場景檢測結果對比Fig.17 Comparison of FloW-Img test results
本次針對小目標檢測進行研究,對YOLOv7 模型進行了優化,針對網絡結構,在主干網將CFNet 網絡的Focal NeXt block 和YOLOv7 的ELAN 模塊進行了結合提出ELAN-F(a)、ELAN-F(b)模塊,兩模塊通過加強輸出特征和提高輸出特征的上下文含量來完善模型的整體性能,在頭部網絡引入了RepLKDeXt模塊,該模塊被用于取代SPPCSPC 模塊簡化網絡以及優化ELAN-H模塊為ELAN-H-R 模塊來加強淺層語義信息和進一步提高上下文信息含量。最后為了提高模型的魯棒性,本文算法引入SIOU損失函數來取代CIOU損失函數。將改進算法在FloW-Img數據集上實驗后表明該算法在小目標稀疏場景下的檢測性能有大幅提高,在Vis-Drone2019數據集上的實驗表明本文算法在小目標密度高的場景中檢測性能沒有降低依然超越大部分主流算法但結構上做了簡化,計算復雜度也有效降低。
本文算法雖然在結構上進行了簡化和在小目標較為稀疏的場景中檢測性能有所提高,但實際參數量還是較大,除此之外,本文算法相比于YOLOv7 算法的實時檢測性能也有所下降,而且在小目標密集場景中的檢測性能也需要進一步提高。在以上三點問題上,未來需要對模型進行更好的簡化研究并在此基礎上提高模型在小目標密集狀態下的檢測性能并降低模型的推理時間。