封曉晨 李 寧,2 顧玉宛 符心宇 王雨生 徐守坤*
1(常州大學(xué)信息科學(xué)與工程學(xué)院 江蘇 常州 213164)2(河海大學(xué)計算機與信息學(xué)院 江蘇 南京 210098)
細小裂紋檢測一直是裂紋檢測領(lǐng)域的熱點問題,由于其目標(biāo)小且容易受噪聲干擾,所以檢測難度大。建筑物上出現(xiàn)細小裂紋極易造成安全隱患,因此對細小裂紋進行檢測具有重大的安全以及經(jīng)濟意義。傳統(tǒng)的檢測方法依靠人工視覺檢測或者選用無損的傳感器進行輔助檢測,但是這種檢測方法效率低、開支大,并且主觀性較強,無法對裂紋的類別以及尺寸進行客觀的分析評判。目前,常使用形態(tài)學(xué)法[1-3]、邊緣檢測法[4-5]、基于統(tǒng)計學(xué)[6-7]等方法進行裂紋檢測,但這些方法對噪聲干擾圖像的裂紋檢測精度小。Malarvel等[8]提出基于Otsu算法的用于焊接缺陷分割的機器視覺方法,即使用最小概率加權(quán)背景組(LPWBG),通過調(diào)整威布爾分布自動選擇用于分割焊接缺陷的期望閾值,該方法不能有效地去除噪聲對裂紋分割的干擾。朱力強等[9]針對裂紋圖像在光照不均以及裂紋方位不相同等問題,采用了裂紋圖像的角點作為特征點集,通過點集配準(zhǔn)算法將點集擴充后做歸一化處理,提高了匹配的準(zhǔn)確率,有效解決光照干擾問題。Shen[10]針對路面裂紋問題,通過灰度變換和圖像平滑等形態(tài)學(xué)方法處理道路裂紋圖像和投影來識別裂紋類別,能夠分割出完整裂紋,但是存在噪聲干擾問題。陳昊等[11]提出基于光流計算的軸承滾子缺陷檢測方法,依靠金字塔分層策略細化,能夠增強裂紋的細節(jié)信息。袁小翠等[12]提出對鋼軌缺陷圖像進行最大熵閾值分割方法,采取增強局部對比度,使用最大目標(biāo)熵、較小的目標(biāo)概率來得到更小閾值的方法,有效減少了圖像噪聲的干擾,但是忽略了對細節(jié)部分的分割。采用區(qū)域生長法[13]、水平集法[14]、主動輪廓模型[15]法等對細小裂紋的特征提取均不敏感。Withayachumnankul等[16]采用方向濾波器核進行圖像濾波,能夠從粗糙表面提取細小裂紋區(qū)域,提高檢測精度及靈敏度。Prasanna等[17]用張量投票算法增強裂紋特征,提取簡單裂紋特征效果較好,難以提取復(fù)雜裂紋特征,寬度信息不敏感。任子暉等[18]通過Curvelet變換增強血管特征,提高了神經(jīng)網(wǎng)絡(luò)對特征提取能力。傳統(tǒng)的圖像處理的方法可利用計算機將圖像信號轉(zhuǎn)換成數(shù)字信號并進行各種處理,同樣卷積神經(jīng)網(wǎng)絡(luò)也可以通過訓(xùn)練后的網(wǎng)絡(luò)模型對圖像進行分類、分割、目標(biāo)檢測,景軍鋒等[19]應(yīng)用深度卷積神經(jīng)網(wǎng)絡(luò)對色織物缺陷檢測,對圖像先進行高斯去噪,然后利用神經(jīng)網(wǎng)絡(luò)反向傳播算法對圖像進行訓(xùn)練,最后使用Meanshift算法對圖像特征進行分割。
目前,大部分基于U-Net改進的方法都是通過增大感受野來獲取全局特征信息,如DUNet[20]通過添加空洞卷積擴大感受野,但是增大感受野會造成局部細節(jié)信息丟失,對細小裂紋的檢測造成阻礙。本文算法不局限于感受野的擴大,提出一種基于U-Net[21]的設(shè)計方法,該方法將最大池化層、上采樣層和卷積核為小尺寸的深度可分離卷積進行相加融合,構(gòu)建一種全新的模塊擴大分辨率,擴展網(wǎng)絡(luò)深度來增大感受野,通過多尺度連接維持感受野與分辨率平衡的狀態(tài)。在最大感受野的前提下,保持最大分辨率,從而實現(xiàn)對細小裂紋的檢測,最后引入新的學(xué)習(xí)機制完成對有用的特征信息的捕捉,排除噪聲干擾。
U-Net網(wǎng)絡(luò)是一種醫(yī)學(xué)分割網(wǎng)絡(luò),具有良好的分割效果。本文算法采用U-Net網(wǎng)絡(luò)作為分割裂紋圖像的主干網(wǎng)絡(luò),該網(wǎng)絡(luò)的框架結(jié)構(gòu)與“U”型相似,并且進行端到端的訓(xùn)練,可以減少計算量。“U”型的左右兩邊對稱,左邊進行下采樣操作用于擴大感受野來獲取上下文信息,右邊上采樣操作能夠精確地定位分割位置,U-Net的上采樣有大量的通道,因此網(wǎng)絡(luò)的上下文信息可以向高層傳遞,并且在傳遞過程中擴大裂紋圖像的多尺度信息。上采樣操作只能恢復(fù)網(wǎng)絡(luò)在池化的過程中丟失的部分特征信息,右邊高層抽象的特征信息與左邊的低層高分辨的特征信息融合,擴大了感受野,恢復(fù)在池化操作過程中損失的特征信息。
網(wǎng)絡(luò)深度低,U-Net對裂紋特征表達的精度不高,同時編碼與解碼的通道數(shù)相同,造成網(wǎng)絡(luò)內(nèi)存占用大、計算參數(shù)冗雜。Resnet[22]一直都作為優(yōu)化網(wǎng)絡(luò)性能的有效手段之一,將輸入加入到輸出中構(gòu)造一個殘差結(jié)構(gòu),可以使神經(jīng)網(wǎng)絡(luò)在不增加參數(shù)復(fù)雜度的同時提高計算能力,并且降低了超參數(shù)的數(shù)量。使用殘差網(wǎng)絡(luò)的目的是解決U-Net網(wǎng)絡(luò)不斷加深的過程中出現(xiàn)的網(wǎng)絡(luò)退化問題。
如圖1所示,圖1(a)是最原始的殘差塊結(jié)構(gòu),圖1(b)是改進后的殘差塊結(jié)構(gòu)。本文算法的殘差結(jié)構(gòu)由深度可分離卷積(Depthwise Separable Convolutions)和高尺度轉(zhuǎn)置卷積(Transposed Convolution)構(gòu)成一個“weight layer”,深度可分離卷積可以分成深度卷積(depthwise convolution)和逐點卷積(pointwise convolution),深度卷積在每一個通道獨立進行空間卷積,最后利用逐點卷積將深度卷積后的通道進行混合輸出,可以提高網(wǎng)絡(luò)訓(xùn)練速度,轉(zhuǎn)置卷積是一種上采樣操作可以減少由深度可分離卷積擴展的通道數(shù),增大分辨率?!皊kip connection”使得輸入X在經(jīng)過兩層“weight layer”后的輸出可以與輸入X直接相加,得到目標(biāo)函數(shù)F(X)+X=H(X)將它轉(zhuǎn)化為殘差函數(shù)表示,如式(1)所示。
(a) 原始的殘差
F(X)=H(X)-X
(1)
此時只需要對F(X)=0時的殘差函數(shù)進行學(xué)習(xí),不是真的為0而是將其逼近于0,比學(xué)習(xí)H(X)=X的恒等映射容易,網(wǎng)絡(luò)性能不會退化。
使在噪聲干擾較多的情況下,容易丟失對細節(jié)信息的分辨能力,造成裂紋圖像的偽分割。注意力機制(attention mechanism)[23]對特征信息具有顯著的聚焦能力,解決信息負載過重的問題,選擇正確的特征信息輸入到之后的神經(jīng)網(wǎng)絡(luò)中計算,應(yīng)用在語義分割中可以有效提高圖像分割的精度。引入注意力機制模塊,在注意力機制中融合殘差結(jié)構(gòu)和卷積核大小為3×3的深度可分離卷積,提高網(wǎng)絡(luò)速度,并在其后添加轉(zhuǎn)置卷積捕捉局部特征,捕捉全局的信息,并對整個網(wǎng)絡(luò)進行BN(Batch Normalization)處理,提升網(wǎng)絡(luò)泛化能力,減少偽分割現(xiàn)象。
該機制學(xué)習(xí)完特征后直接通過網(wǎng)絡(luò)訓(xùn)練而生成。訓(xùn)練的模型選擇性學(xué)習(xí)裂紋的特征信息,排除背景的干擾信息,通過注意力機制捕捉全局的信息來獲得更大的感受野以及上下文信息,聚焦于裂紋信息的選擇,并且對裂紋的檢測邊緣進行精細化處理,通過注意力機制優(yōu)化網(wǎng)絡(luò)。注意力機制的編碼公式如式(2)所示。
(2)
式中:hm表示編碼階段的轉(zhuǎn)換函數(shù);anm為權(quán)重;n′表示特征信息的長度。
權(quán)重公式如下:
(3)
下采樣會降低像素被正確標(biāo)記的概率,U-Net網(wǎng)絡(luò)的上采樣對恢復(fù)特征信息的能力有限,使得裂紋的寬度信息不明顯,無法檢測到細小裂紋的現(xiàn)象因此延伸U-Net框架,在U型底部添加卷積池化層的融合層,目的是減少計算量,提高網(wǎng)絡(luò)速度,同時擴大特征圖捕捉局部信息和細節(jié)信息。
如圖2所示,圖中的卷積池化層由步長為2的最大池化層、1×1的深度可分離卷積與2×2的上采樣層構(gòu)建。最大池化層可以減少后面卷積層中的參數(shù)量,降低過擬合,同時該操作會降低圖像分辨率,池化后進行上采樣操作可以復(fù)原損失的特征信息,將來自上一層的輸出獨立地輸入到每一個卷積池化層中,將4個卷積池化層和1個深度可分離卷積輸出的特征圖進行層融合,通過層融合來拼接通道維度,減少網(wǎng)絡(luò)模型的訓(xùn)練時間,擴大特征圖,增大分辨率。深度可分離卷積有效減少參數(shù)計算量,同時設(shè)置該卷積的卷積核大小為1×1,縮小通道數(shù)目,并引入非線性激活函數(shù)ReLU,提高網(wǎng)絡(luò)的非線性表達,減少卷積過程中的梯度消失現(xiàn)象。卷積池化層將較大范圍的感受野和高清晰的分辨率達到相對平衡,有效表達更加復(fù)雜的特征。
圖2 層融合模塊
最大池化層的公式如下:
(4)
式中:L為當(dāng)前層;L-1為上一層;i、j為當(dāng)前像素位置;m、n為對應(yīng)的pool核覆蓋的區(qū)域。
如圖3所示,改進U-Net的模型結(jié)構(gòu)。模型中U-Net的特征向量的深度為2 048,U型的左側(cè)與右側(cè)使用相同的卷積層,左側(cè)進行下采樣操作即max pooling層,壓縮圖像特征,同時在右側(cè)對稱位置使用上采樣操作即UpSampling層,恢復(fù)圖像的特征信息。其中,每個卷積層包含殘差塊、注意力機制和2個轉(zhuǎn)置卷積層,并且在每一個網(wǎng)絡(luò)層后面都標(biāo)注了輸出的特征圖的尺寸和深度。輸入大小為256×256×1的原圖和它對應(yīng)的標(biāo)簽大小為256×256×1的人工分割的GT圖,經(jīng)過神經(jīng)網(wǎng)絡(luò)訓(xùn)練,輸出大小為256×256×1的測試結(jié)果圖。輸入的圖像通過卷積層、最大池化層、ReLU函數(shù)的訓(xùn)練過程如式(5)所示。
圖3 改進U-Net模型結(jié)構(gòu)
Fij(X)=fm,s{(Xsi+αi,sj+αj),0≤αi,αj≤m}
(5)
式中:X為(i,j)位置的數(shù)據(jù)向量;Fij(X)為相對應(yīng)的輸出;m為卷積核的大?。籹為步長;fm,s為對應(yīng)層類型的操作。
Concatenate層通過融合多種尺度特征圖的語義信息來增加通道數(shù),以此降低算法的復(fù)雜度。在激活函數(shù)之前添加BN層,緩解上一層的輸入分布向非線性函數(shù)的兩端緩慢靠近,BN層做一個N(0,1)的正態(tài)分布的歸一化處理,最后輸入到激活函數(shù)ReLU的值,在反向傳播中可以產(chǎn)生更明顯的梯度,有效幫助網(wǎng)絡(luò)進行收斂以此改善梯度彌散的現(xiàn)象。
如圖4所示,表示網(wǎng)絡(luò)中每個結(jié)構(gòu)的流程。如圖4(a)所示,改進后的殘差塊就是由深度可分離卷積、轉(zhuǎn)置卷積層和BN層組成,輸入通過skip connection與卷積過后的輸出在相加層融合。如圖4(b)所示,注意力機制由“編碼-解碼”結(jié)構(gòu)組成,編碼器由最大池化層、卷積層組成,解碼器由上采樣層、卷積層組成。將殘差塊輸出的特征信息輸入到注意力機制中,軟注意力機制在訓(xùn)練時會過度參數(shù)化,通過一個skip connection與Sigmoid函數(shù)分類后的輸出共同構(gòu)建殘差結(jié)構(gòu),解決軟注意力機制中冗余的參數(shù)計算問題,對卷積神經(jīng)網(wǎng)絡(luò)進行優(yōu)化。如圖4(c)所示,Conv-pooling網(wǎng)絡(luò)層由最大池化層、深度可分離卷積、ReLU激活函數(shù)、BN處理層、上采樣層組成,在U-Net底部構(gòu)建的融合模塊由4個相同的Conv-pooling和1個深度可分離卷積組成的網(wǎng)絡(luò)結(jié)構(gòu)。每個Conv-pooling層獨立接收來自于上一層的相同的輸入,最后將4個Conv-pooling和1個深度可分離卷積的輸出進行融合。圖中已標(biāo)注出每一個卷積層輸出維度。
(a) Accuracy
(a) 殘差塊流程
本文實驗環(huán)境配置參數(shù):CUDA8.0,12 GB內(nèi)存,GeForce GTX 1080 GPU,64 bit Ubuntu。實驗使用的仿真軟件為PyCharm,在TensorFlow以及Keras框架下運行。
從網(wǎng)絡(luò)搜集混凝土裂紋圖像以及自己采集的裂紋圖像共2 000幅進行數(shù)據(jù)增強到38 000幅,其中圖片旋轉(zhuǎn)、平移、扭曲的概率都設(shè)置成0.5。將38 000幅圖像統(tǒng)一處理成大小為256×256×1的灰度圖像,選擇20 000幅圖像作為訓(xùn)練集,8 000幅圖像作為交叉驗證集,10 000幅圖像作為測試集,實驗的目的是驗證本文網(wǎng)絡(luò)模型能否檢測出更多細小裂紋。
針對裂紋檢測的研究利用準(zhǔn)確率函數(shù)(Accuracy),指像素被正確分類的樣本數(shù)占總分類樣本數(shù)的比值,如式(6)所示。
(6)
式中:TP表示正確像素被正確分類;FN表示正確像素被錯誤分類;FP表示錯誤像素被分類為正確像素;TN表示錯誤像素被分類為錯誤像素。
二進制交叉熵損失函數(shù)(BCELoss)如式(7)所示。
(7)
式中:yi∈{0,1};fi(x)∈(0,1)。
重疊度(Intersection-Over-Union,IoU)指預(yù)測的像素和真實像素的交集與并集的比值,重疊度的值反映了分割目標(biāo)與真值的重疊度,隨著重疊度提高,像素被正確標(biāo)記的概率也隨著提高,該值大小與表示定位的準(zhǔn)確度成正比,如式(8)所示。
(8)
式中:target代表被標(biāo)記的像素;prediction代表預(yù)測的像素。
ROC曲線下面積(Area Under Curve,AUC)的值是一種衡量模型優(yōu)劣的評價指標(biāo),如式(9)所示。
(9)
召回率R(Recall),召回率是被預(yù)測為正例樣本占真實正例樣本的比值,如式(10)所示。
(10)
精度P(Precision),精度是正確預(yù)測的正樣本數(shù)占所有被預(yù)測為正樣本的數(shù)量的比值,如式(11)所示。
(11)
F-score測量是Precision和Recall加權(quán)調(diào)和平均。本文算法選取α=1時,F(xiàn)1-score的測量方法如式(12)所示。
(12)
均絕對誤差(Mean Absolute Error,MAE),它表示模型分割的圖像和人工分割的圖像之間的像素的絕對誤差的平均值,如式(13)所示。
(13)
式中:x表示輸入;y表示輸出;m表示被標(biāo)記的數(shù)量;H(x)表示被分割的圖像;F(x)表示人工分割的標(biāo)準(zhǔn)結(jié)果GT圖像。
本節(jié)首先選取5種網(wǎng)絡(luò)模型分別是本文算法、U-Net、Resnet U-Net、Attention resunet、DUNet進行訓(xùn)練。Resnet U-Net是在U-Net框架下使用Resnet級聯(lián);Attention resunet是在Resnet U-Net的框架下添加注意力機制,優(yōu)化裂縫寬度;本文算法增加殘差塊、注意力機制、融合模塊;DUNet在U型底部添加空洞卷積(Dilated Convolution),在標(biāo)準(zhǔn)卷積里注入空洞,使網(wǎng)絡(luò)模型具有更大的感受野。選用20 000幅圖像進行網(wǎng)絡(luò)訓(xùn)練,同時選用8 000幅圖像進行交叉驗證。用來訓(xùn)練的5種卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù)設(shè)置:優(yōu)化方法(optimizer):Adam;損失函數(shù)(loss):BCELoss;學(xué)習(xí)率(learning-rate):0.004;批量大小(batch size):2;迭代次數(shù)(Epoch):100;訓(xùn)練迭代期(iteration):20 000。
表1為本文算法與其他四組算法在epoch=100時,準(zhǔn)確率(Accuracy)、損失(Loss)、重疊度(IoU)、ROC曲線下面積(AUC)的比較。可以看出本文算法的AUC值與其他四組算法比較,提升幅度基本持平,與U-Net的差值最大為0.0073;本文算法加入殘差塊和轉(zhuǎn)置卷積后,IoU值比其他四種算法提升最大,因此定位準(zhǔn)確度最高,Resnet U-Net的IoU值居第二,表示IoU的提升與網(wǎng)絡(luò)深度與關(guān);本文算法在Accuracy值比較其他三組算法大,Loss值的最小,并且Accuracy提升值與loss下降值成反比,表示該網(wǎng)絡(luò)的泛化性能比較好。
表1 5種網(wǎng)絡(luò)模型訓(xùn)練的定量比較
圖5展示了評價指標(biāo)Accuracy、Loss、IoU、AUC與迭代次數(shù)的曲線圖。圖5直觀地表現(xiàn)本文算法與其他4種深度網(wǎng)絡(luò)在訓(xùn)練階段變化過程,并且在訓(xùn)練到epoch=15后,各項指標(biāo)一直優(yōu)于其他三種網(wǎng)絡(luò)。本文算法的Accuracy初始值為0.956,幅度緩慢而穩(wěn)定提升至0.990 8; Loss降低幅度最大,隨著迭代次數(shù)的增加從0.117 0逐漸下降到0.021 0;本文算法的IoU初始值位0.314 3提升至0.797 3,在迭代次數(shù)的中后期提升幅度較大;AUC的初始值為0.931 6提升至0.998 6,升幅緩慢。
本節(jié)為進一步驗證本文算法對裂紋檢測的有效性,將形態(tài)學(xué)的低帽變換、Otsu分割算法、canny邊緣檢測算法這三組傳統(tǒng)算法與上述5種網(wǎng)絡(luò)模型的測試結(jié)果進行定量均值比較與分析。
如表2所示,在8種算法的評價結(jié)果中,本文算法在召回率、精度、F1分?jǐn)?shù)和絕度誤差均表現(xiàn)最優(yōu)。采用小卷積核的深度可分離卷積使速度得到提升,因此消耗時間最少為0.139 5 s,Resnet U-Net加深網(wǎng)絡(luò)所消耗的時間最長為1.345 0 s,表示深度可分離卷積可以提高網(wǎng)絡(luò)速。Attention resunet在引入注意力機制后,精度提升0.135 9,網(wǎng)絡(luò)消耗的時間有減少到1.085 1 s。本文算法的MAE值約為傳統(tǒng)算法的十分之一,約為其他深度網(wǎng)絡(luò)的二分之一。從表2的評價指標(biāo)來看,本文算法對裂紋的像素被標(biāo)記的正確率得到了提升,像素得到正確分類和定位。
表2 8種分割算法的定量均值比較
續(xù)表2
圖6為8種算法的部分實驗仿真圖。對算法進行定性比較,每組圖像的前兩幅分別是原圖和人工分割的GT圖像。從圖6(a)到圖6(f)的圖像分割的結(jié)果來看,雖然Resnet U-Net的網(wǎng)絡(luò)層數(shù)深,使得噪聲干擾比其他三組都小,但是分割出的裂紋出現(xiàn)斷裂現(xiàn)象。Attention resunet通過注意力機制來提升像素的定位能力,有效辨別特征信息的正確性。DUNet檢測裂紋圖像清晰,但是表達出的特征同樣出現(xiàn)斷裂情況。本文算法通過添加融合層,擴大分辨率,獲得更多的局部裂紋特征,因此從圖6(a)來看,圖像中分割出更多細小的裂紋,引入注意力機制獲取真實的裂紋寬度信息。從圖6(b)的U-Net測試結(jié)果來看,端到端訓(xùn)練容易丟失全局特征,在相同訓(xùn)練條件下,比其他三組網(wǎng)絡(luò)分割出的裂紋噪聲干擾大。圖6(a)的Resnet U-Net不能有效分割出細小裂紋,但抗干擾性好,分割出的圖像平滑。圖6(e)的Attention resunet比起Resnet U-Net的裂紋分割更加完整和清晰,表明在網(wǎng)絡(luò)引入注意力機制,使得特征捕捉能力持續(xù)的提升。圖6(c)的DUNet增加空洞卷積用來處理細節(jié)特征,有輕微噪聲干擾,但是全局信息處理不好,不能完整地分割裂紋圖像。圖6(d)的低帽變換通過處理亮背景下的暗物體,突出裂紋,但是分割出的裂紋界限不明顯。圖6(e)的Otsu分割算法噪聲干擾嚴(yán)重產(chǎn)生了偽分割現(xiàn)象,不能有效對裂紋的像素點進行分割。圖6(f)的canny算法檢測出的裂紋的輪廓虛化,裂紋不明顯。
(a)
綜上所述,本文算法對細小裂紋具有良好的分割性能,減少噪聲干擾,對像素精確定位。在復(fù)雜的背景下依然可以排除干擾,識別真正的裂紋信息,對裂紋進行完整分割,在裂紋監(jiān)測中具有一定的應(yīng)用價值。
針對裂紋檢測中出現(xiàn)的細小裂紋圖像不容易檢測、噪聲干擾、部分信息丟失的問題,本文算法從U-Net和殘差結(jié)構(gòu)設(shè)計、注意力機制、層融合模塊三方面對U-Net進行改進,構(gòu)建一種新的網(wǎng)絡(luò)模型。實驗結(jié)果表明,本文方法可減少噪聲的干擾,提升訓(xùn)練速度,縮短訓(xùn)練時間,檢測到細小裂紋,獲取裂紋真實的寬度信息。同時,由于光線遮擋裂紋而出現(xiàn)圖像灰度不均的問題,導(dǎo)致檢測出的裂紋特征被遮擋,圖像裂紋產(chǎn)生斷裂現(xiàn)象。目前,提出的網(wǎng)絡(luò)模型尚未解決這一問題,下一步將著重研究如何通過卷積神經(jīng)網(wǎng)絡(luò)解決裂紋在訓(xùn)練過程中出現(xiàn)的斷裂現(xiàn)象。