劉 軍,王慧民,張興忠,張 婷,郭美青
(太原理工大學 軟件學院,太原 030024)
路面裂縫作為常見的公路病害,已成為公路養護任務中最關心的問題,輕微裂縫不及時處理就會發展成大面積龜裂甚至坑槽等嚴重病害,為安全運行埋下隱患[1]。同時,路面裂縫具有形狀不規則、尺寸不一及背景復雜等特點,如何自動檢測路面裂縫是一項具有挑戰性的任務。因此路面裂縫檢測技術和識別算法已成為近幾年的研究熱點[2]。
傳統的路面裂縫檢測算法主要依賴于數字圖像處理技術和人工設計的特征提取器。文獻[4]利用移動平均自適應閾值分割和Hough變換,實現對高速公路細小裂縫的自動檢測。文獻[5]通過改進遺傳規劃算法,對混凝土路面裂縫進行檢測。這些方法在路面裂縫數據集上取得了較好的效果,但是,實際檢測中泛化性能較差,僅依靠人工先驗設計的特征提取器無法滿足實際任務的要求。
近年來,深度學習技術取得快速發展,深度學習檢測算法在眾多任務上表現優異[6-9]。目前,在路面裂縫檢測任務中,大量研究工作基于卷積神經網絡展開[10-14]。文獻[12]在Faster R-CNN基礎上,利用數據增強和引入多任務增強的候選區網絡,提高了裂縫檢測精度。文獻[13]提出了可形變SSD模型,使用可形變卷積增強模型在復雜環境下的檢測精度。文獻[14]基于Yolov3對路面裂縫實現實時檢測。上述方法中,基于卷積神經網絡的檢測方法在設計階段引入大量歸納偏置,如權重共享和標簽分配原則等,雖然模型收斂性較好,但是會影響建模能力。其次,大多數方法不可避免地使用低效的非極大值抑制(non-maximum suppression,NMS)后處理操作,阻礙了端到端的訓練和檢測。除此之外,特征提取過程中下采樣操作會減小特征圖分辨率,丟失裂縫細節信息。相比卷積操作,transformer中自注意力機制動態建模特征序列重要程度[15],采用一種序列到序列的學習方式,具有更小的歸納偏置[16]。
2020年,Facebook AI基于transformer提出的DETR(object detection with transformer)[17]檢測算法為目標檢測提供了全新范式,該方法無需NMS后處理,實現了端到端檢測。之后,基于transformer的基礎網絡Swin Transformer[18]在多個視覺任務上達到最好性能(state of the art,SOTA).
受上述工作啟示,提出了一種基于transformer的端到端路面裂縫檢測方法,其創新性主要體現在以下方面:1) 實現了真正的端到端路面裂縫檢測,無需NMS后處理操作,裂縫檢測精度MAP達到84.2%,優于基準方法;2) 結合多尺度特征融合和深度可分離卷積(depthwise separable convolution)[19],提出了一種多尺度特征提取骨干網絡Multi-scale Transformer,能夠提取細節豐富的裂縫紋理特征;3) 通過使用Pre-LN Transformer結構,有效加快模型收斂速度;4)提出了完全交并比損失(complete intersection over union loss,CIoU Loss)[20]和L1 Loss結合的聯合回歸損失,有效提升了模型檢測效果。
路面裂縫檢測模型CrackFormerNet架構如圖1所示,包含特征提取網絡Backbone、編碼器-解碼器網絡Encoder-Decoder以及預測網絡Predictor三部分。首先,特征提取網絡使用本文提出的Multi-Scale Transformer骨干網絡,通過將不同下采樣倍率特征圖融合,提取圖像中富含裂縫細節信息的抽象特征圖FB,該骨干網絡將在1.2節介紹。然后,編碼器-解碼器網絡使用Pre-LN Transformer結構,先將特征圖FB沿空間維度展開,得到序列化的特征表示SB.之后,利用Pre-LN Transformer中的Encoder結構對輸入特征序列SB進行上下文建模,得到圖像的全局特征表示SE,Decoder結構基于輸入的全局特征表示SE和目標查詢向量Object Queries,得到裂縫特征序列SD.最后,預測網絡使用經Relu激活的多層感知機對輸入的裂縫特征序列SD進行非線性映射,得到預測框集合Box Set,包含裂縫的類別信息和位置信息。其中,類別包括縱向裂縫、橫向裂縫、龜裂、坑槽以及背景“No Object”五類目標,背景類檢測時不顯示。

圖1 CrackFormerNet模型架構圖
為提升細小裂縫檢測效果,改善特征提取過程中細節信息丟失的問題,在Swin Transformer基礎上,結合多尺度特征融合和深度可分離卷積提出了一種Multi-Scale Transformer骨干網絡。該網絡采用基于窗口的自注意力機制[18],在計算量相對輸入圖像尺寸線性的情況下,提取圖像抽象特征;多尺度特征融合機制將各階段不同下采樣倍率特征圖進行融合,保留深層抽象特征和淺層細節特征;深度可分離卷積可在空間和通道維度上統一不同下采樣倍率特征圖形狀,同時,相較普通卷積,計算量和參數量更少。

(1)
式中:DW為深度可分離卷積操作,Pi為不同下采樣倍率特征圖。
圖1中兩層連續Swin Transformer Block結構如圖2所示,利用窗口多頭自注意力模塊W-MSA僅關注窗口內圖像特征,保證圖像局部性和提高計算效率。然后,基于移位窗口多頭自注意力模塊SW-MSA將特征圖沿水平和豎直兩個方向平移半個窗口長度實現不同窗口間特征的交互,計算如式(2)-式(5)所示:

圖2 兩層連續的Swin Transformer Block結構
(2)
(3)
(4)
(5)
其中,St-1為輸入特征序列;St+1為輸出特征序列;W-MSA為窗口多頭自注意力模塊;SW-MSA為移位窗口多頭自注意力模塊;MLP為多層感知機,LN為層歸一化處理。
文獻[21]研究發現調整transformer結構中層歸一化位置能加快模型收斂速度。受此啟發,本文在編碼器-解碼器網絡中使用Pre-LN Transformer結構,將層歸一化放置在殘差連接內部,如圖3所示,在Multi-Head Self Attention、Multi-Head Cross Attention、和FFN的殘差連接內部,先經層歸一化,將輸入數據分布統一為高斯分布,再做自注意力變換和前饋網絡映射。

圖3 Pre-LN Transformer結構圖
具體地,在Pre-LN Transformer結構中,研究層歸一化位置從Multi-Head Self Attention、Multi-Head Cross Attention和FFN各部分殘差連接的整體角度進行分析。在原transformer結構中各模塊均采用后置層歸一化的殘差連接結構,而Pre-LN Transformer結構中,使用前置層歸一化的殘差連接結構,如圖4所示以Multi-Head Self Attention為例,左圖為Post-LN連接,右圖為Pre-LN連接。

圖4 Post-LN連接與Pre-LN連接結構示意圖
編碼器-解碼器網絡使用多頭自注意力模塊Multi-Head Self Attention,通過將輸入特征序列映射到多個特征子空間,提取輸入序列的不同特征信息,如式(6)所示:
Mul_h(Q,K,V)=Con(h1,…,h8) .
(6)

(7)
式中,σ為softmax操作,dk為輸入特征序列元素維度,等于256.
解碼器中交叉注意力模塊與多頭自注意力類似,不同點在于交叉注意力模塊的K、V來自編碼器結構中建模的圖像全局特征表示SE,Q來自解碼器中Object Queries的自注意力特征序列。通過交叉注意力模塊,按照“查詢”的思想,在編碼器建模的圖像全局特征中去提取與某類Object query相關的特征,然后生成相應的特征序列。通過設置Object Query的數量,實現對每張圖像預測包圍框數量的控制,Object Query采用隨機初始化,并在訓練過程中通過反向傳播算法進行學習。
為提升裂縫檢測效果,提出了CIoU Loss和L1 Loss結合的聯合回歸損失。相比DETR檢測方法中使用GIoU Loss和L1 Loss回歸損失函數,本文聯合回歸損失函數中的CIoU Loss能夠從目標的重疊面積、中心點距離和長寬比一致性三個維度考慮,對預測框和真值標簽間的距離進行準確評估,解決了GIoU Loss在預測框和真值標簽包含情況下退化為IoU Loss的問題。同時,該損失函數具有更好的收斂性。聯合回歸損失函數LJoint定義如式(8)所示:
(8)

(9)
(10)
(11)
式中:IOU為預測框和真值標簽的交并比;ρ為預測框中心點和標簽中心點的距離;q為預測框和標簽最小閉包區域的對角線長度;v為長寬比參數,用于度量二者長寬比的一致性。α為正權重系數,重疊面積較高的預測框具有更高的回歸優先級,尤其是在二者不重疊的情況。
利用車載相機采集某市周邊高速公路路面圖像,圖像分辨率為2 048像素×1 536像素,經篩選,得到3 174張圖像。模擬真實巡檢場景,采集到包含油漬、車道線等噪聲干擾以及不同光照條件下的裂縫圖像。圖5所示為路面裂縫示例圖,包括縱向裂縫、橫向裂縫、龜裂和坑槽四類。使用LabelImg對裂縫圖像進行數據標注,按照VOC數據集格式,構建路面裂縫數據集。其中,LabelImg為圖像標注工具。

圖5 路面裂縫示例圖
對路面裂縫數據集標簽進行統計分析,共計5 961個目標。其包圍框尺寸分布情況如圖6(a)所示,縱坐標為包圍框相對原圖的高度占比,橫坐標為寬度占比。由圖6(a)可知,包圍框大小分布不均,總體來說,相對原圖尺寸包圍框面積占比較小,多為小目標,檢測時需保留圖像細節特征。圖6(b)為裂縫形狀分布情況,可以看出不同裂縫形狀差異較大,長寬比不定,增加了檢測難度。

圖6 包圍框尺寸和形狀分布圖
本文實驗使用深度學習服務器進行,其配置為Intel i9-9900K處理器和NVIDAI GeForce TRX 2080Ti顯卡x2.操作系統為 Ubuntu16.04,實驗所依賴深度學習框架和庫函數包括Pytorch 1.5.0、CUDA 10.1以及CUDNN 7.6.5等。
實驗前,先將2.1節中路面裂縫數據集按照7∶2∶1劃分為訓練集、驗證集和測試集三部分,基于該數據集開展實驗。訓練過程采用AdamW[22]優化器對模型參數進行更新,設置初始學習率為10-4,特征提取網絡學習率為10-5,權重衰減系數為10-4.設置批處理尺寸Batch Size為4,兩塊2080Ti顯卡同時訓練,每塊卡單次處理2張圖像。本文提出的Multi-Scale Transformer骨干網絡訓練使用Swin Transformer-T[18]作為基礎結構,其復雜度(模型參數和計算量)與Resnet50[23]、RepVGG-A2[24]相當,實驗更具對比性。實驗中其它參數細節參照文獻[17]進行設置。
本文使用以下指標來評估各方法的裂縫檢測性能。
1) 平均均值精度(mean average precision,MAP)
均值精度(average precision,AP)是通過對單個類別目標的P-R曲線(Precision-Recall)進行積分,得到不同召回率下的平均檢測精度,如式(12)所示。其中,p為精準率,r為召回率,p(r)表示當召回率為r時所對應的精準率。而平均均值精度MAP則是對各個類別的AP再求平均,如式(13)所示。其中,Num(Classes)為檢測裂縫類別數,設置為4.MAP能夠實現不同類別目標檢測效果的全面評估,MAP越大,目標檢測越準確。本文中,AP和MAP的IoU閾值設為0.5,若預測框類別預測正確,且重疊面積大于該值則認為檢測成功。

(12)
(13)
2) 每秒幀率(frames per second,FPS)
統計各方法在當前實驗環境下使用單塊2080Ti顯卡處理100張圖片所需時間,計算出每秒能檢測的圖片幀數。
為評估本文方法性能,分別從檢測精度、檢測速度和算法收斂性三方面對比本文方法與其它檢測方法,具體分析如下。
3.4.1檢測精度和速度對比
為驗證本文方法檢測效果,在自建路面裂縫數據集上對比了常見的基于卷積神經網絡檢測方法(Faster RCNN、SSD及Yolov3)和基于transformer的檢測方法(DETR及本文方法),實驗結果如表1所示。本文方法在路面裂縫檢測數據集上取得了最好的檢測效果,MAP達到84.2%,證明了本文方法的有效性。相較DETR檢測方法,本文方法在橫向裂縫、龜裂以及坑槽等多個檢測任務上取得性能提升,尤其對坑槽類小目標檢測任務上效果提升尤為明顯。
檢測速度對比如表1所示,可以看出基于CNN的單階段檢測方法(SSD及YOLOv3)在檢測速度方面明顯優于兩階段檢測方法(Faster RCNN)和基于transformer的檢測方法(DETR及本文方法)。相比DETR,本文方法檢測速度下降2.8 f/s,主要由于Multi-Scale Transformer骨干網絡為保留裂縫細節特征帶來一定的計算開銷,但是檢測精度得到明顯提升。

表1 檢測方法性能對比
本文方法檢測結果可視化如圖7所示,圖7(a)中,在不同光照條件下對縱向裂縫和龜裂進行了準確檢測,由此可見本文方法對不同光照強度具有一定的魯棒性。在圖7(b)左圖中,準確檢測出縱向裂縫,樹木陰影未對裂縫檢測造成不利影響。同時,在右圖中在車道線旁的縱向裂縫也被準確檢測出來。可視化結果進一步證明了本文方法的有效性,對不同光照強度、路面陰影以及車道線等干擾因素具有一定的魯棒性。

圖7 路面裂縫檢測效果可視化
3.4.2模型收斂性對比
我們對DETR檢測方法和本文方法進行收斂性對比實驗。在相同實驗環境及硬件配置下,兩模型分別訓練300個輪次,損失loss變化曲線和平均均值精度MAP變化曲線如圖8所示。

圖8 訓練過程中loss和MAP變化曲線圖
圖8(a)中損失曲線前期不斷下降最終趨于穩定,由此可見兩方法均訓練充分。相比DETR檢測方法,本文方法收斂速度更快,在204輪左右達到收斂,而DETR方法需要250輪左右才能收斂,本文方法所需收斂輪次僅為DETR的81.6%.從圖8(b)可以看到本文方法的平均均值精度MAP也顯著優于DETR.經分析,模型收斂速度加快是由于在編碼器-解碼器階段使用Pre-LN Transformer結構,通過在殘差塊內部使用層歸一化,有效降低了輸出層附近參數梯度,加快了模型收斂。同時,聯合回歸損失,通過直接最小化預測框和標簽中心點間歸一化距離,在二者包含情況下依然奏效,進一步加快了模型的收斂。
3.4.3消融實驗
為驗證各組件改進對路面裂縫檢測效果的實際增益,本文設計了消融實驗,結果如表2所示。對比實驗A、B和C可以看出,三者僅特征提取網絡不同,相比ResNet-50來說,通過采用RepVGG-A2和Multi-Scale Transformer骨干網絡提取裂縫圖像特征,模型MAP能夠分別得到0.5%和2.1%的提升。由此看出,Multi-Scale Transformer網絡具有更強的裂縫特征提取能力。而且,對于路面裂縫這類形狀不規則目標,保留淺層的裂縫紋理細節特征能夠有效提升裂縫檢測效果。對比實驗C和D,發現Pre-LN Transformer對裂縫檢測精度提升不大,其增益主要體現在上節“模型收斂性對比”部分中能夠加速算法收斂。對比實驗D和E,發現通過采用CIoU Loss和L1 Loss結合的聯合回歸損失,MAP能夠提升1.2%.表2中實驗結果表明,Multi-Scale Transformer骨干網絡和聯合回歸損失均可有效提升路面裂縫檢測精度,其中,Multi-Scale Transformer骨干網絡對裂縫檢測精度提升效果更為明顯。

表2 消融實驗結果
同時,為比較Pre-LN Transformer中Multi-Head Self Attention、FFN和Multi-Head Cross Attention各部分殘差連接方式對模型收斂性的影響,設計了對比實驗,結果如表3所示。對比實驗A、B,發現相比使用transformer網絡,僅使用Pre-LN Multi-Head Self Attention結構,模型收斂輪次減少了33輪。對比實驗B和C,發現使用Pre-LN FFN對模型收斂性影響不大。對比實驗C和D,發現使用Pre-LN Multi-Head Self Attention模型收斂輪次減少了12輪。表3中實驗結果表明,對多頭自注意力和多頭交叉注意力模塊使用Pre-LN連接能夠有效加速模型收斂,減少模型的訓練輪次。

表3 Pre-LN Transformer各部分連接方式對模型收斂性影響
針對路面裂縫檢測場景下裂縫檢測精度較低的問題,本文提出了一種基于transformer的端到端路面裂縫檢測方法,使用本文設計的Multi-Scale Transformer骨干網絡和并行解碼的Pre-LN Transformer構建深度學習模型。同時,使用CIoU Loss和L1 Loss結合的聯合回歸損失,評估預測框和標簽間距離。實驗結果表明,本文方法能夠準確檢測多種路面裂縫,在路面裂縫數據集上MAP達到84.2%,對路面裂縫自動化巡檢具有一定的實用價值。而且,相較DETR檢測方法,模型具有更好的收斂性,收斂輪次壓縮18.4%.但是,在檢測速度方面本文方法相較基準方法還有一定差距。下一步將結合知識蒸餾和模型壓縮,探索模型輕量化改進,提高裂縫檢測效率。