閆衛(wèi)坡,王志斌,任祖躍,來程軒,胡錦程,張子雄
(1.北京市首都公路發(fā)展集團有限公司公路資產(chǎn)管理分公司,北京 101116;2.中央民族大學(xué) 信息工程學(xué)院,北京 100086)
隨著我國高速公路骨干網(wǎng)的高速建設(shè)與完善,高速公路荷載在迅速激增,道路病害問題隨之浮現(xiàn)眼前,道路裂縫病害尤為嚴(yán)重[1]。目前,在理想情況下的道路裂縫識別算法研究已取得一定的成果,但在實際道路中背景間存在灰度值重疊等因素干擾[2],為識別道路裂縫帶來了巨大挑戰(zhàn)[3]。
傳統(tǒng)裂縫檢測基于數(shù)字圖像處理方法,提取、分類圖像中裂縫的顏色、形狀、邊緣等特征。Oliveira 等[4]利用裂縫與背景的灰度值差異進行檢測,在實際道路情況下效果不佳。王興等[5]使用小波變換識別復(fù)雜道路裂縫,但在高速行駛時數(shù)據(jù)采集存在大量噪聲,無法較好地檢測不連續(xù)的裂縫。
隨著深度學(xué)習(xí)技術(shù)不斷發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的檢測方法逐漸被應(yīng)用到工業(yè)領(lǐng)域[6]。游江川等[7]提出一種改進RCNN 的瀝青路面裂縫檢測方法,精度達(dá)到91.25%,但檢測速度較慢,無法適用于快速形式場景中。徐康等[8]提出一種改進Faster-RCNN 的瀝青路面裂縫檢測方法,精度達(dá)到85.64%,但需要大量參數(shù)和浮點運算,不適合資源受限的移動部署平臺。顧書豪等[9]提出一種增強語義信息與多通道特征融合的裂縫自動檢測算法,通過添加擴張卷積模塊及注意力機制,提升模型對特征細(xì)節(jié)的提取能力。
2014 年后,基于深度學(xué)習(xí)的目標(biāo)檢測網(wǎng)絡(luò)井噴式爆發(fā),例 如R-CNN[10]、Fast-RCNN[11]、Faster-RCNN[12]、Mask-RCNN[13]、AlexNet[14]等二階段網(wǎng)絡(luò)。現(xiàn)有深度學(xué)習(xí)方法在理想情況下,在道路裂縫檢測中取得了不錯的效果,但應(yīng)用到高速行駛的實際應(yīng)用場景中仍存在以下問題:①網(wǎng)絡(luò)需消耗大量資源;②實時性不佳;③多尺度精度低。針對以上問題,本文選擇計算量少、速度快的onestage 檢測算法——YOLOv5 進行實驗,其內(nèi)存大小僅為14.10 M,在自帶的4 個版本中最輕量級。YOLOv5 在檢測目標(biāo)時,只需將圖片送入網(wǎng)絡(luò)一次就能完成分類及定位任務(wù)。
綜上,YOLOv5 的特點非常適合低成本且對實時性有要求的工業(yè)場景。為了進一步提升網(wǎng)絡(luò)檢測能力,在YOLOv5 網(wǎng)絡(luò)模型中添加CBAM 注意力機制,從通道、空間兩個維度定位目標(biāo)提升模型檢測能力。此外,引入BiFPN 結(jié)構(gòu)解決多尺度精度低的問題,BiFPN 相較于FPN-PAN 結(jié)構(gòu)可在不同尺度的特征融合過程中,自適應(yīng)區(qū)分不同輸入的重要程度,以此緩解多尺度融合精度低的問題,提升網(wǎng)絡(luò)的表達(dá)能力。
本文研究基于YOLOv5s 模型進行改進,YOLOv5 從小到大依次分為YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x 共4 個模型,網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入端、Backbone、neck、head 組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
Fig.1 YOLOv5 model structure圖1 YOLOv5模型結(jié)構(gòu)
由圖1 可見,輸入端對輸入圖像進行Mosaic 數(shù)據(jù)增強、自適應(yīng)錨框、自適應(yīng)圖像增強等預(yù)處理。由于Mosaic可隨機選取4 張圖片通過拼接、縮放、翻轉(zhuǎn)等操作豐富數(shù)據(jù)集,同時在新的圖像中保留原本4 張圖片的真實框,該操作可一次計算4 張圖片的數(shù)據(jù),進而節(jié)省GPU 的顯存,因此本文使用Mosaic 方法擴容數(shù)據(jù)集。Backbone 為CSPDarknet53 主干網(wǎng)絡(luò)、輸入圖像經(jīng)過主干網(wǎng)絡(luò)提取到豐富的特征。Neck 核心則為特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks,F(xiàn)PN)[15]和路徑聚合網(wǎng)絡(luò)(Path Aggregation Networks,PAN)結(jié)構(gòu),該結(jié)構(gòu)通過Concat 操作將自下而上和自上而下的Feature map 橫向連接,進而融合深層和淺層不同尺度的特征,融合后的特征具有高級語義信息,有助于檢測小目標(biāo),提升網(wǎng)絡(luò)表達(dá)能力。Head 為YOLOv5 的檢測結(jié)構(gòu),網(wǎng)絡(luò)最終輸出80×80、40×40、20×20 尺寸的特征圖分別檢測小、中、大目標(biāo)。通過交叉熵函數(shù)計算分類、置信度損失,CIoU 函數(shù)計算定位損失,并基于非極大值抑制(Non-Maximum Suppression,NMS)提升網(wǎng)絡(luò)預(yù)測精度。
為了提升模型對高速道路的裂縫病害的檢測能力,本文提出一種基于改進的YOLOv5 道路病害目標(biāo)檢測模型,網(wǎng)絡(luò)結(jié)構(gòu)如表1 所示。首先在主干網(wǎng)絡(luò)中添加注意力模塊(Convolutional Block Attention Module,CBAM)[16]加強特征提??;然后,在Neck 中將FPN-PAN 結(jié)構(gòu)替換為雙向特征 金字 塔(Bi-Directional Feature Pyramid Network,BIFPN),為不同輸入添加權(quán)重,讓網(wǎng)絡(luò)區(qū)分輸入特征的重要程度進而加強多尺度融合;最后,在BiFPN 結(jié)構(gòu)中加入CBAM 模塊,以在多尺度融合后進一步關(guān)注關(guān)鍵特征,加強對主要特征的提取,進而實現(xiàn)在裂縫病害密度較高的道路中精準(zhǔn)定位裂縫。
Table 1 Network structure of improved YOLOv5表1 改進后YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
在骨干網(wǎng)絡(luò)中,本文首先更替Focus 和SPP,將位于第一層的Focus 改為6×6 的Conv 模塊,兩者作用等價,但對現(xiàn)有一些GPU 設(shè)備,卷積層相較于Focus 更高效。然后,將SPP 模塊替換為空間金字塔模塊(Spatial Pyramid Pooling,SPPF),將輸入串行通過多個5×5 卷積大小的Maxpool 層,雖然相較于SPP 而言計算結(jié)果一致,但速度更快。SPPF 結(jié)構(gòu)如圖2所示。
Fig.2 Structure of SPPF圖2 SPPF結(jié)構(gòu)
為了解決裂縫在圖像中占比較小、與道路材質(zhì)的灰度值重疊、修補裂縫形態(tài)相似等問題,本文引入CBAM 特征注意力模塊。該模塊是一個輕量級的卷積注意力模塊,適合移動部署,內(nèi)部包含通道和空間注意力模塊,能從空間、通道兩個維度定位、識別目標(biāo)并細(xì)化提取的特征,避免了由卷積導(dǎo)致冗余信息淹沒目標(biāo)的問題。此外,為避免過早加入注意力機制,導(dǎo)致網(wǎng)絡(luò)關(guān)注重點發(fā)生偏差,將該模塊加在骨干網(wǎng)絡(luò)的最后一層。CBAM 如圖3所示。
Fig.3 Structure of CBAM圖3 CBAM注意力模塊結(jié)構(gòu)
由圖3 可見,CBAM 整體運算由通道、空間注意力結(jié)構(gòu)組成。首先,feature map 進入通道注意力模塊,經(jīng)過Max-Pool 和AvgPool,此時特征圖大小將由C×H×W 轉(zhuǎn)為C×1×1;然后,將變化后的特征圖送入共享全連接層(Share MLP),將兩個輸出先后相加、Sigmoid 激活,得到通道權(quán)重;接下來,再將通道權(quán)重與輸入相乘,得到經(jīng)通道注意力模塊調(diào)整后的特征圖F 并將其輸入空間注意力機制,經(jīng)過Max-Pool 和AvgPool 后F 的大小將由C×H×W 轉(zhuǎn)為1×H×W;再之,對輸出的兩個特征圖進行concat 操作,此時特征圖大小將由1×H×W 轉(zhuǎn)為2×H×W,同時利用7×7 卷積降維1 通道的特征圖。最后,通過Sigmoid 函數(shù)激活得到空間權(quán)重,并將空間權(quán)重與輸入特征圖F 相乘得到調(diào)整后的最終feature map。
由于在網(wǎng)絡(luò)卷積過程中,隨著層數(shù)增加特征信息會在不同程度上逐層丟失,并且深層與淺層特征在跨尺度融合時具有不同的分辨率,將直接影響輸出結(jié)果,因此本文將原有FPN-PAN 結(jié)構(gòu)替換為BiFPN 加權(quán)特征雙向金字塔,采用不同尺度間連接融合的方法豐富語義信息,避免因網(wǎng)絡(luò)層數(shù)加深導(dǎo)致的特征信息丟失問題。同時,BiFPN 結(jié)構(gòu)在不同尺度特征融合過程中引入自適應(yīng)權(quán)重,可讓網(wǎng)絡(luò)自行區(qū)分輸入特征的重要程度,根據(jù)權(quán)重抑制或增強輸入特征,以平衡不同尺度間的特征信息。
綜上,相較于FPN-PAN 結(jié)構(gòu)直接對不同輸入進行Concat 操作,BiFPN 結(jié)構(gòu)具有更好的特征融合效果,能提升網(wǎng)絡(luò)表達(dá)能力,具體加權(quán)公式如式(1)。
式中:wi代表可學(xué)習(xí)的權(quán)重,隨著模型不斷訓(xùn)練,該參數(shù)值會隨著優(yōu)化器更新,向著使損失函數(shù)最小值的方向變更,在初始化時設(shè)定值為1;fmi代表網(wǎng)絡(luò)結(jié)構(gòu)中的輸入特征圖;?=0.000 1;ReLU 函數(shù)將權(quán)重細(xì)數(shù)規(guī)范到0~1。
網(wǎng)絡(luò)中某一層的融合方式如圖4 所示。由式(1)可知,特征融合過程與輸出如式(2)、式(3)所示。
Fig.4 Cross-layer convergence architecture圖4 跨層融合結(jié)構(gòu)
此外,本文還改進了BiFPN 結(jié)構(gòu),在跨尺度特征融合完成卷積后,在Backbone 的尾部與Head 添加CBAM 注意力模塊,以突出關(guān)注的特征,提升網(wǎng)絡(luò)表達(dá)能力。融合CBAM 模塊的BiFPN 結(jié)構(gòu)如圖5所示。
Fig.5 BiFPN incorporating CBAM modules圖5 融合CBAM模塊的BiFPN結(jié)構(gòu)
本文試驗操作系統(tǒng)為Linux,基于GPU、Pytorch 和CUDA 框架完成,具體參數(shù)如圖表2所示。
Table 2 Test platform parameters表2 實驗平臺參數(shù)
為了讓研究模型對真實道路病害情況進行訓(xùn)練,學(xué)習(xí)到最符合真實情況下的道路病害特征,提升算法泛化能力。本文數(shù)據(jù)集來源于北京高速交通(首發(fā)集團),使用固定在高速巡航車上的攝像頭拍攝的實際高速道路,研究對象包括裂縫、修補裂縫、伸縮帶3 類。其中,裂縫最為常見且數(shù)量龐大;修補裂縫雖然并非為高速道路病害,但數(shù)量眾多且容易與裂縫病相互混淆;伸縮帶并非為道路病害,但由于特征較為明顯,同時也是實際工作中需要檢修的重點,因此將其納入研究對象。
研究共采集圖片2 164 張,標(biāo)注了4 916 個目標(biāo),按照8∶2 的比例劃分訓(xùn)練集、驗證集。其中,訓(xùn)練集共有1 715 張圖片,標(biāo)注裂縫2 047 個、修補裂縫1 804 個、伸縮帶62 個;驗證集中共有449 張圖片,標(biāo)注了裂縫563 個、修補裂縫421個、伸縮帶19個。數(shù)據(jù)集樣例如圖6所示。
Fig.6 Sample images圖6 樣例圖片
本文采用精確度(Precision,P)、召回率(Recall,R)、平均精確度(Average Precision,AP)和平均精確度均值(Mean average Precision,mAP)作為模型評測指標(biāo),具體混淆矩陣如表3 所示。其中,召回率直接反映識別為正確的目標(biāo)中實際為正樣本(TP)占所有正樣本的比值(TP+FN),如式(4)所示;精確度直接反映識別為正確的目標(biāo)中實際為正樣本(TP)占所有識別為正確目標(biāo)的比值(TP+FP),如式(5)所示;平均精確度如式(6)所示;mAP是對所有類別的平均精度(AP)求均值后獲得,如式(7)所示。
Table 3 Confusion matrix表3 混淆矩陣
式中:AP代表平均精確度;APj代表第j類目標(biāo)檢測的平均精度;c代表標(biāo)記的類別;mAP代表平均精確度均值。
式中:AP@0.5j代表交并比閾值為0.5 的情況下第j類目標(biāo)的平均精確度;c代表標(biāo)記的類別;mAP@0.5代表交并比閾值為0.5時平均精確度均值。
實驗中輸入圖像尺度為640×640,Batch-size 為16,訓(xùn)練200 輪,初始學(xué)習(xí)率為0.01,優(yōu)化函數(shù)采用隨機梯度下降算法(Stochastic Gradient Descent,SGD),改進后的P-R 曲線如圖7 所示。由此可見,裂縫、修補裂縫、伸縮帶的mAP@0.5 分別達(dá)到了45.8%、62.9%、93.8%,所有類別的mAP@0.5 達(dá)到67.5%。改進YOLOv5 模型、Precision、Recall和mAP@0.5的結(jié)果如表4所示。
Table 4 Precision,Recall and mAP@0.5 results of improved YOLOv5 model表4 改進YOLOv5模型Precision、Recall和mAP@0.5結(jié)果(%)
Fig.7 P-R curve of YOLOv5圖7 YOLOv5的P-R曲線
改進YOLOv5 模型和原YOLOv5 模型訓(xùn)練200 輪后的3類loss如圖8所示。
Fig.8 Training loss comparison function圖8 訓(xùn)練損失對比函數(shù)
圖8(a)為基于CIoU 函數(shù)計算的邊框回歸損失(box_loss),由此可見改進模型的邊框回歸損失優(yōu)于原模型。在訓(xùn)練前50 輪,原YOLOv5 模型表現(xiàn)更好,但隨著網(wǎng)絡(luò)不斷學(xué)習(xí),改進模型對網(wǎng)絡(luò)的優(yōu)化更快。其中,分類概率損失(cls_loss)和置信度損失(obj_loss)均基于交叉熵函數(shù)。由圖8(b)可見,改進模型置信度損失始終小于原YOLOv5 模型,但由于模型使用SGD 隨機梯度下降算法,會導(dǎo)致整個訓(xùn)練過程中存在輕微震蕩的情況。由圖8(c)可見,改進模型分類概率損失基本始終優(yōu)于原模型,且在20 輪后逐漸趨于平穩(wěn),證明網(wǎng)絡(luò)對數(shù)據(jù)集已具備較為準(zhǔn)確的分類能力。
為驗證改進模型的性能,本文針對當(dāng)前主流的單階段目標(biāo)檢測模型進行比較分析,每個模型訓(xùn)練環(huán)境相同,實驗結(jié)果如表5所示。
Table 5 Experimentation comparison表5 實驗比較
由表5 可見,改進YOLOv5 在mAP@0.5 指標(biāo)中相較于YOLOv7-tiny-silu 模型降低0.4%,但mAP@0.5:0.95 提升1.8%。YOLOv7 雖然在以上兩個指標(biāo)取得了優(yōu)秀的表現(xiàn),但計算量、參數(shù)量非常大。改進YOLOv5 算法在與其他復(fù)雜度相似的模型中,兩項平均精度均值指標(biāo)的表現(xiàn)十分優(yōu)秀。在7 組實驗中,改進YOLOv5 在mAP@0.5 中排名第2,在mAP@0.5:0.95 中排名第3,在YOLOv5 中加入注意力機制、改進融合網(wǎng)絡(luò)結(jié)構(gòu)后,雖然在參數(shù)量、計算量分別增加15.4%、6%,但平均精度均值提升明顯。
總體而言,改進YOLOv5模型在保持輕量級的同時,還具備較高的檢測能力,在低成本的工業(yè)檢測任務(wù)中相較于大多數(shù)模型能發(fā)揮更好的作用。
為了更直觀地展示原模型和改進模型的區(qū)別,隨機選取部分檢測結(jié)果,如圖9所示。
Fig.9 Detection results圖9 檢測結(jié)果
由圖9 中Image1 可見,改進網(wǎng)絡(luò)能提取更豐富的特征,可識別先前未能識別的裂縫,漏檢率得到了改善。由圖9 中Image2 可見,改進模型識別先前置信度低的目標(biāo)的性能也具有明顯提升。由圖9 中Image3 可見,改進模型對先前誤檢的目標(biāo)進行了改正,識別精確度得到了顯著提升。通過上述多種檢測數(shù)據(jù)可知,改進模型相較于原模型提升較大,能精確檢測、識別高速道路上的病害目標(biāo)。
為繼續(xù)探究改進算法的檢測能力,本文在相同環(huán)境下共設(shè)計了4組消融實驗,實驗結(jié)果如表4所示。
由表6 可見,在引入CBAM 注意力模塊后模型的mAP@0.5、mAP@0.5:0.95 提升十分明顯,在幾乎不增加網(wǎng)絡(luò)參數(shù)的前提下,既能降低計算量,還能有效提升網(wǎng)絡(luò)的定位及邊框預(yù)測能力。檢測效果證明了引入CBAM 模塊后,網(wǎng)絡(luò)特征提取能力得到增加,既保留了需要關(guān)注的特征,又有效避免了由卷積冗余導(dǎo)致的信息丟失問題。
Table 6 Comparison of target mAP by each category表6 各類別目標(biāo)mAP比較
在更換特征融合結(jié)構(gòu)后,模型的表現(xiàn)相較于僅添加CBAM 模塊更優(yōu)秀,mAP@0.5 提升1.6%,mAP@0.5:0.95 提升0.2%。雖然更換BiFPN 結(jié)構(gòu)后,參數(shù)量、計算量均存在小幅度增加,但自適應(yīng)權(quán)重相較于FPN-PAN 結(jié)構(gòu)的等價融合效果更佳,既在一定程度上區(qū)分了融合時的輸入,又平衡了輸入的重要程度,還提升了網(wǎng)絡(luò)表達(dá)能力。
綜上,改進YOLOv5 模型相較于原YOLOv5s,mAP@0.5、mAP@0.5:0.95 分別提升33.5%、21.5%,參數(shù)量增加14.7%,GFLOPs 增加6%,模型特征提取、目標(biāo)邊界的回歸能力得到顯著增強。
相較于檢測建筑裂縫[21],裂縫檢測環(huán)境更復(fù)雜、難度更大,陽光折射造成的反光及高速移動造成的模糊時將增加檢測難度,同時修補裂縫與裂縫災(zāi)害形態(tài)相似,易造成系統(tǒng)誤檢測。
基于YOLOv5 模型[22]檢測公路災(zāi)害的精度約為45%,mAP@0.5 約為40%。在同等復(fù)雜背景、干擾因素更多的情況下,本文改進YOLOv5 模型精度為75.2%,mAP@0.5 為67.5%。同時,引入Ghost 模塊[23]和ECA 的YOLOv4 公路路面裂縫檢測方法[24]的參數(shù)量達(dá)到11.18 M,圖片檢測速度為0.083 張/s,而本文模型參數(shù)量為8.2 M,圖片檢測速度為0.037 張/s。
然而,本文研究存在許多不足之處。例如,本文僅對3類道路災(zāi)害進行分類識別,在復(fù)雜的公路環(huán)境中還存在其他類別的病害[25]。下一步,應(yīng)擴大數(shù)據(jù)集、病害研究的廣度與深度,提升模型的魯棒性與檢測性能,使其能夠適應(yīng)更加復(fù)雜多變的高速道路環(huán)境。此外,可更換拍攝設(shè)備獲取更優(yōu)質(zhì)的數(shù)據(jù)集,以提升模型對道路病害的檢測效果。
本文為解決當(dāng)前高速道路裂縫的錯檢、漏檢、精度低等問題,提出一種基于YOLOv5 改進的道路裂縫識別模型。首先在改進YOLOv5模型的骨干網(wǎng)絡(luò)中添加注意力機制,以此獲取更多細(xì)節(jié)特征,并替換骨干網(wǎng)絡(luò)中的Focus、SPP 等模塊來提升模型識別速度。具體為,在特征融合層采用BiFPN 加權(quán)雙向特征金字塔網(wǎng)絡(luò)進行多尺度特征融合,并在檢測頭處進行修改,還添加了CBAM 注意力機制來強化網(wǎng)絡(luò)表達(dá)能力。
在真實道路的測試效果表明,改進算法的平均精度值能達(dá)到75.2%,F(xiàn)PS 可達(dá)到27.3,基本滿足高速檢測的精確度與檢測速度需求。然而,本文僅對3 類道路災(zāi)害進行分類識別,仍需進一步完善數(shù)據(jù)庫。此外,希望開發(fā)出具有完整界面和軟硬件平臺的道路災(zāi)害分類系統(tǒng),以便于道路巡檢工作人員檢修與保養(yǎng)道路。