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