常 惠,饒志強,李益晨,趙玉林
(1.北京聯(lián)合大學(xué)北京市信息服務(wù)工程重點實驗室,北京 100101;2.北京聯(lián)合大學(xué)城市軌道交通與物流學(xué)院,北京 100101)
我國鐵路隧道在運營期間因為各種原因產(chǎn)生不同程度的病害,襯砌裂縫是最常見的一種,裂縫會影響隧道的穩(wěn)定性,對于鐵路隧道安全運行是個極大的隱患,久而久之會對列車的運行造成負面影響,因此對隧道裂縫進行及時有效的識別與處理是一項非常重要的工作.目前,我國鐵路隧道裂縫的檢測大多使用人工檢查的方法,該方法難以滿足鐵路安全檢測快速發(fā)展的要求.目前利用計算機視覺和數(shù)字圖像處理來檢測裂縫已引起越來越多學(xué)者的關(guān)注,常用的方法如Gabor濾波[1]、隨機森林[2]、稀疏表示方法[3]、支持向量機(SVM)[4-5]和Hough變換與SVM相結(jié)合[6]等方法.雖然這些方法取得了較好的檢測效果,但是它們對輸入圖像的質(zhì)量要求較高,而鐵路隧道圖像包含復(fù)雜的自然特征,例如油漆、水漬和結(jié)構(gòu)縫等,加之隧道內(nèi)光線不均勻和噪聲的干擾,使得裂縫檢測受到極大的影響.
近年來,深度學(xué)習(xí)取得了飛速的發(fā)展,并且在結(jié)構(gòu)健康監(jiān)測領(lǐng)域也得到了很大的應(yīng)用,越來越多的研究者使用深度學(xué)習(xí)的方法對裂縫進行檢測.文獻[7]提出了一種8層CNN來掃描小塊的高分辨率裂縫圖像,并引入基于相位的視覺流模型來考慮時間因素進行裂縫的分類;文獻[8]將基于CNN的裂縫檢測方法與6個常見邊緣檢測器的性能進行了比較,結(jié)果表明CNN架構(gòu)優(yōu)于其他方法;文獻[9]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)分類的方法,該方法對橋梁背景面元和裂縫面元進行檢測識別,并且取得了很好的效果;文獻[10]通過將裂縫圖像切分成若干圖像塊后,利用卷積神經(jīng)網(wǎng)絡(luò)得到圖像塊的裂縫概率圖實現(xiàn)裂縫的檢測,上述基于CNN的方法計算量較大,速度有待進一步提高;文獻[11]以像素為單位將裂縫圖像切分成若干圖像塊,利用圖像塊對卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練和檢測,但該方法樣本相似度高,且需要考慮訓(xùn)練樣本中裂縫和非裂縫樣本的比例,實現(xiàn)起來較為困難;文獻[12]基于GoogleNet模型,通過改進Inception模塊和優(yōu)化卷積核,提升網(wǎng)絡(luò)對隧道襯砌圖像病害分類識別的能力,但該方法未考慮圖像中病害的位置特征,檢測效率有待進一步提升;文獻[13]使用遷移學(xué)習(xí)的方法對裂縫進行分類,對較小的數(shù)據(jù)集采用預(yù)訓(xùn)練的VGG16模型進行微調(diào)來完成分類任務(wù),但模型精度有待提高.
經(jīng)過許多研究實驗發(fā)現(xiàn),ResNet網(wǎng)絡(luò)中使用的殘差算法使圖像分類更加準(zhǔn)確,因為殘差算法大大提高了神經(jīng)網(wǎng)絡(luò)提取特征的能力[14],因此可以被用來進行鐵路隧道裂縫檢測.但是,ResNet在改善感受野方面不是很有效,不能更好地提取圖像的某些特征.針對鐵路隧道裂縫圖像的特點,可對基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu)進行改進,主要改進幾個方面:將具有不同擴張率的空洞卷積塊與傳統(tǒng)的卷積塊相結(jié)合,形成金字塔空洞卷積模塊;添加金字塔空洞卷積模塊改善ResNet網(wǎng)絡(luò)的底層感受野并提高分類的準(zhǔn)確率;采用基于度量學(xué)習(xí)的組合損失函數(shù)來區(qū)分不同類之間的相似差異,減少裂縫的漏檢率和誤檢率,從而更好地實現(xiàn)復(fù)雜背景下細小裂縫的檢測.
作為一種有監(jiān)督的學(xué)習(xí)算法,與深度人工神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)具有更少的參數(shù)和更快的訓(xùn)練速度的優(yōu)勢,并且在圖像分類、分割和檢測等方面具有顯著優(yōu)勢.CNN是一個多層結(jié)構(gòu)的學(xué)習(xí)算法,它使用局部特征的各層相關(guān)關(guān)系來減少參數(shù)的數(shù)量以提高模型的性能.卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
由圖1可以看出,卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)由輸入的原始圖像、卷積層、池化層、全連接層、分類器和輸出這幾部分組成,卷積層對圖像特征提取之后,將提取的特征發(fā)送到最后一層的全連接層以進行裂縫圖像的分類,本文基于PyTorch框架搭建卷積神經(jīng)網(wǎng)絡(luò),用于鐵路隧道裂縫的檢測.
圖2 殘差模塊結(jié)構(gòu)
殘差網(wǎng)絡(luò)是一種深度神經(jīng)網(wǎng)絡(luò)模型,隨著網(wǎng)絡(luò)的深化,梯度在反向傳播過程中很容易消失,導(dǎo)致無法更新參數(shù)并影響網(wǎng)絡(luò)收斂.另外,神經(jīng)網(wǎng)絡(luò)的加深會導(dǎo)致網(wǎng)絡(luò)退化,而殘差網(wǎng)絡(luò)中的殘差模塊使用跳躍連接很好地解決了這些問題,使得在設(shè)計神經(jīng)網(wǎng)絡(luò)模型時可以達到數(shù)十層甚至數(shù)百層的深度,近年來由于其卓越的性能,該網(wǎng)絡(luò)模型已在許多領(lǐng)域中得到了廣泛應(yīng)用.殘差模塊結(jié)構(gòu)如圖2所示,可以看到x作為輸入值,經(jīng)過線性變換和激活函數(shù)得到殘差F(x),在激活前將F(x)與x用shortcut連接相加即為殘差模塊的主要思想,這樣可以保證恒等變換和反向傳播時的梯度傳遞.殘差模塊可以定義為
y=F(x)+x.
(1)
式中:x為輸入值;y為輸出值;F(x)是待學(xué)習(xí)的殘差映射函數(shù).
2.1.1 ResNet網(wǎng)絡(luò)
裂縫圖像是基于紋理特征進行區(qū)分的,而且細小裂縫和有其他噪聲的無裂縫之間的紋理特征相似程度較高,體現(xiàn)在微小特征上的差別,為保證裂縫檢測的效率,使用ResNet網(wǎng)絡(luò)進行分類識別,由于鐵路隧道裂縫圖像識別屬于二分類,所以為了提取微小的特征以及減小網(wǎng)絡(luò)模型的參數(shù)量,選擇結(jié)構(gòu)相對簡單的ResNet18作為裂縫分類的網(wǎng)絡(luò),ResNet18的基本結(jié)構(gòu)如圖3所示.
圖3 ResNet18的基本結(jié)構(gòu)
2.1.2 空洞卷積
傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的池化層有利于降低圖像尺寸、增加特征圖步長,但存在裂縫圖像細節(jié)信息丟失,從而導(dǎo)致復(fù)雜背景下裂縫誤檢和漏檢等問題.空洞卷積(Dilated Convolutions,DC)是一種特殊的卷積方式,可以在不降低特征圖分辨率的情況下增加卷積核的接收范圍,并且可用于多尺度特征圖像的提取.空洞卷積與普通卷積相比,除了卷積核的大小以外,還有一個擴張率(Dilation Rate)參數(shù),主要用來表示擴張的大小.空洞卷積在卷積的時候,會在卷積核元素之間加入空格,若原來的卷積核大小為k,空洞卷積的一個新的超參數(shù)為d,那么加入(d-1)個空格后的卷積核大小n的計算公式為
n=k+(k-1)(d-1).
(2)
進而,假定輸入空洞卷積的大小為i,步長為s,填充的像素數(shù)為p,空洞卷積后特征圖大小o的計算公式為
o=i+2p-k-(k-1)(d-1)s+1.
(3)
假設(shè)一個3×3的卷積核,圖4給出了具有不同擴張率下的感受野.當(dāng)擴張率為1時,擴張的卷積核與原始的普通卷積核相同;當(dāng)擴張率為2時,原始的3×3卷積核將擴張為類似于5×5的卷積核,感受野為7*7;當(dāng)擴張率為3時,原始的3×3卷積核將擴張為類似于9×9的卷積核,感受野為15*15,零是擴張期間的填充值,只有點上的值不為零,其余為零.針對裂縫分類時出現(xiàn)特征圖卷積或池化降低分辨率造成的精度損失問題,可采用加入空洞卷積的方法,將散布的卷積增加感受野,同時確保在參數(shù)數(shù)量保持不變的情況下輸出的特征圖大小保持不變,保留裂縫的細節(jié)信息,提升算法的泛化能力.
(a)擴張率=1
(b)擴張率=2
(c)擴張率=3
2.1.3 金字塔空洞卷積模塊
圖5 金字塔空洞卷積模塊
由于隧道內(nèi)環(huán)境的問題,除了圖片采光較差,還極易與背景環(huán)境(如水漬、油漆等噪聲)存在低對比度現(xiàn)象,且可能具有相似強度的陰影,通過聚集小的區(qū)域來區(qū)分圖像中類別是很困難的,在空間金字塔池化下進行空洞卷積,構(gòu)建金字塔空洞卷積(Pyramid Dilated Convolution,PDC)模塊,如圖5所示.它繼承了空間金字塔池化和空洞卷積的優(yōu)點,不同擴張率的PDC模塊可以有效捕捉圖像的多尺度信息,可以獲取到對圖像的上下文信息和空間層級信息,使得隧道裂縫圖像的細節(jié)信息得到有效的提取,提高尺度不變并且降低過擬合現(xiàn)象.
在該模型中,假設(shè)輸入為X,輸出為Y,Dilate1-Dilate3用來表示擴張的卷積核;Conv1-Conv4用來表示普通的卷積核;F1,F(xiàn)2,F(xiàn)3表示以不同的速率進行卷積后產(chǎn)生的輸出;?表示卷積;{}表示級聯(lián)算法,則Y可以表示為
Y={F1,F(xiàn)2,F(xiàn)3}?Conv4+X.
(4)
其中
F1=X?Conv1?Dilate1,
F2=X?Conv2?Dilate2,
F3=X?Conv3?Dilate3.
PDC模塊并行采用不同擴張率的空洞卷積層以多個比例來獲取裂縫像素特征以及隧道裂縫圖像的上下文信息,利用并聯(lián)的空洞卷積進行提取圖像裂縫特征,然后對提取到的特征進行融合,這樣可以將不同尺度的信息融合到一起,同時利用空洞卷積可以有效地擴大卷積層的感受野.與輸入大小相比,空洞卷積具有恒定的輸出大小的特性,這種改善感受野的方法非常適合ResNet網(wǎng)絡(luò)的底層.
2.1.4 基于金字塔空洞卷積的ResNet網(wǎng)絡(luò)
基于卷積神經(jīng)網(wǎng)絡(luò)的模型中存在一些不足.例如,網(wǎng)絡(luò)無法訓(xùn)練為增強感受野而添加的池化層的參數(shù),導(dǎo)致有關(guān)小物體的信息無法重建.這些對于常見的卷積神經(jīng)網(wǎng)絡(luò)中的ResNet也是不可避免的.為了使ResNet在隧道裂縫圖像分類中更好,在其底部添加金字塔空洞卷積模塊,設(shè)計出一種改進殘差網(wǎng)絡(luò)PDC-ResNet(Pyramid Dilated Convolution Residual Network,PDC-ResNet)模型,其結(jié)構(gòu)如圖6所示.
圖6 基于金字塔空洞卷積的ResNet網(wǎng)絡(luò)結(jié)構(gòu)
由圖6可以看出,金字塔空洞卷積模塊被集成到ResNet的底部,以增加原始網(wǎng)絡(luò)的感受野并提高分類精度,在修改ResNet時,由于隧道裂縫圖像識別屬于二分類,而原始的ResNet基本結(jié)構(gòu)適合進行多分類.因此,我們將每個卷積塊的卷積內(nèi)核數(shù)量減少了一半,并且進行了一些實驗來選擇模塊的擴張率.最后針對數(shù)據(jù)集選擇1,3和5作為擴張率,并以不同的擴張率將不同的擴張卷積的輸出串聯(lián)起來.
在圖像分類中,卷積神經(jīng)網(wǎng)絡(luò)通常使用Softmax分類器,并且Softmax層在網(wǎng)絡(luò)的全連接層之后,它將許多神經(jīng)元隨時間的輸出映射到區(qū)間(0,1)內(nèi),每個神經(jīng)元的輸出值之和為1,這可以解釋為概率,然后將概率最大的類別表示輸出結(jié)果,預(yù)測并執(zhí)行分類任務(wù).該方法分類高,并行分布處理能力強,能充分逼近復(fù)雜的非線性關(guān)系,計算量較小,訓(xùn)練速度較快,所以本文的鐵路隧道裂縫檢測網(wǎng)絡(luò)輸出層采用Softmax分類器.其中,輸出概率的計算公式為
(5)
因鐵路隧道裂縫檢測算法是二分類問題,故式中k的值為2.
實際采集的鐵路隧道裂縫數(shù)據(jù)集兩類之間的差異并不總是特別明顯,例如有裂縫的圖片和有水漬等復(fù)雜背景的圖片,細小裂縫圖片和無裂縫的圖片.有些圖片背景存在一定相似性,如僅從局部性的圖像上難以區(qū)分是何種類別,所以要提升分類的精度還要更好地解決正確區(qū)分相似類別之間差異的問題.考慮到實際應(yīng)用的需求,應(yīng)設(shè)計參數(shù)更少的網(wǎng)絡(luò).因此,本文從損失函數(shù)角度進一步提高識別精度,設(shè)計基于度量學(xué)習(xí)(Metric Learning)的損失函數(shù)衡量圖像的特征之間的差異性,其計算公式為
Lossr=max(‖f(A)-f(P)‖2-‖f(A)-f(N)‖2+C,0).
(6)
其中:Lossr代表度量學(xué)習(xí)的損失函數(shù);A代表目標(biāo)樣本的特征;P代表提取的圖像特征;N代表與A不同類別的特征;C代表大于0的數(shù);max(x,0)代表當(dāng)其輸入x小于0時,max(x,0)的輸出為0,x大于0時,輸出x.所以,從度量學(xué)習(xí)的損失函數(shù)可知,部分x小于0時表示相同類別之間的距離已經(jīng)足夠小,且小于不同類別特征之間的距離.
由于裂縫識別任務(wù)是一個分類問題,因此,對最終的預(yù)測結(jié)果采用交叉熵損失函數(shù),其計算公式為
Lossc=-[ylogy′+(1-y)log(1-y′)].
(7)
式中y′和y分別表示預(yù)測的標(biāo)簽概率值以及真實標(biāo)簽,當(dāng)損失函數(shù)的值不斷減小時,表示預(yù)測的概率分布接近真實標(biāo)簽y的數(shù)據(jù).
所以總的損失函數(shù)為
Loss總=α*Lossr+β*Lossc.
(8)
其中:α,β分別代表每個損失函數(shù)的權(quán)重,均為大于0的數(shù).實驗中超參數(shù)α,β均設(shè)置為1.
本文在Ubuntu 16.04操作系統(tǒng)使用Python編程語言上進行相關(guān)實驗,實驗基于PyTorch的深度學(xué)習(xí)框架,硬件研究平臺:Intel I7-9750H、Nvidia GTX1660Ti、16 GB內(nèi)存.
利用公共數(shù)據(jù)集和實際采集的數(shù)據(jù)進行實驗驗證,訓(xùn)練集和測試集按8∶2的比例進行劃分,實驗通過控制單一變量,在同一運行環(huán)境分別使用不同改進算法的殘差網(wǎng)絡(luò)模型,然后進行對比分析.研究實驗圖片統(tǒng)一輸入尺寸為512像素×512像素,并在輸入過程中加入水平翻轉(zhuǎn)、小角度旋轉(zhuǎn)來擴充數(shù)據(jù)集,模型使用Adam優(yōu)化器,初始學(xué)習(xí)率設(shè)定為0.001,批量大小設(shè)定為32,迭代次數(shù)為100次.
SDNET2018[15]是帶注釋的圖像數(shù)據(jù)集,用于訓(xùn)練、驗證和測試基于人工智能的混凝土裂縫檢測算法,該數(shù)據(jù)集包含超過56 000張有裂縫和無裂縫的路面、墻壁和橋梁的圖像,里面包含的裂痕窄至0.06 mm,寬至25 mm,并且數(shù)據(jù)集還包括帶有各種障礙物的圖像,包括陰影、表面粗糙度、縮放、邊緣、孔洞和背景碎片.其中,SDNET2018數(shù)據(jù)集的信息如表1所示.
表1 SDNET2018數(shù)據(jù)集 張
利用文獻[15]的方法AlexNet和ResNet、PDC-ResNet、ResNet-改進Loss以及本文方法(PDC-ResNet與改進Loss相結(jié)合)對SDNET2018數(shù)據(jù)集進行裂縫識別,不同模型的準(zhǔn)確率如表2所示.
表2 不同模型在裂縫檢測上的準(zhǔn)確率對比 %
通過表2不同實驗在裂縫檢測上的準(zhǔn)確率對比可以看出,本文方法在路面、墻壁和橋梁這3種數(shù)據(jù)集上的準(zhǔn)確率分別達到了97.32%,91.73%,92.84%,與文獻[15]的方法相比模型性能都有較大的提升,相比基礎(chǔ)的ResNet網(wǎng)絡(luò)來說具有一定的先進性,并且添加金字塔空洞卷積模塊和基于度量學(xué)習(xí)的組合損失函數(shù)都能有效提升裂縫分類的準(zhǔn)確率,上述結(jié)果也證明了使用改進的ResNet網(wǎng)絡(luò)對裂縫圖像進行分類的優(yōu)勢,這為鐵路隧道裂縫檢測提供了新思路.
本文通過實際采集和網(wǎng)絡(luò)爬蟲的方式來獲取鐵路隧道裂縫圖像樣本數(shù)據(jù),然后對數(shù)據(jù)進行預(yù)處理,構(gòu)建鐵路隧道裂縫圖像數(shù)據(jù)集(CRACK數(shù)據(jù)集),數(shù)據(jù)集中分為兩類:有裂縫(1 000張)和無裂縫(1 000張),圖像大多數(shù)背景較為復(fù)雜,并且裂縫種類多樣.CRACK數(shù)據(jù)集部分圖像數(shù)據(jù)如圖7所示.
(a)有裂縫
(b)無裂縫
此外,針對自制訓(xùn)練集圖像格式不一致且樣本量小的問題,對圖像進行預(yù)處理,其中包含灰度處理、高斯濾波和圖像歸一化等.由于測試集不參與網(wǎng)絡(luò)的訓(xùn)練,所以我們僅對訓(xùn)練集進行旋轉(zhuǎn)、縮放、對比度調(diào)整、鏡面對稱和添加噪聲等操作來擴充數(shù)據(jù),防止網(wǎng)絡(luò)過度擬合并提高網(wǎng)絡(luò)的泛化能力.為體現(xiàn)模型及算法先進性,設(shè)立4組消融試驗對比改進模型的性能,其中,不同模型的準(zhǔn)確率曲線和損失函數(shù)曲線如圖8和9所示.
圖8 準(zhǔn)確率曲線
圖9 損失函數(shù)曲線
由圖8和9可知,本文的方法精度增長穩(wěn)定,且增長速度快于其他網(wǎng)絡(luò),PDC-ResNet網(wǎng)絡(luò)和改進的Loss函數(shù)的收斂速度和識別準(zhǔn)確率也都高于基礎(chǔ)的ResNet網(wǎng)絡(luò),且在網(wǎng)絡(luò)訓(xùn)練層數(shù)加深多次迭代下,殘差網(wǎng)絡(luò)模型未出現(xiàn)明顯的網(wǎng)絡(luò)退化現(xiàn)象.為進一步驗證網(wǎng)絡(luò)的性能,使用精準(zhǔn)率(P)、召回率(R)、F1分?jǐn)?shù)(F1)3個指標(biāo)來評價鐵路隧道裂縫分類模型的優(yōu)劣.3種指標(biāo)計算方式分別為:
(1)P突出顯示誤檢的比例
(9)
式中:TP代表真陽性(True Positive),F(xiàn)P(False Positive)代表假陽性.P表示預(yù)測為真的數(shù)據(jù)里預(yù)測正確的數(shù)據(jù)個數(shù)的比例.該值越接近1代表性能越好.
(2)R突出顯示漏檢的比例
(10)
式中:FN(False Negative)代表假陰性.R表示實際為真的數(shù)據(jù)里預(yù)測正確的數(shù)據(jù)個數(shù)的比例.該值越接近1代表性能越好.
(3)F1綜合考慮了P與R:
(11)
同樣,該值越大代表模型性能越好.
表3列出了4種不同模型在鐵路隧道裂縫檢測上性能對比,從表3中可以看出PDC-ResNet網(wǎng)絡(luò)的P相比未改進的基礎(chǔ)網(wǎng)絡(luò)提高了2.62%,R和F1也得到了很大的提升,說明在ResNet底部添加金字塔空洞卷積模塊之后可以獲取到對圖像的上下文信息和空間層級信息,使得隧道裂縫圖像的細節(jié)信息得到有效的提取,捕捉隧道數(shù)據(jù)的多尺度特征,提高分類的性能.采用改進損失函數(shù)的ResNet與ResNet兩模型的P相比提高了1.17%,R提高了1.35%,改進損失函數(shù)的F1也有所提升,并且本文方法的P提高了4.73%,R提高了7.82%,F(xiàn)1提高了6.29%,說明加入度量學(xué)習(xí)的組合損失函數(shù)區(qū)分隧道圖像的差異后,將相同類別的圖像特征之間的距離拉近,將不同類別特征之間的距離拉遠,可以在模型參數(shù)不變的情況下對分類精度有明顯的提升,結(jié)果也證明了本文提出的方法在區(qū)分不同類之間相似差異上的有效性.
表3 不同模型在鐵路隧道裂縫檢測上性能對比 %
本文針對傳統(tǒng)殘差網(wǎng)絡(luò)和損失函數(shù)在鐵路隧道裂縫檢測問題上的不足,提出一種改進殘差網(wǎng)絡(luò)PDC-ResNet及基于度量學(xué)習(xí)的組合損失函數(shù)的裂縫分類方法.該方法首先在ResNet底部添加不同擴張率的金字塔空洞卷積模塊,確保既不降低特征圖分辨率,又能擴大卷積核感受野,這能很好地用于隧道裂縫圖像多尺度特征的提取,增加分類的準(zhǔn)確率;其次通過設(shè)計基于度量學(xué)習(xí)的組合損失函數(shù)使得模型能在訓(xùn)練中盡可能增大不同類之間距離來對復(fù)雜背景下細小的裂縫進行更好地分類.實驗表明,本文方法相比較ResNet基礎(chǔ)網(wǎng)絡(luò)可以提高鐵路隧道裂縫識別準(zhǔn)確率,并且在3種不同的評價指標(biāo)上證明了該方法的有效性.但實驗對圖像數(shù)據(jù)樣本的質(zhì)量要求較高,并且數(shù)據(jù)集的樣本相對來說比較少,后續(xù)可采集更多類型的高質(zhì)量鐵路隧道裂縫圖片,訓(xùn)練性能更好的分類網(wǎng)絡(luò)模型,對裂縫進行有效及時的識別,以滿足結(jié)構(gòu)健康監(jiān)測的鐵路隧道裂縫檢測和檢查的要求.