仇靜博,燕雪峰,汪 俊,郭延文,魏明強
(1.南京航空航天大學計算機科學與技術學院,江蘇 南京 211106;2.南京航空航天大學模式分析與機器智能工業和信息化部重點實驗室,江蘇 南京 211106;3.南京大學計算機軟件新技術國家重點實驗室,江蘇 南京 210023)
隧道主要以混凝土為材質建造而成。由于材質、溫差、腐蝕和外力等因素的影響,隧道管片會出現不可預測的收縮或膨脹,從而產生裂紋。裂紋不僅影響隧道整體美觀性,而且一旦裂紋向深層發展,便有可能發展成對隧道具有破壞性的掉塊或深層裂縫,影響隧道的安全和穩定。因此,對隧道進行定期裂紋檢測,實時觀察隧道中的裂紋變化尤為重要。
由于施工條件的局限性以及建筑材料的物理特性,獲取的原始隧道裂紋圖像往往包含許多非裂紋噪聲紋理,如何最大限度地避免背景噪聲的干擾是提取裂紋所面臨的一大難題。
傳統的隧道病害檢測方法主要依托人工檢測,但該手段耗時耗力,已不能滿足現階段對于隧道檢測高效率、高準確性以及自動化的要求。當前裂紋識別研究的重心逐漸向基于圖像處理的裂紋檢測算法和基于機器學習的裂紋檢測算法轉移。
基于圖像處理的裂紋檢測算法[1 -7],一般包含濾波去噪、檢測裂紋和分類3個步驟,對清晰的裂紋有較好的提取效果,但是在有較多非裂紋噪聲污染的情況下,會出現較為嚴重的誤檢測問題。
基于機器學習的裂紋檢測算法,如全卷積神經網絡FCN (Fully Convolutional Network)[8]、SegNet[9]和Mask R-CNN[10]等,在背景噪聲干擾下具有良好的裂紋檢測效果,但是無法保留較多裂紋邊緣的細節信息。
綜上所述,如何在復雜噪聲背景下提取出隧道裂紋并保留裂紋的細節邊緣信息是一個亟待解決的問題。本文提出的基于全卷積神經網絡的裂紋提取算法,不僅具有非接觸性、高效率性與自動性,而且提取出的裂紋結果更加準確。該算法摒棄了傳統裂紋檢測與提取技術的局限,可以全自動檢測圖像中的裂紋,分割精度高,具有很高的實際應用價值。
早期的裂紋檢測及提取方法大多為實地測量與標記,專業勘察人員親臨現場測量和記錄,或以超聲波、傳感器等輔助工具幫助測量人員進行測量。隨著圖像處理與機器學習技術的發展,裂紋識別研究的重心由傳統的超聲波檢測法、沖擊彈性波檢測法、聲發射檢測法和光纖傳感檢測法逐漸向基于圖像處理的裂紋檢測算法轉移。
在傳統圖像處理裂紋檢測算法的研究中,馬常霞等[1]提出了一種基于非下采樣變換NSCT(NonsubSampled Contourlet Transform)和圖像形態學的裂紋檢測算法,由于NSCT具有平移不變性,圖像失真在一定程度上得到緩解,能夠更準確把握裂紋的線性特征;李剛等[2]針對受不均勻光照影響的裂紋圖像,提出一種基于Sobel算子和最大熵法的圖像裂紋分割算法,并采用長線段對原圖進行操作、判斷黑色像素占比來去除圖像孤立噪聲點,不僅能很好地提取裂紋邊緣,且具有很強的抗噪能力;趙慧潔等[3]將簡化脈沖耦合神經網絡PCNN(Pulse Coupled Neural Network)模型用于裂紋圖像的分割,以最小誤差準則作為判斷是否終止迭代的條件,由圓形度與扁度結合計算區域特征,消除分割后的干擾,實現對裂紋的有效檢測;徐威等[4]通過計算粗尺度下的裂紋顯著值,再經過局部鄰域顯著性增強和空間顯著性增強后,采用自適應閾值分割提取裂紋;徐歡等[5]以形態學濾波改進濾波,使用最大類間方差 (Otsu)算法[6]實現雙閾值的自適應獲取,分析并改進了Canny算子,提高了裂紋檢測的精度;楊莉等[7]對預處理后的圖像進行多尺度的曲波變換表示,利用 Max-Mean融合算法對裂紋連通區域進行閾值判決,實現裂紋的精細融合。但是,基于圖像處理的算法無法避免背景噪聲的干擾,即使圖像經過預處理,也很難從中成功提取有效裂紋,算法魯棒性較差。
隨著學者們對人工智能領域研究愈發深入,基于機器學習的裂紋檢測算法逐漸出現。2015年,Long等[8]提出了全卷積神經網絡FCN,進行端到端、像素到像素的訓練,直接對任意大小的輸入圖像進行像素級分割,提高了圖像分割的準確性與效率。Badrinarayanan等[9]在2015年提出SegNet算法,通過卷積下采樣來保存像素之間的空間位置關系,彌補了池化操作丟失像素點的缺點,得到了更好的分割效果。Deep Lab系列的提出也使圖像分割精度得到大幅度提升,為了使被分割目標的邊緣更準確,Deep Labv1[11]在全卷積神經網絡的基礎上引入全連接條件隨機場CRF(Fully Conditional Random Fields)。2016年,Deep Labv2使用空洞卷積進一步提高圖像分割精度。Deep Labv3 在之前的基礎上結合級聯殘差網絡和空洞卷積,再一次提升了圖像分割效果。Zhao等[12]在場景解析任務的研究中,構造了金字塔池化模塊,并基于不同區域的上下文聚合提高了場景解析質量。Silva等[13]采用遷移學習方法,使用開源模型作為開發基礎,提出了一個檢測混凝土表面裂縫的算法。Kim等[14]提出了一種基于卷積神經網絡的現場環境中混凝土表面裂紋形態自動檢測技術。基于機器學習的算法可以框定出裂紋整體結構,抗干擾性強,且在負樣本上表現較好,但是輸出的裂紋圖像邊緣趨于平滑,裂紋細節難以較好保持。Zou等[15]在SegNet的基礎上根據編碼器-解碼器網絡結構的特性將每個尺度的卷積特征進行成對融合,最終將所有尺度的融合特征整合后作為網絡輸出結果,在細小裂紋提取和邊緣檢測任務中表現較好。Mei等[16]設計了一個稠密連接的深度神經網絡,提出了一個綜合裂縫像素周圍信息的連續性損失函數,可以較好地保持提取裂縫的完整性。Ren等[17]提出結合空洞卷積、空間金字塔池化以及跳接模型來高效地獲取多尺度特征,有效提升了網絡的裂縫分割能力。

Figure 1 Structure of crack extraction network based on fully convolutional neural network圖1 基于全卷積神經網絡的單幅圖像裂紋提取網絡結構
隨著科技的發展,對裂紋檢測的準確度與精確度也進一步提升,現存的檢測方法已不能滿足人們的需求。為了解決上述算法的問題,本文提出了基于全卷積神經網絡的單幅圖像圖像裂紋提取算法,可以在復雜噪聲存在的情況下提取裂紋,并保留較完整的邊緣細節。
針對裂紋完整提取和邊緣細節保留問題,本文提出了基于全卷積神經網絡的單幅圖像裂紋提取算法,將深度殘差特征提取網絡與全卷積網絡中的反卷積操作結合,實現了有噪聲干擾下的裂紋提取與細節保留,具體結構如圖1所示,其工作過程分為2步:(1)采用經典的深度殘差網絡,提取復雜背景下裂紋的特征信息。如圖1所示,原始圖像經過特征提取層后,在不同階段輸出了3個不同尺寸與深度的特征圖s1、s2和s3,目的是更好地保留因下采樣丟失的底層特征信息。這3個特征圖將在上采樣層中階段性地結合在一起形成最終的結果。(2)采用全卷積神經網絡中的上采樣層,提出并加入圖細節恢復模塊對上采樣層進行改進,在保留邊緣細節的基礎上對特征圖進行尺寸恢復。
VGGNet[18]、GoogLeNet[19]和殘差網絡ResNet(Residual Network)[20]等模型都是成熟且常用的卷積神經網絡模型,其中ResNet使用深度殘差學習框架可以有效地消除卷積層數增加帶來的梯度彌散或梯度爆炸問題,因此本文算法采用了ResNet-34模型中的特征提取部分。
ResNet-34特征提取層中的主要組成結構是building block結構,如圖2所示。這些卷積層之間的連接方式稱為“shortcut connection”,building block結構很好地詮釋了這種連接方式。如圖2所示,相較于傳統的卷積結構,building block結構中多了一個short-cut支路,可以直接傳遞低層信息,使得網絡能夠適應深度訓練。多個building block組成了深度殘差學習結構,即本文算法中的特征提取部分,具體組成如表1所示,其中,Conv2_x,Conv3_x,Conv4_x和Conv5_x為由building block組成的層。

Figure 2 Building block structure圖2 building block結構

Table 1 Structure of convolutional layers表1 卷積層結構
輸入圖像首先經過7×7×64的卷積層提取信息,而后通過3×3的池化層縮小空間尺度,最后通過3+4+6+3=16個building block得到高維抽象特征,其中每個block為2層,因此16個building block中包含了32層網絡。

Figure 3 Upsampling layer圖3 上采樣層
在經過前面多次卷積操作后,特征圖尺寸急劇縮小到原圖的1/32,因此需要對特征圖進行上采樣處理。本文算法中,上采樣借鑒了FCN中反卷積來實現。為了更好地利用底層特征,本文采用層跨越結構,將底層特征圖與高層特征圖相加再進行上采樣。圖3中的s1,s2,s3即為通過特征提取層得到的不同尺寸與深度的特征圖,在后續上采樣過程中與高維特征逐步結合,可以更好地恢復裂紋的細節特征與位置信息。同時為了加速訓練過程,反卷積層核函數使用雙線性差值法初始化。然而,全卷積網絡缺乏精細化能力,隨著網絡深度的增加,圖像分辨率降低,提取的特征信息更加抽象,但是是以丟失重要的位置信息作為代價的。原始全卷積網絡的上采樣層使用了2個2×反卷積與1個8×反卷積,由于卷積層數少且最后一層卷積跨步大,最終的輸出結果趨于模糊,提取的裂縫圖像較為粗糙,不符合精細化分割的要求。為了解決這個問題,本文將3次反卷積操作增至4次,并在每次反卷積操作后都加入一個卷積核大小為3的卷積操作進行特征增強。具體反卷積操作如圖3所示。

Figure 4 Structure of detail refine module圖4 細節修復模塊結構
為了提高裂紋提取圖像的精細程度,保留裂紋的邊緣細節,本文提出一個細節修復模塊,其結構如圖4所示。輸入特征連接到4個支路進行處理。第1支路為類似殘差結構的跳接操作,即輸入特征直接與最后的處理結果逐元素相加,防止訓練結果退化。第2、3支路均為2個卷積核大小分別為1×1和3×3的卷積層,各串聯一個批歸一化層BN(Batch Normalization)和修正線性單元ReLU(Rectified Linear Unit)。為了增強裂紋特征,同時增加像素間的關聯性,本文采用不同大小卷積核的卷積操作,整合多尺度感受野的信息。由于此模塊應用于上采樣層,本身就作用于已包含豐富信息的高維抽象特征,因此采用1×1和3×3的卷積核就可以實現目標效果。第4支路為整體的壓縮激活SE(Squeeze and Extraction)[21]操作,使用輸入特征圖計算特征權重,對第2、3支路的結果進行加權。SE操作學習特征圖每個通道的重要程度,并據此對最后的輸出結果進行加權,來加強重要特征,抑制無效特征。SE操作主要分為2步:第1步是壓縮操作,將每個通道的二維特征圖壓縮為一個實數,該數在一定程度上可以代表整個通道的全局特征,具有全局感受野,本文采用全局平均池化方式;第2步是激發操作,得到全局特征后,通過多個全連接層,使用學習的方法為每一個特征通道學習一個權重。此權重可以理解為每個通道的重要程度,最后使用乘法操作與原始特征圖進行逐通道加權,得到最后的輸出結果。
如圖1所示,將細節修復模塊放置在第3、4個上采樣操作之后,實驗表明,加入此模塊可以提升算法對精細裂紋的處理效果,在保持裂紋提取掩碼的連續性與精確性方面有較好的表現。
常見的二分類任務所使用的損失函數是交叉熵損失函數[22]。交叉熵可以衡量一個隨機變量的2個不同概率分布的差異程度,即預測值與真實值之間的差異,交叉熵值越小,預測結果就越準確。交叉熵的計算方法如式(1)所示:
(1)
其中,p(·)為真實概率分布,q(·)為預測概率分布,n為圖像像素總數,xi為第i個像素的預測結果。
交叉熵損失函數的應用非常廣泛,但是同時也存在一些非常明顯的缺點。對于二分類任務,當前景像素數量與背景像素數量的比值非常小時,算法會嚴重偏向背景,導致訓練效果大大下降。很顯然,裂紋提取任務符合這一特征,因此采用此損失函數會使算法傾向于訓練背景而不是裂紋本身,降低了算法的高效性。
為了避免上述情況,本文算法采用帶權重的交叉熵損失函數Loss Function[21],具體計算方法如式(2)所示:
(2)
帶權重的交叉熵損失函數是在交叉熵損失函數每一個類別前添加了一個權重參數w(·),以此來調節樣本不均衡的問題。
由于目前并沒有公開的隧道裂紋數據集,需要在裂紋提取前采集足夠的樣本數據。本文的實驗圖像是使用自主研發的移動式隧道病害檢測設備拍攝,選取了2 000幅混凝土材質上的裂紋圖像,其中用于訓練集的一共有1 400幅(1 044幅作為正樣本,356幅作為負樣本),用于測試集的有600幅(481幅作為正樣本,119幅作為負樣本),圖像大小為512×375像素,命名為NUAACrack-2000,該數據集即將公開用于學術研究。
數據集的制作過程如下:一線技術人員和施工人員區分正負樣本,使用Github上開源的分割任務標注軟件Labelme對正樣本進行裂紋標注。與目標檢測任務只需要框定出目標位置給出類別不同,分割任務的標注需要根據目標形態逐點標注。由于裂紋形狀各異且大小不一,需要手動標注幾十甚至上百個標注點才可以覆蓋到完整的裂紋,因此數據集的標注工作耗費了大量時間和精力。完成框定的裂紋文件被保存為.json文件格式,最后將.json文件轉化為掩碼位圖,圖5為裂紋標注過程。

Figure 5 Crack labeling based on ‘Labelme’圖5 基于Labelme的裂紋標注
評價基于全卷積神經網絡進行圖像分割的性能指標有:像素精度PA(Pixel Accuracy)、類別像素準確率CPA(Category Pixel Accuracy)和交并比IoU(Intersection over Union)等,本次實驗用于測試網絡性能的指標有:平均像素精度MPA(Mean Pixel Accuracy)和平均交并比MIoU(Mean Intersection over Union)。選擇這2個指標的原因如下:(1)在裂紋提取任務中,裂紋所占整體比例較小,模型預測效果較差也可能取得很高的PA,導致不同模型指標差距不明顯;(2)CPA與IoU是主要針對某一類別的量化指標,在本文研究中,背景與前景的正確分割都至關重要,采用MPA和MIoU可以同時衡量2個指標。
算法對像素樣本分類有4種可能的結果:TP(true positives)表示正樣本被正確判定;TN(true negatives)表示負樣本被正確判定;FP(false positives)表示負樣本被誤判為正樣本;FN(false negatives)表示正樣本被誤判為負樣本。假設原始樣本中包含正樣本與負樣本,且共有k+1種分類,那么,Pij表示類別為i的像素被預測為類別為j的數目,Pii表示分類結果正確(即為TP或TN)的像素數目,Pij表示分類結果錯誤(即為FP)的像素數目,Pji表示分類結果錯誤(即為FN)的像素數目。
(1)平均像素精度:對每個類別分類正確的像素數與對應類別像素總數的比率求和,然后除以類別數得到的均值,如式(3)所示:
(3)
(2)平均交并比:交并比是算法對某一類別預測結果和真實值的交集與并集的比值,而平均交并比則是在每個類別上分別計算交并比的值再求和取平均值,如式(4)所示:
(4)
本文實驗在自制數據集NUAACrack-2000上進行,訓練集共有1 400幅隧道裂紋圖像,測試集有600幅。在帶權重的交叉熵損失函數中,將前景裂紋權重設置為0.85,背景權重設置為0.15。實驗代碼使用PyTorch機器學習框架編寫,運行于NVIDIA 2080Ti GPU上。
4.4.1 消融實驗
為了驗證改進的上采樣層與細節修復模塊在算法中的有效性,本節選用ResNet-34結合原始全卷積神經網絡的上采樣結構為基礎算法,在NUAACrack-2000數據集上進行對比。實驗對比結果如表2所示,表中第1行為去除改進上采樣層和所有細節修復層的基準算法,√表示在基準算法上加入對應模塊,對應的指標為最終預測結果。
從表2中可以看出,改進的上采樣層很大地提升了算法效果,對比原始的上采樣層MPA提升了10.7%,MIoU提升了13.2%。適當添加卷積層、調整上采樣的尺度大小,可以恢復大量因卷積丟失的特征細節,大幅改善預測結果。

Table 2 Results of ablation experiment表2 消融實驗結果對比
從表2還可以看到,采用多尺度的卷積層結合通道注意力機制加權特征圖各個通道的方法,可以有效提升算法效果,如果將細節修復模塊重復添加至第1層與第2層反卷積層后面,將會增加過多的參數且效果提升有限。具體可視化效果如圖6所示,針對難以分辨的細小裂縫,細節修復模塊使算法在復雜噪聲背景下有更好的魯棒性,可以保持裂縫的連續性與幾何形態的完整性。

Figure 6 Visualization of ablation experiment results圖6 消融實驗結果可視化
4.4.2 與常見算法實驗結果對比
本節將本文算法與常見的圖像分割算法在NUAACrack-2000數據集上進行對比。在對比算法中,Otsu屬于傳統裂紋識別算法,FCN、DeepCrack[15]、U2-Net[23]和ITSD[24]屬于機器學習算法。U2-Net主要應用于顯著目標檢測任務,其使用嵌套的U型結構來增加網絡深度,提升對顯著物體的檢測效果,并且采用深監督學習[25]加快模型收斂速度。ITSD算法在訓練階段與損失回歸階段都利用了顯著圖的邊界信息,在許多顯著性物體檢測數據集上顯示出了卓越的性能。各算法均在NVIDIA 2080Ti GPU 上訓練至損失函數收斂。
與機器學習算法的對比結果如表3所示,本文算法在MPA與MIoU的評價指標上大體均優于其他算法,僅在MPA指標上略低于ITSD的。根據圖8~圖13的可視化結果可知,ITSD提取的裂縫分割結果Pij較大,導致MPA較大。圖7展示了ITSD算法與本文算法分割結果的局部對比圖,可以看到ITSD的結果邊界呈鋸齒狀,無法準確描述裂縫的曲折外形,相比之下,本文算法得到的裂縫分割圖更加準確。同時,表4列出了各個算法的參數規模Params和乘積累加計算復雜度MAdd(Multiply Add),通過對比可知,本文算法在分割效果最優的情況下,參數量與計復雜度也維持在低水平。

Table 3 Comparison of quantitative results of machine learning algorithms and the improved algorithm on NUAACrack-2000 dataset表3 本文算法與機器學習算法在數據集NUAACrack-2000上的性能指標對比
圖7~圖11展示了在不同情況下裂縫提取的效果對比圖。

Figure 7 Local comparison between ours and ITSD圖7 本文算法與ITSD結果局部對比

Figure 8 Comparison of fine crack extraction results圖8 不同算法細小裂紋提取結果對比

Figure 9 Comparison of low contrast crack extraction results圖9 不同算法低對比度裂紋提取結果對比

Figure 10 Comparison of crack extraction results with strong noise interference圖10 不同算法強噪聲干擾下的裂紋提取結果對比
在與傳統的Otsu閾值分割算法的效果圖對比中可以看到,該算法在進行圖像分割的過程中會較大程度地受到噪聲點與照明情況的影響,產生很多非裂紋的提取圖像,這是傳統算法的一大弊端。

Table 4 Comparison of Params and MAdd of machine learning algorithms and the improved algorithm表4 本文算法與機器學習算法的Params和MAdd對比

Figure 12 Comparison of clear crack extraction results圖12 不同算法較清晰裂紋提取結果對比

Figure 13 Comparison of crack extraction results with complex background圖13 不同算法復雜背景下裂紋提取結果對比
由于機器學習算法是通過抽象出目標的高維特征來進行裂紋提取,受原圖非目標像素影響較小,故本文提出算法可以較大程度地避免噪聲點的干擾。
機器學習算法均可以較好地擺脫非裂紋噪聲的影響。在圖8中,對于細小且形狀極其扭曲的裂紋,FCN、ITSD、DeepCrack與U2-Net均未能提取出完整的裂紋,出現了斷裂的現象。在圖10中,裂縫的背景包含強烈的噪聲,FCN與U2-Net均出現了誤提現象,對于噪聲影響的魯棒性較差;而ITSD提取出的裂縫附近包含了背景噪聲,且提取出的分割圖像的寬度比真實裂縫寬,精細度不高;DeepCrack則是無法完整地提取出全部的裂紋圖像。本文算法可以較為完整地識別出最上方受陰影影響的部分。
綜上,本文算法可對測試集圖像中的裂紋進行較為精確的分割,不僅可以分割出裂紋的大體形狀與走向,保證裂縫的完整性,也能夠較為細致地處理裂紋邊界。圖10~圖13展示了更多可視化結果。
4.4.3 在其他裂縫數據集上的結果對比
為了驗證算法的魯棒性,本節還使用DeepCrack[15]數據集,增添了一組對比實驗。該數據集中裂縫形態與本文公開的數據集的隧道裂縫圖像差異較大,多拍攝自混凝土墻壁和地面等地點,裂縫的平均寬度較寬,大部分裂縫和背景之間的差異較為清晰。圖14展示了數據集中的部分圖像。各個算法均采用NUAACrack-2000訓練集上訓練得到的權重,直接對DeepCrack數據集的訓練集進行預測,得到最終的裂縫分割結果。實驗結果如表5所示,本文算法在該數據集上也取得了最優的評價指標。

Figure 14 Samples of the DeepCrack dataset圖14 DeepCrack數據集部分圖像
實驗表明,本文算法在裂紋提取方面較為魯棒,在有背景噪聲干擾的情況下可以有效地分割出裂紋的完整邊界,并且保留細節特征。但是,本文算法也存在一定的改進空間。首先,裂紋數據主要采集于地鐵隧道,在NUAACrack-2000上訓練的模型可能不適用于其他裂紋圖像提取,例如飛機表面的裂紋、鋼鐵表面的裂紋,還需要進行遷移學習。其次,針對移動采集與處理設備內存不足、算力有限等特點,設計較為輕量化的網絡結構用以提取隧道圖像裂紋是當務之急。因此,將來的改進思路是如何進一步精簡網絡結構以提高提取裂紋的效率。

Table 5 Comparison of quantitative results of machine learning algorithm and the improved algorithm on DeepCrack dataset表5 本文算法與機器學習算法在數據集DeepCrack上的性能指標對比
針對裂紋提取,本文提出了一種基于全卷積神經網絡的單幅隧道圖像裂紋提取算法,提出并添加的細節修復模塊,可以保持裂縫提取形狀的完整性,并保留清晰的邊緣細節。實驗表明,本文算法能有效提取隧道裂紋形狀信息,并且很大程度上避免了類裂紋噪聲的干擾,魯棒性強,保留了裂紋邊緣的細節。另外,本文還公開了一個隧道裂紋數據集NUAACrack-2000,共包含2 000幅隧道裂紋的采集圖像與對應的掩碼位圖,供廣大學者學術研究。