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