?

基于改進YOLOv8s的鋼材表面缺陷檢測

2024-01-02 07:47張文鎧劉佳
關鍵詞:鋼材損失維度

張文鎧,劉佳

(北京信息科技大學 自動化學院,北京 100192)

0 引言

鋼材在生產和加工過程中會受到環境中各種因素的影響,導致表面出現裂紋、斑塊和劃痕等各類缺陷,必須對其表面進行缺陷檢測。

近年來,目標檢測算法快速發展,逐漸從傳統的目標檢測轉向基于深度學習的目標檢測?;谏疃葘W習的目標檢測算法大致可分為兩大類:兩階段檢測和一階段檢測。兩階段檢測算法的代表主要是基于區域的卷積神經網絡(region based convolutional neural networks,R-CNN)[1]系列算法,比如Fast R-CNN[2]和Faster R-CNN[3]。一階段檢測算法的代表主要是單步多框檢測器(single shot multibox detector,SSD)[4]和YOLO(you only look once)[5]系列算法。目前已有許多研究將深度學習目標檢測算法應用在鋼材表面缺陷檢測領域,如游青華[6]提出的基于深度學習的鋼材表面缺陷檢測方法,閻馨等[7]提出的基于改進SSD的鋼材表面缺陷檢測,Wang等[8]提出的基于改進YOLOv5算法的多尺度鋼材表面缺陷檢測。上述方法雖然在一定程度上提高了算法的性能,但在精度和參數量方面仍有不足之處。

由Ultralytics于2023年1月發布的YOLOv8模型,是目前YOLO系列最先進的目標檢測模型,其在之前版本基礎上,引入了一個新的主干網絡、一個新的無錨(Anchor-Free)檢測頭和一個新的損失函數,進一步提升了模型的性能。為了保證鋼材表面缺陷檢測算法的先進性,本文在YOLOv8s算法的基礎上做了相關改進。相比于目前主流的鋼材表面缺陷檢測算法,改進后的YOLOv8s鋼材表面缺陷檢測算法可以更加準確地檢測出鋼材表面缺陷的類別和位置,且模型參數量相對較小,便于在移動端部署。

1 改進的YOLOv8s算法

1.1 改進后的模型結構

為進一步提升鋼材表面缺陷檢測算法的精度,本文在YOLOv8s算法的基礎上進行改進,主要改進3個方面:1)為了使模型關注更多維度的特征信息,將原主干網絡第4、6、8層的C2f模塊和原頸部網絡第15、18層的C2f模塊替換為C2f-Triplet模塊;2)為了使模型在更大的感知區域內聚合上下文信息,將原頸部網絡第10、13層的最近鄰上采樣模塊替換為內容感知特征重組(content-aware reassembly of features,CARAFE)模塊;3)為了提高模型收斂速度和回歸精度,將原YOLOv8s的CIoU回歸損失函數替換為SIoU損失函數。

1.2 C2f-Triplet模塊

YOLOv8s網絡結構中包含大量C2f模塊,其主要功能是學習殘差特征。因此,網絡性能的優劣與C2f模塊特征學習的情況密切相關。由于鋼材表面缺陷在形態、位置、大小上差異較大,特別是裂紋類缺陷、點蝕表面類缺陷和軋制氧化皮類缺陷,同類缺陷形狀和大小不一,且分布范圍較廣,原有的C2f模塊對鋼材表面缺陷的特征提取能力仍不足,缺少多維度的特征信息。所以,本文為進一步增強網絡的學習能力,融合多維度的特征信息,設計了一個全新的模塊——C2f-Triplet模塊。C2f-Triplet結構將原C2f模塊中所有的Bottleneck模塊均替換為Triplet-Bottleneck模塊。Triplet-Bottleneck模塊在原Bottleneck模塊的基礎上在2個卷積層后增加Triplet注意力機制,使其擁有更強的特征提取和特征融合能力。

Triplet注意力機制使用三分支結構捕捉交叉維度交互來計算鋼材表面缺陷的注意力權重,通過旋轉操作和殘差變換來建立維度間依賴關系,可以有效實現鋼材表面缺陷特征信息的跨維度融合,并且這種注意力機制幾乎是無參的。

Triplet注意力機制的網絡結構如圖1所示,該注意力機制由3個分支組成。當輸入特征圖大小為C(通道維度)×H(高度維度)×W(寬度維度)時,3個分支具體實現[9]如下:

1)第一個分支是對鋼材表面缺陷通道維度C和高度維度H之間的特征信息進行交互。首先經過Permute函數將輸入特征圖沿H軸逆時針旋轉90°,得到W×H×C的特征圖,接著通過Z池化(Z-Pool)層在W維度上進行最大池化操作和平均池化操作,將特征圖縮減為2×H×C大小,然后經過卷積(Conv)核大小為7×7的卷積層得到1×H×C的特征圖,再經過批歸一化(Batch Norm)層和Sigmoid激活層生成相應的注意力權重,最后將注意力權重乘回W×H×C特征圖,并經過Permute沿H軸順時針旋轉90°,使其與輸入特征圖保持相同的形狀,得到C×H×W的特征圖。

2)第二個分支是對鋼材表面缺陷通道維度C和寬度維度W之間的特征信息進行交互。首先經過Permute將輸入特征圖沿W軸逆時針旋轉90°,得到H×C×W的特征圖,接著通過Z-Pool在H維度上進行最大池化操作和平均池化操作,將特征圖縮減為2×C×W大小,然后進行與第一個分支相同的操作,最終得到C×H×W的特征圖。

3)第三個分支是對鋼材表面缺陷的空間注意力權重進行計算。輸入特征圖首先經過通道池化(Channel Pool)得到2×H×W的特征圖,然后經過卷積核大小為7×7的卷積層得到1×H×W的特征圖,再經過批歸一化層和Sigmoid激活層生成相應的注意力權重,最后將注意力權重乘回原始特征圖,得到C×H×W的特征圖。

最后對3個分支輸出的C×H×W維度特征進行相加求平均值。

圖1 Triplet注意力機制網絡結構Fig.1 Triplet attention mechanism network structure

1.3 CARAFE上采樣算子

YOLOv8s的上采樣操作采用最近鄰插值法,這種方法僅通過像素的空間位置來確定上采樣內核,沒有利用特征圖的語義信息,感知域較小,特別是針對鋼材表面缺陷這種范圍較廣且形態各異的特征,極易造成特征信息的丟失。而CARAFE上采樣算子具有較大的感受野,可以在大的感知區域內聚合上下文信息,并且可以根據鋼材表面缺陷特征圖的語義信息生成自適應上采樣核,有效避免特征信息的丟失,同時引入的計算開銷很小,可以很容易融入網絡架構中。因此,本文選用CARAFE上采樣算子代替原有YOLOv8s中的最近鄰插值上采樣。

CARAFE上采樣算子網絡結構如圖2所示。輸入特征圖X大小為H×W×C時,設定上采樣倍率為σ,首先通過上采樣核預測部分對上采樣核進行預測,然后通過特征重組部分進行特征重組完成上采樣,最終得到大小為σH×σW×C的新特征圖X′[10]。

在上采樣核預測部分,首先對通過通道壓縮后大小為H×W×Cm的輸入特征圖進行內容編碼,將通道數從Cm變為σ2×k2;然后將通道在空間維度上展開,得到形如σH×σW×k2的上采樣核;最后對得到的上采樣核通過Softmax函數進行核歸一化,使卷積核的權重和為1,得到輸出特征圖T。

在特征重組部分,首先將輸出特征圖T進行空間維度展開,然后將輸出特征圖中的每個位置映射回輸入特征圖X中,取以其為中心的k×k的原特征圖區域與該點的預測上采樣核進行點積操作,相同位置的不同通道共享同一個上采樣核,最終得到σH×σW×C的新特征圖[11]。其中,X′的任意目標位置l′=(i′,j′),在X上都有源位置l=(i,j)與之相對應,N(Xl,k)為以位置l為中心的k×k大小的子區域,Wl′為上采樣核預測部分預測的重組核。

1.4 SIoU損失函數

YOLOv8s的回歸損失函數采用了CIoU損失函數。CIoU損失函數考慮了3個幾何因素:重疊面積、中心點距離和長寬比。相比于之前的損失函數,雖然CIoU損失函數考慮的因素更加全面,但卻沒有考慮真實框與預測框之間方向不匹配的問題,使得模型在訓練的過程中會出現預測框“四處游蕩”的情況,從而導致收斂速度較慢且效率較低。

2022年,Gevorgyan[12]提出了一種新的目標檢測損失函數——SIoU損失函數。這種損失函數考慮了回歸之間的向量角度,重新定義了懲罰指標,解決了上述問題。與CIoU損失函數相比,SIoU損失函數收斂速度更快,準確性更高,因此,本文引入SIoU損失函數作為回歸損失函數。SIoU損失函數由角度損失、距離損失、形狀損失和IoU損失4個部分組成。

角度損失Λ定義如式(1)所示。增加這種角度感知組件可以最大限度地減少與距離相關的變量數量。

(1)

根據角度損失Λ重新定義了距離損失Δ。距離損失Δ與真實框和預測框的最小外接矩形有關,其定義如式(2)所示。

(2)

式中:ρx、ρy為真實框與預測框之間位置的偏離程度;rw、rh為真實框與預測框最小外接矩形的寬和高;γ為被賦予時間優先的距離值,與角度損失Λ有關。

形狀損失Ω定義如式(3)所示。

(3)

式中:θ為形狀損失的關注程度;ww、wh為預測框與真實框之間寬和高的拉伸程度;w、h為預測框的寬和高;wgt、hgt為真實框的寬和高。

IoU損失定義如式(4)所示。

(4)

式中:A表示預測框;B表示真實框。

最后SIoU損失函數LSIoU定義如式(5)所示。

(5)

2 實驗及結果分析

2.1 數據集

本文實驗數據集采用東北大學鋼材表面缺陷數據集(NEU-DET)。該數據集收集了熱軋鋼帶裂紋、雜質、斑塊、點蝕表面、軋制氧化皮、劃痕等6種常見缺陷,每種缺陷300張圖片,共計1 800張圖片。每種缺陷的典型樣本如圖3所示。

圖3 NEU-DET數據集每種類型缺陷典型樣本Fig.3 Typical samples of each defect type in the NEU-DET dataset

裂紋的形狀較為復雜,多呈現為局部連續的樹枝狀向外發散,并具有一定的深度,周邊一般伴隨著嚴重的脫碳現象。裂紋產生通常是由應力造成,初生坯殼厚度不均勻以及坯殼內外溫度不均勻都會造成應力超過坯殼抗拉強度,進而產生裂紋。雜質通常表現為不規則點狀、塊狀或長條狀的非金屬夾雜物,顏色一般呈現為棕紅色、黃褐色、灰白色或灰黑色。雜質產生的原因主要是板坯原有表面和皮下夾雜或加熱過程中耐火材料及煤灰、煤渣等非金屬物落在板坯表面,軋制時壓入板面。斑塊是指在鋼材表面呈現塊狀或條片狀的不規則斑跡,顏色多為黃色或黑色,一般是由于加熱過程中混入細小的氧化鐵皮,或冷卻過程中冷卻液不夠均勻穩定所致。點蝕表面是指在鋼材表面呈現連續或局部的凹凸不平粗糙面,主要是由于軋輥和軋槽磨損、銹蝕或粘上破碎的氧化鐵所造成的。軋制氧化皮一般內嵌在鋼板表面,深淺不一且形狀各異,多為棕紅色或黑色。軋制氧化皮產生的原因一般是操作不當或設置不合理導致氧化鐵皮未除盡,軋制時壓入鋼材表面。劃痕通常表現為明亮的細直線條,連續或斷續地分布于鋼材的局部和全長,主要是由鋼材與機械零件產生非正常摩擦或運輸過程中各種人為因素所致。

本文實驗數據集中的圖片均通過LabelImg軟件進行標注,分別將圖片中的裂紋、雜質、斑塊、點蝕表面、軋制氧化皮和劃痕標注為crazing、inclusion、patches、pitted_surface、rolled-in_scale和scratches。本文實驗將1 800張鋼材表面缺陷圖片按照8∶1∶1的比例劃分為訓練集、測試集和驗證集。訓練集1 440張,每類缺陷各240張;測試集180張,每類缺陷各30張;驗證集180張,每類缺陷各30張。

2.2 實驗環境與參數設定

本文實驗環境如表1所示。訓練過程中,設置初始學習率為0.01,動量為0.937,權重衰減系數為0.000 5,批樣本大小為8,訓練輪數為100,輸入圖像尺寸為640×640。

表1 實驗環境Table 1 Experimental environment

2.3 評價指標

本實驗采用精確率、平均精度均值和參數量作為主要評價指標,同時還參考平均精度和召回率。

2.4 實驗結果與分析

為驗證各改進措施的效果及本文所提改進算法的有效性,本文實驗在相同實驗環境及參數設定下設置了原YOLOv8s網絡組(稱作V8-0)和3組消融實驗組:1)引入C2f-Triplet模塊;2)引入C2f-Triplet模塊和CARAFE上采樣算子;3)引入C2f-Triplet模塊和CARAFE上采樣算子,并將CIoU回歸損失函數替換為SIoU損失函數。為方便描述,將以上3組消融實驗組依次稱作V8-1、V8-2和V8-3。實驗結果如表2所示。

表2 消融實驗結果Table 2 Results of ablation experiments

由表2可知,引入C2f-Triplet模塊后的算法(V8-1)與原YOLOv8s算法(V8-0)對比,精確率提高0.4百分點,平均精度均值提高1.4百分點,參數量基本保持不變,證明引入C2f-Triplet模塊可以在基本不增加網絡模型參數量的條件下提升算法的精度。同時引入C2f-Triplet模塊和CARAFE上采樣算子后的算法(V8-2)與原YOLOv8s算法(V8-0)對比,精確率提高1.1百分點,平均精度均值提高1.9百分點,參數量增加5×105個,證明在引入C2f-Triplet模塊的基礎上引入CARAFE上采樣算子后可以進一步提升算法的精度,但會略微增加網絡模型的參數量。同時引入C2f-Triplet模塊、CARAFE上采樣算子和SIoU損失函數后的算法(V8-3)與原YOLOv8s算法(V8-0)對比,精確率提高1.6百分點,平均精度均值提高2.2百分點,參數量增加5×105個,證明在引入C2f-Triplet模塊和CARAFE上采樣算子的基礎上引入SIoU損失函數可以更進一步提升算法精度,同時不會增加網絡模型參數量。綜上所述,驗證了本文各改進措施的有效性以及本文改進算法的有效性。

圖4展示了算法改進前后6種不同類型缺陷和所有類型的精確率-召回率曲線。精確率-召回率曲線與坐標軸圍成的面積即為該類型的平均精度;平均精度均值是指交并比閾值為0.5時,所有類型的平均精度均值。

圖4 YOLOv8s算法改進前后精確率-召回率曲線對比Fig.4 Comparison of precision-recall curves before and after improvement of YOLOv8s algorithm

由圖4可知,YOLOv8s算法改進后,除雜質類缺陷外,其余5類缺陷的曲線與坐標軸圍成的面積均有增加,其中裂紋類、點蝕表面類和軋制氧化皮類較為明顯。YOLOv8s算法改進前后各類型缺陷平均精度具體數值如表3所示。

表3 YOLOv8s算法改進前后各類型缺陷平均精度Table 3 Average precision of various types of defects before and after improvement of YOLOv8s algorithm %

由表3可知,裂紋類缺陷平均精度提升了5.7百分點,雜質類缺陷平均精度基本保持不變,斑塊類缺陷平均精度提升了1.1百分點,點蝕表面類缺陷平均精度提升了2.4百分點,軋制氧化皮類缺陷平均精度提升了4.4百分點,劃痕類缺陷平均精度提升了0.3百分點。本文改進YOLOv8s算法可以有效提升各類型缺陷的檢測平均精度,其中裂紋、點蝕表面和軋制氧化皮缺陷提升效果較為明顯。

圖5為YOLOv8s算法改進前后檢測效果對比。圖5(a)為對數據集中原始缺陷圖片進行標注之后得到的圖片,圖5(b)為使用原始YOLOv8s算法檢測得到的結果,圖5(c)為使用本文改進YOLOv8s算法檢測得到的結果。其中標識框上方標示著缺陷種類及該類別的置信度。本文僅選用上述效果提升較為明顯的裂紋類、點蝕表面類和軋制氧化皮類等3類缺陷進行對比。

圖5 YOLOv8s算法改進前后檢測效果對比Fig.5 Comparison of detection effects before and after improvement of YOLOv8s algorithm

由圖5可知,使用原YOLOv8s算法進行檢測,雖然可以準確地判斷缺陷的類別,但類別置信度普遍偏低,存在漏檢現象。使用改進后的YOLOv8s算法進行檢測,類別置信度有了明顯提高,檢測缺陷更加全面準確,可以檢測出原YOLOv8s算法未檢測出的軋制氧化皮類缺陷,驗證了本文改進YOLOv8s算法的有效性。

為了比較本文改進算法與其他算法的效果,本文在相同的實驗環境和參數設定下使用不同算法對同一數據集進行對比實驗,實驗結果如表4所示。

表4 對比實驗結果Table 4 Comparison of experimental results

由表4可知,本文改進YOLOv8s算法的精確率和平均精度均值最高,相對于Faster R-CNN算法,精確率提高了21.4百分點,平均精度均值提高了0.1百分點;相對于YOLOv5s算法,精確率提高了10.5百分點,平均精度均值提高了3.6百分點;相對于YOLOv7算法,精確率提高了6.2百分點,平均精度均值提高了1.3百分點;相對于YOLOv8s算法,精確率提高了1.6百分點,平均精度均值提高了2.2百分點。在參數量方面,本文改進的YOLOv8s算法處于較低水平,相對于Faster R-CNN算法,參數量減少3.09×107個;相對于參數量最低的YOLOv5s算法,參數量增加4.6×106個;相對于YOLOv7算法,參數量減少2.56×107個;相對于YOLOv8s算法,參數量增加5×105個。綜上所述,本文改進的YOLOv8s算法在增加極少量參數的前提下,保證了更優的檢測精度,與其它主流算法相比可以更好地完成鋼材表面缺陷檢測任務。

3 結束語

為進一步提升鋼材表面缺陷檢測精度,本文提出了基于改進YOLOv8s的鋼材表面缺陷檢測算法。在YOLOv8s的基礎上,將主干網絡和頸部網絡中的部分C2f模塊替換為C2f-Triplet模塊,將頸部網絡中的最近鄰上采樣模塊替換為CARAFE上采樣算子,將原YOLOv8s的CIoU回歸損失函數替換為SIoU損失函數。與原YOLOv8s算法相比,改進后的YOLOv8s算法在參數量僅增加5×105個的前提下精確率提高1.6百分點,平均精度均值提高2.2百分點。雖然本文提出的改進YOLOv8s鋼材表面缺陷檢測算法融合了更多維度的特征信息,使得算法可以在增加極少量參數的前提下提升各類缺陷的精度,但是對于裂紋類缺陷仍有提升的空間。所以,后續工作將針對裂紋類缺陷的特征提出相應的改進措施,進一步提升算法精度。

猜你喜歡
鋼材損失維度
承壓設備用鋼材使用焊接性探討
胖胖損失了多少元
鋼材集中采購管理思考探究
淺論詩中“史”識的四個維度
玉米抽穗前倒伏怎么辦?怎么減少損失?
光的維度
“五個維度”解有機化學推斷題
鋼材分類標號(一)
一般自由碰撞的最大動能損失
損失
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合