黃榮霞,劉德兒
(江西理工大學(xué)土木與測繪工程學(xué)院,江西 贛州 341000)
伴隨著中國公路的快速發(fā)展,公路病害也逐漸產(chǎn)生。路面裂縫作為最主要的公路病害之一,對(duì)公路安全存在潛在的威脅[1]。早期的裂縫檢測方法主要是基于人工檢測,這種方法耗時(shí)耗力,昂貴且低效。為了降低成本,便于道路檢查,實(shí)現(xiàn)路面裂縫自動(dòng)化檢測有重要意義。路面裂縫分割的傳統(tǒng)方法主要有:閾值分割[2]、區(qū)域分割[3]、邊緣分割[4]、聚類分割[5]等。隨著計(jì)算機(jī)技術(shù)的興起和普及,催生了大量傳統(tǒng)機(jī)器學(xué)習(xí)算法,取得了比傳統(tǒng)算法更好的分割結(jié)果,但大多數(shù)還是要靠手工設(shè)計(jì)特征。
近年來,深度學(xué)習(xí)在目標(biāo)檢測[6]與圖像分割[7]中表現(xiàn)出優(yōu)異的性能。對(duì)于裂縫分割,使用卷積神經(jīng)網(wǎng)絡(luò)檢測的方法也明顯增多。文獻(xiàn)[8]融合深度學(xué)習(xí)聚類分割和形態(tài)學(xué)方法對(duì)裂縫進(jìn)行分割,實(shí)現(xiàn)對(duì)較復(fù)雜背景下的裂縫識(shí)別。文獻(xiàn)[9]提出具有編碼器和解碼器框架的U-Net網(wǎng)絡(luò),這是一種可用于檢測暴露在火中的混凝土結(jié)構(gòu)上產(chǎn)生的熱裂縫的新穎方法。文獻(xiàn)[10]使用加權(quán)領(lǐng)域像素分割算法的改進(jìn)版本來檢測二維路面圖像中的裂縫。該方法可以克服嘈雜環(huán)境中固定閾值的缺點(diǎn)。
結(jié)合裂縫的形態(tài)特點(diǎn)和應(yīng)用的實(shí)際要求,本文提出改進(jìn)的Deeplabv3+路面裂縫識(shí)別算法??紤]到裂縫沒有固定的形狀且長寬不一,為了能更好地提取局部細(xì)節(jié)和上下文信息,使用密集連接的ASPP模塊代替普通空間金字塔模塊作為多尺度特征提取構(gòu)建網(wǎng)絡(luò);針對(duì)路面圖像中裂縫像素和背景像素比例失衡問題,設(shè)置合適的權(quán)重來消除類別不平衡帶來的影響。對(duì)檢測結(jié)果中出現(xiàn)的裂縫斷裂現(xiàn)象,采用一種最大連通域的算法來實(shí)現(xiàn)裂縫的精細(xì)提取。所提算法能更加準(zhǔn)確地保留裂縫細(xì)節(jié)特征,還原裂縫真實(shí)信息,從而提高復(fù)雜背景下裂縫檢測的準(zhǔn)確性。
Deeplabv3+是目前最先進(jìn)的語義分割網(wǎng)絡(luò)之一,它最大的特點(diǎn)是在Deeplabv3+網(wǎng)絡(luò)的基礎(chǔ)上增加了Encoder-Decoder(編碼器-解碼器)結(jié)構(gòu)。模型的骨干網(wǎng)絡(luò)采用改進(jìn)的Xception網(wǎng)絡(luò)。首先將原始圖像輸入到Encoder模塊,經(jīng)過1/4、1/8、1/16的卷積運(yùn)算,使圖像最終變成原圖1/16分辨率的特征張量,將提取的特征張量傳入ASPP結(jié)構(gòu),該結(jié)構(gòu)包含1個(gè)1×1卷積,3個(gè)空洞率為6、12、18的空洞卷積和1個(gè)全局平均池化層,經(jīng)拼接處理后通過1×1卷積實(shí)現(xiàn)通道壓縮。Decoder模塊將Encoder模塊得到的特征圖進(jìn)行雙線性插值4倍上采樣,與骨干網(wǎng)絡(luò)經(jīng)1×1卷積得到的特征圖拼接,再經(jīng)過3×3卷積和4倍上采樣操作得到最終輸出結(jié)果。
圖1 裂縫識(shí)別思路圖
本文以路面裂縫為研究對(duì)象,基于改進(jìn)的Deeplabv3+算法進(jìn)行研究,研究思路如圖1所示:
Deeplabv3+網(wǎng)絡(luò)的最大優(yōu)點(diǎn)就是引入了空洞卷積,在不損失信息的情況下,加大了感受野,讓每個(gè)卷積輸出都包含較大范圍的信息。然而,使用大擴(kuò)張系數(shù)的空洞卷積在卷積過程中會(huì)插入多個(gè)空洞來獲取大的感受野,這對(duì)于小的物體而言,可能會(huì)采集不到。對(duì)于裂縫檢測而言,ASPP獲得的多尺度視野不夠密集,獲取的接收野也不夠大。M Yang等提出將ASPP和DenseNet中的密集連接相結(jié)合,構(gòu)成一種DenseASPP[11]的新型架構(gòu)。相比于ASPP,其使用密集連接的方式將每個(gè)擴(kuò)張卷積輸出結(jié)合在一起,具有更大的接收野和更密集的采樣點(diǎn)。改進(jìn)的Deeplabv3+算法如圖2所示:
圖2 改進(jìn)Deeplabv3+網(wǎng)絡(luò)結(jié)構(gòu)圖
2.2.1 裂縫數(shù)據(jù)不平衡處理
圖像分割從像素分割的角度去看,是一個(gè)分類問題,本文研究任務(wù)是路面中的裂縫,路面圖像分為裂縫和背景兩類,從本質(zhì)上看裂縫分割是一個(gè)二分類問題。神經(jīng)網(wǎng)絡(luò)中對(duì)于分類任務(wù)常使用交叉熵?fù)p失函數(shù),因此損失函數(shù)選擇二元交叉熵函數(shù)。在每幅圖像中,檢測到的裂縫像素?cái)?shù)遠(yuǎn)遠(yuǎn)小于背景像素?cái)?shù),因此進(jìn)行裂縫和背景語義分割時(shí),會(huì)出現(xiàn)樣本數(shù)據(jù)不平衡問題,使得分割模型嚴(yán)重偏向于背景,導(dǎo)致網(wǎng)絡(luò)在訓(xùn)練過程中偏向于學(xué)習(xí)背景特征,分割效果不理想。為解決樣本不平衡問題,本文根據(jù)裂縫和背景所占的像素比分別為其設(shè)置合適的權(quán)重來消除類別不平衡帶來的影響。在背景類損失中設(shè)置一個(gè)較小的權(quán)重系數(shù),在裂縫類損失中設(shè)置一個(gè)較大的權(quán)重系數(shù)。計(jì)算公式如下
(1)
(2)
式中:α為背景像素的權(quán)重,β為裂縫區(qū)域像素的權(quán)重,Ni0為第i幅圖像中背景像素的個(gè)數(shù),Ni1為第i幅圖像中裂縫區(qū)域像素的個(gè)數(shù),Ni為第i幅圖像中像素的總數(shù)。經(jīng)過實(shí)驗(yàn)和近似的總裂縫像素占總圖像像素的比例,最后驗(yàn)證當(dāng)背景和裂縫的權(quán)重為1:35時(shí)訓(xùn)練效果達(dá)到最好。
為防止模型在訓(xùn)練過程中出現(xiàn)過擬合現(xiàn)象,提高其泛化能力,在損失函數(shù)中引入正則化器,公式如下
L=LBCE+LR
(3)
其中,L是總訓(xùn)練損失,LBCE是交叉熵?fù)p失,LR是正則化器,加入權(quán)重的LBCE和LR的計(jì)算公式如下
(4)
(5)
式中,LBCE量化了真實(shí)值yi與預(yù)測值xi之間的距離。交叉熵?fù)p失值越低,兩個(gè)概率分布就越相似。λ為正則化強(qiáng)度參數(shù),利用正則化器LR可以得到一個(gè)稠密解,其中每個(gè)特征對(duì)應(yīng)的參數(shù)都非常小,但不為0。
2.2.2 基于最大連通域的裂縫優(yōu)化算法
經(jīng)過改進(jìn)Deeplabv3+網(wǎng)絡(luò)的處理,可以得到較好的分割結(jié)果,但由于部分裂縫較細(xì),且存在光照、遮擋等原因,致使一些邊緣噪聲點(diǎn)、邊緣斷裂處仍然存在。針對(duì)以上問題,本文以最大連通域?yàn)榛A(chǔ)設(shè)計(jì)算法,對(duì)裂縫圖像進(jìn)一步處理,處理結(jié)果如圖3所示。
圖3 最大連通域優(yōu)化過程圖
算法處理過程如下:
1)形態(tài)學(xué)操作。首先將分割得到的圖像做二值化處理,便于減少后續(xù)工作計(jì)算量。選擇矩形結(jié)構(gòu)元素對(duì)該二值圖進(jìn)行先膨脹后腐蝕的閉運(yùn)算操作,如圖3(b)所示,這一步操作能夠彌合小裂縫,連接在分割過程中出現(xiàn)的斷裂區(qū)域。
2)尋找最大連通域。通過分割出來的裂縫圖像可以看出,裂縫部分總是在最大連通域內(nèi),而那些較小的連通區(qū)域一般是由孤立的點(diǎn)組成,所以可以通過找到最大連通域去除孤立部分,連通域圖像如圖3(c)所示,提取出來的最大連通域圖像如圖3(d)所示。
3)提取裂縫。采用文獻(xiàn)[12]中的算法提取裂縫骨架,完成對(duì)裂縫圖像的細(xì)化操作,連接結(jié)果中存在偽連接的情況,偽連接的裂縫相對(duì)真實(shí)裂縫較短,同時(shí)使用裂縫方向、對(duì)比度特征去除連接中的強(qiáng)制偽連接,在連接的基礎(chǔ)上,結(jié)合原圖,對(duì)連接區(qū)域提取裂縫,在原檢測出的裂縫上進(jìn)行填充,使連接區(qū)域更接近實(shí)際裂縫。圖3(e)是細(xì)化分割圖像后提取的裂縫骨架;圖3(f)是最大連通域優(yōu)化后的裂縫提取結(jié)果。
本文算法基于深度學(xué)習(xí)PyTorch開源框架實(shí)現(xiàn),使用Python及MATLAB語言開發(fā),本文實(shí)驗(yàn)均是在單頻為3.80GHz的AMD Ryzen 9 3900X 的CPU,32GB內(nèi)存的工作站上實(shí)現(xiàn)的,并使用單塊NVIDIA GeForce RTX2080Ti的GPU實(shí)現(xiàn)加速。
本文分割任務(wù)主要為路面裂縫,實(shí)驗(yàn)采用的數(shù)據(jù)集為CRACK500[13]、CFD[14]兩個(gè)公開數(shù)據(jù)集。
圖4為兩種數(shù)據(jù)集的裂縫圖像及真實(shí)分割標(biāo)簽,第一行為CFD數(shù)據(jù)集圖像及標(biāo)簽,第二行為CRACK500數(shù)據(jù)集圖像及標(biāo)簽。
圖4 數(shù)據(jù)集圖像
對(duì)Deeplabv3+進(jìn)行批量訓(xùn)練,基礎(chǔ)學(xué)習(xí)率為0.001,迭代次數(shù)為500,學(xué)習(xí)速率衰減因子為0.1,學(xué)習(xí)功率為0.9,動(dòng)量為0.9,為了防止過擬合,權(quán)重衰減率設(shè)為0.0004,每次輸入網(wǎng)絡(luò)中的圖像的批次大小設(shè)為8。
對(duì)于裂縫進(jìn)行像素級(jí)的分割,常用的評(píng)價(jià)指標(biāo)是Pixel Accuracy(像素準(zhǔn)確率)和Mean Intersection over Union(平均交并比),公式如下
(6)
(7)
式中,Pij表示真值為i類被預(yù)測為j類,Pii表示真值為i類被預(yù)測為i類,n+1表示類別數(shù),包含裂縫和背景兩類。算法的運(yùn)行時(shí)間是通過計(jì)算所有驗(yàn)證集樣本的神經(jīng)網(wǎng)絡(luò)前向傳播時(shí)間,并求其平均值而得到。
網(wǎng)絡(luò)訓(xùn)練前,對(duì)裂縫圖像進(jìn)行預(yù)處理,先進(jìn)行裁剪、歸一化和數(shù)據(jù)增強(qiáng)。經(jīng)過圖像裁剪和歸一化后,圖像尺寸大小統(tǒng)一為256 pixel×256 pixel,繼續(xù)采用翻轉(zhuǎn)、裁剪、縮放和添加隨機(jī)噪聲進(jìn)行數(shù)據(jù)增強(qiáng)。在數(shù)據(jù)增強(qiáng)技術(shù)基礎(chǔ)上,將原數(shù)據(jù)擴(kuò)充了大約兩倍,CRACK500數(shù)據(jù)集增加到3000張數(shù)據(jù)樣本,CFD數(shù)據(jù)集增加到300張數(shù)據(jù)樣本,并將數(shù)據(jù)增強(qiáng)圖像按照8:2比例隨機(jī)劃分為訓(xùn)練集和測試集兩部分。網(wǎng)絡(luò)輸入為裂縫數(shù)據(jù),包括預(yù)處理后的原圖和分割標(biāo)簽,輸出為裂縫圖像的分割圖。
3.3.1 ASPP模塊實(shí)驗(yàn)分析
為了驗(yàn)證密集連接ASPP模塊的效果,本文以CRACK500裂縫數(shù)據(jù)集為例,在Deeplabv3+的基礎(chǔ)上構(gòu)建具有不同空洞速率的密集連接ASPP模塊對(duì)數(shù)據(jù)集進(jìn)行分割,評(píng)估結(jié)果見表1。
表1 不同ASPP模塊對(duì)比結(jié)果
構(gòu)建不同的ASPP模塊進(jìn)行裂縫分割時(shí),其結(jié)果對(duì)比如表1所示,當(dāng)使用密集連接ASPP(6,12,18,24)時(shí),感受野范圍最大,分割精度最高,但耗時(shí)最長,分割一張圖像的時(shí)間比原始結(jié)構(gòu)ASPP多耗時(shí)49ms。當(dāng)使用密集連接ASPP(6,12,18)時(shí),平均交并比較原始ASPP提升4.55%,時(shí)間只比ASPP長5ms,其相比密集連接ASPP(6,12,18,24),MIOU值只低0.41%,但耗時(shí)少44ms。因此使用密集連接ASPP(6,12,18)可以達(dá)到更高的效率。
3.3.2 數(shù)據(jù)集對(duì)比實(shí)驗(yàn)分析
為了更好的比較改進(jìn)的Deeplabv3+模型與原Deeplabv3+模型的檢測效果,本文分別在CFD和CRACK500兩個(gè)公開數(shù)據(jù)集上,對(duì)兩個(gè)模型進(jìn)行訓(xùn)練。訓(xùn)練得到的平均交并比和精度值的情況如圖5所示。
圖5 算法改進(jìn)前后的準(zhǔn)確率、MIOU曲線圖
從上圖可以看出,CFD數(shù)據(jù)集由于訓(xùn)練數(shù)據(jù)較少,總體精度值比CRACK500數(shù)據(jù)集低,但平均交并比差別并不大。且在CFD數(shù)據(jù)集中,原Deeplabv3模型在一開始振蕩很明顯,隨著迭代次數(shù)的增加,模型的MIOU和PA都逐漸提升且相對(duì)穩(wěn)定,而CRACK500數(shù)據(jù)集由于數(shù)據(jù)集中數(shù)據(jù)量較大,訓(xùn)練過程中MIOU和PA值都平穩(wěn)上升。
為了說明本文算法的有效性,將本文算法與FCN[15]、U-Net[16]等算法進(jìn)行對(duì)比。圖6所示為部分圖像的定性比較結(jié)果,前3行是CFD數(shù)據(jù)集,后3行是CRACK500數(shù)據(jù)集。
圖6 CFD和CRACK500數(shù)據(jù)集定性比較
由圖6可知,在CFD數(shù)據(jù)集中,改進(jìn)的Deeplabv3+模型能夠更多的體現(xiàn)出裂縫的細(xì)節(jié),分割的邊界較細(xì)致,且與原圖的輪廓基本一致,而FCN、U-Net和Deeplabv3+模型都不同程度出現(xiàn)誤檢,將斷裂的地方直接連接起來,存在明顯過分割情況。在CRACK500數(shù)據(jù)集上,路面圖像中的裂縫較復(fù)雜,或背景干擾較大,各模型出現(xiàn)不同程度的漏檢,FCN和U-Net模型在細(xì)小裂縫連接處出現(xiàn)斷裂現(xiàn)象,完整裂縫區(qū)域出現(xiàn)空隙,存在欠分割問題。本文改進(jìn)Deeplabv3+模型在檢測效果上最好,與真實(shí)裂縫在完整度上更接近。
由表2的定量分析可知,在兩個(gè)裂縫數(shù)據(jù)集上,本文的算法在像素準(zhǔn)確率上高達(dá)94%、92%,平均交并比達(dá)到87%、85%。實(shí)驗(yàn)結(jié)果表明該模型具有很好的泛化能力,可準(zhǔn)確實(shí)現(xiàn)裂縫圖像分割。
表2 不同算法在數(shù)據(jù)集上的結(jié)果對(duì)比
當(dāng)然,本文改進(jìn)方法也存在一定的局限性,從圖6的CFD數(shù)據(jù)集分割結(jié)果中可以看到,在某些裂縫特征細(xì)微的地方,出現(xiàn)一些漏檢,在分割結(jié)果中出現(xiàn)斷裂。在后續(xù)的工作中,通過最大連通域方法來進(jìn)一步提升該方法的實(shí)際檢測結(jié)果。
3.3.3 最大連通域優(yōu)化結(jié)果分析
本文針對(duì)CFD數(shù)據(jù)集中改進(jìn)的Deeplabv3+模型結(jié)果中細(xì)小裂縫出現(xiàn)漏檢以及局部斷裂現(xiàn)象,采用最大連通域方法進(jìn)行改進(jìn)。如圖7所示,可以看出該方法很好的保留了裂縫的邊緣細(xì)節(jié),而且很好的去除了噪聲的影響,獲得的結(jié)果涵蓋了裂縫區(qū)域的主要部分,檢測到的裂縫信息準(zhǔn)確可靠,能夠真實(shí)反映出裂縫的形態(tài)特征。
圖7 最大連通域優(yōu)化結(jié)果圖
本文通過改進(jìn)Deeplabv3+模型的結(jié)構(gòu),在Deeplabv3+模型中設(shè)計(jì)帶權(quán)重的損失函數(shù),提高網(wǎng)絡(luò)對(duì)正樣本的關(guān)注度,有效避免了對(duì)裂縫和背景使用相同的權(quán)重進(jìn)行網(wǎng)絡(luò)訓(xùn)練,改善了網(wǎng)絡(luò)的分類性能。構(gòu)建不同采樣率的密集連接ASPP模塊,通過實(shí)驗(yàn)對(duì)比說明本網(wǎng)絡(luò)使用密集連接ASPP(6,12,18)在分割時(shí)間和性能上更優(yōu)。并針對(duì)改進(jìn)的Deeplabv3+檢測結(jié)果存在部分?jǐn)嗔训那闆r,采用最大連通域算法實(shí)現(xiàn)斷裂縫的連接,從而實(shí)現(xiàn)裂縫的準(zhǔn)確分割。在兩個(gè)公開數(shù)據(jù)集上的實(shí)驗(yàn)證明,本文算法在路面裂縫檢測上的準(zhǔn)確性和可靠性。