顧書豪,李小霞,2,王學淵,2,張 穎,陳菁菁
1.西南科技大學 信息工程學院,四川 綿陽621010
2.特殊環(huán)境機器人技術四川省重點實驗室,四川 綿陽621010
裂縫是最常見的路面缺陷之一,為保障行車安全,準確檢測路面裂縫具有重要的研究價值[1]。在過去的幾年中裂縫檢測已成為道路養(yǎng)護系統(tǒng)研究的熱點。傳統(tǒng)的人工道路裂縫檢測方法非常耗時且易受主觀判斷影響,隨著計算機視覺技術的發(fā)展,人們開始致力于將計算機視覺技術應用于裂縫的自動檢測[2]。研究人員已提出了各種基于視覺的方法來檢測道路裂縫,早期多采用人工設計特征的裂縫檢測算法,例如灰度特征[3]、邊緣特征[4]、Gabor濾波器[5]以及方向梯度直方圖(Histogram of Oriented Gradient,HOG)[6]。這些方法檢測效果依賴于特征的選擇,極容易出現(xiàn)空洞、相近特征區(qū)域之間相互“污染”以及誤識等問題。同時,由于道路路面狀況復雜多樣,裂紋像素附近的對比度較差,給裂縫的識別和檢測帶來了極大挑戰(zhàn),在這樣復雜的情況下,人工設計單個或多個特征難以檢測不同道路的圖像裂縫。
近年來,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)已廣泛應用于計算機視覺中的目標檢測[7]。不同于人工設計特征的方法,CNN 具有自動學習特征的能力,同時不同層次學習不同的特征:低層的卷積層能表達圖像的細節(jié)信息,學習圖像的局部區(qū)域特征,有利于圖像中各目標區(qū)域邊界的定位;高層的卷積層能表達圖像的語義信息,學習深層次的抽象特征,有利于圖像中各目標區(qū)域的分類。一些研究人員提出將基于CNN的目標檢測算法[8]用于道路路面、混凝土建筑等的裂縫自動檢測,并取得了較好的效果,但是僅能定性分析裂縫的有無,難以對裂縫進行定量的分析與尺寸測量。Yang等人[9]將全卷積網(wǎng)絡[10](Fully Convolutional Network,F(xiàn)CN)應用于像素級裂縫檢測,F(xiàn)CN采用反卷積結構進行上采樣,彌補多次標準卷積和池化層引起的細節(jié)損失,但網(wǎng)絡缺少局部細節(jié)信息和語義信息,出現(xiàn)較為嚴重的類內(nèi)不一致現(xiàn)象。Ronneberger 等人[11]提出UNet 模型,其編碼器和解碼器呈對稱結構,結合底層和高層的信息逐級上采樣恢復圖像細節(jié)。Badrinarayanan等人[12]提出SegNet模型,利用池化索引對高層特征進行細節(jié)修復,具有較好的圖像分割效果,但其有效感受野[13]較小,高層的語義信息不足。Chen等人[14]提出DeepLab模型,利用擴張卷積(Dilated Convolution)[15]擴大特征提取網(wǎng)絡的有效感受野,提高高層語義信息,但缺失了圖像的細節(jié)信息。Peng 等人[16]提出全局卷積網(wǎng)絡(Global Convolutional Network,GCN)將編碼器-解碼器結構與大卷積核相結合,以獲取更大的感受野。
然而,上述方法均存在網(wǎng)絡高層的感受野較小,高層特征圖的語義信息不足的問題,導致網(wǎng)絡分類性能較差。同時,在卷積網(wǎng)絡中多重池化下采樣導致圖像的細節(jié)信息丟失,加上網(wǎng)絡高層與低層特征在特征表示級別上有所不同,簡單的特征融合方式并不能有效恢復圖像細節(jié)信息,使得網(wǎng)絡難以有效提取裂縫特征進行精確的預測。
基于此,本研究提出了一種增強語義信息與多通道特征融合的全卷積語義分割網(wǎng)絡實現(xiàn)像素級裂縫檢測,采用編碼器-解碼器結構有利于恢復圖像細節(jié)信息,并在網(wǎng)絡高層采用擴張卷積替換標準卷積,擴大有效感受野,整合圖像上下文信息,增強高層特征的語義表達能力。同時提出了基于注意力機制的多通道特征融合方法,能夠更好地關注裂縫像素的前景信息,利用高層特征全局語義信息指導語義與細節(jié)特征逐級融合,幫助圖像更加精確地恢復細節(jié)信息,生成更具判別性的特征圖,進一步提升圖像中裂縫像素的分割效果。最后在公開的裂縫數(shù)據(jù)集上對本文提出的裂縫檢測網(wǎng)絡進行訓練,對裂縫圖像中的裂縫和非裂縫像素分類,并評估裂縫檢測精度。
圖1 裂縫檢測網(wǎng)絡模型
本文提出的增強語義信息與多通道特征融合的路面裂縫檢測模型,能夠有效解決高層語義信息不足的問題,以及更好地融合多通道特征達到更優(yōu)的檢測效果。網(wǎng)絡整體為編碼器-解碼器結構,如圖1所示。其中,CB為標準卷積模塊(Convolution Block),由兩層3×3 的標準卷積構成;ΜaxPooling 為最大池化下采樣。同時,在編碼器末端采用增強語義信息的多層擴張卷積模塊(Cascade Dilated Conv),以有效解決高層特征語義不足的問題。在解碼器部分,提出一種基于注意力機制的多通道特征融合(Attention-based Feature Fusion,AFF)模塊,使網(wǎng)絡能更好地關注裂縫圖像前景信息。
擴張卷積(Dilated Convolution)目前廣泛運用于語義分割任務中,假設標準卷積核的大小為k×k,則擴張率為r 的擴張卷積k'大小可由式(1)計算:
如圖2所示,是連續(xù)的兩層卷積核大小為,圖(a)是擴張率r=1 的普通卷積,圖(b)為擴張率r=2 的擴張卷積,紅點表示實際參與計算的卷積核,藍色代表感受野大小。相比普通卷積,擴張卷積能夠有效增加卷積網(wǎng)絡的感受野,同時網(wǎng)絡參數(shù)量保持不變。
圖2 普通卷積與擴張卷積對比圖
通常,裂縫具有多種尺度以及拓撲結構,采用普通卷積難以有效提取到裂縫的特征,同時網(wǎng)絡的感受野較小,如圖3(a)所示,3 層3×3 的普通卷積僅能增加7×7的感受野,特征圖語義信息不足,導致裂縫檢測存在困難。因此,本文提出在編碼器末端采用多層擴張卷積,使網(wǎng)絡高層特征圖具有更大的有效感受野,能夠有效利用全局信息的相關性,增強高層特征的語義表達能力。
同時為避免堆疊的擴張卷積造成大范圍像素信息不相關,出現(xiàn)空洞或邊緣缺失等問題,需要對擴張率大小進行限制。假設有3層卷積核大小k=3 的擴張卷積,其擴張率分別為{r1,r2,r3},定義兩個非零權重之間的最大距離為M3=r3,代表第i 層卷積中非零權重之間的最大距離,其中M3=r3,當M2≤k=3 時符合設計要求,其計算公式如式(2):
如圖3(b)所示,采用擴張率分別為{1,2,5}的擴張卷積堆疊,此時特征圖最終感受野增加了17×17,能夠提取到更多的像素語義信息,有效避免像素之間缺乏相關性,有利于提高像素分類準確率。
如圖4所示,輸入A 表示輸入特征圖中受限的有效感受野,而輸出A'表示經(jīng)過擴張卷積后特征圖的有效感受野擴大。采用擴張率分別為1、2、5 組合而成的多層擴張卷積,能夠擴大有效感受野并保持圖像細節(jié),增強高層特征圖語義信息,提高網(wǎng)絡分類精度。擴張率組合實驗結果對比分析見2.4節(jié)。
圖3 普通卷積與多重擴張卷積有效感受野示意圖
圖4 增強語義信息的多層擴張卷積模塊
自然場景下的裂縫圖像通常包含大量前景和復雜的背景信息。在裂縫檢測任務中,精確地提取裂縫前景信息,能夠提高模型的分類性能。本文采用注意力機制來更多地關注裂縫圖像的前景區(qū)域,生成更具有判別性的特征,從而有助于進一步提高裂縫檢測精度。
注意力機制可以被視作一種信息選擇機制,利用權重對輸入信息進行再編碼,使之更接近于真實標簽。常用的注意力機制可以看作注意力權重向量α 與輸入特征y 對應位置元素的點積,如式(3)所示,其中c ∈{1,2,…,C},C 表示通道數(shù)總數(shù),真實標簽為yT。
在語義分割網(wǎng)絡中,二者在特征表達上存在差異,簡單的特征融合,如像素求和與通道拼接等,往往忽略了語義信息與細節(jié)特征之間的不一致。由此,本文設計了一種基于注意力機制的多通道特征融合模塊,利用高級特征提供語義信息來指導多通道的特征融合,使網(wǎng)絡能夠正確關注到裂縫圖像的前景信息,從而生成更具判別性的融合特征。
如圖5 所示,H 表示來自網(wǎng)絡高層的語義特征,L表示來自低層的細節(jié)特征。首先,將高層語義特征和低層細節(jié)特征串聯(lián),利用批量歸一化來平衡特征的數(shù)據(jù)分布,經(jīng)過Relu激活函數(shù)得到特征向量x,如式(4)所示。
其次,如式(5)所示,對于特征向量x,采用全局平均池化(Global Average Pooling,GAP)提取出全局平均向量,依次通過Relu激活函數(shù)和Sigmoid激活函數(shù)得到最終的權重向量α。
最后,利用該權重向量與低級特征相乘,對低級特征進行加權,如式(6),將高級特征與加權后的低級特征相加得到融合后的特征圖:
在本文的裂縫檢測網(wǎng)絡中,在解碼器部分逐級應用基于注意力的特征融合模塊AFF模塊,使網(wǎng)絡更好地關注裂縫前景信息,并通過逐級上采樣,融合來自網(wǎng)絡高低層的不同特征圖以恢復圖像細節(jié)信息,達到更好的預測結果。特征融合方式對比實驗結果見2.4節(jié)。
本文采用的實驗配置如下:CPU 為Intel?CoreTΜi7-7700Κ,主頻為4.20 GHz,內(nèi)存為16 GB;GPU 為GeForce GTX 1080Ti,顯存為11 GB。本文實驗所用深度學習框架為TensorFlow1.8,使用CuDNN V7 和Cuda9.1 版本。采用的裂縫數(shù)據(jù)集為CRACΚ500[17]與CrackForest[18]裂縫公共數(shù)據(jù)集。
CRACΚ500數(shù)據(jù)集:訓練數(shù)據(jù)包含1 896張圖像,驗證數(shù)據(jù)包含348 張圖像,測試數(shù)據(jù)包含1 124 張圖像。驗證數(shù)據(jù)用于在訓練過程中選擇最佳模型,防止出現(xiàn)過擬合。訓練結束后,在測試數(shù)據(jù)和其他數(shù)據(jù)集上進行測試以評估泛化性能。
CrackForest 數(shù)據(jù)集(CFD):由118 張RGB 圖像組成,分辨率為480×320。所有圖片拍攝于中國北京的人行道,可以反映北京市現(xiàn)有的城市人行道表面狀況。這些圖像照明不均勻,并包含陰影、油斑和水漬等噪聲,這使得裂縫檢測非常困難,可直接用于評估算法性能。
由于裂縫圖像數(shù)量較少,很容易導致訓練過程中出現(xiàn)過擬合,同時為保留圖像原有的色彩信息,僅采用隨機逆時針旋轉(zhuǎn)30°、60°、90°、水平和豎直翻轉(zhuǎn)等數(shù)據(jù)增強手段,如圖6所示。在訓練時訓練集圖像大小縮放為256×256,驗證和測試期間不使用數(shù)據(jù)擴充。
使用二分類交叉熵(Binary Cross Entropy,BCE)+骰子系數(shù)損失(Dice Loss)作為訓練過程中的損失函數(shù)。使用Μomentum 優(yōu)化器訓練100 輪,學習率初始化為0.001。訓練批次大小設置為8,動量為0.9,權重衰減為0.000 5。
二分類交叉熵損失函數(shù)如式(7):
其中,N 表示圖像包含的像素數(shù)目,yi和pi分別為第i個像素點的標簽值和預測概率。
圖5 基于注意力的特征融合(AFF)模塊
圖6 數(shù)據(jù)增強示意圖
骰子系數(shù)損失函數(shù)表達式如式(8),ε 為設置值,作用為防止過擬合,可設置為1:
綜上,本文采用的組合損失函數(shù)如式(9)所示:
組合損失函數(shù)能同時關注像素級別的分類正確率和圖像前景的分割效果,使模型訓練更加穩(wěn)定,同時能有效克服裂縫圖像中正負樣本分布不均衡的問題,從而獲得更加精確的像素級檢測結果。
由于裂縫圖像前后景類別分布不均,使用準確率和召回率評估模型性能均存在一定的偏差,本文采用F1score 和平均交并比(Intersection over Union,IoU)來評估提出的網(wǎng)絡模型,F(xiàn)1score 主要用于評價網(wǎng)絡對于裂縫像素與背景像素的分類精度,同時兼顧了分類模型的精確率和召回率。交并比是用于評價網(wǎng)絡模型對于裂縫像素的分割效果,平均交并比是對所有類別取平均值。F1score 和平均交并比這兩項指標越高,代表網(wǎng)絡對裂縫的檢測性能越好。
為了充分比較各模型對裂縫圖像的像素級檢測性能,以驗證本文方法的有效性,將提出的模型結構與UNet、SegNet、FC-DenseNet56[19]和GCN等先進的編碼器-解碼器結構網(wǎng)絡模型進行實驗比較。在CRACΚ500 等公開裂縫數(shù)據(jù)集上進行模型訓練和測試。在CRACΚ500數(shù)據(jù)集上完成模型訓練后,首先在CRACΚ500 測試集上測試,為了進一步驗證算法通用性能和可遷移性,在CRACΚ500訓練后的模型不經(jīng)過任何微調(diào),直接在CFD數(shù)據(jù)集上測試,并與GCN 等編解碼器結構的先進語義分割網(wǎng)絡進行對比,實驗結果如表1所示。
表1 不同裂縫數(shù)據(jù)集上模型性能指標對比
從表1 中可以看出,在CRACΚ500 測試集上測試,本文提出的方法明顯優(yōu)于現(xiàn)有的先進語義分割算法,平均IoU達到72.5%,F(xiàn)1score達到96.8%,能夠?qū)α芽p圖像進行更好的分割,且相比UNet 與GCN 等方法參數(shù)更少,僅有1.66×107。在CRACΚ500數(shù)據(jù)集上訓練的模型直接在CFD數(shù)據(jù)集上測試,本文方法取得了最高的IoU和F1score,平均IoU和F1score分別達到71.8%和95.2%,表明模型具有很好的泛化性能,可以推廣到其他裂縫檢測任務上。
圖7 是本文方法與其他方法在CRACΚ500 測試集的預測結果對比,本文方法在分割裂縫時準確度更高,較少出現(xiàn)斷裂和孔洞,對于圖7中第三行的低對比度圖像分割效果更好,而其他方法出現(xiàn)大量的誤分類和漏分。
圖8 是本文方法與UNet 和GCN 等算法在CFD 數(shù)據(jù)集上的測試結果比較,可以看出本文方法對裂縫分割效果更好,對于第三行圖像中的斷裂處能夠正確分割,且較少出現(xiàn)誤分和漏分,證明本文方法具有較好的通用性和可遷移性。
為了驗證本文方法中擴張率參數(shù)選取的合理性以及特征融合方式的有效性,在CRACΚ500 數(shù)據(jù)集上進行測試,特征融合方式包括逐像素相加(Sum)、通道拼接(Concat)和基于注意力的特征融合(AFF,本文方法)。表2 是在滿足式(2)設計要求下,不同擴張率的卷積組合與特征融合方式在CRACΚ500 上的分割效果對比。{1,1,1}表示采用標準卷積提取特征。
圖7 CRACΚ500測試集實驗結果對比
圖8 CFD數(shù)據(jù)集測試結果對比
由表2 可以看出,在卷積擴張率組合為{1,2,5}以及采用基于注意力機制的特征融合方式在CRACΚ500測試數(shù)據(jù)集上達到最高的交并比(IoU)與F1score 指標。由不同擴張率的組合實驗可以看出,在加入了擴張卷積模塊的情況下,隨著擴張率的變化,此時特征圖有效感受野擴大,圖像能夠接收到更多的上下文信息,豐富了高層特征中的語義信息,切實提高裂縫預測準確率,IoU 和F1score 隨著感受野擴大而提高。此外,特征融合方式的對比實驗結果表明,加入注意力特征融合模塊之后,網(wǎng)絡對于裂縫的分割效果普遍優(yōu)于普通特征融合的分割方法,平均IoU和F1score最高提升了1.5個百分點以上,同時比通道拼接的特征融合方式參數(shù)上更優(yōu)。
此外,為驗證本文設計的多層擴張卷積模塊與多通道特征融合模塊對于裂縫檢測性能的提升,需要進行模塊之間的消融實驗,實驗結果對比見表3。
表3 為語義增強模塊與多通道特征融合模塊的消融實驗結果。其中,對比實驗0和實驗1可知,語義增強模塊在不增加參數(shù)量的情況下,平均IoU 提升了2.8 個百分點,F(xiàn)1score 提升了3.4 個百分點。對比實驗0 和實驗2 可知,采用多通道特征模塊,平均IoU 提升了2.3 個百分點,F(xiàn)1score 提升了3.1 個百分點。對比實驗0 和實驗3 可知,語義增強模塊和多通道特征模塊的組合,相比最原始的網(wǎng)絡平均IoU 最高提升了3.2 個百分點,F(xiàn)1score最高提升了3.6個百分點。綜上所述,本文提出的語義增強模塊與多通道特征融合模塊均能提升裂縫檢測性能,且組合起來能達到最優(yōu)的檢測精度與分割效果。
由上述實驗結果可知,利用多層擴張卷積增大網(wǎng)絡感受野,有效地增強了特征圖的語義表征能力。同時本文提出的基于注意力機制的多通道特征融合模塊,融合語義信息與圖像細節(jié)特征,能夠有效提高上采樣后對于圖像細節(jié)信息的修復效果,使生成的特征圖更具有判別性,進一步提升了圖像中裂縫的分割精度。
本文針對現(xiàn)有裂縫檢測算法準確率低的問題,提出了一種新的裂縫自動檢測算法。以編碼器-解碼器結構的全卷積分割網(wǎng)絡為基礎,設計了增強語義信息的多層擴張卷積模塊以及基于注意力機制的多通道特征融合模塊,從而有效融合語義信息和細節(jié)特征。在兩個不同的裂縫數(shù)據(jù)集上進行了對比實驗,結果表明本文方法有效提高了裂縫檢測的準確率,能夠穩(wěn)健地在復雜場景的裂縫圖像中檢測出裂縫。在CRACΚ500 等數(shù)據(jù)集上獲得更好的裂縫像素檢測效果,評估指標達到72.5%的平均IoU 和96.8%的F1score,優(yōu)于現(xiàn)有的先進方法。同時,在CrackForest數(shù)據(jù)集上的結果表明本文方法具有很好的泛化性能,可廣泛用于裂縫圖像的自動標注以及道路質(zhì)量評估等實際場景中。
表2 擴張率與特征融合方式CRACΚ500測試集指標對比
表3 模塊間消融實驗結果對比