封雨鑫,鄧宏貴,程 鈺
(1.深圳市大族智能控制科技有限公司,廣東 深圳 518057;2.中南大學(xué) 物理與電子學(xué)院,長(zhǎng)沙 410083)
隨著我國(guó)近年來(lái)在工業(yè)智能制造領(lǐng)域的快速發(fā)展,產(chǎn)品的市場(chǎng)需求對(duì)工藝、材料、設(shè)備的要求越來(lái)越高。鋼鐵在汽車、醫(yī)療、航空、船舶等諸多鄰域的應(yīng)用中成為了一種必不可少的材料。當(dāng)前,激光焊接成為了工業(yè)鋼材結(jié)構(gòu)焊接的主流,受工藝環(huán)境的影響,會(huì)在焊接部位形成不同程度和數(shù)量的濺射、氣孔、夾渣、未焊透等現(xiàn)象。這些工藝問(wèn)題是不可避免的,如果視而不見(jiàn)的去應(yīng)用這些焊件材料會(huì)影響整個(gè)產(chǎn)品的使用性能,尤其是化工鍋爐、橋梁結(jié)構(gòu)等一些應(yīng)用場(chǎng)景中,嚴(yán)重時(shí)可能會(huì)帶來(lái)不可預(yù)估的安全事故。因此,焊縫缺陷檢測(cè)是確保焊件材料安全性、可靠性的一道必不可少的工藝。而目前工業(yè)缺陷檢測(cè)主要以人工檢測(cè)和機(jī)器視覺(jué)檢測(cè)為主,人工檢測(cè)存在檢測(cè)效率低、檢測(cè)精度低和誤檢率高等問(wèn)題;在機(jī)器視覺(jué)檢測(cè)方面已存在大量的方法:Guifang Wu[1]基于數(shù)字圖像處理技術(shù)提出了一種熱軋鋼帶表面缺陷檢測(cè)系統(tǒng);劉明煒,王快社[2]設(shè)計(jì)了一種帶鋼表面缺陷檢測(cè)系統(tǒng);Fernando Lòpez等人[3]基于T2統(tǒng)計(jì)量提出了一種彩色紋理缺陷檢測(cè)方法;周鵬,徐科等人[4]基于SIFT算子對(duì)中厚板材進(jìn)行了缺陷檢測(cè)的研究;Fu Qiang等人[5]基于小波算法提出了一種多分辨率表面缺陷檢測(cè)算法;針對(duì)鋼板材料的表面缺陷檢測(cè),天津大學(xué)、西安理工大學(xué)、河北工業(yè)大學(xué)等研究人員在缺陷檢測(cè)方法和缺陷檢測(cè)系統(tǒng)設(shè)計(jì)這方面做了大量研究[6-9]。以上這些研究在很大層面上解決了人工質(zhì)檢效率低下、誤檢率高、成本高等問(wèn)題,但隨著市場(chǎng)對(duì)產(chǎn)品質(zhì)量的要求越來(lái)越高,在諸多的工業(yè)材料質(zhì)檢領(lǐng)域,傳統(tǒng)的檢測(cè)方法無(wú)論是在檢測(cè)精度上還是實(shí)時(shí)檢測(cè)效率上都難以達(dá)到行業(yè)檢測(cè)標(biāo)準(zhǔn)。
AI教父Geoffrey Hinton在2006年發(fā)表了一篇文章[10]才真正開(kāi)啟深度學(xué)習(xí)的時(shí)代。自此之后,深度學(xué)習(xí)在表面缺陷檢測(cè)的應(yīng)用中得到了大量研究。文獻(xiàn)[11]基于卷積神經(jīng)網(wǎng)絡(luò)研究了軌道表面缺陷檢測(cè);文獻(xiàn)[12]開(kāi)發(fā)了一個(gè)基于深度卷積網(wǎng)絡(luò)(DCN)的模型,該模型的精度達(dá)到了97.2%,遠(yuǎn)高于傳統(tǒng)的特征提取方法;文獻(xiàn)[13]利用Faster R-CNN為神經(jīng)網(wǎng)絡(luò)框架檢測(cè)帶鋼表面缺陷,并基于遷移學(xué)習(xí)優(yōu)化權(quán)重參數(shù),實(shí)驗(yàn)準(zhǔn)確率達(dá)到了92.2%;文獻(xiàn)[14]通過(guò)卷積神經(jīng)網(wǎng)絡(luò)研究了工業(yè)機(jī)器人弧焊過(guò)程中產(chǎn)生的焊縫缺陷。文獻(xiàn)[15]提出了一種改進(jìn)的YoLo V3算法用于金屬表面缺陷檢測(cè),使用了特征金字塔和殘差網(wǎng)絡(luò)來(lái)定位缺陷邊界框,并通過(guò)非極大值抑制來(lái)篩選精確框;而且對(duì)輸入的數(shù)據(jù)利用直方圖均衡化做了處理,提高了檢測(cè)效率,通過(guò)實(shí)驗(yàn)表明改進(jìn)后的算法對(duì)缺陷的檢測(cè)精度能夠達(dá)到90%以上。
本研究也基于深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò),采集了一系列工業(yè)鋼板缺陷樣本,并對(duì)這些工業(yè)鋼板表面焊縫缺陷分類識(shí)別進(jìn)行了研究,還對(duì)比了傳統(tǒng)的機(jī)器學(xué)習(xí)算法在該樣本多分類任務(wù)中的表現(xiàn),最終在自定義卷積神經(jīng)網(wǎng)絡(luò)模型中能夠取得最優(yōu)效果。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional neural networks,CNN)也叫卷積網(wǎng)絡(luò),是目前來(lái)說(shuō)提取數(shù)字圖像特征最好的一種方式,在二維數(shù)字圖像識(shí)別、分類、分割中得到了廣泛的應(yīng)用。CNN是一種高效的監(jiān)督學(xué)習(xí)模型,低隱藏層通過(guò)卷積和池化的交替操作提取圖像的特征,高層通過(guò)全鏈接層進(jìn)行分類輸出[16]。它一般由卷積層、激活層、池化層和全鏈接層等網(wǎng)絡(luò)層組成。在本研究中,綜合了實(shí)際工業(yè)中鋼板的缺陷類型搭建了如圖1所示的自定義卷積神經(jīng)網(wǎng)絡(luò)框架。
圖1 網(wǎng)絡(luò)模型
輸入層的圖像尺寸為200*200*3,整個(gè)模型包括3個(gè)卷積層、3個(gè)池化層和3個(gè)全鏈接層,卷積核的大小為5*5*100,步長(zhǎng)strides為1,padding方式為same。經(jīng)過(guò)卷積操作后輸出圖片的尺寸為N*N,可以通過(guò)式(1)表示:
(1)
式中,W為輸入圖片尺寸,F(xiàn)為濾波核的大小,P表示在圖像周圍填充多少圈像素,S表示步長(zhǎng)。經(jīng)過(guò)一次卷積后,得到200*200*100的特征映射圖。在多層神經(jīng)網(wǎng)絡(luò)中,卷積操作可通過(guò)式(2)計(jì)算。
(2)
式中,n為濾波核的大小;w為權(quán)重,可以通過(guò)隨機(jī)初始化將初始權(quán)重矩陣的值設(shè)置為一個(gè)較小的值;b為偏置,當(dāng)b>0時(shí),激活函數(shù)向左移動(dòng);當(dāng)b<0時(shí),激活函數(shù)向右移動(dòng)。輸入像素值x經(jīng)過(guò)一次卷積運(yùn)算后得到輸出值y。然后將輸出值y作為激活函數(shù)的輸入值,進(jìn)行非線性運(yùn)算,在本研究中,激活函數(shù)為Relu,如式(3)所示:
Relu=max(0,x)
(3)
采用最大池化可以進(jìn)一步提取上層特征圖中的信息邊緣特征,還能降低模型的過(guò)擬合[17]。在本研究中,最大池化的核大小為2*2,步長(zhǎng)為2。第一次池化后得到的輸出為100*100*100。在最后一個(gè)池化層后添加了一個(gè)Dropout層,通過(guò)Dropout可以對(duì)隱藏層的神經(jīng)元以概率進(jìn)行隨機(jī)剪枝,實(shí)現(xiàn)權(quán)重參數(shù)的壓縮,能夠有效地防止網(wǎng)絡(luò)過(guò)擬合,還能提高模型的訓(xùn)練速度[18]。本研究中,概率設(shè)為0.5。通過(guò)全鏈接層將之前網(wǎng)絡(luò)提取的所有局部特征進(jìn)行整合,這里設(shè)置了3個(gè)全鏈接層,F(xiàn)C1有512個(gè)神經(jīng)元,F(xiàn)C2有256個(gè)神經(jīng)元,最后一層FC3為包含有4個(gè)類別的輸出,利用softmax函數(shù)進(jìn)行樣本的概率預(yù)測(cè),可以通過(guò)式(4)表示:
(4)
其中:C表示類別數(shù);分子表示的是第i個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的輸出值;表示輸出結(jié)果為第i個(gè)類別的概率。
損失函數(shù)采用交叉熵誤差,如式(5)所示,其本質(zhì)是判斷實(shí)際值與期望值之間的距離,因此實(shí)驗(yàn)中可以通過(guò)優(yōu)化器反向傳播多次迭代更新來(lái)最小化損失誤差,以此來(lái)提高模型精度。本研究中,訓(xùn)練過(guò)程中的優(yōu)化器采用的是RMSprop。
(5)
本研究針對(duì)某工廠實(shí)際鋼板激光焊接缺陷檢測(cè),需要采集一系列數(shù)據(jù)。其中,鋼板對(duì)象有碳鋼板和不銹鋼板兩種。相機(jī)設(shè)備采用工業(yè)CMOS相機(jī)和工業(yè)定焦鏡頭;光源采用工業(yè)環(huán)形視覺(jué)光源;配合工業(yè)數(shù)控機(jī)床和CNC操作面板進(jìn)行數(shù)據(jù)采集。在實(shí)際采集過(guò)程中,采用了視覺(jué)曝光的方式進(jìn)行了樣本的采集,更突出了目標(biāo)的表面特征。原始焊縫圖特別大,如圖2所示,其中包含有各種不同類型的缺陷,后續(xù)需要進(jìn)行裁剪和分類。
圖2 原始鋼板焊縫圖
通過(guò)視覺(jué)曝光后采集的某張圖像如圖3所示。
圖3 曝光下采集的圖像
最后設(shè)置一個(gè)固定的滑動(dòng)窗口在原圖中進(jìn)行樣本手動(dòng)截取,通過(guò)分類和打好標(biāo)簽后,分別裝載在4個(gè)文件夾下。已采集的圖像總共分為4種類別,部分截取的樣本如圖4所示,從左至右依次為:正常、凹陷、濺射和未焊滿。
圖4 鋼板表面焊縫圖
在某些情況下,圖像的采集會(huì)受到實(shí)際環(huán)境的影響。比如說(shuō),機(jī)床焊接中有時(shí)會(huì)有氮?dú)狻㈩w粒氣霧等干擾,懸浮在焊縫圖像上方時(shí)影響相機(jī)的圖像采集,在這種情況下采集到的焊縫圖像對(duì)比度和亮度都會(huì)下降,此時(shí)的圖像特征會(huì)被部分隱藏,特征的具體輪廓也會(huì)難以辨認(rèn)。對(duì)于采集到的存在干擾的焊縫圖像,由于其灰度直方圖的像素分布是比較密集的,肉眼看上去會(huì)有點(diǎn)不太清晰,存在一些朦朧感。根據(jù)這些特點(diǎn),如果能夠?qū)⑦@些密集的灰度直方圖分布進(jìn)行拉伸,就能提高圖像的對(duì)比度。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),利用Sin函數(shù)對(duì)焊縫圖像進(jìn)行一次非線性變換可以解決這一問(wèn)題[19]。Sin函數(shù)的變換公式如(6)所示:
(6)
其中:f(x,y)表示變化后的灰度值,f0(x,y)表示變換之前的灰度值,a表示變換之前的最低灰度值,b表示變換之前的最高灰度值。這里通過(guò)opencv的函數(shù)minMaxLoc(Input_gray_img,&minVal,&maxVal,&minLoc,&maxLoc,Mat())可以分別計(jì)算出minVal=a和maxVal=b。低對(duì)比度的焊縫圖像進(jìn)行sin函數(shù)變換后可以得到如圖5增強(qiáng)后的圖像。根據(jù)圖灰度直方圖的分布可知,圖像拉伸后的像素灰度級(jí)分布明顯平緩了很多。
圖5 Sin函數(shù)變換前后的焊縫圖像和灰度直方圖
在本研究中,采集到的原始圖像非常寬,且有150多張,每張圖像的焊縫區(qū)域基本都在x軸水平方向上,部分圖像存在20度左右的角度偏移。在手動(dòng)截取過(guò)程中,設(shè)置一個(gè)窗口大小為200*200的滑動(dòng)窗口對(duì)所有原始圖像從左至右以一定的步長(zhǎng)依次截取,最后可以生成517張圖像,然后通過(guò)分類打標(biāo)簽分別封裝在4個(gè)子文件夾下??紤]到數(shù)據(jù)量比較少,為了提高模型的分類效果,對(duì)采集的數(shù)據(jù)進(jìn)行數(shù)據(jù)擴(kuò)增是必要的[20]。在本研究中,數(shù)據(jù)擴(kuò)增主要包括水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、以20度角度范圍隨機(jī)旋轉(zhuǎn)、隨機(jī)亮度增強(qiáng)等操作來(lái)進(jìn)行,部分?jǐn)?shù)據(jù)處理效果如圖6所示。
圖6 數(shù)據(jù)增強(qiáng)
由于本研究的焊縫在鋼板中的位置都是以直線形式呈現(xiàn),因此實(shí)際檢測(cè)時(shí)可以從起始端到尾端依次用調(diào)好的相機(jī)進(jìn)行掃描就行。實(shí)際中的鋼板是比較大的,為了便于焊縫檢測(cè),焊接完后的焊縫區(qū)域,在其起始位置和尾端會(huì)各設(shè)置一個(gè)mark點(diǎn)。如圖7所示,起始點(diǎn)為A,尾端為B,通過(guò)這兩個(gè)定位點(diǎn)坐標(biāo)確定一條直線路徑L,在工業(yè)數(shù)控機(jī)床上,機(jī)器軸可以根據(jù)第一個(gè)起始mark點(diǎn)將相機(jī)對(duì)準(zhǔn)到A點(diǎn)。由于訓(xùn)練的圖片尺寸為200*200,這里每個(gè)窗口Hi也采用200*200,并將相機(jī)定位到第一個(gè)H1的中心O1。為了避免每個(gè)窗口銜接處未被采集到,從第二個(gè)窗口H2開(kāi)始的后面所有窗口都會(huì)有一小部分覆蓋在前面窗口上,依次定位到每個(gè)中心點(diǎn)進(jìn)行圖像采集。
圖7 窗口檢測(cè)示意圖
將每一條焊縫區(qū)域中的圖像采集完后,采用數(shù)字編碼的形式做好標(biāo)簽,并依次輸入到已訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型中進(jìn)行預(yù)測(cè)分類,在本研究中有3種類型缺陷和一種正常焊縫。當(dāng)該焊縫中的所有缺陷比例達(dá)到一定工業(yè)條件時(shí)則判別為不合格,并重加工;當(dāng)只有很小一部分焊縫區(qū)域不合格時(shí),則可根據(jù)不合格區(qū)域?qū)?yīng)的標(biāo)簽用機(jī)器軸找到該位置,并針對(duì)不同的缺陷采用相應(yīng)的方法進(jìn)行修補(bǔ)。
本研究中,通過(guò)數(shù)據(jù)采集并擴(kuò)增后的數(shù)據(jù)有2 070張,每種焊縫類型均在510張左右。按照4:1的比例劃分為訓(xùn)練集和驗(yàn)證集,并在訓(xùn)練集中再抽取四分之一作為測(cè)試集。實(shí)驗(yàn)環(huán)境為Windows10系統(tǒng),語(yǔ)言為python3.7,軟件平臺(tái)為Anaconda中的Spyder,基于tensorflow框架和keras進(jìn)行實(shí)現(xiàn),處理器為Inter(R)Core(TM)i5-2400 CPU@3.10 GHz,DDR4 16G RAM和GTX 1050顯卡。
在神經(jīng)網(wǎng)絡(luò)的性能評(píng)價(jià)指標(biāo)中,有準(zhǔn)確率、精確率、召回率和精確率與召回率的調(diào)和,可以通過(guò)表1的混淆矩陣來(lái)進(jìn)行表示。
表1 混淆矩陣
1)Accuracy:
Accuracy(準(zhǔn)確率)表示預(yù)測(cè)正確的樣本數(shù)占總預(yù)測(cè)樣本數(shù)的比例。
(7)
2)Precision:
Precision(精確率)表示預(yù)測(cè)正確的正樣本數(shù)占總預(yù)測(cè)樣本中正樣本數(shù)的比例。
(8)
3)Recall:
Recall(召回率)表示預(yù)測(cè)正確的正樣本數(shù)占真實(shí)正樣本的比例。
(9)
4)F1-score:
F1-score是精確率和召回率的一種調(diào)和形式。
(10)
本研究中,采用的優(yōu)化器是RMSProp[21],由于該方法采用了動(dòng)量的機(jī)制,在一定程度上能夠加快梯度的下降,并將其初始學(xué)習(xí)率設(shè)為0.001,每批次的樣本量batch_size為64,并采用shuffle的方式打亂訓(xùn)練樣本;采用early_stopping的方法進(jìn)行迭代訓(xùn)練,即當(dāng)網(wǎng)絡(luò)發(fā)生過(guò)擬合時(shí)停止訓(xùn)練;通過(guò)搭建的卷積神經(jīng)網(wǎng)絡(luò)首次訓(xùn)練后可以得到一個(gè)baseline模型,該模型的精度基本維持在0.8附近。將學(xué)習(xí)率縮小到0.000 1時(shí),通過(guò)多次訓(xùn)練后,并經(jīng)過(guò)50次epoch迭代可以得到如圖8所示的結(jié)果。其中,縱坐標(biāo)表示精度,左邊圖表示在訓(xùn)練集中的性能表現(xiàn),右邊圖表示在驗(yàn)證集中的性能表現(xiàn)。為了驗(yàn)證學(xué)習(xí)率是否還會(huì)影響實(shí)驗(yàn)結(jié)果,通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)學(xué)習(xí)率設(shè)為0.000 01,并凍結(jié)部分權(quán)重,經(jīng)過(guò)多次模型微調(diào)訓(xùn)練后可以達(dá)到圖9所示比較好的效果。通過(guò)數(shù)據(jù)表明,損失函數(shù)曲線和各精度評(píng)價(jià)指標(biāo)分別平穩(wěn)下滑和穩(wěn)定上升,且經(jīng)過(guò)多次調(diào)參后的模型精度能夠達(dá)到一個(gè)相對(duì)baseline模型較高的水準(zhǔn)。
圖8 調(diào)參前不同迭代次數(shù)下的模型性能
圖9 調(diào)參后不同迭代次數(shù)下的模型性能
在測(cè)試集上驗(yàn)證該模型時(shí),可以得到如表2所示的結(jié)果。
表2 測(cè)試集中的模型性能評(píng)估
通過(guò)以上得到的訓(xùn)練模型,模型大小為232 M,在對(duì)測(cè)試樣本的評(píng)估上,精度可以達(dá)到97%以上,通過(guò)滑窗采集測(cè)試圖像的方式,每張圖像在該網(wǎng)絡(luò)下檢測(cè)時(shí)間基本維持在200~400 ms之間。為了驗(yàn)證該卷積神經(jīng)網(wǎng)絡(luò)的有效性,本研究還進(jìn)行了相同類型樣本下的機(jī)器學(xué)習(xí)訓(xùn)練,如圖10所示,采用SVM和KNN進(jìn)行了多缺陷檢測(cè)研究,在不同的懲罰因子C和Gamma值下,SVM分類器表現(xiàn)為不同的檢測(cè)效果,隨著C的增加精度將維持不變;在不同的鄰域k下,KNN有不同的效果表現(xiàn);兩者的C和k都在一定范圍內(nèi)具有最佳表現(xiàn)性能,但精度都始終維持在80%以下,且樣本量大的情況下,KNN算法非常耗時(shí)。針對(duì)該類型數(shù)據(jù),在實(shí)際工程中,對(duì)于有無(wú)缺陷分類,SVM能夠達(dá)到90%以上的檢測(cè)效果,但在多分類中無(wú)法滿足實(shí)際要求。對(duì)比機(jī)器學(xué)習(xí)算法,本文搭建的卷積神經(jīng)網(wǎng)絡(luò)在實(shí)際工程中實(shí)用性更強(qiáng)。至于存在少量誤檢的原因,是因?yàn)樵诒狙芯恐?,部分濺射缺陷和未焊滿之間出現(xiàn)了誤判,由于訓(xùn)練數(shù)據(jù)是人工標(biāo)注的,某些濺射缺陷在焊縫周圍飛濺的焊錫并不太多,也不是很明顯,但在標(biāo)注當(dāng)中也是當(dāng)成濺射缺陷標(biāo)注的,導(dǎo)致對(duì)部分該類型缺陷進(jìn)行了誤判,所以分析結(jié)果時(shí)發(fā)現(xiàn)某些濺射缺陷被分為了未焊滿。
圖10 SVM和KNN下數(shù)據(jù)測(cè)試性能
針對(duì)激光工業(yè)板材焊件焊縫檢測(cè)中,人工檢測(cè)與傳統(tǒng)視覺(jué)檢測(cè)效率低下、無(wú)法滿足質(zhì)檢要求等問(wèn)題,本研究提出了基于卷積神經(jīng)網(wǎng)絡(luò)的焊縫表面缺陷檢測(cè)方法。通過(guò)工業(yè)數(shù)控機(jī)床及工業(yè)相機(jī)采集鋼板焊縫樣本,對(duì)原始數(shù)據(jù)進(jìn)行處理后進(jìn)行訓(xùn)練,通過(guò)對(duì)參數(shù)及權(quán)重進(jìn)行多次微調(diào)訓(xùn)練后,準(zhǔn)確度可以達(dá)到97%以上,且復(fù)雜度低,能夠滿足實(shí)際產(chǎn)線的檢測(cè)要求。實(shí)際檢測(cè)中還可以在機(jī)床上通過(guò)機(jī)器軸和相機(jī)的配合,以滑動(dòng)窗口的形式完成待測(cè)樣本的采集,本研究還在機(jī)器學(xué)習(xí)算法上對(duì)該類型數(shù)據(jù)進(jìn)行了驗(yàn)證,進(jìn)一步表明本文研究的卷積神經(jīng)網(wǎng)絡(luò)模型在應(yīng)用上的優(yōu)勢(shì)。對(duì)于模型的移植問(wèn)題,可以通過(guò)權(quán)重剪枝方式來(lái)完成,這將是下一步的重要工作。