常 惠,饒志強,趙玉林,李益晨
1.北京聯合大學 北京市信息服務工程重點實驗室,北京100101 2.北京聯合大學 城市軌道交通與物流學院,北京100101
裂縫是鐵路隧道施工和使用過程中不可避免的問題,對隧道的結構穩定和列車的安全運行有著重要的影響。目前,國內鐵路隧道裂縫的檢測主要依靠人工檢測,難以滿足鐵路安全檢測快速發展的要求。利用數字圖像處理和計算機視覺技術來檢測裂縫逐漸成為主流方法,常用的方法如Gabor濾波[1]、隨機森林[2]、稀疏表示方法[3]、支持向量機(Support Vector Machine,SVM)[4-5]等,但是隧道圖像存在水漬、劃痕、光照不均勻、噪聲大等復雜情況,影響傳統圖像處理方法的發展,因此應該采取更有效的方法及時檢測隧道裂縫。
近年來,深度學習在結構健康監測領域得到了很大的應用,裂縫檢測也不例外。文獻[6]和文獻[7]利用深度神經網絡檢測隧道裂縫,檢測精度和速度都得到了有效提高。文獻[8]在U-Net 網絡結構上引入了一種基于距離變換的新代價函數對裂縫進行像素級的分割。文獻[9]采用改進的U-Net網絡實現了像素級、小樣本的橋梁裂縫圖像的檢測。文獻[10]在U-Net網絡體系結構上對裂縫進行分割,利用預訓練的ResNet34 作為預編碼器來改進網絡的性能。文獻[11]在U-Net的基礎上使用預訓練的ResNet34 作為編碼器,并添加注意力機制模塊進一步提高了混凝土裂縫檢測的精度。文獻[12]采用U-Net 方法檢測混凝土裂縫,與全卷積網絡(Fully Convolutional Networks,FCN)相比,該方法顯示出高效率、良好的魯棒性和更好的準確性,但目前方法仍存在邊緣平滑、細節丟失和誤檢的問題。文獻[13]提出VGGU-Net網絡的路面分割方法,將已訓練好的VGG16遷移到經典的U-Net 網絡中,在裂縫數據集上實現了優于FCN、Crack-FCN和經典U-Net模型的性能。文獻[14]提出了一種以VGGNet 作為骨干網絡的端到端的裂縫檢測方法,提出的編碼器和解碼器框架不僅可以提高檢測精度,還可以通過反向學習進行語義分析,以捕獲裂縫的上下文信息,但是由于網絡比較深,效率相對不高。文獻[15]利用基于SegNet的分割方法,通過對視頻中多個重疊幀的裂縫概率進行聚合來檢測裂縫。文獻[16]提出了一種改進的深度全卷積網絡CrackSegNet,從復雜場景中提取隧道裂縫,有效地消除其他干擾的影響,并執行端到端的裂縫分割,提高了模型的魯棒性,但該方法的計算效率略低于U-Net。
目前大多數裂縫分割都是在U-Net 網絡結構上進行改進,雖然該網絡對裂縫分割具有很好的效果,并且適合于小數據集的情況,但不能很好地恢復經過池化層之后的圖像細節結構信息,易造成細小裂縫漏檢的現象。針對U-Net 網絡在裂縫圖像分割時存在的問題以及隧道裂縫圖像的特點,可對基礎的網絡結構進一步改進,主要改進方面為:首先將殘差模塊添加到U-Net 網絡中,并且將批量歸一化層(Batch Normalization,BN)添加到網絡中,加快訓練速度并防止過度擬合;其次引入SE 模塊來提升重要特征,加強對裂縫特征的權重分配;最后設計交叉熵損失和Dice損失相結合的組合損失函數來解決裂縫分割網絡訓練過程中像素樣本不均衡的問題,進一步獲得更加精細的分割結果,從而更好地實現復雜背景下隧道裂縫的分割。
U-Net 是全卷積神經網絡的一種變形,主要有編碼器(Encoder)、解碼器(Decoder)和跳躍連接(Skip Connection)[12]。Encoder 用于從圖像中提取空間特征,卷積塊有兩個3×3卷積操作,然后是最大池操作。在每次下采樣之后,卷積中的濾波器數量將增加一倍,最后兩個3×3卷積運算將編碼器連接到解碼器。Decoder用于根據Encoder 特征構造分割圖,并使用2×2 轉置的卷積運算對特征圖進行上采樣,同時將特征通道縮小為一半,然后再次執行兩個3×3 卷積運算的序列,最后再執行1×1卷積運算以生成最終的分割圖。Skip Connection將輸出從Encoder傳輸到Decoder,這些特征圖與上采樣操作的輸出串聯在一起,并將級聯特征圖傳播到后續圖層,以盡可能保留更多細節,提高最終分割結果的分辨率和邊緣準確率。U-Net在醫學分割領域應用廣泛,并取得了很好的效果,而裂縫圖像分割屬于二值分割,與醫學圖像分割相似,因此本文使用U-Net作為裂縫分割模型的基礎網絡,U-Net網絡結構如圖1所示。

圖1 U-Net網絡結構Fig.1 U-Net network structure
為了從隧道裂縫圖像中提取出更多細節信息,緩解復雜背景下低對比度區域及細小裂縫欠分割的問題,可引入殘差模塊代替傳統的卷積層。殘差模塊的引入是為了防止后續隨著神經網絡的加深使得在利用小批量隨機梯度下降法訓練網絡時產生梯度消失,導致網絡模型訓練無法收斂的問題。其中,殘差塊定義為:

其中,x為輸入;y為輸出;F(x)是待學習的殘差映射函數。
傳統殘差模塊由兩個卷積層和ReLU 激活函數組成,為提高網絡的泛化能力,本文對殘差模塊進行了優化,在每個卷積層之前加入BN 層和ReLU 激活函數。優化后的殘差模塊結構如圖2所示。

圖2 優化后的殘差模塊Fig.2 Optimized residual module
雖然殘差模塊強化了特征的傳播能力,有效地提取出更多裂縫細節信息,但復雜背景下低層特征中缺少語義信息,亮度不均衡,對比度較低,仍會對隧道裂縫的分割造成干擾。通過引入注意力機制SE模塊[17]來捕獲高級語義信息,根據特征圖像的值對各特征通道進行加權,提升重要特征的權重,降低不重要特征的權重,從而提升特征提取的效果,提高模型的分割精度。SE 結構示意圖如圖3所示。
在圖3中,對于任何給定的將輸入特征X映射到特征圖U的變換,比如卷積,可以構造一個相應的SE 塊來進行特征重新校準。首先特征X經過Ftr卷積將其通道數由C′變為C,將特征圖U傳遞給擠壓(Squeeze)操作,該操作通過在空間維度(H×W)上聚合特征圖來生成通道描述符,允許來自全局接收域的信息被網絡的各個層所使用。聚合之后的激勵(Excitation)操作采用自選通機制將嵌入作為輸入來生成每通道調制權重的集合,并將這些權重應用于特征圖U,就形成了SE 模塊的輸出,可以將其直接饋送到網絡的后續層中[17]。通道注意力機制SE模塊相較于其他注意力機制實現起來比較簡單,可以很容易加載到現有的網絡模型框架中,易于集成。隧道裂縫圖像背景復雜,利用該模塊為輸入特征圖各特征通道賦予權重,增強任務相關像素權重,可以弱化背景和噪聲影響,從而獲得更精確的語義信息,通過引入極少參數可明顯提升模型的分割精度,不會加大模型的計算復雜度。

圖3 SE結構示意圖Fig.3 SE structure diagram
為了更好地使用U-Net對隧道裂縫圖像進行分割,鑒于殘差網絡和SE 模塊的優點,設計出一種改進的隧道裂縫分割網絡SE-RU-Net(Squeeze and Excitation Residual Network U-Net)模型,網絡結構如圖4 所示。

圖4 SE-RU-Net網絡結構Fig.4 SE-RU-Net network structure
編碼器的每個網絡層由兩個殘差模塊組成,每個網絡層之間通過步長為2,卷積核為2×2 的最大池化卷積方式進行連接,共有8個殘差模塊,每個殘差模塊由2個3×3卷積層及快捷連接構成,通過下采樣從上下文中提取高像素特征。解碼器的每個網絡層由一個殘差模塊構成,每個網絡層通過步長為2的3×3轉置卷積進行層與層之間的連接,共有4個殘差模塊,每個殘差模塊由2個3×3卷積層組成,然后返回到像素的分類。編碼和解碼部分通過殘差模塊使得模型融合更多的淺層特征。該模型從圖像數據中提取局部特征,殘差模塊的快捷連接操作將輸入的全局信息與局部特征進行融合,使得模型能夠獲得更豐富全面的特征,同時網絡不易退化。
為了獲得更輕的網絡模型,本文算法在每一層中使用了比U-Net更少的卷積核數,并在每個卷積層后加入BN 層和ReLU 激活函數用于防止過擬合現象的發生。為了滿足分割任務中多層次特征學習的需求,在U-Net結構前面的跳躍連接部分添加注意力機制SE模塊來學習編碼器多尺度的特征,獲取每個特征通道的重要程度,按照每個特征通道的重要程度來提升有用特征,將特征提取的權重分布到收縮路徑的所有階段,解決UNet在圖像特征提取過程中依賴固定權重的問題。
本文使用Python 編程語言在Ubuntu 16.04 操作系統上進行相關實驗,實驗基于PyTorch的深度學習框架,硬件平臺為Intel I7-9750H、Nvidia GTX1660Ti、16 GB內存。
鐵路隧道裂縫圖像的語義分割問題是二分類問題,可采用二分類的交叉熵(Binary cross entropy,Bce)損失函數,定義如下:

其中,N為圖像像素數目;yi為第i個像素點的標簽值;pi為第i個像素點的預測概率值。
由于裂縫像素數量占被檢測的隧道圖片的比例很低,Bce 損失造成網絡裂縫類別的學習和識別被抑制,網絡更傾向預測為背景。相比于Bce損失來說,Dice損失可以很好地解決這種正負樣本不均衡的問題,它的本質是評估兩個輪廓區域的相似程度,表達式如下:

其中,yi為第i個像素點的標簽值;pi為第i個像素點的預測概率值;ε根據實驗設置,是為了減少過擬合,更快收斂。當yi和pi過小時,會導致梯度發生很大變化,使得訓練出現大的波動,造成訓練相對困難。
將Bce 損失函數和Dice 損失函數進行結合可以很好地適應于裂縫分割模型,并且發揮很好的效果[18],兩者組成的組合損失函數在關注像素級別的同時也能關注圖像級別的顯著性,使得模型訓練穩定且能有效處理裂縫像素正負樣本不平衡的問題,如式(4)所示:

其中,L總為總損失;LBce為二分類交叉熵損失;LDice為Dice損失;λ為平衡Bce損失函數和Dice損失函數之間重要性的權重系數。
為了定量評估隧道裂縫分割的性能,采用以下幾個指標進行準確性評估,包括像素準確性(PA)、交并比(IoU)、精準率(Precision)、召回率(Recall)和F1 得分(F1-score)。比較分割結果時,考慮以下四個像素評價類別,如表1所示。

表1 像素評價類別Table 1 Pixel evaluation category
(1)像素準確性

(2)交并比

(3)精準率即查準率,突出顯示誤檢的比例

(4)召回率即查全率,突出顯示漏檢的比例

(5)F1得分

F1-Score 綜合考慮了精準率與召回率,F1-Score 值越大代表模型性能越好。
為驗證本文算法的有效性,在公共隧道裂縫數據集CrackSegNet[16]和自制數據集Tunnel Crack 上進行了實驗,以4∶1 的比例將其分為訓練集和測試集,并在同一運行環境下使用不同的分割模型進行對比分析。在組合損失函數的設計中,通過調參來確定合適的λ取值。實驗結果顯示將λ設置為0.2 時,模型的分割效果最好。這是由于模型的主要任務是分割,分類任務只是分割的輔助任務,二分類的交叉熵損失函數權重過大仍會讓模型傾向于預測裂縫背景,影響分割的性能。模型使用Adam 優化器進行優化,初始學習率設定為0.001,批量大小設定為16,迭代次數200次。
CrackSegNet[16]是帶注釋的隧道裂縫圖像數據集,共有919張裂縫圖像及其對應的Ground truth,文獻[16]中采用CrackSegNet網絡對該數據集的裂縫圖像進行分割。該網絡由編解碼器、空洞卷積、空間金字塔池化和跳躍連接模塊組成,這些模塊可用于高效的多尺度特征提取,既保留了U-Net、FCN和PSPNet的優點,又根據隧道裂縫數據集的特點進行了改進,使其魯棒性更強。利用U-Net、CrackSegNet 和本文方法對CrackSegNet 數據集進行裂縫識別,不同模型在隧道裂縫分割中的結果對比如表2所示。
從表2 中不同模型在隧道裂縫分割中的結果對比可以看出,本文方法的PA、IoU、Precision、Recall 和F1-Score 明顯更高,F1 得分和IoU 分別達到了76.36%和61.76%,比基礎的U-Net 網絡分別提高了13.27 個百分點和14.12 個百分點,并且也加快了計算效率,相比文獻[16]的CrackSegNet 方法來說也具有一定的先進性,不僅提高了分割的查準率和查全率,同時也提高了模型運行的速度。為更加直觀地驗證網絡的性能,利用三種算法在CrackSegNet 數據集上進行測試,定性比較結果如圖5所示。

表2 不同模型在隧道裂縫分割中的結果對比Table 2 Comparison of results of different models in tunnel crack segmentation
在圖5 中,紅色矩形框表示裂縫像素漏檢的情況,綠色矩形框表示裂縫像素誤檢的情況,U-Net網絡對細小的裂縫不能進行很好的分割,有較多的孤立散點,CrackSegNet 的分割效果較好,但是在背景下的障礙物影響算法的檢測結果,分割的細節需加強,分割出的裂縫邊界不夠細膩。相較于其他方法,本文方法分割的裂縫邊界較為明顯,可以獲得與分割標簽相似的分割結果,對細小的裂縫能夠進行很好的分割,漏檢的情況相對比較少,對應的召回率也就有所提升,這為鐵路隧道裂縫圖像的分割提供了新思路。

圖5 CrackSegNet數據集定性比較結果Fig.5 Qualitative comparison results of CrackSegNet dataset
通過實際采集和網絡爬蟲的方式來獲取鐵路隧道裂縫圖像樣本數據。將收集的圖片嚴格挑選,把沒有裂縫的隧道裂縫圖像剔除。使用Labelme 軟件對數據集中的圖片進行人工標注,裂紋像素標記為0,背景像素標記為1。允許以二進制格式存儲不同環境條件下的圖像信息,圖片統一輸入尺寸為512×512,從而有助于多批同時進行網絡輸入的訓練,并加入水平翻轉、小角度旋轉來擴充數據集。
3.2.1 不同損失函數的結果對比
為驗證組合損失函數的性能,選取三種不同損失函數在SE-RU-Net網絡進行實驗比較,圖6為不同損失函數的結果對比。
從圖6 中可以看出,應用Bce 損失函數的Recall 值相對較小,這是由于交叉熵損失函數使得神經網絡更傾向于識別多樣本的類別而忽視少樣本的類別造成的,即使像素準確率很高,召回率也會偏低。Dice損失的召回率相對較高,但是精準率并不是很高,使得模型不能很好地查準隧道內的裂縫。利用組合損失函數讓模型訓練更加穩定的同時還能解決像素類別不平衡的問題,提高了模型的召回率,并且F1得分比利用Bce損失函數和Dice損失函數的模型分別高出9.25個百分點和13.03個百分點,但是精準率比利用交叉熵損失函數的模型降低了0.66個百分點。從工程應用的角度來看,模型必須能最大程度有效地檢測出所有的裂縫。因此,在隧道檢測過程中,提高裂縫分割的召回率就顯得尤為重要,甚至要犧牲檢測的精度。根據實際需求,組合損失函數可以發揮更大的優勢。

圖6 不同損失函數的結果對比Fig.6 Comparison of results of different loss functions
3.2.2 消融實驗
為了說明本文多種改進策略可以有效提高算法的分割性能,通過消融實驗來驗證加入殘差模塊和SE 模塊的先進性,其中每種網絡模型都采用組合損失函數。不同改進模塊的分割算法比較如表3所示。
表3編程計算出了多種改進策略的分割算法結果,經比較得出添加殘差模塊的RU-Net網絡避免了深層網絡的退化問題,整體裂縫區域分割效果優于U-Net,精準率相比未改進的基準U-Net網絡提高了5.09個百分點,IoU 和F1 得分也得到了很大的提升,運行時間約為65 ms,說明加入殘差網絡的U-Net 可以提取出更多的裂縫細節信息,并能提高計算效率;只在基準的U-Net網絡中添加SE模塊,加強了對裂縫邊緣、圖案和形狀等特征的權重分配,網絡性能也得到了改善。SE-RU-Net的IoU為60.59%,F1得分為75.46%,在各個指標上都很大程度地超過了U-Net,說明使用殘差網絡和SE模塊改進的網絡模型緩解了復雜背景下低對比度區域及細小裂縫漏檢和誤檢的問題,每張圖片的計算效率得到了很大的提升,網絡的泛化能力也比較好。

表3 不同改進模塊的分割算法比較Table 3 Comparison of segmentation algorithms of different improved modules
3.2.3 不同網絡模型的結果對比
為體現模型及算法的先進性和魯棒性,在自制的數據集上復現U-Net 和CrackSegNet 算法,并與本文算法進行對比,使用相同的實驗參數分別訓練不同的網絡,確保對比結果的可信度,定性和定量地來驗證改進模型的性能。不同方法的像素準確率和訓練損失的變化曲線對比如圖7和圖8所示。

圖7 準確率曲線Fig.7 Accuracy curve

圖8 損失函數曲線Fig.8 Loss function curve
從圖7 和圖8 中可看出,每個模型在訓練初始階段的像素準確率PA 指標就很高,這是由于裂縫圖像中裂縫所占的像素比很小,即便模型將整張圖全部判定為裂縫圖片的背景,像素準確率仍然能獲得比較高的值,在第70 個Epoch 時均獲得較高增長,隨后緩慢增長,三者的增長趨勢較為一致。本文所提方法的收斂情況優于U-Net 和CrackSegNet,并且像素準確率也是最高的,相較于其他方法,該網絡性能得到了較大的改善,加入殘差塊和SE 模塊的U-Net 加快了網絡的收斂速度,提高了網絡的分割性能。同樣利用PA、IoU、Precision、Recall、F1-Score 和Running time 等指標來進一步驗證模型的性能,不同模型在鐵路隧道裂縫分割的性能對比如表4所示。

表4 不同模型在鐵路隧道裂縫分割中的性能對比Table 4 Comparison of performance of different models in crack division of railway tunnels
從表4結果中可以看出,本文方法PA、IoU、Precision、Recall、F1-Score 的評估結果分別達到98.81%、60.59%、68.86%、83.46%、75.46%,運行時間約為65 ms,均優于其他方法,這說明本文提出的分割模型有利于隧道裂縫圖像的分割。為了更直觀地說明本文方法的準確性,本文隨機選取了5 個樣本在不同模型上的分割結果,如圖9所示。

圖9 Tunnel Crack數據集定性比較結果Fig.9 Qualitative comparison results of Tunnel Crack dataset
在圖9 中,第一列為裂縫原始圖,第二列為裂縫原始圖的標簽圖,后面為三種方法對應的裂縫分割結果圖,紅色矩形框表示裂縫像素漏檢的情況,綠色矩形框表示裂縫像素誤檢的情況。主觀評價從分割結果圖與標簽對比判斷,基于U-Net的隧道裂縫檢測方法基本上可以檢測出圖像中出現的裂縫,可以完整地將裂縫呈現出來,但是在檢測結果圖中也可以看到會出現細小裂縫沒有被分割,以及有噪聲的裂縫背景被分割出來的情況,這樣很難統計出裂縫的信息。CrackSegNet 可以對細小的裂縫進行很好的分割,但是裂縫的背景仍被分割了出來。基于改進U-Net 網絡的隧道裂縫檢測圖的檢測精度最高,且基本沒有噪聲像素,與CrackSegNet 相比,其裂縫分割結果有顯著提升,裂縫的檢測結果圖與標簽圖更為接近,漏檢和誤檢的情況也相對減少了很多,并具有更準確的位置和詳細的形態信息,同時對背景中的污漬等干擾具有較好的魯棒性。
本文針對鐵路隧道裂縫圖像的特點,提出一種改進U-Net的隧道裂縫分割模型。該模型以U-Net網絡為基本框架,首先在U-Net 網絡中引入殘差塊,加強特征的傳播,減少信息損失;然后引入注意力機制SE模塊來加強裂縫區域的權重,抑制無用特征的權重,減緩圖像對比度低對模型的影響;最后結合Bce損失和Dice損失組成的組合損失函數處理裂縫像素類別不平衡的問題,提高模型的召回率,從而提高模型的性能。實驗結果表明,改進的方法在兩個數據集上都得到了很好的分割效果,并且在不同的評價指標上證明了該方法的有效性,在鐵路隧道裂縫數據集上PA達到了98.81%,F1得分達到了75.46%,每張圖片的測試運行時間約為65 ms,可以很好地滿足隧道裂縫檢測的實時要求。在后續的工作中可采集更多高質量的圖片,訓練性能更好的分割網絡模型,對隧道裂縫進行有效及時的檢測。