徐 康,馬榮貴
(長安大學(xué) 信息工程學(xué)院,西安 710064)
隨著我國高速公路的快速發(fā)展,現(xiàn)在已經(jīng)進入高速公路的養(yǎng)護階段,因此路面病害的及時發(fā)現(xiàn)和修復(fù)就變得尤為重要. 裂縫作為路面病害早期的表現(xiàn)形式,它的及時發(fā)現(xiàn)和防止能夠有效地防止其發(fā)展成更嚴(yán)重的路面病害,延長公路使用壽命. 所以,高效、安全的裂縫檢測方法對于制定科學(xué)的公路養(yǎng)護決策具有重要的實際意義[1,2].
為了解決路面裂縫自動檢測的問題,國內(nèi)外眾多學(xué)者做出了很多研究. 李清泉等使用最小代價路徑搜索算法進行裂縫檢測,該方法雖然準(zhǔn)確性高,但易受光線的影響[3]. 曹建農(nóng)等采用中值轉(zhuǎn)換的方法實現(xiàn)了路面裂縫損傷自動識別和特征測量,但其操作過程復(fù)雜,難以實現(xiàn)快速的批量檢測[4]. 任亮等采用脊線檢測方式對所有可疑裂縫目標(biāo)進行標(biāo)注,使用Prim 算法構(gòu)造最小生成樹使所有不連續(xù)裂縫相連,通過裂縫的方向和對比度特征刪除所有強制偽連接,最后對斷裂裂縫進行填充,獲得完整裂縫結(jié)構(gòu)[5]. 李偉等對預(yù)處理后的三維路面裂縫圖像以聚類方式進行識別,然后通過計算路面裂縫圓形度判斷路面裂縫的類別,并對網(wǎng)狀裂縫的破損程度進行參數(shù)分析[6]. 邱延峻等通過檢驗三維路面裂縫的傾斜度、高斯分布、邊緣梯度3 種主要特征,可以有效地提取裂縫,得到完整的路面裂縫二值圖像[7].
隨著深度學(xué)習(xí)的發(fā)展,其也在路面裂縫檢測中得到了廣泛應(yīng)用. Qiao 等提出了一種新的基于深度特征聚合網(wǎng)絡(luò)的裂縫檢測算法,該算法采用了空間通道擠壓和激發(fā)注意機制模塊[8]; Li 等提出了一種基于快速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)和形態(tài)學(xué)特征提取技術(shù)的像素級裂縫檢測方法[9]; Wan 等提出了一種基于編解碼網(wǎng)絡(luò)的架構(gòu)CrackResAttentionNet,在每個編碼器后連接位置注意模塊和通道注意模塊,以總結(jié)遠(yuǎn)程上下文信息[10];Qu 等通過一種新的多尺度卷積特征融合模塊,提出了一種用于裂紋檢測的深度監(jiān)督卷積神經(jīng)網(wǎng)絡(luò),在多尺度卷積特征融合模塊中,高級特征在不同的卷積階段被直接引入到低級特征中[11]; 吳秋怡提出一種語義分割網(wǎng)絡(luò)模型,將裂縫圖片與對應(yīng)標(biāo)簽進行逐像素的學(xué)習(xí)與訓(xùn)練,從而使訓(xùn)練出的網(wǎng)絡(luò)模型能夠識別裂縫的具體區(qū)域和形態(tài),實現(xiàn)像素級的識別精度[12]; 蔡志興等提出了一個名為Crack U-Net 的像素級分類模型[13]; 孫朝云等提出了一種基于深度卷積神經(jīng)網(wǎng)絡(luò)融合模型的路面裂縫識別方法,用SSD 網(wǎng)絡(luò)模型進行裂縫分類檢測,用U-Net 網(wǎng)絡(luò)模型進行裂縫分割,并且用深度殘差網(wǎng)絡(luò)替換兩個網(wǎng)絡(luò)中的特征提取網(wǎng)絡(luò)[14]; 沙愛民等將卷積神經(jīng)網(wǎng)絡(luò)技術(shù)引入了基于圖像分析的路面病害識別與測量[15]; 李永緒等提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的瀝青路面裂縫識別方法,融合了CLAHE 與深度學(xué)習(xí)算法[16].
綜上所述,雖然國內(nèi)外關(guān)于路面裂縫檢測的研究很多,但是幾乎沒有一種相對成熟并且能應(yīng)用到實際路面檢測中的方法. 而且現(xiàn)有的大多數(shù)研究中,實驗所用的數(shù)據(jù)集多為手機或商用攝像頭拍攝,這也成了實驗成果向?qū)嶋H應(yīng)用轉(zhuǎn)化的阻力. 因此,本文應(yīng)用實際道路檢測中的路面圖像作為實驗數(shù)據(jù)集,結(jié)合多模型特征提取網(wǎng)絡(luò)和注意力機制,提出了一種改進的Faster-RCNN 瀝青路面裂縫檢測方法,研究路線如圖1 所示.
圖1 研究路線
裂縫圖像的采集和數(shù)據(jù)集的建立是實驗準(zhǔn)備階段的主要工作. 為了便于將實驗成果向?qū)嶋H應(yīng)用轉(zhuǎn)化,裂縫圖片應(yīng)該盡可能地來自實際的路面檢測實驗中,所以本實驗所用數(shù)據(jù)集中的圖片,全部都是由道路病害檢測時所用的多功能道路檢測車在高速公路上拍攝所得.
實驗數(shù)據(jù)采集設(shè)備為多功能道路檢測車,采集設(shè)備如圖2 所示. 檢測車上用于采集路面信息的相機為兩個相同的并行排列的線陣相機,每個相機拍攝范圍為2 m,檢測車的最大路面檢測寬度為4 m,可以實現(xiàn)對單車道的覆蓋. 線陣相機的檢測分辨率為1 mm,采集到的路面信息的圖片上的每個像素都對應(yīng)真實路面上1 mm 的距離,清楚地了解采集到的圖片中裂縫的實際尺寸.
圖2 多功能道路檢測車示意圖
檢測車輸出的路面信息的圖片為2944×2048,圖像尺寸太大,不便于輸入深度學(xué)習(xí)網(wǎng)絡(luò)進行學(xué)習(xí). 因此需要對圖片進行分割. 實驗將圖片分割為500×500 大小,對于原圖片邊緣,分割后不夠500×500 大小的圖片進行舍棄. 然后從分割后的圖片中選擇包含有路面裂縫的圖片13 000 張.
檢測車采用LED 陣列照明,由于光照不均勻的影響,因此采集到的路面圖像存在光暗相間的條紋,這是本文的路面圖像與自然光照條件下采用手機或商用攝像機拍攝所得路面圖像的區(qū)別. 圖3 是自然光照條件下拍攝的路面圖像,圖4 是檢測車拍攝的路面裂縫圖像. 因此,本文的路面圖像擁有更加復(fù)雜的背景.
圖3 自然光照條件下拍攝的路面裂縫圖像
圖4 3 種裂縫圖像
本實驗將裂縫主要分為3 類: 橫向裂縫(簡稱“橫縫”),縱向裂縫(簡稱“縱縫”)和網(wǎng)狀裂縫(簡稱“網(wǎng)裂”). 《公路技術(shù)狀況評定標(biāo)準(zhǔn)》中對橫縫和縱縫的定義比較模糊,并且對網(wǎng)裂沒有外觀上的定義. 因此,在本實驗中,制作數(shù)據(jù)集時,按照如下對各類裂縫的定義對圖片進行標(biāo)記(圖片的水平方向為與行車方向垂直的方向):
(1)橫向裂縫: 對于單個裂縫,如果該裂縫在與水平方向上的投影與在垂直方向上的投影的比例≥1,則認(rèn)為該裂縫是橫向裂縫,如圖4(a).
(2)縱向裂縫: 對于單個裂縫,如果該裂縫在垂直方向上的投影與在水平方向上的投影的比例≥1,則認(rèn)為該裂縫是橫向裂縫,如圖4(b).
(3)網(wǎng)狀裂縫: 如果該裂縫形成了閉合區(qū)域,則認(rèn)為該裂縫是網(wǎng)狀裂縫,如圖4(c).
數(shù)據(jù)集13 000 張圖片中,有橫縫圖片6 686 張,縱縫圖片5 750 張,網(wǎng)裂圖片564 張.
2017年,Ren 等在檢測準(zhǔn)確率和檢測速度兩點對Fast-RCNN 進行改進,建立了Faster-RCNN 方法[17],該方法在主要作出以下兩點改進:
(1)產(chǎn)生候選框的方法由區(qū)域生成網(wǎng)絡(luò)(region proposal network,RPN)代替原來的selective search 方法,使得候選框的數(shù)量從原有的約2 000 個減少到300 個,而且候選框的質(zhì)量也有明顯提高,有效提升訓(xùn)練和測試時的速度;
(2)產(chǎn)生候選框的卷積網(wǎng)絡(luò)和目標(biāo)檢測的卷積網(wǎng)絡(luò)共享.
其主要網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示. 網(wǎng)絡(luò)結(jié)構(gòu)由4 部分組成.
圖5 Faster-RCNN 網(wǎng)絡(luò)結(jié)構(gòu)模型
(1)特征提取部分: 對于輸入網(wǎng)絡(luò)的每張圖片,Faster-RCNN 網(wǎng)絡(luò)首先需要對輸入進行一系列的卷積和池化操作,生成該輸入對應(yīng)的特征圖. 而且,相對于RCNN對于每個候選框進行特征提取操作產(chǎn)生大量的冗余的卷積操作,Faster-RCNN 只需對全圖進行一次特征提取操作,顯著地提高了網(wǎng)絡(luò)在特征提取操作時的速度.
(2)區(qū)域生成網(wǎng)絡(luò): 這是Faster-RCNN 網(wǎng)絡(luò)中提出的全新的結(jié)構(gòu),用于生成候選框,結(jié)構(gòu)如圖6 所示.RPN 層的作用實際上相當(dāng)于一個二分類的分類器,先在特征圖(feature map)上均勻地生成一系列K×H×W大小的區(qū)域(稱為anchors),通過Softmax 對這些區(qū)域與標(biāo)記的真實的數(shù)據(jù)進行對比,確定這些區(qū)域所屬的類別,即屬于前景還是背景. 經(jīng)過網(wǎng)絡(luò)訓(xùn)練,做好對anchors 的前景和背景的標(biāo)記之后,就得到了目標(biāo)的大致位置. 最后,再利用bounding box regression 對anchors的位置進行修正,得到更為準(zhǔn)確的目標(biāo)位置(稱為proposals).
圖6 RPN 網(wǎng)絡(luò)結(jié)構(gòu)
(3)ROI 池化層: 該層收集第(2)步中輸出的特征圖和proposals 信息,對其進行歸一化后,形成固定長度的輸出,送入后面的全連接層進行目標(biāo)分類.
(4)分類回歸層: 利用ROI 池化層的輸出,對得到的proposals 進行分類,并且再次用bounding box regression 對其位置進行修正,得到最終的目標(biāo)位置.
整個數(shù)據(jù)集中包含13 000 張路面裂縫圖像,實驗中按照8:2 的比例將數(shù)據(jù)集分為訓(xùn)練集和測試集. 為了保證訓(xùn)練集和測試集圖像分配的均衡性,采用隨機挑選的方式選出2 600 張圖片作為測試集,剩下的圖像則為訓(xùn)練集. 然后將訓(xùn)練集中的10 400 張路面圖像輸入網(wǎng)絡(luò)中進行訓(xùn)練. 網(wǎng)絡(luò)采用SGD 優(yōu)化器,優(yōu)化器參數(shù)和網(wǎng)絡(luò)訓(xùn)練時的其他參數(shù)設(shè)置如表1 所示.
表1 網(wǎng)絡(luò)訓(xùn)練時的參數(shù)設(shè)置
硬件: CPU 為英特爾i5 的計算機一臺,操作系統(tǒng)為Windows 10.
軟件: 實驗采用Anaconda3 軟件,在PyTorch 框架下運用了numpy、PIL 等庫進行實驗,也用到了Google瀏覽器中云端硬盤的Colab 服務(wù)等.
為了驗證Faster-RCNN 在不同的特征提取網(wǎng)絡(luò)下的性能. 實驗選取VGG16、MobileNet-V2、ResNet50三種特征網(wǎng)絡(luò)從mAP 和總損失兩方面進行對比,以構(gòu)建精確度高、速度更快的Faster-RCNN 網(wǎng)絡(luò). 3 種網(wǎng)絡(luò)的實驗結(jié)果如圖7 所示.
VGG16、MobileNet-V2 和ResNet50 平均每輪的訓(xùn)練時間分別為238 s、204 s、327 s,ResNet50 平均每輪訓(xùn)練時間比VGG16 和MobileNet-V2 分別高了89 s和123 s. 但是根據(jù)圖7 的實驗結(jié)果,ResNet50 對裂縫的檢測精度在其余兩種網(wǎng)絡(luò)上方,訓(xùn)練總損失在其余兩種網(wǎng)絡(luò)下方,因此檢測效果明顯優(yōu)于VGG16 和MobileNet-V2,平均檢測精確度達(dá)到80.58%.
圖7 3 種網(wǎng)絡(luò)模型的實驗結(jié)果
鑒于以上實驗結(jié)果,對3 種特征提取網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)進行分析. 3 種網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)如表2 所示.
表2 3 種網(wǎng)絡(luò)模型的結(jié)構(gòu)參數(shù)
由表2 可知,VGG16 只有16 層,而MobileNet-V2和ResNet50 網(wǎng)絡(luò)層數(shù)相當(dāng),分別為53 層和54 層,因此MobileNet-V2 和ResNet50 能提取到更多的裂縫信息; VGG16 只用了3×3 大小的卷積核,MobileNet-V2使用1×1 和3×3 兩種大小的卷積核,ResNet50 除了第1 層卷積層使用了7×7 大小的卷積核,也是大量使用了1×1 和3×3 兩種大小的卷積核,因為1×1 和3×3 兩種卷積核的使用,MobileNet-V2 和ResNet50 比VGG16能從圖像中獲取更多的關(guān)于裂縫的細(xì)節(jié)信息; 從輸出的特征圖通道數(shù)來看,3 種網(wǎng)絡(luò)的特征圖輸出分別是512、1 280 和2 048,而輸出的特征圖通道越多,就包含越多的裂縫的特征信息. 綜上所述,ResNet50 在3 種特征提取網(wǎng)絡(luò)中具有最好的裂縫檢測效果,符合實驗結(jié)果. 因此,在ResNet50 對裂縫的識別精確度明顯高于另外另種網(wǎng)絡(luò)的情況下,選擇ResNet50 網(wǎng)絡(luò)模型進行進一步實驗.
如圖8,在觀察ResNet50 與Faster-RCNN 結(jié)合的實驗結(jié)果時發(fā)現(xiàn),細(xì)微裂縫的漏檢問題并沒有得到很好地解決,還是有比較多的細(xì)微裂縫漏檢問題.
圖8 裂縫漏檢示例
在仔細(xì)對裂縫本身的特征進行分析之后發(fā)現(xiàn),雖然裂縫相對于其他信息層次比較豐富的檢測目標(biāo),檢測特征簡單,且特征相對集中,不存在目標(biāo)之間重疊,即不具備時空層次,但是檢測難度也較大. 因此,為進一步提高檢測精確度和速度,本文提出對ResNet 系列的網(wǎng)絡(luò)模型進行對比,以獲取性能更高的特征提取網(wǎng)絡(luò). 實驗結(jié)果如圖9 所示.
圖9 ResNet 系列網(wǎng)絡(luò)的實驗結(jié)果
ResNet18、ResNet50 和ResNet101 平均每輪訓(xùn)練時間分別為168 s、327 s、393 s,ResNet50 和ResNet101識別精確度變化曲線都在ResNet18 曲線上方,總損失曲線都在ResNet18 網(wǎng)絡(luò)下方. ResNet50 和ResNet101平均檢測精確度分別達(dá)到80.58%和81.48%,ResNet101的精確度比ResNet50 高了0.71%,總損失也略低,但平均每輪訓(xùn)練時間比ResNet50 長了66 s,大約是ResNet50平均每輪訓(xùn)練時間的20%.
這3 種特征提取網(wǎng)絡(luò)屬于同一系列,網(wǎng)絡(luò)結(jié)構(gòu)上的差異不大,因此主要是網(wǎng)絡(luò)深度和輸出的特征圖通道數(shù)影響網(wǎng)絡(luò)的裂縫檢測性能,ResNet18 網(wǎng)絡(luò)層數(shù)和輸出的特征圖通道較小,因此檢測精確度較ResNet50和ResNet101 低,ResNet50 和ResNet101 檢測精確度相差不大,說明網(wǎng)絡(luò)深度的提高,對檢測精確度的提高有限,反而導(dǎo)致訓(xùn)練時間明顯延長. 而且,ResNet101 也沒有很好地解決裂縫的漏檢問題. 因此,選擇檢測精確度較高且訓(xùn)練時間更少的ResNet50 進行下一步實驗.
注意力機制,是從人腦和人眼的感知機制中受到啟發(fā),將關(guān)注點聚焦在能夠輔助判斷的局部信息的機制. 其本質(zhì)是對實驗感興趣的信息進行定位,對無用的信息進行抑制,即調(diào)整信息對應(yīng)的權(quán)重,使任務(wù)信息具有較高的權(quán)重,不相關(guān)的信息具有較低的權(quán)重,最后的輸出結(jié)果一般都是權(quán)重圖或者是權(quán)重特征向量. 從原理上來說,注意力機制主要分為空間注意力機制、通道注意力機制、空間和通道混合注意力機制3 種.
CBAM (convolutional block attention module)模塊就是空間和通道混合注意力機制中具有代表性的網(wǎng)絡(luò),結(jié)構(gòu)如圖10 所示. 其中通道注意力學(xué)習(xí)的是通道的重要性,空間注意力學(xué)習(xí)的是空間位置的重要性.
圖10 CBAM 模塊結(jié)構(gòu)示意
輸入圖像經(jīng)過CBAM 模塊運算后,并不會改變尺寸,因此CBAM 是一種“即插即用”模塊. 由于注意力模塊能夠?qū)θ蝿?wù)信息定位的特性,實驗選擇在特征提取網(wǎng)絡(luò)ResNet50 中加入CBAM 模塊. 但是為了不改變ResNet50 網(wǎng)絡(luò)中殘差塊的結(jié)構(gòu),實驗選擇在如圖11(a)和圖11(b)的兩個位置加入CBAM 模塊,分別記作插入點“a”和插入點“b”. 對于這兩個加入位置,本文設(shè)計了3 個實驗: 在插入點“a”和“b”分別加入CBAM 模塊和在兩個位置同時加入CBAM 模塊,分別記作實驗方案A、B、C,得到的實驗結(jié)果如圖12 所示.
圖11 CBAM 模塊與ResNet50 特征提取網(wǎng)絡(luò)相結(jié)合的3 種實驗方案
ResNet50 和實驗方案A、B、C 的平均每輪訓(xùn)練時間分別為327 s、328 s、328 s、330 s,訓(xùn)練時間相差不大. 由圖12 可得,ResNet50+A 作為特征提取網(wǎng)絡(luò)時,與ResNet50 的檢測精確度比較接近,總損失也很接近;ResNet50+B 和ResNet50+C 與ResNet50 相比,精確度略有提高,分別達(dá)到了85.57%和81.61%,總損失相應(yīng)地也有所下降. 對實驗結(jié)果進行分析,ResNet50+A 方案引入注意力模塊時,輸入圖像還未進行特征提取,圖像中包含的信息還比較多,并不容易定位到實驗感興趣的區(qū)域; ResNet50+B 方案引入注意力模塊時,是在輸入圖像的特征圖上進行操作,特征圖中包含更多特征信息,更大的感受野,所以在提取特征后加入CBAM擁有更好的識別效果; ResNet50+C 方案是在位置a 和b 同時加入CBAM,可能是受到位置a 處加入CBAM的影響,所以此方案的識別效果并沒有ResNet50+B好. 因此,ResNet50+B 具有最好的識別效果. 如圖13,進一步查看裂縫檢測結(jié)果,與圖8 相比,裂縫的漏檢問題得到了有效的解決.
圖12 在不同位置加入CBAM 模塊的實驗結(jié)果
圖13 方案B 的裂縫檢測結(jié)果
對于瀝青路面裂縫檢測問題,文中提出了一種改進的Faster-RCNN 網(wǎng)絡(luò)模型,包括不同特征提取網(wǎng)絡(luò)與Faster-RCNN 結(jié)合和在特征提取網(wǎng)絡(luò)中加入CBAM模塊的方法. 結(jié)果表明:
(1)無論是與VGG16、MobileNet-V2 相比,還是與同系列的ResNet18、ResNet101 相比,ResNet50 都具有更好的裂縫檢測效果,精度能達(dá)到80.58%,但是細(xì)微裂縫的漏檢問題依然存在;
(2)針對裂縫的漏檢問題,將注意力機制加入特征提取網(wǎng)絡(luò),檢測效果比調(diào)整前有所提高,在特征提取結(jié)束之后加入CBAM 模塊的效果最好,精度達(dá)到85.57%,并且之前漏檢的裂縫能被有效地檢測出來.