楊秋媛,李 寧,石 林,莊麗華,徐守坤
(常州大學 計算機與人工智能學院阿里云大數據學院軟件學院,江蘇 常州 213164)
混凝土表面裂縫檢測是混凝土建筑結構健康監測的重要內容。傳統的裂縫檢測方法對于數據集質量要求較高,在光照不均、噪聲多的數據集上表現欠佳。
近年來,研究者們致力于將基于神經網絡的目標檢測[1]算法運用到裂縫檢測中以解決傳統方法的局限性。
現階段的裂縫檢測[2-7]領域,主要存在以下兩個問題:在特征提取階段,通常隨著網絡深度加深,逐漸降低的特征圖分辨率會導致裂縫圖像低級語義信息以及細粒度的空間結構信息損失;裂縫檢測作為一種像素級的語義分割,由于其像素級特征的感受野不夠,并且裂縫具有多尺度的現象會導致檢測過程中上下文信息缺失。
由此,本文基于U-Net[8]網絡的理論與方法,提出一種語義分割網絡模型,用于混凝土裂縫圖像中的裂縫分割。
本文貢獻主要概括如下:
(1)在編碼器階段引入雙核空洞卷積模塊,該模塊能夠在提取裂縫特征的同時,保留有更多裂縫的低層語義信息和易丟失的空間結構信息。
(2)為了有效提取尺寸不同的裂縫信息,在解碼器階段引入動態多核融合池化模塊,生成多個感受野捕捉不同尺度上的信息并融合。相比單一的池化層獲得的信息更有全局性,能夠有效提高不同尺寸裂縫的分割效果。
(3)在多核池化模塊階段引入動態核融合機制構成動態多核融合池化模塊[9],該機制有效從不同分支中動態選擇重要信息并進行整合,能夠在增加較少計算量的前提下在語義信息豐富但低分辨率特征的幫助下整合語義信息缺失但空間信息豐富的高分辨率特征。
本文提出了一種混凝土裂縫檢測方法,該方法基于U-Net網絡,利用U-Net網絡的編碼器-解碼器結構結合跳躍連接從復雜的混凝土建筑圖像中分割出完整的裂縫圖像。本文方法結構如圖1所示。圖中OS(output stride)表示為輸入圖像的空間分辨率和輸出特征圖的空間分辨率的比值。

圖1 改進的U-net網絡結構
其中編碼器主干網絡采用經過預訓練的ResNet34[10],并在下采樣過程中加入空洞卷積以保留更多的低層次語義信息;解碼器部分采用了多核池化模塊,在上采樣過程中可以產生多個有效視場以更好分割出不同大小的裂縫;同時,多核池化模塊最后的特征聚合采用動態核融合機制,在不同分支中有效提取重要信息進行多尺度融合,從而更加精確保留原始特征信息。圖中雙核空洞卷積,由兩個具有不同擴張率的空洞卷積級聯構成。圖中的動態多核融合池化模塊,由多個具有不同尺寸的池化層以及自注意力機制構成。本文算法在上采樣過程中,先采用跳躍連接將編碼器中獲得的對應特征圖與解碼過程中獲得的相同尺寸的特征圖拼接,再進行上采樣操作放大特征圖。
空洞卷積[11]的提出主要是為了在不降低特征圖的尺寸(分辨率)情況下實現感受野的增長,讓每個卷積的輸出都包含更大范圍的信息。
以3×3卷積為例,展示普通卷積和空洞卷積之間的區別,如圖2所示。

圖2 不同擴張率的空洞卷積
圖2中3幅子圖分別代表,圖2(a)普通卷積過程(擴張率為1),卷積后感受野為3;圖2(b)擴張率為2的空洞卷積,卷積后感受野為5;圖2(c)擴張率為3的空洞卷積,卷積后的感受野為7。感受野k′的計算公式如式(1)所示,其中k為卷積核大小,d為擴張率
k′=k+(k-1)*(d-1)
(1)
圖3從一維分析空洞卷積在增大感受野的同時不改變特征圖的尺寸。圖中淺灰色無數據正方形表示填充部分,淺灰色有數據正方形表示原始數據部分,深灰色有數據正方形表示經過卷積后得到的數據部分。

圖3 普通卷積和擴張卷積
輸出特征圖大小尺寸計算如式(2)所示

(2)

混凝土裂縫具有多尺度、裂縫所占像素在全圖比例非常小等特點,這就導致普通的下采樣操作在提取特征降低輸出特征圖尺寸大小的操作過程中很容易丟失一些細小裂縫的語義信息和裂縫的空間結構信息。
為了保證在下采樣過程中既能有效提取裂縫特征,又能提升特征圖的分辨率,本文在普通下采樣操作中加入級聯的雙核空洞卷積模塊,如圖4所示。圖4中H1、W1、H2、W2代表原始特征圖根據不同參數由式(2)得到的輸出特征圖分辨率大小。

圖4 雙核空洞卷積模塊
由于空洞卷積的運算方法比較特殊,如圖2所示,直觀上類似于棋盤格式,上下兩層卷積操作過程獨立并不互相依賴。如果實驗中僅僅多次堆疊空洞卷積,容易導致卷積之后得到的結果沒有相關性,即局部信息丟失,裂縫檢測實驗中體現出來的就是裂縫斷裂和孔洞現象。因此,為了避免出現上文所說問題,如圖4所示,本文的雙核空洞卷積模塊由兩個具有不同擴張率的空洞卷積構成。擴張率為2時感受野為5×5,擴張率為3時感受野為7×7。
擴大的感受野使得卷積輸出包含有更大范圍的語義信息,較小的感受野可以提取較小對象的特征,較大的感受野可以提取更大對象的特征。空洞卷積操作后進行輸出特征圖的對應像素相加,對應值相加能使得特征圖維度不變,但與此同時每個維度都能包含有更多的特征也即語義信息。
本文方法選擇在下采樣中間層使用雙核空洞卷積模塊,一方面:對下采樣后分辨率降低的特征圖使用空洞卷積操作,能夠有效降低計算量,提升處理速度;另一方面:較高分辨率的特征圖擁有更多的低級語義信息,對于像素級別的分割任務來說,保留的裂縫語義信息以及空間結構信息越精細,分割的結果越精確。
混凝土裂縫圖像中,同一張、不同圖片里都會出現粗細、深淺不一的現象,也就是檢測目標尺度不同。對于非常大或者非常細小的裂縫,網絡的識別能力較差,算法很難分割準確,容易出現漏檢誤檢現象。為了解決這個問題,本文提出在解碼器階段采用動態多核融合池化模塊來生成多個感受野在并行卷積流中更高效捕捉不同尺度、不同子區域之間的信息。動態多核融合池化模塊整體結構如圖5所示。

圖5 動態多核融合池化模塊
由圖5可知,動態多核融合池化模塊融合了4種不同尺度下的特征,本文中使用了2×2、3×3、5×5、7×7的池化組合。
池化操作后輸出特征圖尺寸計算公式如式(3)所示

(3)

動態多核融合池化模塊獲取上下文語境信息流程為:首先,不同池化核下輸出的多尺寸的低維特征圖通過雙線性插值進行上采樣,使其與原始特征圖尺寸相同。接著,為了維護全局特征的權重,在每個特征圖后使用1×1卷積,使特征圖的維數降到原始特征的1/n, 這里的n表示為原始特征圖的通道數。最后,將不同層級的特征圖和原始特征圖通過動態核融合機制拼接成最終輸出的特征圖。
動態多核融合池化模塊能收集不同尺寸的語義信息并高效融合,獲得一個有層次的全局先驗結構,比單一的池化層得到的信息更具有代表性,對于裂縫檢測任務,能有效保留不同粗細、大小裂縫的低層語義信息。
普通的多核池化模塊最后的特征融合采用的是concat操作,但簡單的concat操作得到的特征圖融合的語義信息有限,模型的表達能力提升不足。本文選擇在多核池化最后的特征融合階段引入動態核融合機制,該機制能使神經元對不同尺寸的信息自適應調整其感受野的大小,用以提升在并行卷積流中高效提取并選擇性融合信息的能力。
如圖6所示,動態核融合機制有3個輸入,U1表示2×2、3×3池化后的輸出逐像素聚合而成的特征圖;U2表示5×5、7×7池化后的輸出逐像素聚合而成的特征圖;U3表示池化操作前的原始輸入。動態核融合機制共有以下4步操作:第一步,將3個并行輸入進行逐像素聚合,聚合后輸出空間維度為C*H*W的特征圖U;第二步,為了建模特征圖通道間依賴關系,對U進行全局平均池化操作,輸出空間維度為C*1*1的特征圖;第三步,為了增加更多的非線性從而更好擬合通道間復雜的相關性,對特征圖分別進行兩次全卷積操作,第一次卷積操作將輸入的特征維度降低到原來的1/r, 輸出空間維度為Z*1*1, 此處r表示為計算通道縮減時候的縮減系數,第二次卷積操作將維度升到原來的大小;第四步,利用softmax激勵函數對分支中的特征圖設置權重,因為不同分支中的卷積核尺寸不同,此步操作實現讓網絡自適應的重新校準多尺度特征圖U1、U2和U3,也即所謂的動態選擇。

圖6 動態核融合機制
動態核融合機制能夠在并行卷積流中有選擇的提取出重要語義信息并保留,抑制低效信息的表達,在裂縫檢測這種前后景像素極度不平均的任務中,能高效提取出裂縫的語義信息,并有效抑制噪聲以及背景信息,從而為像素級的場景解析提供了一個更加有效的全局場景先驗信息。
對于裂縫檢測這種背景所占比例極大,物體占比很小的不平衡樣本,合適的損失函數的挑選是十分重要的。本文選擇了組合損失函數Bce loss+Dice loss。
Bce loss二分類交叉熵損失函數,語義分割中較為常用的分類損失函數,公式表示為

(4)

Dice loss是在V_net[12]文中提出的,文章應用于醫學圖像分割,但是圖像中需要分割的區域僅占據圖片很小的區域,這使得學習易陷入損失函數的局部最小值,因此作者設計的Dice loss加大了前景區域的權重。Dice可以理解為兩個輪廓區域的相似程度,用A表示真實值所包含的點集,B表示預測值包含的點集,定義為
Dice(A,B)=2|A∩B|/(|A|+|B|)
(5)
二分類Dice loss的公式表示如下,其中pn表示為第n個像素點預測為裂縫的概率值,rn表示為第n個像素點真實像素值,本文設置ε值為1,加快網絡收斂,防止產生過擬合
(6)
本文損失函數將兩者線性結合,公式表示為
Loss=BL+DL
(7)
組合損失函數有效結合了二分類交叉熵損失函數和Dice損失函數的優點,關注像素級別的分類正確率同時迫使網絡加大對裂縫前景特征的學習,有效克服裂縫圖像中前后景像素分配不均的問題,提升裂縫圖像分割精度。
本文實驗所使用的詳細硬件與軟件環境配置見表1。

表1 實驗軟、硬件環境配置
為了驗證本文算法有效性,實驗分別在兩個數據集上進行測試。數據集1:由使用設備在路面、橋梁等混凝土結構建筑物上拍攝采集得到,共2000張裂縫圖片,其中1600張分為訓練集,400張分為測試集。數據集2:采用公共數據集CRACK500[7],此數據集中共1896張訓練圖像,348張驗證集,1124張測試圖像。為防止數據量過少導致訓練產生過擬合現象,采用數據增強HorizontalFlip、RandomGridShuffle和Rotate90°方法,擴充訓練集,測試數據集不使用數據增強。數據增強效果如圖7所示。

圖7 數據增強
本文實驗參數設置見表2。

表2 算法參數設置
本文采用精確率(Precision)、召回率(Recall)、均衡平均數(F1)、交并比(IoU),作為模型性能的評價指標,各評價指標的計算公式如式(8)~式(11)如下
(8)
(9)
(10)
(11)

精確率(Precision)反映了被模型判定為裂縫中真正的裂縫所占比例;召回率(Recall)反映被正確判定為裂縫在總的裂縫中占據的比例;精確率和召回率對于數據為類別不平衡樣本的實驗模型評估效果有一定偏差,而均衡平均數(F1)是精確率和召回率的調和平均數,綜合了兩個評價指標產出的結果,均衡平均數越高說明模型質量越好;交并比(IoU),直觀可以表示為真實值和預測值的交集,也即模型檢測出的真實裂縫與標記中的真實裂縫之間的重疊率。當前語義分割方法效果評估都是基于此完成的。
為了充分比較本文算法和其它模型在裂縫檢測中的性能,將本文提出的網絡模型實驗結果與U-Net、Res-UNet[13]、CE-Net[14]、UNet++[15]、SegNet[16]和DeepLabv3+[17]等這些主流和經典的分割算法實驗結果進行對比。U-Net首先采用了編解碼加跳躍連接的網絡結構恢復圖像細節信息,在裂縫分割中取得了優秀的結果;Res-UNet將U-Net中的VGG16換成具有殘差結構的ResNet34,在一些復雜結構的裂縫分割任務中精度得到了提升;CE-Net在上下文提取模塊中使用了DAC和RMP模塊,為了提取上下文語義信息并生成更多高級的特征圖;UNet++對U-Net傳統拓撲結構做了改進,采用長短連接的方式,更加有效融合深淺層特征,提升分割精度;SegNet在編碼器過程中存儲最大池化索引(index),用以在編碼器過程中直接調用對應位置信息進行上采樣操作,能夠有效降低模型復雜度,加快算法運行速度;DeepLabv3+屬于多融合結構算法,在有效提升特征圖感受野的同時保留足夠的空間位置信息,在復雜場景任務下,能有效提升分割精度。
在數據集1也即自制數據集上進行實驗,各模型評價指標結果對比見表3,實驗最好結果加粗。實驗效果對比如圖8所示。

表3 自制數據集不同模型測試結果對比

圖8 自制數據集測試結果實驗對比
由表3數據可知,在數據集1上測試結果評價指標中,精確率(Precision)結果達到86.55%,召回率(Recall)結果達到89.64%,均衡平均數(F1)結果達到88.04%,交并比(IoU)結果達到78.86%。與文獻[3]實驗結果相比,本文算法精確率提高0.31%,召回率提高2.63%,均衡平均數提升1.42%,交并比提升2.16%;與文獻[18]實驗結果相比,本文算法精確率提升0.71%,召回率提升3.22%,均衡平均數提升1.91%,交并比提升3.21%。總體而言,本文算法實驗結果均優于其它對比分割算法,能夠對裂縫圖像實現更精確的分割。
圖8為實驗效果對比,可以清晰看出,不論圖片中裂縫結構簡單或是復雜,本文網絡結構實驗效果最好,不易受噪聲干擾,裂縫完整走勢以及形狀信息基本保留完全。其它方法在拓撲結構復雜以及有明顯噪聲的圖片中,極易造成細小裂縫的誤檢漏檢,不僅無法保留完全裂縫的基本形狀,而且較為明顯的噪聲會被模型誤識別為裂縫。如U-Net、CE_Net和SegNet算法易受噪聲影響,第一張圖片上的黑色斑塊很明顯被識別為大塊裂縫,第二張圖片上細小的淺灰色豎紋,被識別為小裂縫;UNet++、文獻[3]和文獻[18]容易產生漏檢,第一張圖片右下方孔洞細小的聯結區域未能完全識別,并且這些算法在裂縫走勢復雜、細小紋路繁多的區域,也會產生不同程度的誤檢現象,如第二張圖片中有著大量細小蛛狀結構被檢測為塊狀裂縫。
為了充分驗證本文算法在裂縫檢測上的有效性以及自制數據集的可信度,在公共數據集CRACK500上再進行實驗。實驗損失分布如圖9所示,本文算法損失在10個批次后結束震蕩穩步下降,25批次后下降趨勢漸緩,45批次后趨于穩定模型逐漸擬合。與其它算法模型相比,本文算法損失最小,下降最為平緩。值得注意的是對比實驗中SegNet算法的loss值下降非常有限,這是由于本文網絡模型所采用的訓練策略不適合SegNet;文獻[18]的loss前期收斂快速并且小幅震蕩,但在40個批次后開始較大幅度震蕩且至80個批次后仍未穩定收斂,實驗證明是由于本文訓練策略中設置的批次過大,使得網絡陷入局部最優。

圖9 不同模型的損失曲線
各模型在公共數據集上實驗結果數據對比見表4,本文算法在各類語義分割算法中,實驗精確率(Precision)、均衡平均數(F1)以及交并比(IoU)仍是最高,只有召回率(Recall)與SegNet算法相比略低0.79%。與裂縫檢測文獻[11]結果進行對比,本文算法在精確率(Precision)提升1.88%,召回率(Recall)提升3.43%,均衡平均數(F1)提升2.39%,交并比(IoU)提升4.00%;與裂縫檢測文獻[18]結果進行對比,本文算法在精確率(Precision)提升3.28%,召回率(Recall)提升2.07%,均衡平均數(F1)提升2.59%,交并比(IoU)上提升3.86%。與SegNet算法結果進行對比,本文算法在精確率(Precision)提升8.16%、均衡平均數(F1)提升4.15%、交并比(IoU)提升5.89%,只在召回率(Recall)的評價指標上比SegNet算法略低。與DeepLabv3+算法結果進行對比,本文算法在精確率(Precision)提升3.35%、召回率(Recall)提升1.25%,均衡平均數(F1)提升2.45%、交并比(IoU)提升3.41%。

表4 CRACK500不同模型測試結果對比
數據集CRACK500實驗效果對比如圖10所示。文獻[3]算法和本文算法實驗效果相較其它分割算法能夠較大程度上獲得完整裂縫形狀,并且裂縫結構細節信息基本保留,但文獻[3]算法易產生補足現象,即將原圖中斷裂的細小裂縫自行連接,相較而言,本文算法并未出現此種現象;對比的其它算法則出現了一些細小裂縫結構漏檢以及孔洞問題,如SegNet、CE-Net算法,在圖10中能較為直觀看到它們的效果圖與標簽圖的對比,盡管圖片中結構清晰的粗大裂縫被算法完整識別保留,但同時很多邊緣細節模糊的細小裂縫在算法分割的過程中被丟棄。CRACK500數據集實驗效果與數據集1實驗結果相比,各項指標數據都有一定程度的降低,主要由于CRACK500數據集背景噪聲、干擾都比較多。

圖10 CRACK500測試結果實驗對比
綜上,本文算法在兩個數據集上分別進行實驗,所得實驗數據結果以及效果圖都表示本文算法能夠完整檢測出裂縫的拓撲結構,誤檢漏檢較少,裂縫檢測精度最高,效果最好。
為了驗證本文設計的網絡模型中的級聯的雙核空洞卷積、原始多核池化模塊以及加入動態核融合機制的動態多核融合池化模塊對于實驗結果性能提升的效果,本節設計了模塊間的消融實驗。CRACK500數據集上實驗結果對比見表5。

表5 消融實驗結果對比
如表5所示,對比實驗1和實驗2,可知采用級聯的雙核空洞卷積,精確率(Precision)提升了0.81%,召回率(Recall)提升了0.29%,均衡平均數(F1)提升了0.59%,交并比(IoU)提升了0.70%;對比實驗1和實驗3,可知采用原始多核池化模塊,精確率(Precision)提升了0.24%,召回率(Recall)提升了3.39%,均衡平均數(F1)提升了1.59%,交并比(IoU)提升了2.04%;對比實驗3和實驗4,可知原始的多核池化模塊的網絡結構與加入動態核融合機制的池化模塊的網絡結構比較,精確率(Precision)提升了1.84%,召回率(Recall)有所降低,降低了1.97%,均衡平均數(F1)提升了0.03%,交并比(IoU)提升了0.12%。對比實驗1和實驗5,可知組合級聯的雙核空洞卷積和動態多核融合池化模塊的網絡結構與最原始的網絡結構比較,精確率(Precision)提升了2.47%,召回率(Recall)提升了1.52%,均衡平均數(F1)提升了1.88%,交并比(IoU)提升了3.00%。值得注意的是對比實驗3和實驗5,只使用多核池化模塊得到的召回率(Recall)優于本文最終算法模型,但精確率(Precision)、交并比(IoU)相較本文最終算法模型低,由此得出只使用多核池化模塊的模型能夠找出更多的正樣本,同時在識別判斷正樣本的過程中產生更多的誤差,將負樣本也即背景錯誤識別為正樣本也即裂縫。
數據集CRACK500消融實驗效果對比如圖11所示。為了方便展示,如圖11所示,用D2Net表示本文算法、D2Net-D2表示實驗1、D2Net-DF表示實驗2、D2Net-DCM表示實驗3、D2Net-DC表示實驗4。直觀上可以發現,3幅測試圖中,裂縫結構粗大的第一和第三幅子圖檢測結果較好,裂縫基本結構信息保留完全,第三幅子圖中會出現一些不太明顯的噪聲現象,第一幅子圖中左下方對應的邊界裂紋易被漏檢,而含有非常細小裂縫紋路的子圖二,除了本文算法對應的D2Net能夠基本保留結構信息,其它實驗都出現了較明顯的漏檢現象。

圖11 CRACK500消融實驗結果對比
綜上可知,本文所提出的級聯的雙核空洞卷積和動態多核融合池化模塊對裂縫圖像分割性能的檢測都有一定的提升,并且將兩個模塊組合實驗能夠達到最優的檢測性能和實驗效果。
本文針對裂縫拓撲結構復雜、細小裂縫容易誤檢漏檢、裂縫像素占比極度不均的問題,采用了編解碼網絡結構作為主干網絡,通過在編碼層引入級聯的雙核空洞卷積以及在解碼層引入動態多核融合池化模塊,構建了一個新的網絡結構用以裂縫檢測。經過充分的實驗,結果表明本文所提出的網絡結構在一定程度上提高了裂縫細節恢復和空間位置信息定位能力,能夠提高裂縫檢測的性能,在數據集CRACK500進行實驗得到的結果與文獻[3]方法檢測交并比相比提高了4.00%,與文獻[18]方法檢測交并比相比提高了3.86%。但是在一些背景復雜、噪聲較多的數據集上,本文算法的效果仍然有待提升。在以后的研究中會針對此缺陷深入研究,提高網絡模型的分割能力。