袁 夢 蘇工兵② 王 晶② 曾文豪②
(①武漢紡織大學機械工程與自動化學院,湖北 武漢 430200;②湖北省數字化紡織裝備重點實驗室,湖北 武漢 430200)
工業零件制造和生產中存在一些大小、形狀、種類各異的表面缺陷,尤其是形態多變的微小缺陷,既影響了產品質量,也難以察覺。用傳統檢測方法[1-2]檢測起來耗時費力,還難以做到實時精確檢測。近年來,隨著對小目標檢測[3-5]領域的研究越來越深入,YOLO 系列[6-9]目標檢測算法為開展這類研究提供了廣闊的應用前景,不少研究者在此基礎上進行了表面缺陷檢測算法的相關研究。劉亞姣等[10]提出1 種基于可變形卷積與多尺度-密集特征金字塔的型鋼表面缺陷檢測算法——Steel-YOLOv3。付思琴等[11]提出1 種基于改進YOLOv4 的焊接件表面缺陷檢測算法,使用了輕量級網絡 GhostNet 替換YOLOv4 的主干特征提取網絡(Backbone)CSPDarknet53,并在 GhostNet 網絡結構中嵌入改進的通道注意力機制。李鑫等[12]提出1 種改進YOLOv5的鋼材表面缺陷檢測算法,使用GhostBottleneck 結構替換原YOLOv5 網絡中的C3 模塊和部分卷積結構,在BackBone 部分引入 SE 注意力機制;在網絡中增加1 個檢測層,并在Neck 部分增加特征融合結構,使用DW 卷積替換部分標準卷積。這些改進后算法的檢測平均精度和檢測速度都獲得了相應提高,但存在一些不足,特別是對于零件表面形態各異的眾多微小缺陷來說,這些算法的檢測精度和推理速度遠不及預期,無法滿足準確度與實時性的識別需求。
針對上述問題,提出BCGS-YOLOv7 tiny 檢測網絡,通過對原YOLOv7-tiny 算法的特征提取網絡和特征融合網絡進行改進,增加針對小目標的檢測模塊,從而增強零件表面各種微小缺陷的識別精度,同時也能平衡好檢測速度以滿足實際檢測的需求。
原始數據集采用GC10-DET 公開數據集,共2 294張灰度圖像,分辨率為 2 048×1 000。為了檢驗算法對微小缺陷的檢測性能,經實驗比較分析,將數據集中明顯檢測精度較高的沖孔、月牙彎和面積較大的絲斑、水斑、腰部折痕這5 類缺陷刪除。其余的折痕(crease) 、 油斑( oil_spot) 、 夾雜物(inclusion)、凹坑(rolled_pit)和焊縫(welding_line)這5 類缺陷因面積微小、形態復雜異形,缺陷尺寸大小占比均不到5%,甚至夾雜物的尺寸大小占比不足1%,采用YOLO 系列原始架構難以達到相應精度。為此,以余下5 種微小缺陷的1 823張圖像為基礎,通過labelimg 對圖像重新標注,并采用倒置、鏡像、增強亮度、高斯模糊及仿射變換的數據增廣方式增加樣本量,同時均衡樣本,得到9 000 張圖像及對應標簽,作為最終進行實驗對比的數據集。5 種缺陷的圖像標注示例如圖1 所示。

圖1 5 種缺陷示例圖
YOLOv7-tiny 算法是基于YOLOv7[13]算法的精簡版本,它采用級聯的模型縮放策略,在保證檢測精度的前提下,實現了更少的參數量和更快的檢測速度,符合缺陷檢測的實際應用需求。為了提高微小缺陷實時檢測的精度和速度,在YOLOv7-tiny 算法架構的基礎上,通過在特征提取階段增加CBAM注意力機制,并用SPD-Conv 下采樣層代替原網絡的跨步卷積以及最大池化層;在特征融合階段將路徑聚合特征金字塔(PAFPN)網絡替換為BPANet網絡結構,并在BPANet 網絡深層特征的傳遞通路增加gnCSP 模塊,同時用SPD-Conv 下采樣層替換跨步卷積,增強網絡對微小缺陷的檢測能力。重構的BCGS-YOLOv7 tiny 檢測網絡結構如圖2 所示。圖中的ELAN 模塊和SPPCSPC 模塊都在YOLOv7網絡對應模塊的基礎上進行了精簡與優化。

圖2 BCGS-YOLOv7 tiny 網絡結構圖
重構的缺陷數據集經過原YOLOv7-tiny 的特征提取網絡后,特征圖尺寸最小會縮小為原圖像的1/32,小目標的特征信息會嚴重丟失,導致原網絡對這些表面缺陷的檢測精度不高。因此,在特征提取階段將原網絡進行改進,通過增加CBAM 注意力機制,并用SPD-Conv 下采樣層代替跨步卷積和最大池化層,增強算法在特征提取階段對小目標特征信息的保留與關注,提升小目標的特征提取性能。
2.1.1 CBAM 注意力機制提升微小缺陷關鍵特征的敏感度
為了使特征提取網絡更好地提取微小缺陷的關鍵特征,引入CBAM 注意力機制[14],通過對輸入特征在空間和通道兩個維度重要程度的學習,優化特征融合網絡輸入端的特征,提升后續特征融合網絡性能。
CBAM 模塊包含 channel attention module (CAM模塊)和 spatial attention module (SAM 模塊)等兩個部分,總體結構如圖3 所示。圖中⊕表示對應元素相加操作,?表示哈達瑪積操作。

圖3 CBAM 模塊結構圖
通道注意力模塊利用特征圖通道之間的關系來生成通道注意圖。首先將特征提取所得的特征圖FRHW×C在channel 維度通過平均池化和最大池化操作生成兩個C維向量,再將兩個向量分別通過共享MLP 結構,生成大小為C×1×1 的通道注意力映射。將兩個映射進行逐元素求和,最終得到每個通道的權重值。通道注意力計算如式(1)~式(3)所示。
式中:AvgPool表示平均池化操作;MaxPool表示最大池化操作;MLP表示兩層神經網絡; σ表示sigmoid 激活函數。
空間注意力模塊利用特征空間之間的關系生成空間注意圖。將經過通道注意力模塊優化后的特征F′∈RHW×C作為空間注意力的輸入特征,沿通道軸應用平均池和最大池操作得到兩個H×W×1 的特征圖,再將它們拼接起來組成一個H×W×2 的特征圖。接著運用一個卷積核大小為7×7 標準卷積層進行卷積,產生最后的二維空間注意力映射。空間注意力計算如式(4)所示。
給定輸入特征F∈RHW×C,CBAM 依次對其進行通道注意力映射和空間注意力映射,整個注意力機制添加的過程如式(5)所示。
式中:F表示輸入特征圖;F'表示經過通道注意力映射后的特征圖;F''表示經過空間注意力映射后的特征圖;Mc表示通道注意力操作;Ms表示空間注意力操作; ?表示哈達瑪積操作。
2.1.2 SPD-Conv 下采樣層避免小目標特征信息的丟失
為了避免小目標的特征信息在特征提取降低分辨率的過程中丟失,引入SPD-Conv 下采樣層[15]替換特征提取網絡中的跨步卷積和最大池化下采樣操作,SPD 結構能夠在保留通道維度的所有信息的前提下對特征圖進行下采樣,對微小缺陷的精準識別意義重大。
SPD-Conv 下采用層由SPD(space-to-depth)層和非跨步卷積層(Conv)構成。
SPD 操作將大小為N×N×C1的特征圖M切分為4 組子特征圖,子特征圖按寬高分別為1/2 的比例對M進行抽樣:在特征圖M上按2×2×C1的尺寸劃分出小網格,將每塊網格(0,0)、(1,0)、(0,1)、(1,1)位置的特征向量分別組成4 個大小為N/2×N/2×C1的子特征圖,并按順序在channel 維度拼接起來。通過以上操作將特征圖M(N,N,C1),轉換為中間特征圖M′(N/2,N/2, 2C1)。
SPD 操作得到中間特征圖后,連接一個帶有C2個大小為1×1 的卷積核的非跨步(即stride=1)卷積層,其中C2<2C1。使用非跨步卷積核能夠盡可能保留特征圖所有的細節信息,與小目標檢測的目標相符,且使用大小為1×1 的卷積核比使用大小為3×3 的卷積核計算量更少,更加節約運算成本。SPD-Conv 層的運算過程示意圖如圖4 所示。

圖4 SPD-Conv 下采樣層運算示意圖
2.2.1 BPANet 網絡加強小目標的特征融合
YOLOv7-tiny 的特征融合網絡沿用YOLOv5系列路徑聚合特征金字塔(PAFPN)網絡架構,該結構淺層特征需要通過較長的通路才能到達輸出端與檢測頭連接,因此淺層小目標的重要特征會逐步丟失,影響檢測效果。本研究借鑒BiFPN 網絡[16]的思想,提出了BPANet 特征融合網絡結構。首先保持原網絡自上而下和自下而上的傳遞通路,在橫向同一尺度的淺、深層特征之間增加一條跳躍連線實現特征的再一次融合,使得網絡的輸出節點能夠保留淺層小目標的重要信息,并結合三種不同深度特征的優點,增強微小缺陷特征的表達。具體結構如圖5 所示。

圖5 BPANet 結構圖
此外,BPANet 網絡的每個輸出節點都進行了可學習的參數加權,對不同特征的表達進行增強或抑制,該方法能夠減輕由于多個目標重疊而導致識別不準確的問題。圖中P3~P5是特征提取網絡不同尺度的特征輸入,每個輸出節點的數學表達式見式(6)~式(11)。
式中:Conv表示卷積操作;Pin表示淺層輸入節點的特征;Ptd表示中間輸出節點的特征;Pout表示深層輸出節點的特征; ωi為每條路徑上的權重; δ為防止數據不穩定的極小值,設置為 0.000 01。
2.2.2 gnCSP 模塊進行高階空間交互
在深度模型中,由于大多數運算是非線性的,兩個空間位置之間存在復雜且往往是高階的相互作用。Rao Y M 等[17]提出的遞歸門控卷積能夠高效實現任意階空間的相互作用,因此能夠獲取特征與其鄰近區域之間內在的聯系,對于區分微小缺陷目標與背景意義重大。
高階遞歸門控卷積(gnConv)的運算過程如式(12)~式(14)所示,首先將輸入的特征M進行線性投影后channel 產生相應的變化,在channel維度切分后得到特征x0,y0,···,yn-1,再將獲取的特征依次輸入到門控卷積中進行遞歸運算。最后,將最終遞歸輸出的結果yn輸入到一個投影層。遞歸運算的過程示意圖如圖6 所示。

圖6 gnConv 運算示意圖
式中: φin表示對輸入特征的投影變換操作;表示點積操作; 1/α表示每次運算的輸出特征按照 1/α進行縮放使訓練更平穩;gk是運算過程中保證維度相同的維度映射函數。
為了提升檢測頭的準確度,并用盡可能低的計算量和占用內存產生更優的效果,本研究以遞歸門控卷積為基礎設計了gnCSP 模塊,具體結構如圖7所示。設gnCSP 模塊的輸入為x,輸出為F(x),將輸入特征分為兩個分支,一個分支直接進行gnConv操作,另一個分支依次經過gnConv和兩個以gnConv和MLP 結構為主體的殘差結構,最后將兩個分支拼接起來再次進行gnConv操作。gnCSP 模塊將淺層細節特征與深層抽象特征結合在一起,能夠增加特征的重復利用率,在一定程度上避免了信息傳遞時特征的丟失。在連接輸出端的特征傳遞通路中添加gnCSP 模塊,有助于挖掘不同特征更加深層的內在聯系,使輸出特征更加優質,提升后續檢測頭的準確度,以較低的計算成本獲得更優秀的檢測性能。

圖7 gnCSP 模塊結構圖
2.2.3 SPD-Conv 下采樣層提升小目標檢測性能
為了提高零件表面微小缺陷的檢測效果,在特征融合網絡也引入了SPD-Conv 下采樣層,用該模塊替換特征融合網絡深層特征傳遞通路中的跨步卷積層,避免丟失小目標的特征信息,提升對小目標的檢測能力。
從重構的零件表面缺陷數據集9 000 張圖片中隨機抽取訓練集、驗證集和測試集,比例為8∶1∶1,即訓練集7 200 張,驗證集900 張,測試集900 張。實 驗 采 用 的 硬 件 配 置 為 Intel Core i9-10900@2.80 GHz 處理器,顯卡為 NVIDIA GeForce RTX 3070Ti 8GB。 軟 件 環 境 為 CUDA11.6 和cuDNN8.3.2,操作系統為 Ubuntu18.04。網絡模型基于 Pytorch 框架搭建,python 版本為 3.8,pytorch版本為 1.12.1。本研究參考齊向明等[18]的參數設置,將 batch size 為 16,將epoch 設置為200,初始學習率為 0.01,最低學習率為0.000 1,動量為0.937,權重衰減系數為 0.000 5。通過對數據集具體缺陷目標及其標注框特點的分析,將非極大值抑制的IoU閾值設置為 0.65。
為評價算法模型的有效性,采用精確率(precision, P)、召回率(recall, R)、均值平均精度(mAP)、模型計算量(FLOPs)和模型參數量(number of participants)5 個指標作為模型的評估指標。
P、R的表達式分別如式(15)、式(16)所示。
式中:TP為真正例;FP為假正例;FN為假負例。
P-R曲線以召回率R為橫軸,精確率P為縱軸構成,該曲線是對不同置信度閾值下精確率和召回率的直觀圖像表示。AP是P-R曲線下的面積,反映精確率與召回率的綜合性能,表達式如式(17)所示。
mAP@0.5 是在交并比(IoU)閾值為0.5 的情況下,所有類別AP值的平均數,該指標能夠衡量模型的整體性能,表達式如式(18)所示。
式中:n為類別個數。模型計算量用來評估模型的復雜度,模型參數量用來評估模型的體量。
訓練過程中訓練集和驗證集的損失曲線如圖8所示,從圖中可看出BCGS-YOLOv7 tiny 網絡在迭代200 個epoch 的過程中分類損失、置信度損失和定位損失最終都能收斂于非常小的數值,達到實驗預期。

圖8 損失曲線圖
3.2.1 單個模塊實驗分析
為了更加直觀地展示所提方法在零件表面缺陷檢測和識別方面的性能,本研究進行了對比實驗,實驗結果見表1。

表1 單個模塊實驗結果
由表1 可知,所提出的添加CBAM 注意力模塊、SPD-Conv 結構、BPANet 特征融合網絡和添加gnCSP 模塊這4 種改進方法,獨立使用均能夠使mAP@0.5 值得到提升,且精確率和召回率平衡的效果更好。同時SPD-Conv 結構還能夠有效降低計算量,提升檢測效率。上述4 組對比結果表明,本研究提出的4 種方案均能提升零件表面微小缺陷的檢測效果,使網絡性能更加優越。
3.2.2 消融實驗
為了驗證4 種改進方案不同組合的改進效果及其有效性,在采用相同軟硬件配置、相同參數設置的前提下,探究了原始YOLOv7-tiny 網絡模型與添加 2 種、 3 種和4 種改進方案的不同優化效果,并進行對比實驗,實驗結果見表2。

表2 消融實驗結果
由表2 可知:(1)第1 組實驗為不使用任何改進方法的原YOLOv7-tiny 網絡檢測結果,作為后4 組實驗的對比參照,mAP@0.5 值為85.6%。(2)第2 組實驗運用CBAM 注意力機制和BPANet 網絡兩種改進方法,mAP@0.5 值提升了3.1%,對比使用單個改進模塊效果都好,且模型計算量沒有太大提升。(3)第3 組實驗運用BPANet 網絡和gnCSP兩種改進方法,mAP@0.5 值提升了3.9%,精確率和召回率也得到明顯提升。(4)第4 組實驗運用CBAM 注意力機制、SPD-Conv 模塊和BPANet 網絡3 種改進方法,mAP@0.5 值為90.2%,優于第二組實驗結果并且參數量和計算量都有所下降。(5)第5 組實驗運用全部4 種改進方案,mAP@0.5 值以及精確率、召回率達到最高。由上述分析可知,4 種改進方案進行組合能夠取得預想的改進效果,使網絡對微小缺陷的檢測效果得到大幅提升。
3.2.3 性能對比實驗
將所提出的BCGS-YOLOv7 tiny 網絡與原YOLOv7-tiny 網絡以及YOLOv5s 網絡進行對比實驗,結果見表3。

表3 不同模型實驗結果對比
由表3 中數據可知,BCGS-YOLOv7 tiny 網絡對零件表面微小缺陷的識別精度大大優于其他網絡,并且在精度和運算效率之間取得了較好的平衡。
為了進一步確定本算法對零件表面各類微小缺陷的檢測效果,將YOLOv5s 算法、YOLOv7-tiny 算法與BCGS-YOLOv7 tiny 算法在各類缺陷上的檢測精度(mAP@0.5)進行對比,結果如圖9 所示。

圖9 3 種檢測算法精度對比圖
由圖9 可知,本研究算法對所有種類微小缺陷的檢測精度均有上升,由此進一步證明本研究提出的網絡模型對零件表面微小缺陷的檢測具有突出效果,對于零件表面微小缺陷檢測的實際應用具有重要意義。
改進前后的網絡模型識別效果圖如圖10 所示,由圖10 可知YOLOv5s 網絡和YOLOv7-tiny 網絡均存在漏檢、誤檢、置信度較低、檢測缺陷區域不準確等問題,BCGS-YOLOv7 tiny 模型對各類缺陷均有良好的檢測效果,對于具有難度的微小缺陷檢測與其他模型相比也有著更優的效果。

圖10 3 種網絡模型識別效果圖
以YOLOv7-tiny 網絡架構為基礎,提出了一種端對端的實時推理模型——BCGS-YOLOv7 tiny,通過在重構的零件表面微小缺陷數據集的實驗表明,在特征提取階段可有效增強對小目標的特征信息的保留與關注;在特征融合階段,能夠使淺層小目標的重要特征與深層特征得到更好的融合,提高輸出端檢測頭的性能。BCGS-YOLOv7 tiny 網絡模型在驗證集中的mAP@0.5 值達到了91.6%,比原YOLOv7-tiny 網絡提高了6.0%。模型參數量和計算量大大低于主流目標檢測模型。該模型在檢測準確度和檢測速度上取得了較好的平衡,對零件表面微小缺陷檢測具有重要的現實指導意義。