魏明軍,陳釗,紀(jì)占林,周太宇,閆旭文,劉銘
(華北理工大學(xué) a.人工智能學(xué)院;b.河北省工業(yè)智能感知重點(diǎn)實(shí)驗(yàn)室,河北 唐山 063210)
鋼材表面缺陷檢測經(jīng)歷了人工檢測、傳統(tǒng)光電檢測和機(jī)器視覺檢測3個主要發(fā)展階段[1-2].從20世紀(jì)60年代以來,機(jī)器視覺技術(shù)的出現(xiàn)使得工業(yè)上的缺陷檢測有了質(zhì)的提升.與國外相比,國內(nèi)對于缺陷識別的研究起步較晚.1991年華中理工大學(xué)的羅志勇[3]將線列CCD用于檢測鋼板的孔洞缺陷.1996年,又再次研究出由許多面陣CCD和DSP、PC機(jī)相結(jié)合組成的一套新的圖像檢測系統(tǒng)[4],實(shí)現(xiàn)了對冷軋帶鋼表面缺陷進(jìn)行檢測.2011年,楊永敏等[5]研究了基于機(jī)器視覺的冷軋帶鋼表面缺陷檢測系統(tǒng).2022年,布申申等[6]提出一種用于帶鋼表面缺陷檢測的深度神經(jīng)網(wǎng)絡(luò)模型Ds-DenseNet,該模型主要解決現(xiàn)有帶鋼表面缺陷檢測方法準(zhǔn)確率低、特征泛化性不強(qiáng)、參數(shù)多、識別速度慢等問題.但其缺點(diǎn)是只針對以前無花的普通帶鋼進(jìn)行檢測,對于具有鋅花紋理的新型鍍層鋼板無專門的訓(xùn)練檢測.在檢測過程中鋅花會對產(chǎn)品表面缺陷的檢測造成干擾,從而使檢測的精度受一定影響.目前,國內(nèi)未見公開發(fā)表的針對鋅花背景干擾下帶鋼表面缺陷檢測的研究成果,本文針對某鋼廠鍍鋅生產(chǎn)線采集的真實(shí)缺陷圖譜展開研究,通過STI-YOLO模型抑制鋅花背景的干擾,同時增大預(yù)測特征圖的感受野,從而提高檢測精度,改善漏檢.
YOLOv5算法與之前的YOLO系列算法[7-9]相比較,仍由主干特征提取網(wǎng)絡(luò)、特征融合網(wǎng)絡(luò)和回歸預(yù)測三部分組成,主干特征提取網(wǎng)絡(luò)使用的是CSP-Darknet53[10]網(wǎng)絡(luò),不同的是加入了Focus網(wǎng)絡(luò)結(jié)構(gòu),使輸入的通道數(shù)快速擴(kuò)張4倍,并且將空間金字塔池化結(jié)構(gòu)(Spatial Pyramid Pooling,SPP)加入到主干特征提取網(wǎng)絡(luò)中,增大感受野的尺寸.在特征融合網(wǎng)絡(luò)結(jié)構(gòu)部分,依然采用了路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PANet),達(dá)到了提取上下文特征的目的.PANet網(wǎng)絡(luò)結(jié)構(gòu)通過自下而上的路徑縮短了底層和最頂層之間的信息路徑,避免信息丟失問題,同時融合后的特征圖既包含底層位置信息也包含較強(qiáng)的語義特征.YOLOv5總共包含s、m、l、x 4個算法模型,YOLOv5s網(wǎng)絡(luò)最小,速度最快,平均精度也最低.其他的3種網(wǎng)絡(luò),在s基礎(chǔ)上,不斷加深加寬網(wǎng)絡(luò),平均精度也不斷提升,但速度的消耗也在不斷增加.本文以YOLOv5s算法為基礎(chǔ),在特征圖輸入到特征融合網(wǎng)絡(luò)PANet之前先引入通道注意力機(jī)制(Squeeze-and-Excitation Network,SENet)[11],抑制鋅花背景的干擾,提高有效特征的利用率,濾除冗余的鋅花背景信息.再將進(jìn)行特征融合之后的3個不同尺度的特征圖輸入到金字塔卷積(Pyramidal Convolution,PyConv)[12]網(wǎng)絡(luò)中,提取更加豐富的缺陷信息,使得用于預(yù)測的特征圖具有更好的魯棒性.
STI-YOLO模型的輸入是分辨率為640×640的圖片,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
算法執(zhí)行的具體步驟如下:
1)輸入尺寸大小為640×640、通道數(shù)為3的圖片.經(jīng)過Focus網(wǎng)絡(luò)結(jié)構(gòu),將輸入通道擴(kuò)充了4倍;
2)經(jīng)過DarknetCon2D_BN_SiLU模塊通道擴(kuò)充為64;
3)經(jīng)過4個Resblock body模塊,提取到低層、中層和高層特征圖,其尺度大小分別為80×80、40×40和20×20;
4)將主干特征網(wǎng)絡(luò)提取到大小20×20、40×40和80×80的特征圖分別輸入到SENet網(wǎng)絡(luò)中抑制鋅花背景的干擾;
5)利用PANet進(jìn)行特征融合,獲得3個不同尺度的特征圖.然后將上采樣和下采樣產(chǎn)生的新特征圖利用橫向連接進(jìn)行Concat連接;
6)對生成的新特征圖輸入到金字塔卷積網(wǎng)絡(luò)中,進(jìn)行多尺度特征處理,產(chǎn)生更豐富的特征信息,增加預(yù)測特征圖的魯棒性;
7)生成的特征圖輸入到Y(jié)OLO Head中進(jìn)行預(yù)測;
8)生成預(yù)測框.
在深度卷積神經(jīng)網(wǎng)絡(luò)中,高層特征圖包含更多有利于目標(biāo)分類的強(qiáng)語義信息,但分辨率低,位置信息粗糙.低層特征圖包含更多有利于目標(biāo)定位的位置信息和輪廓細(xì)節(jié),但其分辨率高,語義信息弱.YOLOv5s算法使用PANet進(jìn)行加強(qiáng)特征融合,在主干網(wǎng)絡(luò)提取的特征圖里包含了部分鋅花背景干擾造成的冗余特征.為了解決這一問題,抑制鋅花背景對缺陷檢測的干擾,引入SENet.如圖2所示,具體操作是將主干特征網(wǎng)絡(luò)提取的特征圖輸入到SENet中突出重要特征,減少鋅花背景的干擾.從而有利于PANet得到更有效的特征,提高缺陷識別的準(zhǔn)確率.并在預(yù)測之前加入金字塔卷積,從而使得增加感受野的同時獲取更豐富的上下文特征.
1.2.1SENet模塊
SENet通過對通道關(guān)系進(jìn)行建模從而提升網(wǎng)絡(luò)性能,主要包括Squeeze(壓縮)和Excitation(激發(fā))兩個關(guān)鍵操作.模型通過學(xué)習(xí)自動獲取每個通道的重要程度,然后根據(jù)每個通道的重要程度提升有用特征的權(quán)重并抑制對當(dāng)前任務(wù)有干擾的冗余特征.
如圖3所示:輸入通道數(shù)為c1的特征x,通過一系列卷積操作(Ftr)將特征通道數(shù)變?yōu)閏2.然后再進(jìn)行壓縮(Fsq)操作和激發(fā)(Fex)操作.
SENet通過網(wǎng)絡(luò)學(xué)習(xí)特征權(quán)重,獲取到每個特征圖的重要程度,然后按照重要程度對每個特征通道賦予一個權(quán)重值,對任務(wù)重要的特征圖賦予較大的權(quán)重,對不重要的特征圖賦予較小的權(quán)重,從而使模型達(dá)到更好的訓(xùn)練效果.SENet的結(jié)構(gòu)如圖4所示.圖4中表示輸入一個大小為H×W×C的特征圖,共C個通道數(shù).然后進(jìn)行一次空間的全局平均池化,每個通道得到一個標(biāo)量,輸出為1×1×C,然后再送入兩層的全連接神經(jīng)網(wǎng)絡(luò),同時保持特征圖大小不變,然后再通過一個Sigmoid函數(shù)得到C個0~1之間格式為1×1×C的權(quán)重,作為C個通道各自的權(quán)重,然后將對應(yīng)通道的每個元素與權(quán)重分別相乘.其中H代表特征圖的高,W代表特征圖的寬,r表示降維系數(shù).
1.2.2PyConv模塊
PyConv中包含不同大小和深度的卷積核,以此捕捉不同尺度的細(xì)節(jié)信息.原PANet網(wǎng)絡(luò)中的下采樣操作會造成輸入特征圖的信息損失,影響模型性能.而使用PyConv模塊可以在不增加額外計算量的同時擴(kuò)大感受野,通過采用不同尺寸的卷積核捕獲多尺度的細(xì)節(jié)信息.
如圖5所示,金字塔卷積網(wǎng)絡(luò)包含一個具有n個不同大小卷積核的金字塔網(wǎng)絡(luò)結(jié)構(gòu).在不增加計算成本或模型復(fù)雜性的情況下,以不同的卷積核大小處理輸入.每個卷積核都包含不同的空間大小,從金字塔的底部到頂部卷積核大小逐漸增加,隨著卷積核大小從1到n逐漸增加,卷積核的深度從n到1逐漸降低,形成互為反向鏈接的金字塔結(jié)構(gòu).
通過分組卷積,對每個級別使用不同深度的卷積核.如圖6所示,輸入8個特征圖,(a)為標(biāo)準(zhǔn)卷積,(b)和(c)分別表示group為2和4的分組卷積,(b)和(a)相比核的深度減少2.當(dāng)卷積組的數(shù)量增加到4時,卷積核的深度減少,參數(shù)量和計算成本減少.
在進(jìn)入到Y(jié)OLO Head進(jìn)行分類預(yù)測之前,根據(jù)不同的特征圖尺寸對輸入的特征圖進(jìn)行分組卷積以擴(kuò)大感受野.PyConv網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示.
以通道數(shù)Ci=256的特征圖為例,首先經(jīng)過1×1的卷積將輸入特征通道數(shù)由256減少到64,經(jīng)過PyConv模塊分組卷積,4個卷積核的大小分別為:9×9、7×7、5×5、3×3.此外,卷積核的深度在每個級別上都有所不同,從G=16(分組為16)到G=1(標(biāo)準(zhǔn)卷積的分組).每個卷積核輸出的通道數(shù)為16,最后輸出的特征圖通道數(shù)為64.然后用1×1卷積恢復(fù)輸入的通道數(shù)256.每個1×1卷積前后都有標(biāo)準(zhǔn)化函數(shù)BN和ReLU激活函數(shù).右側(cè)為快捷連接,可以有效回傳梯度.
YOLOv5s算法一共生成3個特征圖,每個特征圖對應(yīng)3種不同類型的先驗(yàn)框,所以YOLOv5s算法一共生成9個先驗(yàn)框.YOLOv5s算法的9個默認(rèn)先驗(yàn)框由K-means算法對MS COCO[13](Microsoft Common Objects in Context)數(shù)據(jù)集的目標(biāo)框聚類得到.根據(jù)本文缺陷數(shù)據(jù)集用K-means算法重新聚類得到新的先驗(yàn)框尺寸,使得先驗(yàn)框與真實(shí)框更加匹配,以減少默認(rèn)先驗(yàn)框?qū)z測精度的影響.大、中、小目標(biāo)分別對應(yīng)20×20、40×40、80×80的特征圖.默認(rèn)先驗(yàn)框和調(diào)整后先驗(yàn)框與預(yù)測特征圖大小的對應(yīng)關(guān)系如表1所示.
表1 預(yù)測特征圖與先驗(yàn)框的對應(yīng)關(guān)系
硬件環(huán)境:CPU:Intel(R)Core(TM)i5-11400F;顯卡:NVIDIA GeForce RTX 3050;內(nèi)存:16 GB RAM.
軟件環(huán)境:操作系統(tǒng):Windows10;編程語言:Python;運(yùn)行框架:PyTorch.
本文使用自制帶鋼表面缺陷數(shù)據(jù)集,其中圖片來源于某鋼廠鍍鋅生產(chǎn)線采集的真實(shí)缺陷圖譜.本文自制數(shù)據(jù)集包含常見的6種缺陷圖片3 190張,訓(xùn)練集圖片與測試集圖片數(shù)量的比例為9∶1,標(biāo)簽分為焊縫(We)、劃傷(Sc)、鋅渣(Zn)、漏鍍(Sk)、鋅流紋(Fo)、油斑(Sp)6類,其中主要缺陷圖片如圖8所示.對數(shù)據(jù)集用Labelimg對目標(biāo)缺陷進(jìn)行標(biāo)注.訓(xùn)練參數(shù)為迭代300個epoch,學(xué)習(xí)率設(shè)置為0.01,前150次進(jìn)行凍結(jié)主干網(wǎng)絡(luò)訓(xùn)練,batch_size設(shè)置為16,后150次解凍訓(xùn)練將batch_size設(shè)置為8.
本文以平均精度均值(PMA)和平均精度(PA)來評價算法的缺陷檢測識別效果,PMA和PA的值越大表明檢測效果越好.采用單位時間內(nèi)檢測的圖片數(shù)量(SFP)作為模型檢測速度的評價標(biāo)準(zhǔn),單位時間內(nèi)檢測的圖片數(shù)量越多,模型的檢測速度越快.計算公式如下:
(1)
(2)
(3)
式(1~3)中:p為查準(zhǔn)率,r為召回率,p(r)表示某個r對應(yīng)的p的值;PA為平均精度值,k表示缺陷的種類數(shù);Fc表示檢測的圖片數(shù)量,Tt表示檢測所消耗的總時間.
確定使用的模型后對SENet的降維系數(shù)以及SENet的位置進(jìn)行實(shí)驗(yàn),調(diào)整先驗(yàn)框尺寸,以使得改進(jìn)后的網(wǎng)絡(luò)效果更優(yōu),前兩個實(shí)驗(yàn)結(jié)果均基于默認(rèn)先驗(yàn)框得出.
2.4.1SENet模塊降維系數(shù)實(shí)驗(yàn)
通過對數(shù)據(jù)集訓(xùn)練顯示平均精度均值并不是隨著SENet的降維系數(shù)r的增長而增長,當(dāng)降維系數(shù)r=16時,平均精度均值最高為94.73%,因此設(shè)定降維系數(shù)r的值為16.
2.4.2SENet模塊位置實(shí)驗(yàn)
將SENet分別添加在兩次上采樣之后、一次上采樣之后和一次下采樣之后、PANet網(wǎng)絡(luò)之前,經(jīng)過實(shí)驗(yàn)對比顯示將SENet添加在PANet網(wǎng)絡(luò)之前平均精度均值為94.73%,優(yōu)于其他位置.雖檢測速度略有下降,但本文更多考慮精度需求,因此將SENet添加到PANet網(wǎng)絡(luò)之前.
2.4.3先驗(yàn)框的優(yōu)化實(shí)驗(yàn)
通過實(shí)驗(yàn)對比,YOLOv5s模型根據(jù)本文數(shù)據(jù)集重新聚類調(diào)整先驗(yàn)框之后比調(diào)整之前PMA提高了0.53個百分點(diǎn).STI-YOLO模型調(diào)整先驗(yàn)框之后比調(diào)整之前PAM提高了0.36個百分點(diǎn),重新聚類后取得的先驗(yàn)框尺寸對提高模型的檢測精度有效.
為了驗(yàn)證改進(jìn)點(diǎn)對于網(wǎng)絡(luò)模型的作用,通過消融實(shí)驗(yàn)進(jìn)行對比,只添加PyConv模塊和只添加SENet模塊相較于原模型分別提升了0.50個百分點(diǎn)和0.59個百分點(diǎn),使用所有改進(jìn)之后提升了1.54個百分點(diǎn).
使用本文數(shù)據(jù)集訓(xùn)練SSD300(輸入圖片尺寸大小為300×300)、YOLOv3、YOLOv4、YOLOv5s以及STI-YOLO模型(本文模型),并進(jìn)行效果對比.
如圖9所示,5種算法模型均能檢測出焊縫(We)缺陷,SSD300模型的置信度為1.00,YOLOv3模型置信度為0.97,YOLOv4置信度為0.97,YOLOv5置信度為0.90,STI-YOLO置信度為0.92.所有模型檢測焊縫缺陷的置信度均在0.90以上,但YOLOv4和YOLOv5s在檢測過程中出現(xiàn)鋅流紋(Fo)的錯檢情況,STI-YOLO模型未發(fā)生錯檢.
圖10所示為劃傷(Sc)缺陷的檢測結(jié)果,YOLOv3和YOLOv5s分別出現(xiàn)劃傷缺陷的1處漏檢,YOLOv4出現(xiàn)油斑(Sp)1處錯檢.相比其他模型,STI-YOLO模型對缺陷檢測的邊界框更加準(zhǔn)確,精準(zhǔn)識別出2處劃傷缺陷和2處鋅渣(Zn)缺陷.
圖11所示為鋅渣(Zn)缺陷的檢測情況,SSD300、YOLOv3、YOLOv4、YOLOv5s均有漏檢的情況,STI-YOLO模型對鋅渣缺陷沒有發(fā)生漏檢.
圖12所示為漏鍍(Sk)缺陷的檢測結(jié)果,SSD300、YOLOv3、YOLOv4、YOLOv5s均出現(xiàn)漏檢,YOLOv3、YOLOv4和YOLOv5s僅檢測出較大漏鍍?nèi)毕?對于較小的漏鍍?nèi)毕轃o法識別,STI-YOLO模型基本將帶鋼表面的漏鍍?nèi)毕輽z出.
圖13所示為油斑(Sp)缺陷的檢測結(jié)果,除了YOLOv5s模型的置信度相對較低為0.83,其余4種模型在檢測油斑缺陷的置信度上均在0.9以上.
圖14所示為鋅流紋(Fo)缺陷的檢測結(jié)果,5種模型均能檢測出鋅流紋缺陷,SSD300、YOLOv3、YOLOv4檢測結(jié)果的置信度均在0.95以上,YOLOv5s檢測的置信度較低為0.76,STI-YOLO模型檢測的置信度為0.85.
綜合分析可知:STI-YOLO模型在有鋅花背景干擾下對于缺陷的檢測效果更好,對于被鋅花背景干擾嚴(yán)重的鋅渣和劃傷缺陷的檢測效果有較大的提升,與其他主流算法相比整體的檢測效果更符合檢測要求,對于容易出現(xiàn)漏檢的鋅渣、漏鍍?nèi)毕菀约俺霈F(xiàn)容易被錯檢的鋅流紋缺陷均能識別.
不同模型對于缺陷檢測的性能如表2所示.從表2可知:SSD300和YOLOv5s的檢測速度分別為58.69、60.88 frame/s,檢測速度較快,STI-YOLO模型雖然檢測速度低于SSD300和YOLOv5s,但速度優(yōu)于YOLOv3和YOLOv4,為54.14 frame/s,仍能滿足缺陷檢測的要求.STI-YOLO模型較YOLOv5s的平均精度均值PMA提高了2.07個百分點(diǎn).雖然STI-YOLO模型在鋅流紋(Fo)缺陷上的平均精度稍遜色于SSD300,但差距僅為0.04個百分點(diǎn).但STI-YOLO模型對于較難檢測的劃傷缺陷和受鋅花背景干擾嚴(yán)重的鋅渣缺陷表現(xiàn)比較優(yōu)秀,通過對比,對于劃傷(Sc)缺陷,STI-YOLO模型的平均精度較SSD300、YOLOv3、YOLOv4以及YOLOv5s分別提高了7.37個百分點(diǎn)、22.12個百分點(diǎn)、12.75個百分點(diǎn)和4.03個百分點(diǎn).對于受鋅花背景干擾嚴(yán)重的鋅渣(Zn)缺陷,STI-YOLO模型有大幅度提高,STI-YOLO模型較SSD300、YOLOv3、YOLOv4以及YOLOv5s分別提高了16.62個百分點(diǎn)、33.56個百分點(diǎn)、36.12個百分點(diǎn)和4.52個百分點(diǎn).油斑(Sp)和焊縫(We)的檢出率為100%.同時漏鍍?nèi)毕莸臋z出率為98.26%,較好解決了漏檢問題.
表2 模型性能對比
這是因?yàn)镾TI-YOLO模型在主干特征網(wǎng)絡(luò)提取到有效特征圖之后,在特征圖輸入到特征融合網(wǎng)絡(luò)之前添加了SENet通道注意力機(jī)制,在不損失重要位置信息和語義信息的前提下提高有效特征信息的利用率,同時抑制由于鋅花背景干擾產(chǎn)生的冗余信息,在進(jìn)入PANet之前更高效地利用有效信息,濾除冗余信息,提高了網(wǎng)絡(luò)的檢測精度.同時在進(jìn)行特征融合之后的3個不同尺度的特征圖輸入到金字塔卷積網(wǎng)絡(luò)中,提取更加豐富的缺陷信息,使得預(yù)測的特征圖具有更好的魯棒性.
針對原始YOLOv5s算法在有鋅花背景干擾下對劃傷缺陷和鋅渣小目標(biāo)檢測效果欠佳的問題,根據(jù)本文缺陷數(shù)據(jù)集進(jìn)行重新聚類調(diào)整先驗(yàn)框的尺寸,在特征融合網(wǎng)絡(luò)PANet之前引入通道注意力機(jī)制SENet,增強(qiáng)特征圖有效信息的提取,突出重要特征,抑制鋅花復(fù)雜背景對缺陷檢測的干擾,從而減少冗余特征的影響,同時增加金字塔卷積網(wǎng)絡(luò)豐富預(yù)測特征圖的感受野,提取更有效的語義信息.STI-YOLO模型有效提高了YOLOv5s算法在有鋅花背景干擾下的缺陷檢測精度,同時進(jìn)一步改善了原模型存在漏檢以及錯檢的問題.