譚兆,王保憲,秦守鵬,趙維剛
(1.中國鐵路設計集團有限公司,天津 300251;2.石家莊鐵道大學 安全工程與應急管理學院,河北 石家莊 050043)
裂縫檢測與識別是開展混凝土結構耐久性評估中的一項重要內容。由于人工檢查存在主觀性強、效率低等缺點,近年來隨著信息技術的快速發(fā)展,基于深度學習的裂縫視覺檢測與識別方法成為行業(yè)發(fā)展的新趨勢[1]。相比于邊緣檢測[2]、閾值分割[3]等傳統(tǒng)方法,深度學習方法利用卷積網絡從圖像中挖掘多層特征,再通過訓練特定的網絡結構,完成圖像分類、定位、分割等任務。CHA等[4-7]提出利用卷積網絡提取圖像語義特征,并取得了比傳統(tǒng)方法更好的裂縫檢測效果。王耀東等[8]通過改進AlexNet 網絡結構,建立了隧道裂縫病害目標自動提取模型。雖然上述幾種方法采用了卷積網絡具備的良好特征提取能力,但是整個網絡結構較為簡單,因而在復雜背景下的普適性無法有效保證。為了適應復雜環(huán)境,薛亞東等[9]提出利用Faster RCNN 二階段網絡先確定裂縫候選區(qū)域再辨識裂縫病害,可一定程度上提高裂縫檢測與識別性能。柴雪松等[10]在超像素分割篩選基礎上,提出了基于ResNet18 與DeepLab-V3 的分割網絡;該方法依賴于超像素分割結果,對于細微裂縫或強背景干擾并不適用。劉新根等[11]引入多尺度裂縫特征融合策略,取得了較好的裂縫分割結果。類似地,劉凡等[12]也提出一種基于并行注意力機制的裂縫檢測與識別模型。雖然上述方法利用深度神經網絡能夠挖掘裂縫圖像中的一些關鍵特征,但由于深度學習網絡在各自方法中仍是一個“黑盒子”模型,網絡訓練過程中的一些不確定性會導致識別模型提取到一些非重要特征,而較為關鍵的裂縫邊緣特征未能得到重點提取。最終可能導致模型性能局部“坍塌”到一些不好的特征提取層,進而出現裂縫漏檢或虛警問題。此外,由于裂縫邊緣特征未能得到強化學習,在深度學習網絡的多次下采樣中,幾個像素寬度的細微裂縫將更容易丟失,因而出現裂縫漏檢問題。為了更好地建立裂縫檢測模型,李艷霞[13]提出對裂縫圖像進行邊緣增強預處理,突出裂縫線條屬性特征,有利于模型更好地訓練學習。受此啟發(fā),本文提出一種基于邊緣增強感知學習的裂縫檢測方法。但不同于文獻[13],本文將裂縫邊緣作為網絡訓練輔助標記,如圖1 所示,該方法以U-Net++為主框架,利用通道卷積將原始的U-Net++分割網絡劃分為2 條支路,一條支路繼續(xù)進行裂縫主干區(qū)域的分割工作;另一條支路則利用U-Net++網絡解碼器具備的聚合上下文功能,構建一個裂縫邊緣預測分支網絡。2 條分支網絡共同形成雙任務學習體系,使整個網絡在學習主干特征的同時能夠聚焦于裂縫邊緣信息,提高對細微裂縫病害的檢測與識別精度。將待測試的裂縫圖像輸入到已建立的裂縫檢測網絡模型中,模型會同時輸出裂縫主體分割區(qū)域以及裂縫邊緣檢測區(qū)域,其前者將被作為最終的裂縫檢測結果。
圖1 本文提出的裂縫檢測模型原理圖Fig.1 Schematic diagram of proposed crack detection model
U-Net++網絡是在原U-Net 網絡基礎上提出的語義分割模型[14]。圖2 展示了本文應用的5 層網絡結 構:X0,X1.0,X2.0,X3.0和X4.0分別表示一個特征提取卷積模塊,其包含了卷積、激活與歸一化等操作;每個卷積模塊后緊跟一個池化層,向下箭頭代表下采樣,向上箭頭代表上采樣;虛線代表了跳躍連接層。本文以U-Net++網絡為裂縫分割主干網絡,利用其提取裂縫的多尺度特征。
圖2 U-Net++網絡結構圖Fig.2 Structure diagram of U-Net++
利用Dice 系數來計算裂縫分割主干網絡的損失,其公式為式(1)。其中X*為裂縫分割結果,Y為人工標記真值圖,|X*|和|Y|分別為分割結果與真值圖中的像素數量,|X*∩Y|則為分割結果與真值圖內容相同的交集。當分割結果與真值圖的內容重合度較大時,Dice 值接近于1;反之,Dice 值接近于0。式(2)為最終的主干網絡的損失函數,式中ε是為了避免Dice 計算中分母出現0 而設立的極小常數值。
相比于混凝土結構表面其他類病害(比如滲水、掉塊等),裂縫為一種典型的條狀類病害。在深度學習網絡的特征提取中,特征下采樣操作會導致裂縫條狀信息大幅衰減。因此,如何保持裂縫條狀病害的邊緣特征,是本文所解決的關鍵問題。為了構建裂縫邊緣預測分支網絡,需先提取裂縫的邊緣真值圖??紤]裂縫邊緣主要包含2 個屬性,即方向和幅度。沿著裂縫邊界方向的像素亮度變化平緩,而垂直于裂縫邊界方向的像素亮度變化劇烈。因此,本文提出利用Sobel 算子提取人工標記裂縫區(qū)域的邊緣,作為裂縫邊緣真值圖。
如圖3 所示,Sobel 算子提供了對垂直(圖3(b))邊緣與水平邊緣(圖3(c))的2個檢測模板。設圖3(a)為待檢測的3×3 輸入圖像,通過式(3)~(4)可分別計算圖像中每個點的水平方向與垂直方向的梯度值,再利用式(5)計算該點像素的總梯度大小,由此可判定該像素點是否屬于裂縫圖像邊緣。
圖3 Sobel邊緣檢測模板Fig.3 Template of Sobel edge detector
為了提高網絡模型對細微裂縫病害的檢測效果,本文在裂縫主干區(qū)域分割基礎上,進一步考慮利用裂縫特有的邊緣特征,構造一個邊緣輔助預測分支網絡,并將其與主干網絡統(tǒng)一到一個深度學習模型中。如圖2所示,選用的裂縫識別主網絡U-Net++主要包含編碼器、解碼器等結構。在編碼器部分,網絡通過卷積得到不同分辨率的特征圖;在解碼器部分,網絡將編碼特征與編碼器特征通過跳躍連接操作進行融合,如此構建了一個具有多分辨率特征的金字塔。受此啟發(fā),提出在主干網絡的解碼器上構建邊緣預測分支網絡,其利用裂縫輸入圖像與裂縫邊緣真值圖進行迭代訓練,通過計算裂縫邊緣真值圖與裂縫邊緣預測結果之間的差值來構造損失函數。邊緣預測分支網絡的具體建立過程如下所述。
設主網絡U-Net++為5 層網絡,其原始解碼端的特征金字塔會輸出5 層特征圖。如圖4 所示,邊緣預測分支網絡以VGG16 網絡為基礎,去除VGG16 模型中的全連接層,并在卷積層后增加5個側邊輸出層,用以輸出多尺度特征。從特征圖的尺寸來看,主網絡與邊緣預測分支網絡的各層特征圖尺寸是一樣的(分別為448×448,224×224,112×112,56×56 與28×28),因此可將U-Net++網絡的解碼器視為邊緣預測分支網絡的編碼器,并在U-Net++網絡的后端構建邊緣預測分支網絡,增強網絡模型對細微裂縫病害的檢測效果。同時為了防止主干分割任務與邊緣檢測任務發(fā)生沖突,應用通道卷積對U-Net++解碼器輸出的特征圖進行分支管理,分別用于主干網絡訓練與邊緣檢測網絡訓練。
圖4 裂縫邊緣預測分支網絡結構圖Fig.4 Structure diagram of crack edge prediction branch network
設X為輸入裂縫圖像,Y'為原裂縫真值圖Y對應的邊緣真值圖。為了方便與原始分辨率的圖像標記進行損失函數計算,將所有子解碼網絡層對應的特征圖上采樣至與原始圖像尺寸相同的分辨率,這里設分支網絡上采樣后的第i層解碼網絡特征圖為ψi,可利用交叉熵函數dist(·,·)計算第i層網絡對應的預測損失值,如式(6):
考慮每層解碼網絡特征圖反饋的信息有所差異,引入特征圖權重參數W={w1,w2,w3,w4,w5}對分支網絡的每層網絡預測損失值進行綜合計算,由此得到裂縫邊緣預測分支網絡的損失函數,如式(7):
將式(7)項作為正則化約束項,聯合裂縫主干分割網絡的損失函數(式(2)),構建一種雙任務聯合訓練框架,最終總體的裂縫分割模型的訓練損失函數如式(8):
在雙任務聯合訓練過程中,整個網絡結構會根據訓練誤差量迭代更新網絡結構的所有參數以及所有特征圖的權重參數W,由此實現對裂縫主干區(qū)域與裂縫邊緣特征的綜合感知學習。
為了驗證所提出的裂縫病害視覺檢測模型的有效性,本文收集了來自Cracktree[15]、CRACK500[16]、CFD[17]等大量裂縫數據集進行測試分析,并進一步使用佳能HS125 相機對石家莊鐵道大學結構實驗室的諸多試驗構件進行拍攝,尤其拍攝了100 張帶有細微裂縫的混凝土病害圖像。為了統(tǒng)一所有的裂縫圖像尺寸,本文將收集與拍攝的裂縫圖像均分割成448×448 大小的方塊圖像,共計有11 600 張。隨機選取10 000 張數據用來訓練網絡模型,剩余1 600 張數據則作為測試集,用于評估算法檢測效果。由于新采集的圖像數據,缺少人工標記,本文利用Photoshop 軟件對裂縫數據進行標注。不同于Labelme 等圖像標記軟件,Photoshop 軟件具有對相近亮度的像素點快速引導標記功能,因而對裂縫圖像的像素級標記效率較高。如圖5 所示,通過Photoshop 軟件中的快速選擇工具對裂縫區(qū)域進行逐像素標記,其裂縫區(qū)域被標記為白色(像素亮度值為255),背景區(qū)域被標記為黑色(像素值亮度值為0)。
圖5 裂縫病害像素級標記示意圖Fig.5 Illustrations of labeling the pixels of crack region
考慮公平性,本文提出的裂縫檢測算法與其他對比算法均在同一個計算平臺上實現,具體實驗環(huán)境參數為:CPU處理器I9-9900K、內存64 GB、GPU 顯卡11GB-GTX1080Ti,操作系統(tǒng)為Ubuntu16.04,所有算法均采用Python 進行編程。對于網絡模型而言,其訓練參數主要包括權重衰減系數、指數衰減率、模糊因子、批量處理值以及學習率等。這里,權重衰減系數是為了避免模型過擬合而設定的懲罰參數,一般設為默認值0;指數衰減率主要用于平滑權重參數的梯度與梯度的平方值,一般設為默認值0.99;模糊因子是防止在網絡訓練過程中出現分母為0的情況,一般設定為1×10-8。批量處理值與硬件計算資源有關,當批量處理值過大時,GPU 內存會溢出,導致網絡無法訓練;而當批量處理值設為1時,會出現網絡收斂不穩(wěn)定的現象。綜合實際情況,本文將批量處理值設為4。學習率是網絡模型訓練的一個關鍵參數,其值過小會導致網絡收斂緩慢,其值過大時雖可提高網絡訓練速度但可能會導致網絡無法收斂。為了確定最優(yōu)學習率,本文選取5 個常見數值(即0.001,0.005,0.01,0.05和0.1)進行測試。由于在訓練過程中,訓練初期的損失值衰減較大,因此利用模型迭代訓練20 次后的損失值大小作為評判依據,其最小損失值對應的學習率參數為最優(yōu)。如圖6所示,0.005被確定為最優(yōu)學習率參數。圖7展示了在最優(yōu)學習率參數0.005 下,整個模型的迭代訓練損失值變化曲線。當迭代次數為250 次時,整個網絡的損失值不再發(fā)生明顯變化,因此本文將迭代250次時的網絡權重參數保存為最終裂縫檢測模型參數。
圖6 各學習率下的網絡損失值變化曲線Fig.6 Changing curve of loss function with different learning rates
圖7 最優(yōu)學習率下網絡損失值變化曲線Fig.7 Changing curve of loss function with best learning rate
2.3.1 定性分析
圖8 展示了本文算法與3 種對比算法FCN[18],U-Net 和U-Net++對部分裂縫病害圖像的視覺檢測結果。首先,圖8 中1~5 號分圖均為細微裂縫病害,從原圖中可以看到這些細微裂縫與背景區(qū)域的對比度較低、信噪比較小,給裂縫區(qū)域精準檢測帶來很大困難。相比于其他3 種方法,經典的FCN 分割模型的解碼層部分相對簡單,導致其無法有效檢測與識別大部分細微裂縫(見圖8中的3~5 號分圖)。對于圖8 中的2~3 這2 個分圖,U-Net算法將背景的2 個劃痕誤檢測為裂縫(見虛線框),可能的原因是U-Net模型未使用跳躍連接層導致其對裂縫的感知不精準。雖然U-Net++算法借助跳躍連接層在一定程度上可獲得較為精準的裂縫分割結果,但是對于細微裂縫而言,其在圖像數據中只有幾個像素的寬度,其形狀類似于一條細線(例如圖8 中的3~5 分圖中的細微裂縫),本就稀少且不明顯的裂縫原始特征很容易在深度學習編碼階段的多次下采樣過程中被消除,因此U-Net++算法對于細微裂縫病害的感知結果出現了漏檢(即圖8中的3~5 分圖中的虛線框部分)。相比而言,本文算法利用通道卷積操作將整個裂縫分割解碼網絡分為2條支路,一條支路繼續(xù)為裂縫主體區(qū)域檢測服務,另一條支路則為一個邊緣預測分支網絡,這使得整體網絡在學習裂縫主體區(qū)域特征的同時能夠聚焦于裂縫的邊界信息,其通過裂縫邊緣條件約束,從而獲得更加完整的裂縫區(qū)域檢測結果。圖8 中1~5 分圖的實驗結果表明本文網絡在細微裂縫檢測任務中均取得了最優(yōu)的檢測效果。
圖8 部分代表性的細微裂縫病害檢測結果Fig.8 Some representative detecting results of fine cracks
考慮在實際應用中,細微裂縫只是混凝土裂縫病害的一種特殊形式,在大部分情況下,細微裂縫與正常裂縫同時存在,呈現一種多尺度裂縫并存現狀,如圖8 中的6~8 分圖所示。為了驗證本文算法在取得對細微裂縫良好檢測效果的同時,對于其他非細微裂縫仍可保持良好的檢測效果,故測試了本文方法及其他3種算法對多尺度裂縫病害圖像的檢測效果。從圖8 中分圖6 的檢測結果可看出,其他3 種算法均出現了一些虛警(見圖中虛線框部分);如圖8 中分圖7 所示,U-Net 模型對于背景塊狀陰影干擾較為敏感;U-Net++算法雖然可分割出大部分裂縫區(qū)域,但是在細微裂縫病害感知方面出現了漏檢(見圖8 中分圖6~8 虛線框)。光照干擾也是裂縫檢測應用中必須考慮的一個問題,圖8 中分圖9 展示了在不均勻光照干擾下4 種模型的裂縫檢測結果。顯然FCN 模型對于背景光照干擾敏感,出現了一些虛警;U-Net 和U-Net++這2個模型未利用裂縫邊緣關鍵特征,導致裂縫區(qū)域出現部分漏檢。綜合對比可知,本文算法在基于U-Net++對于正常裂縫病害具有良好感知能力的基礎上,通過引入了裂縫分支預測網絡,取得了在多尺度以及光照干擾等復雜條件下最優(yōu)的檢測與識別效果。
2.3.2 定量分析
本文使用準確率(A)和Dice 系數這2 個指標來評價各個裂縫檢測模型的性能,具體定義如下:
式中:TP代表算法檢測到的裂縫區(qū)域像素與真值圖中裂縫區(qū)域像素重合的數量;TN代表算法檢測到的背景區(qū)域像素與真值圖中背景區(qū)域像素重合的數量;FP代表算法誤將背景區(qū)域識別成裂縫的像素數量;FN代表算法誤將裂縫區(qū)域識別成背景的像素數量。表1 展示了3 種算法對所有測試數據集的平均準確率與Dice系數值。
表1 裂縫檢測結果的定量對比Table 1 Quantitative comparison of crack detection results
準確率參數A描述了一幅圖像中所有像素被正確判定為裂縫或背景的比例,其數值越大,表示裂縫檢測算法可以正確辨識圖像中裂縫或背景像素正確標簽的能力越高。對比可知,上述3種檢測算法的準確率相差不大。從2.3.1 節(jié)的定性結果來看,在引入邊緣預測分支網絡后,本文算法對于細微裂縫像素的感知能力有明顯提升,但由于細微裂縫本身的占比像素較小,因此導致本文算法的平均準確率相比于U-Net++算法僅有一個小幅度的提升。Dice 系數表征了裂縫病害預測結果與真值圖之間的交集與并集的比值,Dice 值越大,則表示裂縫檢測效果越好。相比于準確率參數,Dice系數可以更好地衡量裂縫檢測結果與真值圖之間的相似性。對比可知,本文算法的平均Dice 系數值最優(yōu),且明顯比U-Net++算法高出1 個百分點,這驗證了本文算法在引入邊緣增強感知機制后,取得了最優(yōu)的裂縫病害感知效果。模型測試應用時間也是評估裂縫檢測算法的一個重要指標,本文將3 種算法對1 600 張同一測試數據集進行測試并計算3 種方法平均處理1 張448×448 大小方塊圖像的時間值,其結果見表1 的第4 列。由于UNet++網絡結構比U-Net 模型復雜,因而其計算時耗略大于U-Net 模型;相比于U-Net++模型,本文方法采用了雙任務學習架構,其計算過程有一定的任務增加,因此計算時耗比U-Net++模型有一定幅度的增長,但是平均每秒處理幀數大于15,仍可以滿足大部分裂縫檢測時間需求。
1) 該算法以U-Net++為主框架,利用主干網絡解碼器與裂縫邊緣預測網絡的結構相似性,提出通過通道卷積將原始裂縫分割網絡分為2 條支路,一條支路用于裂縫主干分割任務,另一條支路則用于裂縫邊緣預測感知。
2) 將構建的裂縫邊緣預測分支網絡以正則化約束方式,與主干網絡聯合訓練,形成一種基于雙任務學習的裂縫病害感知體系,可提高算法對多尺度裂縫的綜合感知精度。
3) 本文方法的平均Dice 檢測指標比U-Net++模型高出1 個百分點,尤其在細微裂縫識別方面,會取得更優(yōu)的檢測與識別效果,特別適用于一些遠距離拍攝產生的細微裂縫檢測與識別應用場景。