張勇, 王鵬, 呂志剛,, 邸若海, 李曉艷, 李亮亮
(1.西安工業(yè)大學 電子信息工程學院, 陜西 西安 710021;2.西安工業(yè)大學 發(fā)展規(guī)劃處, 陜西 西安 710021;3.西安工業(yè)大學 機電工程學院, 陜西 西安 710021)
隨著我國石油天然氣行業(yè)的高速發(fā)展,輸送油氣管道的焊接質量問題[1]顯得尤為重要。X射線成像[2]成為工業(yè)界焊縫缺陷檢測[3]一個重要的研究手段。該方法利用X射線對焊縫管道進行照射,進而獲取焊縫內部的形態(tài)圖像[4]。對焊縫缺陷檢測和評估質量的傳統(tǒng)方式是通過工程師經驗來評測,此方式存在檢測人員評判標準不一、費時費力、檢測誤差大等問題。
為了提高焊縫底片評測[5]的精度和效率,許多科研工作者試圖提取缺陷區(qū)域[6]。文獻[7]提出了一種利用拉普拉斯算子[8],根據缺陷的紋理特征來分割缺陷邊緣,最后分類圖像的特征信息的方法。Zhang[9]等人利用大律法(OSTU)結合部分不均勻像素分割焊縫,并通過串行區(qū)域分割方法識別缺陷。用圖像處理的方法進行缺陷檢測,噪聲大且魯棒性差。在傳統(tǒng)機器學習算法中,高煒欣[10]等人研究焊縫缺陷,提出利用像素點個數的密度近似相等,采用聚類分析[11]的算法進行缺陷分割。Jiang[12]等人提出用主成分分析法[13]提取缺陷信息的特征,再采用支持向量機[14]對該特征進行缺陷分類。傳統(tǒng)機器學習的方法在缺陷分割中的靈活性與精確性表現欠佳。
近年來,深度學習中的卷積神經網絡在圖像分割[15]任務中取得了很好的效果。人工智能也應用于越來越多的行業(yè)。在工業(yè)質檢行業(yè),人工智能和語義分割相結合有著廣泛應用[16]。文獻[17]提出全卷積神經網絡(Fully Convolutional Networks,FCN),先輸入圖像,然后對最后一層特征圖利用反卷積的方式進行加權,最后恢復到原尺寸大小,得到圖像像素,保留原始信息,最后逐像素分類。該方法得到的結果在細節(jié)上不夠敏感且特征表達不夠準確。U-net[18](Unity Networking)屬于FCN的變體,網絡結構成U型對稱,采用Encoder-Decoder[19]的設計思想實現特征融合,相比FCN有優(yōu)勢,但其在訓練不同大小數據集時,模型結構不靈活。Schlemper[20]等人提出A-Unet(Attention Gated Networks)分割模型,即分割模型融入了注意力機制。該模型可以在相關任務中重點關注、捕捉感興趣的區(qū)域而抑制無用特征,但存在邊界分割不清晰等問題。Huang[21]等人提出了全尺度連接的Unet+++網絡,該網絡可以在一定程度上提高小缺陷分割精度,但無法保證邊界缺陷的分割精度和數據不平衡導致的分割困難等問題,單一的密集連接[22],易造成過擬合現象。Qin[23]等人提出U2net網絡用于圖像分割,采用RSU(ReSidual U-blocks)的池化操作,在提升模型架構的基礎上,不增加計算模型的復雜度。Chen[24]等人提出了DeepLabv3+分割算法解決下采樣造成分辨率減小,導致分割精度降低的問題。上述方法在分割任務中均有應用價值,但在分割過程中,模型對于細節(jié)特征提取能力較弱且產生了大量冗余信息,導致在X射線缺陷數據集上表現不佳。
針對上述X射線焊縫缺陷分割的不足之處,本文提出了一種在上下采樣間加入編解碼信息提取模塊DP_Block的U形網絡Dilated_Pooling_Unet(DP_Unet),同時融入GAM(Global Attention Mechanism)注意力模塊[25],最后提出了一種混合損失函數Dice_BCE,提升了網絡對于焊縫缺陷的分割精確度。
Unet起初是一個應用于醫(yī)學二維圖像分割的卷積神經網絡。作為最經典的語義分割模型之一,它的優(yōu)勢在于利用Encoder-Decoder的U形網絡結構,Unet結構如圖1所示,左側由4個部分組成,每個部分中有兩個卷積層,每部分之后會有一個激活函數和一個池化層操作。圖像的起始分辨率為5722,每個模塊的分辨率如圖1標識。相應解碼器也包含了4個部分,分辨率隨著上采樣操作而升高,從而得到最終圖像。圖1中灰色箭頭表示跳躍連接,目的是連接上采樣的輸出結果和下采樣中子模塊有著相同大小的輸出結果,作為該子模塊的下一個模塊的輸入。
圖1 Unet結構圖Fig.1 Unet structure diagram
Unet的缺點在于編碼器部分的語義信息既可以通過跳躍連接也可以通過上下采樣傳遞給解碼端,從而產生冗余的信息。傳遞方式不一樣,也會存在信息融合的不確定性,導致缺陷邊界分割模糊,小缺陷分割精度低。另外,在下采樣時隨著分辨率升高而生成的淺層特征信息,其缺陷邊緣有著不夠充分的特征表現,且通過跳躍連接將編碼端結果傳至解碼端時容易導致信息不完整,缺陷分割精度低。
針對上述Unet網絡存在的問題。改進后的Dilated_Pooling_Unet(DP_Unet)網絡模型如圖2所示,本文有以下優(yōu)化:(1)提出一個介于上下采樣間的編解碼語義信息提取模塊DP_block,它由密集空洞卷積和多尺度池化層組成。通過增強焊縫缺陷信息及最大限度對缺陷進行特征提取來保留圖片原始信息和提升焊縫缺陷分割效果。(2)將GAM注意力機制引入下采樣中重點關注缺陷信息部分,改善缺陷分割模型效果差的問題。(3)提出一種混合損失函數Dice_BCE,具體為二元交叉熵(Binary Cross Entropy,BCE)和Dice函數采用不同比重相結合的混合損失,提升焊縫缺陷邊界分割精確度和模型的泛化性。
圖2 DP_Unet模型圖Fig.2 DP_Unet model diagram
由于X射線底片焊縫上的缺陷具有豐富的語義信息及形狀大小的不同,在缺陷分割任務中,淺層神經網絡難以得到充足的特征信息。本文沿用Encoder-Decoder架構,提出在上下采樣間加入編解碼信息提取模塊DP_block,旨在減少連續(xù)池化和卷積導致的信息損失,增強編碼器下采樣后X射線底片焊縫缺陷的語義信息及最大限度地對缺陷進行特征提取來保留圖像原始信息,以便更好地服務于上采樣過程,達到提升底片焊縫缺陷分割效果。它由基于密集連接的空洞卷積模塊和基于空間金字塔的多卷積核大小池化模塊組成??斩矗〝U張)卷積網絡[26]的提出是為了有效計算小波變換,后來用于解決圖像語義分割的問題,空洞卷積引入”Dilated rate”參數,定義了卷積核各點之間的間隔數量,如圖3所示,分別是該參數rate為1的標準卷積、rate為4和rate為6的空洞卷積。
圖3 感受野示意圖Fig.3 Flowchart of height measurement
3.1.1密集連接的空洞卷積模塊
深度學習中有Inception和Resnet兩個經典架構。Inception系列結構使用了不同的卷積核大小來擴大感受野,Resnet則采用快捷機制避免梯度消失,使卷積神經網絡層數突破上千。二者結合后,繼承了兩種優(yōu)點,至此深度神經網絡達到了新的高度。受上述機制和空洞卷積的啟發(fā),提出基于密集連接的空洞卷積模塊,發(fā)揮提取高級語義特征的作用。如圖4所示,密集連接的空洞卷積模塊有4個分支,rate值隨著卷積數量的增加而增加到1、4和6,每個支路的感受野大小分別是3、9、11和23。分別加入一個1×1卷積在并聯支路中來線性激活。最后,如同resnet快捷機制,將原始特征與其他特征相融合。大目標的抽象特征往往被大感受野的卷積核所提取,而小感受野更適合于小缺陷。通過組合不同大小的rate值,該模塊能夠提取不同大小對象的特征。
圖4 密集連接的空洞卷積模塊Fig.4 Dense connected atrous convolution module
3.1.2基于空間金字塔的多卷積核大小池化模塊
能夠使用編解碼器中有效語義信息的多少往往取決于感受野的大小,一般只使用3×3這種單個池化核進行池化操作。本文提出了基于空間金字塔的多卷積核大小池化模塊。圖5所示共4個不同大小的感受野池化模塊,分別對應了4級輸出,分別含有不同池化大小的特征圖像。每池化一次,相應地用一個1×1卷積來減少計算成本和維數,將特征圖像的權重維數減少為原始特征圖像維數的1/K,K值為原始特征圖像的通道數。然后網絡通過上采樣方式將低維特征圖恢復至高維原始圖像大小,最后將該特征圖與上采樣后的特征圖連接。
圖5 多卷積核大小池化模塊Fig.5 Multi convolution kernel pooling module
Unet模型通過下采樣和跳躍連接來提取和傳遞有效特征信息,這種途徑會導致傳遞冗余信息和傳遞過程中信息的不完整性和不確定性。針對上述兩種方式融合,各維度特征進行簡單拼接,從而無法獲取豐富的特征信息,尤其對于焊縫缺陷這種具有小目標特征提取是不利的。因此,在編碼器結構中加入一種全局注意力(Global Attention Mechanism,GAM)模塊以提高上下文的聯系能力。如圖6所示,GAM注意力模塊是一種序貫模式的通道-空間注意力機制,對CBAM(Convolutional Block Attention Module)[27]注意力機制進行重新設計,通過減少信息損失并放大全局交互表示來提高深度神經網絡的性能。其中的通道(Channel)注意力模塊在3個維度上使用三維陣列的方式來保存信息。然后,在跨維度模式下,利用一個多層感知機放大了通道和空間的依賴性;利用兩個卷積層在空間(Spatial)注意力模塊中融合空間層的信息,便于更好地關注空間信息。
圖6 GAM注意力機制Fig.6 Overview of GAM
如圖6所示,給定輸入特征映射F1∈RC×H×W,中間狀態(tài)F2和輸出F3定義如式(1)和式(2)所示:
其中:Mc是通道圖,Ms為空間圖,?是乘法操作數。GAM模塊能夠有效地學習通道和空間的特征信息,更加關注感興趣的區(qū)域,在焊縫缺陷分割上具有良好效果。
通常利用Dice損失函數來解決目標和背景部分的不平衡分割問題,Dice系數用來評估正類和負類的相似程度。
Dice_loss損失函數[28]如式(3)所示:
對于語義分割任務而言,其中的|X|和|Y|分別表示分割當中的真值圖(Ground_truth)的值和預測圖(Predict_mask)的值。通常用Dice損失函數描述分割結果和真值的相似度。隨著模型的訓練,往往將結果Dice系數最大化,目的是為了盡可能地提高分割結果與分割真值的相似程度。但是,當缺陷過小時,結果容易導致Dice損失函數值發(fā)生劇烈震蕩,從而影響整個訓練過程。二元交叉熵(Binary Cross Entropy,BCE)函數更著重于其中每個像素單元的預估概率,其值是目標和背景區(qū)域中所有像素的交叉熵,如式(4)所示:
如果缺陷區(qū)域較小,交叉熵損失值的變化隨著模型預測結果的變化影響較小,可解決Dice損失函數的弊端帶來的問題。本文考慮數據與模型的契合性,并結合兩種不同損失函數的特點,提出一種Dice_BCE混合損失函數,如式(5)所示:Loss=β· BCE_loss+(1-β)· Dice_loss , (5)式中,權重影響因子β用于改變兩個損失函數的比重,在0~1內取值。最后,訓練過程中為了提升模型的泛化性,加入dropout層,目的是加快模型收斂、避免模型過擬合。
本文采用GDX-ray公共數據集的焊縫缺陷數據集。將數據集圖片經過裁剪、滑窗的方式,共得到4 674張底片圖像。每張圖片分辨率大小為512×512,標簽分為缺陷與非缺陷,像素大小分別用255和0表示。訓練集和測試集隨機劃分,前者占80%,后者占20%。訓練圖片含3 748張,測試圖片包括926張。
本文實驗所用的訓練平臺是32G內存的Windows10操作系統(tǒng),處理器為AMD Ryzen 5600X,GPU是顯存為8G的RTX3070。采用Pytorch 1.11.0框架,環(huán)境為CUDA11.3,torchversion版本為0.12.0,python版本采用3.8。
本文采用4種常見的評價指標來定量評價所提模型分割性能,分別是Dice系數值、體積疊加誤差率(VOE)、相對體積的差(RVD)、兩樣本之間的最大對稱距離(MSSD)。
Dice系數常應用于圖像分割模型評價,它用于計算分割結果X和標簽Y兩個樣本的相似度或重疊度,如式(6)所示:
其中,Dice的取值范圍在[0,1]。
VOE是體積重疊誤差,其值越小,代表分割性能越好,如式(7)所示:
RVD用于計算兩個樣本的相對體積差,如式(8)所示:
MSSD代表結果與真值的最大對稱表面距離:
其中:T()是表面像素值,S(q,T())表示像素到表面像素的距離。以mm為單位。
4.4.1 損失函數對分割精度的影響
本文對所提混合損失函數的影響因子β進行分析,用來測試損失函數對分割精度的影響,如圖7所示,實驗結果為隨著β選取不同值,Y軸產生不同的Dice結果,介于82.9%~87.3%。當β值為0時,Y軸顯示的Dice值為82.9%。Y軸結果隨著X軸影響因子的增加而逐漸增高,表明混合損失函數可以提高模型分割效果,Dice系數值在影響因子選為0.7時結果為87.3%,為最高值。綜上,本文將β選為0.7進行本文實驗。權重β為0.7時,網絡模型訓練過程中訓練集上的Loss值隨訓練次數的迭代降到較低值,并且保持整體穩(wěn)定下降趨勢。訓練次數為20 000次時,損失值降至相對較少的值;訓練次數為40 000次時,損失值趨于穩(wěn)定;最終,損失值降至約0.002,整體得到一個較好的訓練效果。
圖7 Dice系數隨β變化趨勢圖Fig.7 Trend of Dice coefficient with weighting factor β
4.4.2 注意力機制對分割精度的影響
通過在編碼器路徑中添加GAM注意力模塊,本文以是否添加注意力模塊、添加CBAM注意力模塊和添加GAM注意力模塊做對比實驗,圖8展示了注意力模塊提高模型分割精度的效果。如果模型中加入CBAM注意力機制,僅相比于沒有添加注意力模塊提升了0.5%;但添加GAM注意力模塊后,提升至93.45%,分割精度提高了1.05%。
圖8 添加和未添加注意力模塊的分割結果Fig.8 Segmentation results before and after adding attention module
4.4.3 消融實驗
DP_Unet模型將密集連接的空洞卷積模塊和多卷積核池化模塊組成的DP_block加入到上下采樣間,并在下采樣添加GAM注意力機制。表1體現了添加的各個模塊對模型分割效果的影響。本文做了多個消融實驗,以Unet算法為基線的算法進行底片缺陷分割的Dice系數值僅有87.24%,而采用“Unet+密集連接空洞卷積”的Dice值達到90.55%,“Unet+多卷積核池化”的Dice結果為90.88%,“Unet+DP_block”模型可以提升至92.33%。同時VOE值、RVD值和MSSD值均有不同程度的減小。這說明DP_Unet模型中新增模塊均能提高模型分割性能,分割精度也有不同程度的提升。另外,與其他組合模型比較,DP_Unet模型通過加入密集連接空洞卷積模塊與多卷積核池化模塊組成的DP_Block和注意力模塊獲得了最高的Dice系數值和最低的VOE、RVD和MSSD等評價指標。
表1 加入不同模塊的消融實驗結果Tab.1 Ablation experiment results of adding different module ablation
4.4.4 實驗結果比較
圖9為測試集部分X射線底片缺陷分割的可視化結果。從圖中可看出,Unet、U2net、Linknet、DeepLabv3+和TransUnet模型基本均可分割出底片缺陷區(qū)域,但對于邊界模糊和小缺陷,存在分割不全、過分割和漏分割現象。
圖9 不同算法實驗結果Fig.9 Experimental results of different methods
可以看到,紅色框部分可以顯著突出本文算法分割更精細的地方,分割效果更為直觀。DP_Unet通過解決缺陷特征提取時難以最大限度保留圖像原始信息問題和有效彌補缺陷信息損失問題,且可以精確分割邊緣目標,實驗結果好于其他模型。表2是采用不同算法在公開數據集GDX-ray上的實驗結果。分別采用4個不同的評價指標對實驗結果進行定量分析。本文方法的Dice系數結果相比U2net提高了7.34%、相比Unet提高了6.21%、相比Linknet提高了2.88%,相比DeepLabv3+提高了1.79%,相比TransUnet提高了1.38%,但是DeepLabv3+的MSSD值得到了最小值11.07,比本文方法略低0.25 mm。實驗結果表明,提出的編解碼語義信息提取模塊、GAM注意力機制和混合損失函數,可以有效提升X射線底片缺陷分割的精度。
表2 不同方法的缺陷分割性能定量比較Tab.2 Quantitative results of different defect segmentation methods
4.4.5 實測數據分割結果
本文對陜西西宇無損檢測公司提供的30張缺陷樣片圖像進行測試,以進一步驗證所提算法的普適性。圖10所示為部分底片缺陷圖像的可視化結果,第一行為原始圖像,第二行為分割真值,第三行為本文方法的分割結果??梢钥闯?,本文所提方法可有效分割氣孔、夾渣和裂紋等缺陷,且與真值結果相近。
圖10 本文方法在無損檢測公司提供的數據集上的分割結果Fig.10 Segmentation results of this method on the dataset provided by a non-destructive testing company
采用上述評價指標對缺陷樣片30張測試圖像進行定量分析。得到的Dice、VOE、RVD、MSSD 4個評價指標如表3所示,分別為90.36%、23.97%、-9.06%和12.87 mm,表明無論在公共數據集還是實測數據集都有較為理想的分割效果,均可實現底片焊縫缺陷的高精度分割,體現了模型的強魯棒性。
表3 本文方法在無損檢測公司提供數據集上的定量分析Tab.3 Quantitative analysis of this method on data sets provided by non-destructive testing companies
針對底片焊縫缺陷分割精度低、邊界分割模糊等問題,本文構建了一種改進的DP_Unet的X射線底片焊縫缺陷分割方法:(1)提出了編解碼信息提取模塊DP_block,最大程度解決特征提取過程中信息損失、分割精度低的問題;(2)在編碼器結構中,加入GAM注意力機制,可增強高級語義表征能力,以更好地捕捉缺陷,抑制無用的信息;(3)采用BCE函數與Dice系數搭建混合損失函數Dice_BCE,不但可以通過Dice系數解決類的不平衡分割問題,還可通過交叉熵在回傳類別時穩(wěn)定梯度使模型加快收斂。在公開數據集GDX-ray上的實驗結果表明,所提出的DP_Unet能夠提升缺陷區(qū)域的邊緣特征,使分割精度有所提高,Dice值達到93.45%,與基線算法相比均有大幅提高,具有更優(yōu)的模型性能,對工業(yè)無損檢測領域有著重要的應用意義。