郭佳佳,董增壽,常春波 GUO Jiajia, DONG Zengshou, CHANG Chunbo
(1.太原科技大學 車輛與交通工程學院,山西 太原 030024;2.太原科技大學 電子信息工程學院,山西 太原 030024)
橋梁是重要的交通基礎設施,裂縫是混凝土結構橋梁最常見的病害,它的出現和發展將對橋梁的耐久性和承載能力構成威脅,嚴重影響橋梁建筑的安全使用,是橋梁養護中必須解決的關鍵性問題。傳統人工檢測方法需要封閉車道且工作條件不安全、結果不可靠、耗時。因此有必要對裂縫自動檢測方法進行研究,將人工程序轉換為自動程序,自動化將減少檢驗成本和人為錯誤,同時提高檢驗速度。為了滿足各種應用需求,橋梁裂縫自動檢測主要分為兩大類:基于圖像處理的算法[1]和基于深度學習的算法[2]。
傳統的數字圖像處理方法,如Canny、Sobel、Laplacian 等算子[3]利用像素之間的強度變化定義邊緣,裂縫被認為是響應邊緣檢測濾波器的特征。Abdel-Qader 等人[4]比較了Sobel 算法、Canny 算法、快速傅里葉變換和快速哈爾變換四種基于圖像處理的裂縫檢測算法,試驗表明快速哈爾變換相對更具優勢。Mustafa 和Mohamed 在2015 年[5]提出一種支持向量機(SVM) 的自動混凝土裂縫識別方法,對數據進行預處理,從每個圖像中提取特征,使用SVM 對圖像進行分類。Shi 等人[6]提出一種新的基于隨機森林的裂縫檢測框架,引入隨機森林生成可以識別任意復雜裂縫的高性能檢測器。上述研究多利用手工特征表示,限制了細節和復雜語義信息方面的性能,對道路圖像中的許多小細節很敏感,不能提供有效的噪聲抑制。
卷積神經網絡(Convolutional Neural Networks,CNNs) 從圖像中提取空間視覺特征(從低級特征到高級特征) 非常強大,能從不同層次和尺度學習不同特征,有效克服橋梁復雜環境下裂縫檢測的困難,提高計算機視覺任務的性能速度和準確性,逐漸主導了目標檢測領域。Chen 等人[7]提出NBCNN 算法找到圖像中所有感興趣的目標并確定其位置,但混凝土表面的裂縫分布及形狀不規則導致識別精度有限。Sun 等人[8]提出一種基于更快區域的CNN(Faster R-CNN) 的損傷檢測方法,以提供混凝土裂縫、鋼腐蝕、螺栓腐蝕和鋼分層檢測,支持端到端檢測和卷積共享。YOLO 由Redmon 等人[9]在2016 年使用無錨概念來實現單階段檢測。Faster R-CNN 和YOLO 算法在檢測橋裂縫方面較為有效,分別是兩階段和單階段算法的示例。對于橋梁裂縫這種需要進行快速檢測的工業場景,常用單階段算法,但很多算法結構復雜,占用資源較多,需對模型進行輕量化處理便于工業部署。Mandal 等人[10]提出一種基于YOLOv2 的路面裂縫自動檢測和分析系統,檢測精度有待提升。模型量化是目前模型輕量級的方法之一,通過減小參數的位寬,有效減小模型大小和內存消耗,提高計算效率和速度。方仁淵等人[11]簡化YOLOv3 的骨干網絡,重構了檢測頭結構,實現了推理速度上的部分提升卻犧牲了過多的精度。Jamiya 等人[12]提出Little-YOLO-SPP 用于攝像頭圖像中檢測車輛,通過深度可分離卷積和點卷積來實現參數的減少。Zhang 等人[13]引入MobileNetV2 實現YOLOv3 算法的輕量化。孔維剛等人[14]提出輕量化YOLOv4 模型減少模型的計算量和參數量,用于嵌入無人機設備。Zhu 等人[15]在YOLOv5 中增加特征融合層之后加入注意力機制來突出目標物體的信息,試驗表明有效的注意力機制可以提高模型精度。雖然多數方法對某些情況的檢測精度有所提高,仍存在參數量大、計算速度慢等問題。一些輕量級模型可以有效降低模型參數,但無法達到精度和速度之間的平衡。
針對上述問題,本文研究了輕量級方法,提出一種基于YOLOv5l 的輕量化橋梁裂縫檢測算法PE-YOLO,以提高檢測速度。將YOLOv5l 特征提取網絡替換為輕量級PP-LC 網絡,形成了一個精簡、快速的橋梁裂縫檢測網絡,使其更加適用低算力場景下的裂縫檢測,所需計算資源更少,此外在最后特征融合中加入ECA 注意力機制模塊,實現對信息的選擇,同時抑制了其他無用信息,提高模型精度。改進后算法參數更少,檢測速度更快,提高橋梁檢測效率。
YOLOv5l 架構主要由四部分組成(輸入端Input、骨干端Backbone、頸端Neck、預測端Prediction),各部分由不同的卷積(Conv)、串聯(Conca)t、C3(集中綜合卷積) 模塊和SPPF(Spatial Pyramid Pooling-Fas)t 模塊構成,允許用不同的大小和比例來識別同一物體。YOLOv5l 結構的各組成部分如圖1 所示。

圖1 YOLOv5l 網絡架構
輸入端對圖像大小進行自適應調整,利用自適應錨定算法在訓練前對數據進行預處理,鑲嵌數據增強用來豐富數據集、提高網絡的魯棒性、減少所需圖形處理單元(GPU) 數量并降低成本。骨干端被認為是提取特征的編碼器層,主要由CBS(Conv、BN 層、SiLU 激活函數)、SPPF 和C3 模塊組成。Conv 是YOLOv5l 殘差網絡塊的最小組件,由卷積層、批量歸一化(BN) 層和SiLU 激活函數組成。C3 是YOLOv5l 中學習殘差特征最重要的模塊。它的結構分為兩個分支:一個分支將模塊與三個具有多個瓶頸的普通卷積層堆疊在一起,一個分支通過一個普通卷積層。最后,兩個分支連接起來。SPPF 主要對不同內核大小進行最大池化,通過下采樣操作來表示圖像特征。頸端由特征金字塔網絡FPN 和路徑聚合網絡PAN 兩部分組成,FPN 通過自上而下的將從骨干部分提取的淺層特征與原始深度特征融合,PAN 以自下而上的金字塔傳輸數據,以改進特征提取并將圖像特征傳遞給最終的檢測預測層。預測網絡由三個檢測層組成,具有不同大小的特征圖,用于檢測不同大小的目標對象。每個檢測層輸出相應的向量,最后生成原始圖像中物體的預測邊界框和類別并對其進行標記。
2.1 輕量化PP-LC 網絡。PP-LCNet[16]是百度提出的輕量化網絡架構,可以有效部署于移動端,是一種體積小,運行速度快,計算資源要求低的輕量級模型。本文在原有YOLOv5l 骨干網絡的基礎上,設計一個輕量級的特征提取網絡,如圖1 左側框中結構所示,具有延遲低、參數少、易于滿足嵌入式設備的優點。
改進的輕量化網絡將原有YOLOv5l 中的Leakyrelu 激活函數轉化為了速度更快H-Swish 損失函數,網絡精度幾乎不受影響;隨即進行連續卷積核大小為3×3 的相同個數的DepthSepConv 和卷積核大小為5×5 不同個數的DepthSepConv 卷積操作得到不同倍數的下采樣特征圖,最后經過快速空間金字塔池SPPF 輸出結果。網絡中將更大卷積核放置在網絡尾部可以達到更高的精度。PP-LC 輕量化網絡的具體卷積結構如圖2 所示,3×3DepthSepConv(5×5DepthSepConv) 先進行3×3(5×5) 的深度卷積操作,再進行1×1 的點卷積操作,虛線框SE 模塊代表可選擇選項,在此模塊中,對特征圖使用全局平均池化(Global Average Pooling,GAP) 壓縮,經過兩次全連接層(FC) 進行激勵,使網絡提取更加豐富的特征信息,改進的主干網絡中,只在最后一層加入SE 模塊能取得更好的性能與速度的平衡。

圖2 PP-LC 網絡結構
2.2 ECA 模塊。注意力機制可以強制網絡對本質特征的注意力,增強特征圖的表現力,有效提高網絡的檢測精度,同時略微增加計算工作量和復雜度。高效通道注意力(ECA)[17]使用一維卷積代替SENet[18]中的全連接層,有效降低權重參數,加快推理速度。PE-YOLO 算法在最后預測部分插入此模塊,對裂縫特征進行重構和分配,可以提高小目標特征圖的比例和權重,加強對裂縫標簽區域的模型訓練,增強網絡的特征提取能力,使模型利用全局特征來區分圖像信息水平。且此模塊的參數要求較少,在避免模型過于復雜的同時彌補了模型輕量化造成精確度損失。
高效通道注意力機制結構如圖3 所示。W、H、C 分別是特征向量的寬度、高度和通道尺寸。首先使用全局平均池化(GAP) 根據每個通道的特征變換將輸入特征向量X 進行空間特征壓縮提取為所有像素的平均值,得到1×1×C 的特征圖,C 為通道維數;隨后在維數相同的情況下進行通道特征學習,通過K(K= 5 )大小的快速一維卷積,還是得到1×1×C 的特征圖,其中內核大小K 決定了交互作用的覆蓋率,因此K 和C 之間存在非線性映射,通過通道維數C 可以計算卷積核大小K;進而利用Sigmoid 激活函數計算出一維卷積的激活值,得到不同的權重來表現渠道之間的相關性和重要性;最后,生成每個通道的權重加權到原始輸入要素映射,完成對各通道特征的重新編碼,以便為重要特征分配要增強的大權重,則有效特征得到增強,相反的無效特征被分配小權重來抑制。

圖3 ECA 結構
3.1 數據集及實驗環境。橋梁裂縫數據沒有公共數據集,本文實驗數據來自收集的橋梁表面不同光照和背景的裂縫圖像1 500張,以及經橋梁裂縫圖像相似度對比,選擇優秀論文[19]中的裂縫數據圖像1 000 張,合并數據圖像后均轉換為JPG 格式,通過數據增強獲得3 500 張裂縫圖像。數據增強是為了增加數據的數量和多樣性,有助于減少過度適應小的數據集。利用LabelImg注釋工具手動繪制矩形形狀框到物體的邊界中,裂縫對象標簽為“crack”注釋的值保存在TXT 文件中。數據文件是分為兩個文件夾:圖片和標簽。對每個文件夾按7∶3 比例進行劃分為兩個子文件夾:train 和valid。
本實驗中用于訓練和驗證算法的硬件設備和軟件環境是:處理器AMD Ryzen 9 3950X,內存64gb、Win10 操作系統、Pytorch1.13.0、深度學習框架、CUDA 版本11.6。
3.2 評價指標。不同的考核指標在不同方面反映了檢測算法的性能。對于本文的輕量化裂縫檢測任務,選擇準確率P(Pr ecision )、召回率R (Recall )、平均精度均值mAP (mean Average Precisio n )等評價指標來衡量模型的性能。為了評估算法的全面性,選擇參數量(Parameter s )、GFLOPs(浮點運算)、推理時間和每秒傳輸幀數(Frames Per Second, FPS) 來評價模型的復雜度。準確率計算為正確預測的陽性樣本數量與預測為陽性樣本的樣本數量的比例。
召回率是根據正確預測的所有目標的比例來計算的。
其中:mAP 作為主要指標,可以驗證在檢測裂縫對象時的總體表現。N 的值為1,表示只有裂縫這一類別。TP(True Positives ),FP (False Positive s ),FN (False Negatives )分別代表真陽性樣本即正確檢測到的裂縫數量、假陽性樣本即檢測到錯誤目標的數量、假陰性樣本即未檢測到的裂縫的數量,即錯過檢測。
Parameters 表示算法的參數,由卷積層、批量歸一化層、激活層、采樣層和池化層組成。其中,卷積層占參數的比例最大。GFLOPs 是千兆浮點運算,可以理解為計算量,代表算法的復雜程度。與參數的數量一樣,卷積的計算占最大比例。
其中:C0是輸出通道的數量,Ci是輸入通道的數量,Kh和Kw分別是卷積核的高度和寬度。
其中:H 和W 分別是特征圖的寬度和長度。
3.3 實驗結果分析。本文模型訓練設置:圖像輸入大小640×640,初始學習率為0.01,學習速率調整為0.001,Batch size 為16,最大迭代次數為200epoch(每個epoch 意味著所有圖像都經過一輪訓練)。為了更好且更直觀地觀察網絡的效果,使用可視化工具記錄訓練過程中損失函數值和平均精確度的變化。PE-YOLO 算法訓練損失函數和mAP 的變化趨勢如圖4、圖5 所示。在圖4 中可看出網絡訓練的前50 個epoch,損失值迅速下降,進而進入穩定的收斂階段。100 個epoch 后,損失值溫和減小,損失函數曲線收斂,表明模型訓練效果成功。

圖4 損失函數

圖5 mAP 曲線
為了進一步驗證PE-YOLO 算法的有效性,將所提出的PE-YOLO 算法的性能與原YOLOv5l 算法及兩階段目標檢測Faster R-CNN 進行了比較。所有檢測算法均在統一數據集及環境配置下進行測試,表1 顯示了PE-YOLO 算法與其他算法的檢測效果比較。

表1 結果對比
使用PP-LC 網絡作為骨干后,平均精度均值與原模型基本持平,相比Faster R-CNN 更好;原YOLOv5l 模型及Faster R-CNN 模型的參數量是改進后PE-YOLO 模型的兩倍以上;對于GFLOPs 改進后的算法效果最好;推理時間方面,改進后算法只有13.3ms,分別比Faster R-CNN 和YOLOv5l 少8.0ms、14.1ms;每秒傳輸幀數中PE-YOLO 最多。比較平均精度均值、參數量等評價指標的大小,PE-YOLO 算法具有更好的性能,更好結合了模型參數和模型精確度,表明所提出的改進具有有效性。
針對移動終端或嵌入式設備部署中裂縫檢測模型參數量大,精確度難以均衡的問題,提出了一種基于改進YOLOv5l 的橋梁裂縫檢測算法PE-YOLO。構建了一個包含3 500 張圖像的真實數據集,在此數據集上進行了對比實驗,將所提方法與其他模型進行了比較。實驗結果表明,提出的模型使用PP-LC 網絡替代YOLOv5l 中的骨干網絡,實現輕量級特征提取網絡,減少整個網絡的參數數量,提高模型檢測速度。模型參數量下降了2.0 倍,GFLOPs 下降了2.6 倍。為了改善輕量化模型帶來的平均精度均值損失,在最終特征融合使用參數量極少的ECA 注意力機制彌補了輕量級網絡缺失的精確度。為更加高效的橋梁裂縫自動檢測奠定基礎。