張龍飛,高煒欣,馮小星
(1.西安石油大學,西安 710065;2.陜西省油氣井測控技術重點實驗室,西安 710065;3.光電油氣測井與檢測教育部重點實驗室,西安 710065)
長輸油氣管道多采用焊接技術連接,在焊接過程中由于各種隨機因素的影響,不可避免的存在裂縫、氣孔等缺陷,從而降低焊件的使用壽命,甚至會帶來重大財產損失及人身安全問題?;赬射線焊縫圖像的缺陷檢測是一種應用較廣泛的彌補措施[1-2]。其檢測結果直觀、準確,并可以永久保存,有很多優(yōu)良特性。
在X射線焊縫缺陷檢測領域,方法眾多,文獻[3]提出了模糊識別算法,對缺陷樣本進行了試驗,取得了較好的識別效果。文獻[4]利用計算特征值的方法對分割處理后的圖像進行缺陷分類。文獻[5-6]均采用支持向量機的方法,文獻[5]用支持向量機對已分割的缺陷進行識別;文獻[6]提出了一種可以對焊縫缺陷自動檢測的方法,該方法相比于傳統檢測算法具有更好的適應性和通用性。文獻[7]提出了字典矩陣最優(yōu)數學模型,該模型通過使用Hopfield神經網絡求解最優(yōu)字典矩陣,提高了缺陷分類的準確性。
近些年來,人工智能得到了飛速發(fā)展,“深度學習”[8]的方法在無損檢測領域也得到了廣泛的應用,如文獻[9-12]等。文獻[9-11]均使用基于卷積神經網絡的深度學習網格構建方法,文獻[11]進一步通過數學處理簡化了參數計算,防止過擬合的發(fā)生,提高了缺陷識別率。并驗證了該方法的適用性。而文獻[12]使用了一種相對復雜的神經網絡,識別率也較高。但由于人工智能是個發(fā)展非常迅速的領域,將其應用于焊縫圖像缺陷識別,仍有很多空白領域值得深入探究。比如一些現有的網絡復雜度過高,并不適合焊縫缺缺陷特征的識別,另外識別準確度也有所不足,在識別框架上有待改進,這就是文中研究的重點。
文中針對X射線焊縫圖像特征,設計了相應的卷積神經網絡(Convolutional neural networks, CNN)結構,可以減少內存開銷和網絡參數個數,降低模型復雜度。
實際工業(yè)生產中X射線焊縫圖像如圖1所示。由圖1可以發(fā)現,缺陷和噪聲對比不明顯,噪聲干擾嚴重,導致缺陷周圍不清晰。利用傳統的大津法對原始圖像進行分割處理,結果如圖2所示。由圖2可知,分割后的圖像,缺陷和噪聲并存,不易直接區(qū)分缺陷和噪聲,且由于缺陷和噪聲面積相對較小,使得特征值求取困難。因此文中提出疑似缺陷區(qū)域(Suspected defect region,SDR)的概念,利用分割結果標定疑似區(qū)域。然后利用CNN直接判定SDR類型,避免了因特征值求取帶來的誤差。疑似局部缺陷區(qū)域定義如圖3所示,分割出的缺陷或噪聲外切矩形外擴展5個像素點后的區(qū)域為疑似缺陷區(qū)域。
圖1 X射線焊縫缺陷原始圖像
圖2 X射線焊縫圖像分割實例
圖3 疑似缺陷區(qū)域定義
通過對某標段管道焊縫的SDR圖像進行標定,文中已建立包含600張SDR圖像的缺陷和噪聲數據庫。從中選取200張SDR圖像作為樣本圖像,其中圓形缺陷和噪聲圖像各100張,如圖4和圖5所示。
圖4 100組圓形缺陷圖像
圖5 100組噪聲圖像
卷積神經網絡是深度學習的一種,通過模擬人腦學習并分析數據,可應用于焊縫缺陷識別領域。其權值共享機制可以有效的降低網絡中訓練參數的數量,簡化計算過程。從缺陷識別的角度出發(fā),卷積神經網絡不但可以降低模型的復雜程度,還可以直接處理焊縫圖像,避免了特征值的求取。
卷積層將輸入的每一個神經元與上一層的局部感受區(qū)域連接,提取該部分的特征值。卷積的過程可以表示為:
(1)
(2)
卷積后的特征圖像素值可利用式(3)計算:
(3)
式中:ai,j為卷積后第i行第j列的像素值;D為圖像深度;I為卷積核的大小;wd,m,n為第d通道第m行第n列權重;ο為偏置項。
卷積前后圖像的大小可由式(4)和式(5)確定。
(4)
(5)
式中:W1與H1分別為卷積后的特征圖的寬度和高度;W0與H0分別為卷積前的圖像的寬度和高度;F為對應的卷積核的寬度或高度;P為填充數量;S為移動步長。
池化層(Pooling)也叫下采樣層(Sub sampling layer),主要用于特征降維,壓縮數據和參數的數量,減小過擬合情況的出現,同時提高模型的容錯性,提升訓練速度。常見的池化方法有最大池化、平均池化、隨機池化,而最大池化也是采用比較多的方法,主要選取最大值來作為該區(qū)域的池化結果。即有:
(6)
(7)
全連接層是神經網絡的最后一層,全連接層的每一個神經元都與前一層的每個神經元全連接,然后經過分類器的運算,計算得出各缺陷種類的概率。
(8)
在全連接層中,二維圖像的特征圖被拼接為一維特征圖作為全連接層的輸入。全連接層的輸入可通過對輸入加權求和并通過激活函數的響應得到:
ck=f(zk)
(9)
zk=wkck-1+ok
(10)
式中:zk為全連接層k的凈激活;wk為全連接層的權重系數;οk為全連接層的偏置。
卷積神經網絡通過反向傳播,基于梯度下降算法調整參數。根據鏈式求導法則,反向傳播時將梯度誤差逐層傳遞、逐層優(yōu)化,達到對網絡參數進行整體優(yōu)化的目的。這里針對“卷積層-池化層-全連接層”的順序分別給出向傳播算法。定義網絡k層的靈敏度為:
(11)
式中:ξk為總誤差對凈激活zk的梯度。計算靈敏度實際上是通過所有網絡層總誤差對所有網絡參數求偏導,使得網絡的訓練誤差朝著減小的方向迭代。
為了計算卷積層靈敏度,需要利用損失函數對偏置項求偏導為:
(12)
式中:c,d代表特征圖上的位置,損失函數對偏置項偏導等于各個位置偏置項偏導疊加。式(12)可由式(13)表示:
(13)
式中:m×n為卷積層卷積核大?。?為kronnecker product。由式(12)和式(13)可知,損失函數對卷積核的偏導為:
(14)
對計算池化層求靈敏度,如式(15)和式(16)所示:
(15)
(16)
(17)
全連接層求靈敏度,如式(18)和(19)所示:
ξk=(wk+1)Tξk+1°f′(zk)
(18)
ξγ=f′(zγ)°(yn-tn)
(19)
全連接層的總誤差對偏置和權重求偏導,如式(20)和(21)所示:
(20)
(21)
為確定卷積及池化模板的大小,論文首先對數據庫中缺陷面積進行了統計,如圖6所示。
由圖6可知,缺陷像素點個數分布于6~44之間,平均值約為15。當缺陷面積較小,近有6個像素點時,卷積模板≥5×5時,易發(fā)生漏檢、誤檢等情況,所以本文確定的卷積核大小為3×3。
圖6 缺陷像素點個數統計圖
激活函數是實現神經網絡非線性變換的重要環(huán)節(jié),常用的激活函數有ReLU 函數、Sigmoid 函數等。
ReLU函數的定義為:
f(x)=max(0,x)
(22)
ReLU函數圖像如圖7所示。
圖7 ReLU函數圖
由圖像可以知道函數取值范圍是[0,∞],則其導數如下式所示:
(23)
Sigmoid函數定義為:
f(x)=1/(1+e-x)
(24)
Sigmoid函數圖像如圖8所示。
圖8 Sigmoid函數圖
通過對比ReLU函數和Sigmoid函數,可以發(fā)現ReLU函數收斂于無窮大,在測試中易發(fā)生浮點溢出現象。在圖像中待檢測物體結構相對簡單時,從計算的穩(wěn)定性角度考慮,Sigmoid函數激活函數更不易產生溢出且易于實現,因此文中選取Sigmoid函數作為激活函數。
一般而言,交叉熵代價函數多與Sigmonid激活函數搭配使用,在確定激活函數的前提下,文中采用交叉熵代價函數作為神經網絡代價函數,如式(25)所示:
(25)
式中:γ為目標函數;n為樣本總數;m為樣本;u為實際值;c為輸出值。
由于焊縫SDR圖像尺寸相對較小,CNN深度較高時易產生數據缺失導致誤識別,因此文中設計卷積層為2層,其結構如圖9所示。其中:C1,C3為卷積層;S2,S4為池化層;F5,F6為全連接層。
圖9 卷積神經網絡結構
C1的卷積核尺寸設定為3×3,深度為4;C3的卷積核尺寸也設定為3×3,深度為16;S2,S4均為池化層,其卷積核尺寸設定為3×3,移動步長為1。在CNN模型中,卷積層采取了補零操作,保持輸入的樣本長和寬不變,深度增加;而池化層不采取補零,發(fā)生池化后,樣本的深度不變,長和寬減小了。
文中所確定的CNN訓練步驟如下:①樣本輸入;②設置CNN初始參數;③選擇Sigmonid的激活函數;④開始訓練;⑤缺陷識別。
文中模型采用C++編程實現,具體流程如圖10所示。卷積神經網絡模型訓練樣本為樣本總數的20%,在CNN模型的訓練中,整體學習率(α)設置為0.000 1。
圖10 CNN網絡模型訓練流程圖
以某標段管道焊縫為例,條形缺陷如圖11所示。
圖11 12組條形缺陷圖像
在實際生產中,條形缺陷比圓形缺陷危害性大,其數量遠小于圓形缺陷數量,用傳統方法檢測,易于識別。雖然圓形缺陷危害性小,但是識別難度大,因此條形缺陷不是作為文中研究的重點,而圓形缺陷識別是文中重點研究對象。
文中分別采用20張缺陷和噪聲作為訓練樣本,訓練完成后另選200張圓形缺陷和噪聲圖像作為SDR測試樣本,試驗結果的混淆矩陣見表1,其中:TP為真正;FN為假負;FP為假正;TN為真負。
表1 SDR圖像識別混淆矩陣
根據表1所示的混淆矩陣,再根據敏感度(Se)和特異度(Sp)
(26)
(27)
可以得到樣本的敏感度和特異度對比,見表2。
表2 樣本敏感度/特異度
為進一步驗證CNN結構的魯棒性,文中多次進行重復試驗,每次選擇不同缺陷及噪聲SDR各20張進行訓練。測試樣本為與訓練樣本不同的SDR圖像。10次試驗結果見表3。
表3 樣本模板試驗結果
文中提及的噪聲是指影像中一種形似于缺陷的偽缺陷類型。從表3可知,CNN對圓形缺陷和噪聲都具有較高的識別率。
利用文中所提卷積神經網絡結構對條形缺陷和圓形缺陷進行檢測,試驗結果見表4。從表4可知,文中所提方法對條形缺陷依然有較好的識別率。
表4 缺陷檢測結果
分析未成功識別和成功識別的SDR圖像及其灰度直方圖如圖12~圖19所示。從視覺效果可以發(fā)現未識別成功的圖像灰度直方圖跨度小,視覺效果差,沒有層次感,卷積神經網絡不能進行分割處理。而已識別成功圖像灰度直方圖跨度大,視覺效果好,層次感強。因此卷積神經網絡對于圖像是否能夠識別,可以用圖像灰度跨度來鑒定。
圖12 識別失敗的圓形缺陷圖像
圖13 識別失敗的噪聲圖像
圖14 識別失敗的圓形缺陷灰度直方圖
圖15 識別失敗的噪聲灰度直方圖
圖16 識別成功的圓形缺陷圖像
圖17 識別成功的噪聲圖像
圖18 識別成功的圓形缺陷灰度直方圖
圖19 識別成功的噪聲灰度直方圖
為了驗證卷積神經網絡對圖像識別是否與圖像灰度直方圖跨度有關。文中取10組已識別成功和6組未識別成功圖像灰度直方圖跨度進行了對比,如圖20所示。
圖20 灰度圖跨度對比
由圖20可知,當灰度圖跨度低于50時,圖像檢測目標與背景之間的對比度相對較低,卷積神經網絡中卷積層難以提取目標特征,此時神經網絡的識別失效,無法判定缺陷。當局部圖像灰度直方圖跨度高于50時,識別目標較背景突出,圖像整體對比度較高,卷積層可以提取識別目標的特征,此時的卷積神經網絡對焊縫圖像有較好的識別效果。
為了充分探究文中神經網絡的復雜度和準確率,與以往公開文獻的情況之間的優(yōu)劣,這里做了比對,見表5。由表5可知,文中使用的卷積神經網絡結構雖然簡單但是對本領域有效,十分適合本領域的應用。從公開的文獻資料中,查到了用其它的人工智能深度網絡算法,在該領域的應用情況。在表中,通過對比可以看出,文中網絡結構更加簡單實用,雖然準確率并不是最高的,但比最高的98%只低1%。而誤報率僅僅是3%。表中沒有誤報率數值的,是在該文獻中沒有提及,無法比較。
表5 卷積神經網絡算法對比
文中選取的卷積神經網絡算法與傳統方法相比較,可以避免圖像特征值提取,能夠有效區(qū)分噪聲和圓形缺陷。通過構建網絡模型,設定網絡參數,可以直接將SDR圖像作為輸入樣本進行訓練與識別。試驗結果表明CNN網絡結構模型訓練速度快,識別率高,適合于X射線焊縫缺陷圖像的檢測與識別,準確率可達97%。文中通比對識別成功和識別失敗圖像的灰度圖跨度,發(fā)現灰度跨度在一定范圍內,卷積神經網絡會有很好的識別效果,否則卷積神經網絡會失效。因此在后續(xù)的研究中,對圖像進行預處理,擴大圖像的灰度跨度,進一步提高識別率。