郭佳佳,董增壽,常春波 GUO Jiajia, DONG Zengshou, CHANG Chunbo
(1.太原科技大學(xué) 車輛與交通工程學(xué)院,山西 太原 030024;2.太原科技大學(xué) 電子信息工程學(xué)院,山西 太原 030024)
橋梁是重要的交通基礎(chǔ)設(shè)施,裂縫是混凝土結(jié)構(gòu)橋梁最常見的病害,它的出現(xiàn)和發(fā)展將對橋梁的耐久性和承載能力構(gòu)成威脅,嚴(yán)重影響橋梁建筑的安全使用,是橋梁養(yǎng)護(hù)中必須解決的關(guān)鍵性問題。傳統(tǒng)人工檢測方法需要封閉車道且工作條件不安全、結(jié)果不可靠、耗時。因此有必要對裂縫自動檢測方法進(jìn)行研究,將人工程序轉(zhuǎn)換為自動程序,自動化將減少檢驗成本和人為錯誤,同時提高檢驗速度。為了滿足各種應(yīng)用需求,橋梁裂縫自動檢測主要分為兩大類:基于圖像處理的算法[1]和基于深度學(xué)習(xí)的算法[2]。
傳統(tǒng)的數(shù)字圖像處理方法,如Canny、Sobel、Laplacian 等算子[3]利用像素之間的強度變化定義邊緣,裂縫被認(rèn)為是響應(yīng)邊緣檢測濾波器的特征。Abdel-Qader 等人[4]比較了Sobel 算法、Canny 算法、快速傅里葉變換和快速哈爾變換四種基于圖像處理的裂縫檢測算法,試驗表明快速哈爾變換相對更具優(yōu)勢。Mustafa 和Mohamed 在2015 年[5]提出一種支持向量機(SVM) 的自動混凝土裂縫識別方法,對數(shù)據(jù)進(jìn)行預(yù)處理,從每個圖像中提取特征,使用SVM 對圖像進(jìn)行分類。Shi 等人[6]提出一種新的基于隨機森林的裂縫檢測框架,引入隨機森林生成可以識別任意復(fù)雜裂縫的高性能檢測器。上述研究多利用手工特征表示,限制了細(xì)節(jié)和復(fù)雜語義信息方面的性能,對道路圖像中的許多小細(xì)節(jié)很敏感,不能提供有效的噪聲抑制。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs) 從圖像中提取空間視覺特征(從低級特征到高級特征) 非常強大,能從不同層次和尺度學(xué)習(xí)不同特征,有效克服橋梁復(fù)雜環(huán)境下裂縫檢測的困難,提高計算機視覺任務(wù)的性能速度和準(zhǔn)確性,逐漸主導(dǎo)了目標(biāo)檢測領(lǐng)域。Chen 等人[7]提出NBCNN 算法找到圖像中所有感興趣的目標(biāo)并確定其位置,但混凝土表面的裂縫分布及形狀不規(guī)則導(dǎo)致識別精度有限。Sun 等人[8]提出一種基于更快區(qū)域的CNN(Faster R-CNN) 的損傷檢測方法,以提供混凝土裂縫、鋼腐蝕、螺栓腐蝕和鋼分層檢測,支持端到端檢測和卷積共享。YOLO 由Redmon 等人[9]在2016 年使用無錨概念來實現(xiàn)單階段檢測。Faster R-CNN 和YOLO 算法在檢測橋裂縫方面較為有效,分別是兩階段和單階段算法的示例。對于橋梁裂縫這種需要進(jìn)行快速檢測的工業(yè)場景,常用單階段算法,但很多算法結(jié)構(gòu)復(fù)雜,占用資源較多,需對模型進(jìn)行輕量化處理便于工業(yè)部署。Mandal 等人[10]提出一種基于YOLOv2 的路面裂縫自動檢測和分析系統(tǒng),檢測精度有待提升。模型量化是目前模型輕量級的方法之一,通過減小參數(shù)的位寬,有效減小模型大小和內(nèi)存消耗,提高計算效率和速度。方仁淵等人[11]簡化YOLOv3 的骨干網(wǎng)絡(luò),重構(gòu)了檢測頭結(jié)構(gòu),實現(xiàn)了推理速度上的部分提升卻犧牲了過多的精度。Jamiya 等人[12]提出Little-YOLO-SPP 用于攝像頭圖像中檢測車輛,通過深度可分離卷積和點卷積來實現(xiàn)參數(shù)的減少。Zhang 等人[13]引入MobileNetV2 實現(xiàn)YOLOv3 算法的輕量化??拙S剛等人[14]提出輕量化YOLOv4 模型減少模型的計算量和參數(shù)量,用于嵌入無人機設(shè)備。Zhu 等人[15]在YOLOv5 中增加特征融合層之后加入注意力機制來突出目標(biāo)物體的信息,試驗表明有效的注意力機制可以提高模型精度。雖然多數(shù)方法對某些情況的檢測精度有所提高,仍存在參數(shù)量大、計算速度慢等問題。一些輕量級模型可以有效降低模型參數(shù),但無法達(dá)到精度和速度之間的平衡。
針對上述問題,本文研究了輕量級方法,提出一種基于YOLOv5l 的輕量化橋梁裂縫檢測算法PE-YOLO,以提高檢測速度。將YOLOv5l 特征提取網(wǎng)絡(luò)替換為輕量級PP-LC 網(wǎng)絡(luò),形成了一個精簡、快速的橋梁裂縫檢測網(wǎng)絡(luò),使其更加適用低算力場景下的裂縫檢測,所需計算資源更少,此外在最后特征融合中加入ECA 注意力機制模塊,實現(xiàn)對信息的選擇,同時抑制了其他無用信息,提高模型精度。改進(jìn)后算法參數(shù)更少,檢測速度更快,提高橋梁檢測效率。
YOLOv5l 架構(gòu)主要由四部分組成(輸入端Input、骨干端Backbone、頸端Neck、預(yù)測端Prediction),各部分由不同的卷積(Conv)、串聯(lián)(Conca)t、C3(集中綜合卷積) 模塊和SPPF(Spatial Pyramid Pooling-Fas)t 模塊構(gòu)成,允許用不同的大小和比例來識別同一物體。YOLOv5l 結(jié)構(gòu)的各組成部分如圖1 所示。
圖1 YOLOv5l 網(wǎng)絡(luò)架構(gòu)
輸入端對圖像大小進(jìn)行自適應(yīng)調(diào)整,利用自適應(yīng)錨定算法在訓(xùn)練前對數(shù)據(jù)進(jìn)行預(yù)處理,鑲嵌數(shù)據(jù)增強用來豐富數(shù)據(jù)集、提高網(wǎng)絡(luò)的魯棒性、減少所需圖形處理單元(GPU) 數(shù)量并降低成本。骨干端被認(rèn)為是提取特征的編碼器層,主要由CBS(Conv、BN 層、SiLU 激活函數(shù))、SPPF 和C3 模塊組成。Conv 是YOLOv5l 殘差網(wǎng)絡(luò)塊的最小組件,由卷積層、批量歸一化(BN) 層和SiLU 激活函數(shù)組成。C3 是YOLOv5l 中學(xué)習(xí)殘差特征最重要的模塊。它的結(jié)構(gòu)分為兩個分支:一個分支將模塊與三個具有多個瓶頸的普通卷積層堆疊在一起,一個分支通過一個普通卷積層。最后,兩個分支連接起來。SPPF 主要對不同內(nèi)核大小進(jìn)行最大池化,通過下采樣操作來表示圖像特征。頸端由特征金字塔網(wǎng)絡(luò)FPN 和路徑聚合網(wǎng)絡(luò)PAN 兩部分組成,F(xiàn)PN 通過自上而下的將從骨干部分提取的淺層特征與原始深度特征融合,PAN 以自下而上的金字塔傳輸數(shù)據(jù),以改進(jìn)特征提取并將圖像特征傳遞給最終的檢測預(yù)測層。預(yù)測網(wǎng)絡(luò)由三個檢測層組成,具有不同大小的特征圖,用于檢測不同大小的目標(biāo)對象。每個檢測層輸出相應(yīng)的向量,最后生成原始圖像中物體的預(yù)測邊界框和類別并對其進(jìn)行標(biāo)記。
2.1 輕量化PP-LC 網(wǎng)絡(luò)。PP-LCNet[16]是百度提出的輕量化網(wǎng)絡(luò)架構(gòu),可以有效部署于移動端,是一種體積小,運行速度快,計算資源要求低的輕量級模型。本文在原有YOLOv5l 骨干網(wǎng)絡(luò)的基礎(chǔ)上,設(shè)計一個輕量級的特征提取網(wǎng)絡(luò),如圖1 左側(cè)框中結(jié)構(gòu)所示,具有延遲低、參數(shù)少、易于滿足嵌入式設(shè)備的優(yōu)點。
改進(jìn)的輕量化網(wǎng)絡(luò)將原有YOLOv5l 中的Leakyrelu 激活函數(shù)轉(zhuǎn)化為了速度更快H-Swish 損失函數(shù),網(wǎng)絡(luò)精度幾乎不受影響;隨即進(jìn)行連續(xù)卷積核大小為3×3 的相同個數(shù)的DepthSepConv 和卷積核大小為5×5 不同個數(shù)的DepthSepConv 卷積操作得到不同倍數(shù)的下采樣特征圖,最后經(jīng)過快速空間金字塔池SPPF 輸出結(jié)果。網(wǎng)絡(luò)中將更大卷積核放置在網(wǎng)絡(luò)尾部可以達(dá)到更高的精度。PP-LC 輕量化網(wǎng)絡(luò)的具體卷積結(jié)構(gòu)如圖2 所示,3×3DepthSepConv(5×5DepthSepConv) 先進(jìn)行3×3(5×5) 的深度卷積操作,再進(jìn)行1×1 的點卷積操作,虛線框SE 模塊代表可選擇選項,在此模塊中,對特征圖使用全局平均池化(Global Average Pooling,GAP) 壓縮,經(jīng)過兩次全連接層(FC) 進(jìn)行激勵,使網(wǎng)絡(luò)提取更加豐富的特征信息,改進(jìn)的主干網(wǎng)絡(luò)中,只在最后一層加入SE 模塊能取得更好的性能與速度的平衡。
圖2 PP-LC 網(wǎng)絡(luò)結(jié)構(gòu)
2.2 ECA 模塊。注意力機制可以強制網(wǎng)絡(luò)對本質(zhì)特征的注意力,增強特征圖的表現(xiàn)力,有效提高網(wǎng)絡(luò)的檢測精度,同時略微增加計算工作量和復(fù)雜度。高效通道注意力(ECA)[17]使用一維卷積代替SENet[18]中的全連接層,有效降低權(quán)重參數(shù),加快推理速度。PE-YOLO 算法在最后預(yù)測部分插入此模塊,對裂縫特征進(jìn)行重構(gòu)和分配,可以提高小目標(biāo)特征圖的比例和權(quán)重,加強對裂縫標(biāo)簽區(qū)域的模型訓(xùn)練,增強網(wǎng)絡(luò)的特征提取能力,使模型利用全局特征來區(qū)分圖像信息水平。且此模塊的參數(shù)要求較少,在避免模型過于復(fù)雜的同時彌補了模型輕量化造成精確度損失。
高效通道注意力機制結(jié)構(gòu)如圖3 所示。W、H、C 分別是特征向量的寬度、高度和通道尺寸。首先使用全局平均池化(GAP) 根據(jù)每個通道的特征變換將輸入特征向量X 進(jìn)行空間特征壓縮提取為所有像素的平均值,得到1×1×C 的特征圖,C 為通道維數(shù);隨后在維數(shù)相同的情況下進(jìn)行通道特征學(xué)習(xí),通過K(K= 5 )大小的快速一維卷積,還是得到1×1×C 的特征圖,其中內(nèi)核大小K 決定了交互作用的覆蓋率,因此K 和C 之間存在非線性映射,通過通道維數(shù)C 可以計算卷積核大小K;進(jìn)而利用Sigmoid 激活函數(shù)計算出一維卷積的激活值,得到不同的權(quán)重來表現(xiàn)渠道之間的相關(guān)性和重要性;最后,生成每個通道的權(quán)重加權(quán)到原始輸入要素映射,完成對各通道特征的重新編碼,以便為重要特征分配要增強的大權(quán)重,則有效特征得到增強,相反的無效特征被分配小權(quán)重來抑制。
圖3 ECA 結(jié)構(gòu)
3.1 數(shù)據(jù)集及實驗環(huán)境。橋梁裂縫數(shù)據(jù)沒有公共數(shù)據(jù)集,本文實驗數(shù)據(jù)來自收集的橋梁表面不同光照和背景的裂縫圖像1 500張,以及經(jīng)橋梁裂縫圖像相似度對比,選擇優(yōu)秀論文[19]中的裂縫數(shù)據(jù)圖像1 000 張,合并數(shù)據(jù)圖像后均轉(zhuǎn)換為JPG 格式,通過數(shù)據(jù)增強獲得3 500 張裂縫圖像。數(shù)據(jù)增強是為了增加數(shù)據(jù)的數(shù)量和多樣性,有助于減少過度適應(yīng)小的數(shù)據(jù)集。利用LabelImg注釋工具手動繪制矩形形狀框到物體的邊界中,裂縫對象標(biāo)簽為“crack”注釋的值保存在TXT 文件中。數(shù)據(jù)文件是分為兩個文件夾:圖片和標(biāo)簽。對每個文件夾按7∶3 比例進(jìn)行劃分為兩個子文件夾:train 和valid。
本實驗中用于訓(xùn)練和驗證算法的硬件設(shè)備和軟件環(huán)境是:處理器AMD Ryzen 9 3950X,內(nèi)存64gb、Win10 操作系統(tǒng)、Pytorch1.13.0、深度學(xué)習(xí)框架、CUDA 版本11.6。
3.2 評價指標(biāo)。不同的考核指標(biāo)在不同方面反映了檢測算法的性能。對于本文的輕量化裂縫檢測任務(wù),選擇準(zhǔn)確率P(Pr ecision )、召回率R (Recall )、平均精度均值mAP (mean Average Precisio n )等評價指標(biāo)來衡量模型的性能。為了評估算法的全面性,選擇參數(shù)量(Parameter s )、GFLOPs(浮點運算)、推理時間和每秒傳輸幀數(shù)(Frames Per Second, FPS) 來評價模型的復(fù)雜度。準(zhǔn)確率計算為正確預(yù)測的陽性樣本數(shù)量與預(yù)測為陽性樣本的樣本數(shù)量的比例。
召回率是根據(jù)正確預(yù)測的所有目標(biāo)的比例來計算的。
其中:mAP 作為主要指標(biāo),可以驗證在檢測裂縫對象時的總體表現(xiàn)。N 的值為1,表示只有裂縫這一類別。TP(True Positives ),F(xiàn)P (False Positive s ),F(xiàn)N (False Negatives )分別代表真陽性樣本即正確檢測到的裂縫數(shù)量、假陽性樣本即檢測到錯誤目標(biāo)的數(shù)量、假陰性樣本即未檢測到的裂縫的數(shù)量,即錯過檢測。
Parameters 表示算法的參數(shù),由卷積層、批量歸一化層、激活層、采樣層和池化層組成。其中,卷積層占參數(shù)的比例最大。GFLOPs 是千兆浮點運算,可以理解為計算量,代表算法的復(fù)雜程度。與參數(shù)的數(shù)量一樣,卷積的計算占最大比例。
其中:C0是輸出通道的數(shù)量,Ci是輸入通道的數(shù)量,Kh和Kw分別是卷積核的高度和寬度。
其中:H 和W 分別是特征圖的寬度和長度。
3.3 實驗結(jié)果分析。本文模型訓(xùn)練設(shè)置:圖像輸入大小640×640,初始學(xué)習(xí)率為0.01,學(xué)習(xí)速率調(diào)整為0.001,Batch size 為16,最大迭代次數(shù)為200epoch(每個epoch 意味著所有圖像都經(jīng)過一輪訓(xùn)練)。為了更好且更直觀地觀察網(wǎng)絡(luò)的效果,使用可視化工具記錄訓(xùn)練過程中損失函數(shù)值和平均精確度的變化。PE-YOLO 算法訓(xùn)練損失函數(shù)和mAP 的變化趨勢如圖4、圖5 所示。在圖4 中可看出網(wǎng)絡(luò)訓(xùn)練的前50 個epoch,損失值迅速下降,進(jìn)而進(jìn)入穩(wěn)定的收斂階段。100 個epoch 后,損失值溫和減小,損失函數(shù)曲線收斂,表明模型訓(xùn)練效果成功。
圖4 損失函數(shù)
圖5 mAP 曲線
為了進(jìn)一步驗證PE-YOLO 算法的有效性,將所提出的PE-YOLO 算法的性能與原YOLOv5l 算法及兩階段目標(biāo)檢測Faster R-CNN 進(jìn)行了比較。所有檢測算法均在統(tǒng)一數(shù)據(jù)集及環(huán)境配置下進(jìn)行測試,表1 顯示了PE-YOLO 算法與其他算法的檢測效果比較。
表1 結(jié)果對比
使用PP-LC 網(wǎng)絡(luò)作為骨干后,平均精度均值與原模型基本持平,相比Faster R-CNN 更好;原YOLOv5l 模型及Faster R-CNN 模型的參數(shù)量是改進(jìn)后PE-YOLO 模型的兩倍以上;對于GFLOPs 改進(jìn)后的算法效果最好;推理時間方面,改進(jìn)后算法只有13.3ms,分別比Faster R-CNN 和YOLOv5l 少8.0ms、14.1ms;每秒傳輸幀數(shù)中PE-YOLO 最多。比較平均精度均值、參數(shù)量等評價指標(biāo)的大小,PE-YOLO 算法具有更好的性能,更好結(jié)合了模型參數(shù)和模型精確度,表明所提出的改進(jìn)具有有效性。
針對移動終端或嵌入式設(shè)備部署中裂縫檢測模型參數(shù)量大,精確度難以均衡的問題,提出了一種基于改進(jìn)YOLOv5l 的橋梁裂縫檢測算法PE-YOLO。構(gòu)建了一個包含3 500 張圖像的真實數(shù)據(jù)集,在此數(shù)據(jù)集上進(jìn)行了對比實驗,將所提方法與其他模型進(jìn)行了比較。實驗結(jié)果表明,提出的模型使用PP-LC 網(wǎng)絡(luò)替代YOLOv5l 中的骨干網(wǎng)絡(luò),實現(xiàn)輕量級特征提取網(wǎng)絡(luò),減少整個網(wǎng)絡(luò)的參數(shù)數(shù)量,提高模型檢測速度。模型參數(shù)量下降了2.0 倍,GFLOPs 下降了2.6 倍。為了改善輕量化模型帶來的平均精度均值損失,在最終特征融合使用參數(shù)量極少的ECA 注意力機制彌補了輕量級網(wǎng)絡(luò)缺失的精確度。為更加高效的橋梁裂縫自動檢測奠定基礎(chǔ)。