張文鎧,劉佳
(北京信息科技大學(xué) 自動(dòng)化學(xué)院,北京 100192)
鋼材在生產(chǎn)和加工過程中會(huì)受到環(huán)境中各種因素的影響,導(dǎo)致表面出現(xiàn)裂紋、斑塊和劃痕等各類缺陷,必須對其表面進(jìn)行缺陷檢測。
近年來,目標(biāo)檢測算法快速發(fā)展,逐漸從傳統(tǒng)的目標(biāo)檢測轉(zhuǎn)向基于深度學(xué)習(xí)的目標(biāo)檢測。基于深度學(xué)習(xí)的目標(biāo)檢測算法大致可分為兩大類:兩階段檢測和一階段檢測。兩階段檢測算法的代表主要是基于區(qū)域的卷積神經(jīng)網(wǎng)絡(luò)(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]系列算法。目前已有許多研究將深度學(xué)習(xí)目標(biāo)檢測算法應(yīng)用在鋼材表面缺陷檢測領(lǐng)域,如游青華[6]提出的基于深度學(xué)習(xí)的鋼材表面缺陷檢測方法,閻馨等[7]提出的基于改進(jìn)SSD的鋼材表面缺陷檢測,Wang等[8]提出的基于改進(jìn)YOLOv5算法的多尺度鋼材表面缺陷檢測。上述方法雖然在一定程度上提高了算法的性能,但在精度和參數(shù)量方面仍有不足之處。
由Ultralytics于2023年1月發(fā)布的YOLOv8模型,是目前YOLO系列最先進(jìn)的目標(biāo)檢測模型,其在之前版本基礎(chǔ)上,引入了一個(gè)新的主干網(wǎng)絡(luò)、一個(gè)新的無錨(Anchor-Free)檢測頭和一個(gè)新的損失函數(shù),進(jìn)一步提升了模型的性能。為了保證鋼材表面缺陷檢測算法的先進(jìn)性,本文在YOLOv8s算法的基礎(chǔ)上做了相關(guān)改進(jìn)。相比于目前主流的鋼材表面缺陷檢測算法,改進(jìn)后的YOLOv8s鋼材表面缺陷檢測算法可以更加準(zhǔn)確地檢測出鋼材表面缺陷的類別和位置,且模型參數(shù)量相對較小,便于在移動(dòng)端部署。
為進(jìn)一步提升鋼材表面缺陷檢測算法的精度,本文在YOLOv8s算法的基礎(chǔ)上進(jìn)行改進(jìn),主要改進(jìn)3個(gè)方面:1)為了使模型關(guān)注更多維度的特征信息,將原主干網(wǎng)絡(luò)第4、6、8層的C2f模塊和原頸部網(wǎng)絡(luò)第15、18層的C2f模塊替換為C2f-Triplet模塊;2)為了使模型在更大的感知區(qū)域內(nèi)聚合上下文信息,將原頸部網(wǎng)絡(luò)第10、13層的最近鄰上采樣模塊替換為內(nèi)容感知特征重組(content-aware reassembly of features,CARAFE)模塊;3)為了提高模型收斂速度和回歸精度,將原YOLOv8s的CIoU回歸損失函數(shù)替換為SIoU損失函數(shù)。
YOLOv8s網(wǎng)絡(luò)結(jié)構(gòu)中包含大量C2f模塊,其主要功能是學(xué)習(xí)殘差特征。因此,網(wǎng)絡(luò)性能的優(yōu)劣與C2f模塊特征學(xué)習(xí)的情況密切相關(guān)。由于鋼材表面缺陷在形態(tài)、位置、大小上差異較大,特別是裂紋類缺陷、點(diǎn)蝕表面類缺陷和軋制氧化皮類缺陷,同類缺陷形狀和大小不一,且分布范圍較廣,原有的C2f模塊對鋼材表面缺陷的特征提取能力仍不足,缺少多維度的特征信息。所以,本文為進(jìn)一步增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力,融合多維度的特征信息,設(shè)計(jì)了一個(gè)全新的模塊——C2f-Triplet模塊。C2f-Triplet結(jié)構(gòu)將原C2f模塊中所有的Bottleneck模塊均替換為Triplet-Bottleneck模塊。Triplet-Bottleneck模塊在原Bottleneck模塊的基礎(chǔ)上在2個(gè)卷積層后增加Triplet注意力機(jī)制,使其擁有更強(qiáng)的特征提取和特征融合能力。
Triplet注意力機(jī)制使用三分支結(jié)構(gòu)捕捉交叉維度交互來計(jì)算鋼材表面缺陷的注意力權(quán)重,通過旋轉(zhuǎn)操作和殘差變換來建立維度間依賴關(guān)系,可以有效實(shí)現(xiàn)鋼材表面缺陷特征信息的跨維度融合,并且這種注意力機(jī)制幾乎是無參的。
Triplet注意力機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該注意力機(jī)制由3個(gè)分支組成。當(dāng)輸入特征圖大小為C(通道維度)×H(高度維度)×W(寬度維度)時(shí),3個(gè)分支具體實(shí)現(xiàn)[9]如下:
1)第一個(gè)分支是對鋼材表面缺陷通道維度C和高度維度H之間的特征信息進(jìn)行交互。首先經(jīng)過Permute函數(shù)將輸入特征圖沿H軸逆時(shí)針旋轉(zhuǎn)90°,得到W×H×C的特征圖,接著通過Z池化(Z-Pool)層在W維度上進(jìn)行最大池化操作和平均池化操作,將特征圖縮減為2×H×C大小,然后經(jīng)過卷積(Conv)核大小為7×7的卷積層得到1×H×C的特征圖,再經(jīng)過批歸一化(Batch Norm)層和Sigmoid激活層生成相應(yīng)的注意力權(quán)重,最后將注意力權(quán)重乘回W×H×C特征圖,并經(jīng)過Permute沿H軸順時(shí)針旋轉(zhuǎn)90°,使其與輸入特征圖保持相同的形狀,得到C×H×W的特征圖。
2)第二個(gè)分支是對鋼材表面缺陷通道維度C和寬度維度W之間的特征信息進(jìn)行交互。首先經(jīng)過Permute將輸入特征圖沿W軸逆時(shí)針旋轉(zhuǎn)90°,得到H×C×W的特征圖,接著通過Z-Pool在H維度上進(jìn)行最大池化操作和平均池化操作,將特征圖縮減為2×C×W大小,然后進(jìn)行與第一個(gè)分支相同的操作,最終得到C×H×W的特征圖。
3)第三個(gè)分支是對鋼材表面缺陷的空間注意力權(quán)重進(jìn)行計(jì)算。輸入特征圖首先經(jīng)過通道池化(Channel Pool)得到2×H×W的特征圖,然后經(jīng)過卷積核大小為7×7的卷積層得到1×H×W的特征圖,再經(jīng)過批歸一化層和Sigmoid激活層生成相應(yīng)的注意力權(quán)重,最后將注意力權(quán)重乘回原始特征圖,得到C×H×W的特征圖。
最后對3個(gè)分支輸出的C×H×W維度特征進(jìn)行相加求平均值。
圖1 Triplet注意力機(jī)制網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Triplet attention mechanism network structure
YOLOv8s的上采樣操作采用最近鄰插值法,這種方法僅通過像素的空間位置來確定上采樣內(nèi)核,沒有利用特征圖的語義信息,感知域較小,特別是針對鋼材表面缺陷這種范圍較廣且形態(tài)各異的特征,極易造成特征信息的丟失。而CARAFE上采樣算子具有較大的感受野,可以在大的感知區(qū)域內(nèi)聚合上下文信息,并且可以根據(jù)鋼材表面缺陷特征圖的語義信息生成自適應(yīng)上采樣核,有效避免特征信息的丟失,同時(shí)引入的計(jì)算開銷很小,可以很容易融入網(wǎng)絡(luò)架構(gòu)中。因此,本文選用CARAFE上采樣算子代替原有YOLOv8s中的最近鄰插值上采樣。
CARAFE上采樣算子網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。輸入特征圖X大小為H×W×C時(shí),設(shè)定上采樣倍率為σ,首先通過上采樣核預(yù)測部分對上采樣核進(jìn)行預(yù)測,然后通過特征重組部分進(jìn)行特征重組完成上采樣,最終得到大小為σH×σW×C的新特征圖X′[10]。
在上采樣核預(yù)測部分,首先對通過通道壓縮后大小為H×W×Cm的輸入特征圖進(jìn)行內(nèi)容編碼,將通道數(shù)從Cm變?yōu)棣?×k2;然后將通道在空間維度上展開,得到形如σH×σW×k2的上采樣核;最后對得到的上采樣核通過Softmax函數(shù)進(jìn)行核歸一化,使卷積核的權(quán)重和為1,得到輸出特征圖T。
在特征重組部分,首先將輸出特征圖T進(jìn)行空間維度展開,然后將輸出特征圖中的每個(gè)位置映射回輸入特征圖X中,取以其為中心的k×k的原特征圖區(qū)域與該點(diǎn)的預(yù)測上采樣核進(jìn)行點(diǎn)積操作,相同位置的不同通道共享同一個(gè)上采樣核,最終得到σH×σW×C的新特征圖[11]。其中,X′的任意目標(biāo)位置l′=(i′,j′),在X上都有源位置l=(i,j)與之相對應(yīng),N(Xl,k)為以位置l為中心的k×k大小的子區(qū)域,Wl′為上采樣核預(yù)測部分預(yù)測的重組核。
YOLOv8s的回歸損失函數(shù)采用了CIoU損失函數(shù)。CIoU損失函數(shù)考慮了3個(gè)幾何因素:重疊面積、中心點(diǎn)距離和長寬比。相比于之前的損失函數(shù),雖然CIoU損失函數(shù)考慮的因素更加全面,但卻沒有考慮真實(shí)框與預(yù)測框之間方向不匹配的問題,使得模型在訓(xùn)練的過程中會(huì)出現(xiàn)預(yù)測框“四處游蕩”的情況,從而導(dǎo)致收斂速度較慢且效率較低。
2022年,Gevorgyan[12]提出了一種新的目標(biāo)檢測損失函數(shù)——SIoU損失函數(shù)。這種損失函數(shù)考慮了回歸之間的向量角度,重新定義了懲罰指標(biāo),解決了上述問題。與CIoU損失函數(shù)相比,SIoU損失函數(shù)收斂速度更快,準(zhǔn)確性更高,因此,本文引入SIoU損失函數(shù)作為回歸損失函數(shù)。SIoU損失函數(shù)由角度損失、距離損失、形狀損失和IoU損失4個(gè)部分組成。
角度損失Λ定義如式(1)所示。增加這種角度感知組件可以最大限度地減少與距離相關(guān)的變量數(shù)量。
(1)
根據(jù)角度損失Λ重新定義了距離損失Δ。距離損失Δ與真實(shí)框和預(yù)測框的最小外接矩形有關(guān),其定義如式(2)所示。
(2)
式中:ρx、ρy為真實(shí)框與預(yù)測框之間位置的偏離程度;rw、rh為真實(shí)框與預(yù)測框最小外接矩形的寬和高;γ為被賦予時(shí)間優(yōu)先的距離值,與角度損失Λ有關(guān)。
形狀損失Ω定義如式(3)所示。
(3)
式中:θ為形狀損失的關(guān)注程度;ww、wh為預(yù)測框與真實(shí)框之間寬和高的拉伸程度;w、h為預(yù)測框的寬和高;wgt、hgt為真實(shí)框的寬和高。
IoU損失定義如式(4)所示。
(4)
式中:A表示預(yù)測框;B表示真實(shí)框。
最后SIoU損失函數(shù)LSIoU定義如式(5)所示。
(5)
本文實(shí)驗(yàn)數(shù)據(jù)集采用東北大學(xué)鋼材表面缺陷數(shù)據(jù)集(NEU-DET)。該數(shù)據(jù)集收集了熱軋鋼帶裂紋、雜質(zhì)、斑塊、點(diǎn)蝕表面、軋制氧化皮、劃痕等6種常見缺陷,每種缺陷300張圖片,共計(jì)1 800張圖片。每種缺陷的典型樣本如圖3所示。
圖3 NEU-DET數(shù)據(jù)集每種類型缺陷典型樣本Fig.3 Typical samples of each defect type in the NEU-DET dataset
裂紋的形狀較為復(fù)雜,多呈現(xiàn)為局部連續(xù)的樹枝狀向外發(fā)散,并具有一定的深度,周邊一般伴隨著嚴(yán)重的脫碳現(xiàn)象。裂紋產(chǎn)生通常是由應(yīng)力造成,初生坯殼厚度不均勻以及坯殼內(nèi)外溫度不均勻都會(huì)造成應(yīng)力超過坯殼抗拉強(qiáng)度,進(jìn)而產(chǎn)生裂紋。雜質(zhì)通常表現(xiàn)為不規(guī)則點(diǎn)狀、塊狀或長條狀的非金屬夾雜物,顏色一般呈現(xiàn)為棕紅色、黃褐色、灰白色或灰黑色。雜質(zhì)產(chǎn)生的原因主要是板坯原有表面和皮下夾雜或加熱過程中耐火材料及煤灰、煤渣等非金屬物落在板坯表面,軋制時(shí)壓入板面。斑塊是指在鋼材表面呈現(xiàn)塊狀或條片狀的不規(guī)則斑跡,顏色多為黃色或黑色,一般是由于加熱過程中混入細(xì)小的氧化鐵皮,或冷卻過程中冷卻液不夠均勻穩(wěn)定所致。點(diǎn)蝕表面是指在鋼材表面呈現(xiàn)連續(xù)或局部的凹凸不平粗糙面,主要是由于軋輥和軋槽磨損、銹蝕或粘上破碎的氧化鐵所造成的。軋制氧化皮一般內(nèi)嵌在鋼板表面,深淺不一且形狀各異,多為棕紅色或黑色。軋制氧化皮產(chǎn)生的原因一般是操作不當(dāng)或設(shè)置不合理導(dǎo)致氧化鐵皮未除盡,軋制時(shí)壓入鋼材表面。劃痕通常表現(xiàn)為明亮的細(xì)直線條,連續(xù)或斷續(xù)地分布于鋼材的局部和全長,主要是由鋼材與機(jī)械零件產(chǎn)生非正常摩擦或運(yùn)輸過程中各種人為因素所致。
本文實(shí)驗(yàn)數(shù)據(jù)集中的圖片均通過LabelImg軟件進(jìn)行標(biāo)注,分別將圖片中的裂紋、雜質(zhì)、斑塊、點(diǎn)蝕表面、軋制氧化皮和劃痕標(biāo)注為crazing、inclusion、patches、pitted_surface、rolled-in_scale和scratches。本文實(shí)驗(yàn)將1 800張鋼材表面缺陷圖片按照8∶1∶1的比例劃分為訓(xùn)練集、測試集和驗(yàn)證集。訓(xùn)練集1 440張,每類缺陷各240張;測試集180張,每類缺陷各30張;驗(yàn)證集180張,每類缺陷各30張。
本文實(shí)驗(yàn)環(huán)境如表1所示。訓(xùn)練過程中,設(shè)置初始學(xué)習(xí)率為0.01,動(dòng)量為0.937,權(quán)重衰減系數(shù)為0.000 5,批樣本大小為8,訓(xùn)練輪數(shù)為100,輸入圖像尺寸為640×640。
表1 實(shí)驗(yàn)環(huán)境Table 1 Experimental environment
本實(shí)驗(yàn)采用精確率、平均精度均值和參數(shù)量作為主要評價(jià)指標(biāo),同時(shí)還參考平均精度和召回率。
為驗(yàn)證各改進(jìn)措施的效果及本文所提改進(jìn)算法的有效性,本文實(shí)驗(yàn)在相同實(shí)驗(yàn)環(huán)境及參數(shù)設(shè)定下設(shè)置了原YOLOv8s網(wǎng)絡(luò)組(稱作V8-0)和3組消融實(shí)驗(yàn)組:1)引入C2f-Triplet模塊;2)引入C2f-Triplet模塊和CARAFE上采樣算子;3)引入C2f-Triplet模塊和CARAFE上采樣算子,并將CIoU回歸損失函數(shù)替換為SIoU損失函數(shù)。為方便描述,將以上3組消融實(shí)驗(yàn)組依次稱作V8-1、V8-2和V8-3。實(shí)驗(yàn)結(jié)果如表2所示。
表2 消融實(shí)驗(yàn)結(jié)果Table 2 Results of ablation experiments
由表2可知,引入C2f-Triplet模塊后的算法(V8-1)與原YOLOv8s算法(V8-0)對比,精確率提高0.4百分點(diǎn),平均精度均值提高1.4百分點(diǎn),參數(shù)量基本保持不變,證明引入C2f-Triplet模塊可以在基本不增加網(wǎng)絡(luò)模型參數(shù)量的條件下提升算法的精度。同時(shí)引入C2f-Triplet模塊和CARAFE上采樣算子后的算法(V8-2)與原YOLOv8s算法(V8-0)對比,精確率提高1.1百分點(diǎn),平均精度均值提高1.9百分點(diǎn),參數(shù)量增加5×105個(gè),證明在引入C2f-Triplet模塊的基礎(chǔ)上引入CARAFE上采樣算子后可以進(jìn)一步提升算法的精度,但會(huì)略微增加網(wǎng)絡(luò)模型的參數(shù)量。同時(shí)引入C2f-Triplet模塊、CARAFE上采樣算子和SIoU損失函數(shù)后的算法(V8-3)與原YOLOv8s算法(V8-0)對比,精確率提高1.6百分點(diǎn),平均精度均值提高2.2百分點(diǎn),參數(shù)量增加5×105個(gè),證明在引入C2f-Triplet模塊和CARAFE上采樣算子的基礎(chǔ)上引入SIoU損失函數(shù)可以更進(jìn)一步提升算法精度,同時(shí)不會(huì)增加網(wǎng)絡(luò)模型參數(shù)量。綜上所述,驗(yàn)證了本文各改進(jìn)措施的有效性以及本文改進(jìn)算法的有效性。
圖4展示了算法改進(jìn)前后6種不同類型缺陷和所有類型的精確率-召回率曲線。精確率-召回率曲線與坐標(biāo)軸圍成的面積即為該類型的平均精度;平均精度均值是指交并比閾值為0.5時(shí),所有類型的平均精度均值。
圖4 YOLOv8s算法改進(jìn)前后精確率-召回率曲線對比Fig.4 Comparison of precision-recall curves before and after improvement of YOLOv8s algorithm
由圖4可知,YOLOv8s算法改進(jìn)后,除雜質(zhì)類缺陷外,其余5類缺陷的曲線與坐標(biāo)軸圍成的面積均有增加,其中裂紋類、點(diǎn)蝕表面類和軋制氧化皮類較為明顯。YOLOv8s算法改進(jìn)前后各類型缺陷平均精度具體數(shù)值如表3所示。
表3 YOLOv8s算法改進(jìn)前后各類型缺陷平均精度Table 3 Average precision of various types of defects before and after improvement of YOLOv8s algorithm %
由表3可知,裂紋類缺陷平均精度提升了5.7百分點(diǎn),雜質(zhì)類缺陷平均精度基本保持不變,斑塊類缺陷平均精度提升了1.1百分點(diǎn),點(diǎn)蝕表面類缺陷平均精度提升了2.4百分點(diǎn),軋制氧化皮類缺陷平均精度提升了4.4百分點(diǎn),劃痕類缺陷平均精度提升了0.3百分點(diǎn)。本文改進(jìn)YOLOv8s算法可以有效提升各類型缺陷的檢測平均精度,其中裂紋、點(diǎn)蝕表面和軋制氧化皮缺陷提升效果較為明顯。
圖5為YOLOv8s算法改進(jìn)前后檢測效果對比。圖5(a)為對數(shù)據(jù)集中原始缺陷圖片進(jìn)行標(biāo)注之后得到的圖片,圖5(b)為使用原始YOLOv8s算法檢測得到的結(jié)果,圖5(c)為使用本文改進(jìn)YOLOv8s算法檢測得到的結(jié)果。其中標(biāo)識框上方標(biāo)示著缺陷種類及該類別的置信度。本文僅選用上述效果提升較為明顯的裂紋類、點(diǎn)蝕表面類和軋制氧化皮類等3類缺陷進(jìn)行對比。
圖5 YOLOv8s算法改進(jìn)前后檢測效果對比Fig.5 Comparison of detection effects before and after improvement of YOLOv8s algorithm
由圖5可知,使用原YOLOv8s算法進(jìn)行檢測,雖然可以準(zhǔn)確地判斷缺陷的類別,但類別置信度普遍偏低,存在漏檢現(xiàn)象。使用改進(jìn)后的YOLOv8s算法進(jìn)行檢測,類別置信度有了明顯提高,檢測缺陷更加全面準(zhǔn)確,可以檢測出原YOLOv8s算法未檢測出的軋制氧化皮類缺陷,驗(yàn)證了本文改進(jìn)YOLOv8s算法的有效性。
為了比較本文改進(jìn)算法與其他算法的效果,本文在相同的實(shí)驗(yàn)環(huán)境和參數(shù)設(shè)定下使用不同算法對同一數(shù)據(jù)集進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表4所示。
表4 對比實(shí)驗(yàn)結(jié)果Table 4 Comparison of experimental results
由表4可知,本文改進(jìn)YOLOv8s算法的精確率和平均精度均值最高,相對于Faster R-CNN算法,精確率提高了21.4百分點(diǎn),平均精度均值提高了0.1百分點(diǎn);相對于YOLOv5s算法,精確率提高了10.5百分點(diǎn),平均精度均值提高了3.6百分點(diǎn);相對于YOLOv7算法,精確率提高了6.2百分點(diǎn),平均精度均值提高了1.3百分點(diǎn);相對于YOLOv8s算法,精確率提高了1.6百分點(diǎn),平均精度均值提高了2.2百分點(diǎn)。在參數(shù)量方面,本文改進(jìn)的YOLOv8s算法處于較低水平,相對于Faster R-CNN算法,參數(shù)量減少3.09×107個(gè);相對于參數(shù)量最低的YOLOv5s算法,參數(shù)量增加4.6×106個(gè);相對于YOLOv7算法,參數(shù)量減少2.56×107個(gè);相對于YOLOv8s算法,參數(shù)量增加5×105個(gè)。綜上所述,本文改進(jìn)的YOLOv8s算法在增加極少量參數(shù)的前提下,保證了更優(yōu)的檢測精度,與其它主流算法相比可以更好地完成鋼材表面缺陷檢測任務(wù)。
為進(jìn)一步提升鋼材表面缺陷檢測精度,本文提出了基于改進(jìn)YOLOv8s的鋼材表面缺陷檢測算法。在YOLOv8s的基礎(chǔ)上,將主干網(wǎng)絡(luò)和頸部網(wǎng)絡(luò)中的部分C2f模塊替換為C2f-Triplet模塊,將頸部網(wǎng)絡(luò)中的最近鄰上采樣模塊替換為CARAFE上采樣算子,將原YOLOv8s的CIoU回歸損失函數(shù)替換為SIoU損失函數(shù)。與原YOLOv8s算法相比,改進(jìn)后的YOLOv8s算法在參數(shù)量僅增加5×105個(gè)的前提下精確率提高1.6百分點(diǎn),平均精度均值提高2.2百分點(diǎn)。雖然本文提出的改進(jìn)YOLOv8s鋼材表面缺陷檢測算法融合了更多維度的特征信息,使得算法可以在增加極少量參數(shù)的前提下提升各類缺陷的精度,但是對于裂紋類缺陷仍有提升的空間。所以,后續(xù)工作將針對裂紋類缺陷的特征提出相應(yīng)的改進(jìn)措施,進(jìn)一步提升算法精度。