陳立潮,解 丹,張 睿+,解紅梅,潘理虎
(1.太原科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原 030024;2.國電華北電力有限公司 廊坊熱電廠,河北 廊坊 065000)
目前,對(duì)焊縫缺陷的識(shí)別包括人工評(píng)片和非人工評(píng)片兩類。人工評(píng)片會(huì)摻雜個(gè)人的主觀性,而非人工評(píng)片能夠保證規(guī)范、穩(wěn)定和準(zhǔn)確。非人工評(píng)片又包含手工提取缺陷特征的方式[1-3]和自動(dòng)提取缺陷特征的方式[4-6]。手工提取焊縫缺陷特征對(duì)于形狀不規(guī)則的焊縫缺陷而言,很難尋找一種方式能夠自動(dòng)識(shí)別焊縫缺陷,因而會(huì)降低焊縫缺陷的識(shí)別精度。而自動(dòng)提取缺陷特征可以改善這種情況。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)可從圖像中直接提取特征,且應(yīng)用廣泛。Khumaidi A等[7]對(duì)網(wǎng)絡(luò)攝像頭獲取的圖像用CNN進(jìn)行焊縫缺陷的分類,最終的精度達(dá)到了95.83%,但其需要較多的樣本數(shù)量,才能達(dá)到高精度。Liu Bin等[8]提出一種基于VGG16的全卷積結(jié)構(gòu)來對(duì)焊接缺陷圖像進(jìn)行分類,用相對(duì)較小的數(shù)據(jù)集實(shí)現(xiàn)了高精度的分類效果,但其復(fù)雜度較高不利于工程的應(yīng)用與推廣。關(guān)于CNN在焊縫缺陷識(shí)別上的應(yīng)用,國內(nèi)的研究較為薄弱;而國外的研究開始較早且更為完善。因此,研究一種復(fù)雜度較低的CNN對(duì)焊縫缺陷高精度的識(shí)別具有重要意義。
為此,提出一種復(fù)雜度較低的漸進(jìn)式卷積神經(jīng)網(wǎng)絡(luò)(progressive convolutional neural network,P-CNN)模型對(duì)焊縫缺陷進(jìn)行識(shí)別,以期用較少的樣本和較簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)得到顯著的特征,避免過擬合和欠擬合,并達(dá)到與傳統(tǒng)的CNN模型相比,此模型具有更高精度的目的。
CNN是一種前反饋的人工神經(jīng)網(wǎng)絡(luò)。它通過局部感受野、共享權(quán)值和下采樣這3種技術(shù)來識(shí)別圖像的位移、縮放和扭曲不變性[9]。最早的CNN是LeCun Y等提出的LeNet-5模型,之后出現(xiàn)了AlexNet、ZFNet、GoogleNet、ResNet、DenseNet等一系列經(jīng)典的CNN模型[10-12]。這些CNN網(wǎng)絡(luò)結(jié)構(gòu)包括了輸入層、輸出層、卷積層、下采樣層和全連接層。
如圖1所示是一個(gè)傳統(tǒng)的CNN網(wǎng)絡(luò)結(jié)構(gòu)——LeNet-5。其中C1代表卷積層1,S2代表下采樣層2,F(xiàn)5代表全連接層5。輸入的是一個(gè)32×32像素的圖像,之后通過一個(gè) 5×5的卷積核進(jìn)行步長(zhǎng)為1的卷積操作,變?yōu)?8×28的圖像,緊接著進(jìn)行下采樣操作,此時(shí)用2×2的窗口進(jìn)行步長(zhǎng)為2的操作,得到14×14的圖像。然后重復(fù)卷積和下采樣操作,最后經(jīng)過全連接層,到達(dá)輸出層并輸出結(jié)果。
圖1 傳統(tǒng)的CNN網(wǎng)絡(luò)結(jié)構(gòu)
具體來說,卷積層的計(jì)算形式為
(1)
下采樣層是對(duì)上一層的特征圖進(jìn)行子抽樣,它可以留下有用的信息以減少計(jì)算時(shí)間和消除偏移、扭曲。其計(jì)算形式為式(2)
(2)
全連接層把最后輸出的二維特征圖轉(zhuǎn)化為固定維度的特征向量,它在計(jì)算輸入向量和權(quán)重向量之間的點(diǎn)積之后,加上一個(gè)偏置,最后通過激活函數(shù)輸出。
輸出層共10個(gè)神經(jīng)元,采用歐式徑向基函數(shù),具體計(jì)算形式為
(3)
式中:yi是RBF的輸出,Wij是一個(gè)參數(shù)向量,由i的比特圖編碼所確定,i取0至9,j取0至83。
當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建好后,將訓(xùn)練集圖像全部輸入構(gòu)建好的網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。傳統(tǒng)的CNN訓(xùn)練流程如圖2所示。完成訓(xùn)練后將測(cè)試集圖像輸入到訓(xùn)練好的模型中進(jìn)行識(shí)別。
圖2 傳統(tǒng)的CNN模型訓(xùn)練流程
考慮到X射線下的焊縫圖像的特征較少,同時(shí)區(qū)分度較大。故為了實(shí)現(xiàn)焊縫缺陷的高精度識(shí)別,在傳統(tǒng)的CNN模型上進(jìn)行改進(jìn),并運(yùn)用了漸進(jìn)式學(xué)習(xí)的方式對(duì)模型進(jìn)行訓(xùn)練。焊縫缺陷識(shí)別方法的整體架構(gòu)如圖3所示。
圖3 整體架構(gòu)
整體架構(gòu)包括學(xué)習(xí)和識(shí)別兩個(gè)過程。首先,學(xué)習(xí)過程是根據(jù)焊縫射線圖像與理想標(biāo)簽的向量對(duì)所構(gòu)成的訓(xùn)練集訓(xùn)練模型從而得到一個(gè)分類器;得到分類器后再由驗(yàn)證集驗(yàn)證該模型。其次,識(shí)別過程是把測(cè)試集的實(shí)例輸入到訓(xùn)練好的模型之中,從而得出預(yù)測(cè)的識(shí)別結(jié)果??偟膩碚f,所提出的方法以P-CNN模型為核心,學(xué)習(xí)系統(tǒng)是對(duì) P-CNN 模型的訓(xùn)練,而識(shí)別系統(tǒng)是對(duì)P-CNN模型的測(cè)試。
P-CNN結(jié)構(gòu)如圖4所示,其包括卷積層1、池化層1、卷積層2、池化層2、全連接層1、全連接層2和一個(gè)Softmax函數(shù)。卷積層中卷積核的大小為3×3,步長(zhǎng)(step,s)為1;第一個(gè)下采樣層的窗口大小為3×3,步長(zhǎng)為2;第二個(gè)下采樣層的窗口大小為3×3,步長(zhǎng)為1。此模型在每層均有16個(gè)特征圖,在全連接層有128個(gè)神經(jīng)元,且第一個(gè)全連接層將第二個(gè)池化層的每個(gè)特征圖展開形成的一維向量作為輸入。
為了避免感知機(jī)的線性不可分問題,并加強(qiáng)網(wǎng)絡(luò)結(jié)構(gòu)的可擴(kuò)充性。盡管實(shí)驗(yàn)中的焊縫缺陷識(shí)別是一個(gè)二分類問題,但在P-CNN結(jié)構(gòu)中的輸出層并未采用二分類函數(shù),而是運(yùn)用了具有很好糾錯(cuò)機(jī)制的Softmax函數(shù),對(duì)“無缺陷”和“有缺陷”的圖像進(jìn)行概率分配,并獲取最大概率的索引,然后輸出預(yù)測(cè)結(jié)果。如果想要識(shí)別不同的缺陷類型,在輸出層增加神經(jīng)元便可實(shí)現(xiàn)。最后將此預(yù)測(cè)結(jié)果值與理想標(biāo)簽值比較并計(jì)算誤差,再將此誤差反向傳播。同時(shí),為避免權(quán)重更新過慢的問題,采用交叉熵?fù)p失函數(shù);為避免陷入局部最優(yōu),優(yōu)化器采用Adam優(yōu)化器對(duì)參數(shù)不斷優(yōu)化。
圖4 P-CNN結(jié)構(gòu)
學(xué)習(xí)系統(tǒng)是對(duì)模型的訓(xùn)練,包括用訓(xùn)練集訓(xùn)練模型和驗(yàn)證集驗(yàn)證模型。由于傳統(tǒng)CNN模型的訓(xùn)練過程會(huì)導(dǎo)致數(shù)據(jù)集中樣本的數(shù)量難以確定,當(dāng)樣本量較少時(shí),出現(xiàn)欠擬合;而樣本較多時(shí),又出現(xiàn)了過擬合。出現(xiàn)欠擬合導(dǎo)致對(duì)圖像的特征學(xué)習(xí)不足,而出現(xiàn)過擬合時(shí),又需要加入 Dropout 方法。因此,采用漸進(jìn)式學(xué)習(xí)的方式對(duì)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。這種學(xué)習(xí)方法同時(shí)避免了學(xué)習(xí)過程中的過擬合和欠擬合,使得網(wǎng)絡(luò)可以很好的學(xué)習(xí)到圖像的特征。此學(xué)習(xí)方法的具體過程是將訓(xùn)練集中的樣本進(jìn)行逐步分批訓(xùn)練,首先進(jìn)行少量樣本的訓(xùn)練;之后用驗(yàn)證集驗(yàn)證,從輸出層結(jié)果觀察哪一類樣本識(shí)別的準(zhǔn)確率低,再繼續(xù)添加訓(xùn)練集中的該類樣本進(jìn)行訓(xùn)練,直至驗(yàn)證集中樣本的準(zhǔn)確率大于98%時(shí)停止。此時(shí)的訓(xùn)練樣本數(shù)量為最優(yōu)的樣本數(shù)量。此方法既減少了不必要的樣本訓(xùn)練次數(shù),又比較容易實(shí)現(xiàn)。圖5給出了P-CNN模型的訓(xùn)練流程。
圖5 P-CNN模型訓(xùn)練流程
訓(xùn)練過程中,訓(xùn)練集和驗(yàn)證集的焊縫圖像先經(jīng)過剪裁與擴(kuò)充規(guī)范化為156×156像素的圖像,之后進(jìn)行標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化的圖像數(shù)據(jù)輸入到一個(gè)7層的P-CNN中學(xué)習(xí),最終得到分類結(jié)果,通過查看輸出的準(zhǔn)確率確定是否需要繼續(xù)添加某一類別進(jìn)行再次訓(xùn)練,直到準(zhǔn)確率(Precision,Pre)大于98%時(shí)完成訓(xùn)練。之后進(jìn)入識(shí)別系統(tǒng)。
識(shí)別系統(tǒng)就是測(cè)試模型,即用測(cè)試集對(duì)訓(xùn)練后的模型進(jìn)行測(cè)試。利用模型中學(xué)到的分類器對(duì)新的(測(cè)試集中的)輸入實(shí)例進(jìn)行識(shí)別,預(yù)測(cè)其輸出的標(biāo)記及對(duì)應(yīng)的概率。
熔焊缺陷按缺陷性質(zhì)分為裂紋類、空穴類、固體類、未熔合和未焊透及其它共6大類。由P-CNN模型將采集到的焊縫缺陷圖像分為無缺陷和有缺陷兩類以實(shí)現(xiàn)焊縫缺陷的識(shí)別。實(shí)驗(yàn)中,由于無缺陷的焊縫圖像的特征較有缺陷的焊縫圖像的特征少。因此,分別采集了無缺陷的焊縫圖像和有各類缺陷的焊縫圖像各300幅和600幅。所采集的X射線圖像來自于懷安等電廠,部分焊縫射線圖像如圖6所示。
圖6 焊縫圖像
圖6中圖(a)到圖(f)為有缺陷的焊縫圖像,圖(g)和圖(h)為無缺陷的焊縫圖像。其中圖(a)為夾渣缺陷;圖(b)為氣孔缺陷;圖(c)為夾鎢缺陷;圖(d)為未焊透缺陷,圖(e)為未熔合缺陷;圖(f)是咬邊缺陷;圖(g)是小徑管焊縫,是焊接完好的翻橢圓;圖(h)是板子焊縫。
收集好數(shù)據(jù)后,按照第2部分描述的方法進(jìn)行實(shí)驗(yàn)。剛開始以兩種圖像各25幅和50幅為基數(shù)進(jìn)行訓(xùn)練,之后圖像以成倍的數(shù)量增加進(jìn)行訓(xùn)練。根據(jù)漸進(jìn)式學(xué)習(xí)方法最終得到,兩種圖像中各抽取200幅和400幅作為訓(xùn)練集時(shí)可以滿足訓(xùn)練的準(zhǔn)確率大于98%的條件,之后再增加訓(xùn)練集時(shí),準(zhǔn)確率的變化很小。因此訓(xùn)練集定為600幅圖像。隨后,再從余下的100幅和200幅中隨機(jī)抽取無缺陷的圖像和有缺陷的圖像各50幅和100幅作為驗(yàn)證集,最后剩余的150幅圖像作為測(cè)試集。實(shí)驗(yàn)中采用python語言和tensorflow[13]框架,部分訓(xùn)練P-CNN模型的數(shù)據(jù)見表1,可以看出網(wǎng)絡(luò)每次訓(xùn)練時(shí)損失率和準(zhǔn)確率的變化都不同,但是變化的趨勢(shì)基本相同,且滿足實(shí)驗(yàn)預(yù)期的要求。
表1 訓(xùn)練數(shù)據(jù)
由表1中數(shù)據(jù)可知,實(shí)驗(yàn)中損失率和準(zhǔn)確率隨迭代步數(shù)變化而變化。剛開始時(shí)損失率和準(zhǔn)確率隨不熟的增加變化很大,之后變化很小,趨于平緩。通過對(duì)實(shí)驗(yàn)中損失率和準(zhǔn)確率隨迭代步數(shù)變化的分析,發(fā)現(xiàn)實(shí)驗(yàn)在迭代1000步時(shí),損失率逐步下降到最低,并且趨于平穩(wěn),準(zhǔn)確率的值也可以達(dá)到預(yù)期效果。因此,實(shí)驗(yàn)中將迭代步數(shù)設(shè)置為1000。
實(shí)驗(yàn)最后取訓(xùn)練過程中的最優(yōu)模型對(duì)150張焊縫圖像(包括無缺陷的和有缺陷的焊縫圖像)進(jìn)行測(cè)試,部分測(cè)試圖像如圖7所示。圖7(a)是對(duì)一張有氣孔缺陷的焊縫圖像的識(shí)別結(jié)果,模型識(shí)別出該圖像是缺陷圖像且概率是0.999 960。圖7(b)是對(duì)一張焊接良好的,即無缺陷的焊縫圖像的識(shí)別結(jié)果,模型識(shí)別出該圖像是無缺陷圖像且概率為0.928 603。
圖7 測(cè)試結(jié)果
最終統(tǒng)計(jì)的識(shí)別結(jié)果數(shù)據(jù)見表2。由表中的數(shù)據(jù)可以看出,網(wǎng)絡(luò)對(duì)焊縫缺陷的識(shí)別錯(cuò)誤率降低到了2%以下,精度達(dá)到了98%以上。具有很好的識(shí)別效果。
表2 實(shí)驗(yàn)數(shù)據(jù)統(tǒng)計(jì)
此外,在相同的實(shí)驗(yàn)條件下對(duì)比了焊縫圖像在傳統(tǒng)CNN和P-CNN模型下測(cè)試的精度(accurancy, Acc)和均方誤差(mean squared error,MSE),結(jié)果見表3。由表3可知,P-CNN的精確度高于CNN且P-CNN的MSE低于CNN。因此,P-CNN的性能較好,在焊縫缺陷圖像識(shí)別的效果上有所提高。在實(shí)驗(yàn)過程中由于數(shù)據(jù)集的選取不同也會(huì)出現(xiàn)將所有數(shù)據(jù)集訓(xùn)練完成之后仍不能滿足準(zhǔn)確率大于98%的情況,此時(shí)可以用隨機(jī)旋轉(zhuǎn)、隨機(jī)剪裁、色彩抖動(dòng)、高斯噪聲、水平翻轉(zhuǎn)、豎直翻轉(zhuǎn)等數(shù)據(jù)增強(qiáng)的方法進(jìn)行數(shù)據(jù)集的擴(kuò)充。
表3 不同神經(jīng)網(wǎng)絡(luò)對(duì)比
針對(duì)傳統(tǒng)圖像處理算法在焊縫缺陷識(shí)別上需要手動(dòng)提取圖像特征并且精度較低的問題,建立了P-CNN對(duì)X射線的焊縫圖像中的缺陷進(jìn)行識(shí)別。與傳統(tǒng)的CNN相比,P-CNN 提前避免了過擬合和欠擬合問題,并減少了部分訓(xùn)練參數(shù)優(yōu)化且易于擴(kuò)充。實(shí)驗(yàn)結(jié)果表明,P-CNN對(duì)焊縫缺陷識(shí)別的精度達(dá)到了98%以上,該方法具有較好的識(shí)別缺陷的效果。之后需要收集更多的焊縫圖像來增大數(shù)據(jù)集,同時(shí)改進(jìn)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以達(dá)到識(shí)別焊縫缺陷類型的目的。