陳良全,王彩玲,劉華軍,蔣國平
(南京郵電大學(xué) 自動化學(xué)院、人工智能學(xué)院,南京 210023)
路面裂縫是由自然應(yīng)力引起的路面損壞,如果不及時處理,很可能導(dǎo)致道路塌陷和交通事故.因此,對路面進(jìn)行準(zhǔn)確高效的檢測尤為重要.最直接的檢測方法是對路面進(jìn)行目測,并由專家對其進(jìn)行準(zhǔn)確的評估.然而,這種方法涉及到較高的人工成本,并且可能產(chǎn)生不可靠和不一致的結(jié)果,同時檢測人員直接在路面上檢測是極其危險的且效率也很低[1].因此有必要設(shè)計一種精確、自動化的路面裂縫檢測系統(tǒng).然而路面裂縫的自動檢測是一個充滿挑戰(zhàn)的課題,因?yàn)榱鸭y不僅拓?fù)浣Y(jié)構(gòu)復(fù)雜,尺度不均勻,而且會受低對比度和雜亂背景的影響而降低檢測精度[2].
路面裂縫通常具有以下特點(diǎn):
(1)裂縫的顏色相對于背景較深;
(2)裂縫的延伸方向是線性且寬度可變的;
(3)裂縫邊緣的拓?fù)浣Y(jié)構(gòu)復(fù)雜.
傳統(tǒng)檢測方法中,基于最大后驗(yàn)分類器,Oliceria 等[3]提出一種利用激光成像系統(tǒng)對圖像中的裂縫進(jìn)行檢測,再利用二值區(qū)域和幾何特征進(jìn)行分割.Zou 等[4]提出采用地面陰影去除法,通過張量投票法建立裂縫分布概率圖,然后構(gòu)造隨機(jī)森林對遞歸樹的邊緣進(jìn)行剪枝以進(jìn)行裂縫檢測.Oliveria 等[5]推出一種用于路面裂縫檢測與表征的圖像處理算法和技術(shù)評價算法工具箱.Peng 等[6]首次采用Otsu 閾值分割法去除路面圖像中的道路標(biāo)志,然后采用自適應(yīng)迭代閾值分割算法得到裂縫分割圖像.
深度學(xué)習(xí)方法迅速發(fā)展并且已經(jīng)應(yīng)用到了路面裂縫檢測任務(wù)中.基于深度學(xué)習(xí)的路面裂縫檢測方法可以分為五類:分割算法,邊緣檢測算法,分類器算法,生成對抗方法和無監(jiān)督方法.文獻(xiàn)[7,8]將裂縫檢測視為分割任務(wù),文獻(xiàn)[7]提出一種分塊閾值分割方法對裂縫進(jìn)行分割.文獻(xiàn)[8]在SegNet的基礎(chǔ)上通過融合同一尺度下編碼器和解碼器的卷積特性來進(jìn)行裂縫特征的提取.Yang 等[9]將裂縫檢測視為邊緣檢測任務(wù),以特征金字塔的形式將上下文信息轉(zhuǎn)化為低層特征進(jìn)行裂紋檢測.Dorafshan 等[10]基于混凝土圖像的裂縫檢測比較了深度卷積神經(jīng)網(wǎng)絡(luò)和邊緣檢測器.Zhang 等[11]采用基于裂縫修補(bǔ)(CPO)的生成對抗網(wǎng)絡(luò)模型對路面進(jìn)行檢測并將大尺度裂縫圖像輸入到非對稱U 形網(wǎng)絡(luò)中,以克服裂縫的產(chǎn)生“全黑”問題.Li 等[12]提出了一種基于無監(jiān)督多尺度融合裂紋檢測的(MFCD)算法.此外,文獻(xiàn)[13,14]將分類算法應(yīng)用到路面裂紋檢測中.文獻(xiàn)[13]提出了深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN)實(shí)現(xiàn)了自動檢測和分類路面裂紋.文獻(xiàn)[14]提出基于概率生成模型(PGM)和支持向量機(jī)(SVM)的網(wǎng)絡(luò)來生成和計算裂紋特征的概率圖,并且提出了一種基于融合概率圖的加權(quán)展開運(yùn)算,增強(qiáng)了算法的有效性.
在一定程度上,無論是傳統(tǒng)方法還是深度學(xué)習(xí)方法都可以檢測到裂縫.然而,保證裂縫檢測的連續(xù)性和裂縫邊緣的完整性仍需進(jìn)一步研究.一方面,裂縫沿著其延展方向是連續(xù)分布的,一些比較細(xì)的裂縫容易檢測不到.另一方面,裂縫的邊緣拓?fù)浣Y(jié)構(gòu)復(fù)雜,檢測器容易丟失邊緣信息,導(dǎo)致檢測裂縫的邊緣過于光滑.如圖1所示,圖1(a)中檢測結(jié)果出現(xiàn)裂縫斷裂的現(xiàn)象,圖1(b)中的檢測結(jié)果丟失了裂縫的邊緣信息.
圖1 原生SegNet 檢測結(jié)果
我們將路面裂縫檢測視為分割任務(wù),且網(wǎng)絡(luò)結(jié)構(gòu)是受SegNet的啟發(fā).SegNet是一種編碼解碼模型,由Badrinarayanan 等[15]首次提出,用于像素級圖像分割.之后,Badrinarayanan 等[16]改進(jìn)了他們之前提出的SegNet 模型.編碼器部分和VGG16的13 層卷積層相同,且編碼層由上采樣和卷積構(gòu)成,最后將每個像素通過Softmax 激活函數(shù)進(jìn)行分類.
Schmugge 等[17]首先將SegNet 作為基礎(chǔ)框架應(yīng)用于裂縫檢測任務(wù).他們提出了一種自動檢測方法,以幫助對核電站部件的焊接、劃痕和研磨進(jìn)行遠(yuǎn)程自動檢測,給出了不同光照條件下多幀圖像的層次分類置信度.
選取在2015年5月—2018年5月輪轉(zhuǎn)至泌尿外科的基地住培學(xué)員60人作為研究對象。將其隨機(jī)分配為實(shí)驗(yàn)組和對照組。其中,實(shí)驗(yàn)組(30人)采用PBL的教學(xué)方式;對照組(30人)采用傳統(tǒng)的教學(xué)方式。通過比較,兩組學(xué)員在平均年齡、性別構(gòu)成及學(xué)歷方面,差異無統(tǒng)計學(xué)意義(P>0.05),具有可比性。
雖然我們設(shè)計的框架是基于SegNet的,但是,它與原生SegNet[16]不一樣,我們沒有直接在編碼器部分使用VGG16 模型.編碼器部分分為5 層,前2 層是兩個卷積,并且每個卷積層后有1 個max-pooling層,最后3 層是3 個卷積層,每個卷積層后有1 個maxpooling 層.
CACPNet的整體設(shè)計結(jié)構(gòu)如圖2所示,左邊虛線框出的部分為編碼器,右邊為解碼器,編碼器上半部分結(jié)構(gòu)為多層卷積金字塔結(jié)構(gòu),下半部分為連續(xù)注意力機(jī)制.
圖2 CACPNet 網(wǎng)絡(luò)結(jié)構(gòu)
路面裂縫通常是連續(xù)的,因此裂縫之間通常不會出現(xiàn)斷開的現(xiàn)象.另外,在檢測過程中經(jīng)常會混淆背景和裂縫,這就導(dǎo)致了斷裂和裂紋信息丟失問題.受注意力門控[18]的啟發(fā),我們設(shè)計了一個連續(xù)特征注意機(jī)制模塊,以保證路面裂縫的連續(xù)性.
連續(xù)特征注意機(jī)制結(jié)構(gòu)如圖3所示.輸入圖像或特征經(jīng)過的上一層為Encoder 模塊,下一層為連續(xù)注意力機(jī)制模塊.連續(xù)注意力機(jī)制模塊中,輸入的原始圖片或者上層特征圖依次經(jīng)過1×1×1的卷積,批量歸一化處理和ReLU 函數(shù)激活,接著通過Softmax 函數(shù)激活和最大值池化處理生成注意力參數(shù)與上層特征進(jìn)行加權(quán),得到本層的特征輸出.通常在Encoder-Decoder框架中添加注意力機(jī)制是和Attention UNet[18]類似,在編碼層和解碼層的跳躍連接中添加注意力機(jī)制,而本文則是在編碼層之間添加注意力機(jī)制,因?yàn)槲覀冎皇顷P(guān)注裂縫特征在特征提取過程中的細(xì)節(jié)特征丟失,所以采用了在編碼層之間連續(xù)使用符合各個解碼層特征的注意力門控機(jī)制來對各層特征進(jìn)行加權(quán).
圖3 連續(xù)注意力機(jī)制結(jié)構(gòu)
當(dāng)前層的輸入特征F∈RW×H×C,當(dāng)前層的輸出特征注意力模塊的輸入為當(dāng)前層特征F,基于當(dāng)前層的下一層的輸入特征為:
注意力參數(shù)的生成過程為:
在式(2)中,xli是第l層的輸入,WiT和bli分別為第l 層的權(quán)重和偏量,如果特征的數(shù)量級過大,在通過激活函數(shù)時會提前進(jìn)入飽和區(qū),因此需要采取批量歸一化BNγ,β,σ1是ReLU 激活函數(shù),Faltt是注意力特征生成公式,Fl為轉(zhuǎn)換后注意參數(shù)的特征,最后通過Softmax激活函數(shù)增加非線性和max-pooling 層歸一化尺度得到注意力參數(shù).
傳統(tǒng)的特征金字塔結(jié)構(gòu)[19,20]主要從不同尺度的圖像中提取特征,但這增加了訓(xùn)練數(shù)據(jù)量,降低了效率.目前用于路面裂縫檢測的特征金字塔網(wǎng)絡(luò)[9,21]大多是利用網(wǎng)絡(luò)最后一層的特征映射來構(gòu)造特征金字塔,從而保證了裂縫特征對路面裂縫的完整性.但是在一定程度上缺乏解決裂紋邊緣信息丟失的能力.因此,我們提出了一種多層卷積特征金字塔結(jié)構(gòu),利用各編碼層的卷積特征進(jìn)行特征融合.多層卷積特征金字塔結(jié)構(gòu)可以充分利用各層圖像特征,既能保證裂紋特征的連續(xù)性,同時也減少了裂紋邊緣信息的丟失.
多層卷積特征金字塔如圖4所示.每層的輸入為編碼器每一層的輸出特征.從上到下每層的特征圖尺寸為64×240×160、128×120×80、256×60×40、512×30×20、512×15×10.
圖4 多層卷積金字塔結(jié)構(gòu)
因?yàn)楦鲗拥奶卣魍ǖ罃?shù)和圖像尺度不同,無法直接進(jìn)行特征融合.使用1×1×1 卷積對通道數(shù)進(jìn)行變換,然后通過最大池改變圖像特征尺寸的大小,最后,前四層金字塔結(jié)構(gòu)融合生成512 通道特征映射,再與編碼器的最后一個特征層進(jìn)行特征融合,最后得到解碼層的輸入特征圖.
整個網(wǎng)絡(luò)是由PyTorch 實(shí)現(xiàn)的,訓(xùn)練環(huán)境為3.5 GHz,8 GB RAM,NVIDIA 2080Ti GPU,且在Ubuntu 環(huán)境下運(yùn)行.
比較實(shí)驗(yàn)采用3 個公共數(shù)據(jù)集,包括Crack500 數(shù)據(jù)集[9],Crack200 數(shù)據(jù)集[4]以CrackForest 數(shù)據(jù)集(CFD)[22].因?yàn)? 種數(shù)據(jù)集圖片的大小是不同的,我們有所有的圖像和地面真相調(diào)整到480×320 分辨率.同時,由于CFD和crack200 數(shù)據(jù)集中的數(shù)據(jù)量太小,我們隨機(jī)選取翻轉(zhuǎn)輸入圖像以增強(qiáng)數(shù)據(jù)以防止過度擬合.
為了比較生成的分割圖像與真實(shí)分割圖像的像素級相似度,分割任務(wù)中主要使用4 個指標(biāo),分別是Precision、Recall、F1-measure和MIoU.
Precision是指所有樣本中真正樣本占所有正樣本的百分比,Recall是正樣本被模型判定為正樣本的百分比,F1-measure是衡量二分類精度的一個指標(biāo).它同時考慮了分類器的準(zhǔn)確性和召回率.
因此,Precision可以定義為:
Recall可以被定義為:
F1-measure可以定義為:
MIoU可以被定義為:
式(6)-式(9),要計算這4 個指標(biāo),我們需要計算3 個指標(biāo),TP是正樣本預(yù)測為正樣本的個數(shù),FP是預(yù)測為負(fù)樣本的正樣本個數(shù),FN是預(yù)測為負(fù)樣本的負(fù)樣本個數(shù).
進(jìn)行訓(xùn)練時我們設(shè)置了兩個停止訓(xùn)練的條件,一個是訓(xùn)練步數(shù)達(dá)到了設(shè)定值,第二個是學(xué)習(xí)率下降到1e-9.訓(xùn)練的batch 設(shè)置為6.
由于交叉熵?fù)p失不適用分布不均勻的數(shù)據(jù)集,因此我們采用Tversky 損失[23]和L1 正則損失的加權(quán)作為此次實(shí)驗(yàn)的損失函數(shù).Tversky 系數(shù)是Dice 系數(shù)和Jaccard 系數(shù)加權(quán)之后的廣義系數(shù).不平衡分布路面裂縫可能導(dǎo)致某些數(shù)據(jù)出現(xiàn)異常值,但L1 正則損失可以處理數(shù)據(jù)中的異常值.因此,我們采用L1 損失來提高系統(tǒng)的魯棒性.
因此損失函數(shù)可以定義為:
式(11)中,t為真實(shí)分割圖像,p為預(yù)測分割圖像,T為Tversky 損失函數(shù),L1為L1 正則損失函數(shù),α為權(quán)重系數(shù),設(shè)置為0.7.
如表1和表2所示,為本文定量實(shí)驗(yàn)結(jié)果.圖5至圖7為3 種數(shù)據(jù)集上可視化檢測結(jié)果.從圖5可以看出,與圖5(a)-圖5(e)裂縫檢測器的結(jié)果相比,CACPNet檢測的裂縫邊緣信息更豐富,而不是平滑的.從圖6可以看出,裂縫在原始圖像和真實(shí)檢測圖像中是連續(xù)分布的,沒有斷開,但是除CACPNet的檢測結(jié)果外,其他的裂縫檢測器檢測出的裂縫發(fā)生了斷裂.圖7是CFD數(shù)據(jù)上的檢測結(jié)果,可以看出檢測的效果也是要優(yōu)于其他的檢測器.圖8為3 種不同數(shù)據(jù)集訓(xùn)練時的損失和MIoU指標(biāo)曲線圖.
表1 3 種數(shù)據(jù)集上的MIoU 指標(biāo)比較
表2 CFD 數(shù)據(jù)集上Precision,Recall,F1-measure 指標(biāo)(%)
圖5 Crack500 數(shù)據(jù)集可視化檢測結(jié)果
圖6 Crack200 數(shù)據(jù)集可視化檢測結(jié)果
圖7 CFD 數(shù)據(jù)集可視化檢測結(jié)果
圖8 Crack500,Crack200和CFD 數(shù)據(jù)集上訓(xùn)練的MIoU和loss
我們通過消融實(shí)驗(yàn)驗(yàn)證了CACPNet 各個部分的重要性,在CFD 數(shù)據(jù)集上設(shè)計了與原生SegNet的對比實(shí)驗(yàn),所有參數(shù)設(shè)置,包括學(xué)習(xí)率和損失函數(shù)都保持一致.消融實(shí)驗(yàn)一共為3 組,第1 組為原生SegNet,第2 組為原生SegNet 加上連續(xù)注意力機(jī)制,第3 組為第二組的基礎(chǔ)上加上多層卷積金字塔結(jié)構(gòu).具體結(jié)果見表3.
表3 消融實(shí)驗(yàn)結(jié)果
此外,我們還繪制了P-R 曲線來驗(yàn)證添加注意機(jī)制和金字塔模型的有效性.一般來說,精確度降低,召回率提高.從圖9中可以看出,融合了注意機(jī)制和金字塔模型的曲線高于其他曲線,進(jìn)一步證明了我們提出的方法的必要性.
圖9 消融實(shí)驗(yàn)P-R 曲線
本文提出了一種基于SegNet的路面裂縫檢測模型.我們基于SegNet 融合了連續(xù)特征注意機(jī)制與多層卷積金字塔結(jié)構(gòu).連續(xù)特征注意力機(jī)制可以保證裂紋之間的連續(xù)性,在某種程度上,減少了檢測裂縫的斷裂.多層卷積金字塔結(jié)構(gòu)采用對每層特征輸出進(jìn)行再利用,保證全局信息的完整性,包括可以對細(xì)微裂縫檢測,同時可以保證裂縫邊緣信息的完整性.此外,CACPNet 已經(jīng)在3 個公共數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)驗(yàn)證,包括Crack500數(shù)據(jù)集,Crack200 數(shù)據(jù)集和Crack Forest 數(shù)據(jù)集.與現(xiàn)有的方法相比,經(jīng)過實(shí)驗(yàn)驗(yàn)證,我們的網(wǎng)絡(luò)在各種指標(biāo)上都得到了一定的提升.此外,還進(jìn)行了消融實(shí)驗(yàn)以驗(yàn)證其每個模塊的有效性.