彭家旭, 顧亦然,2
(1.南京郵電大學 自動化學院、人工智能學院, 江蘇 南京 210230;2.南京郵電大學 智慧校園研究中心, 江蘇 南京 210230)
公路橋梁是我國交通基礎設施體系中的一項重要組成部分。根據中華人民共和國交通運輸部《2020 年交通運輸行業發展統計公報》[1]顯示,截至2020 年末,全國公路橋梁91.28 萬座,其中特大橋梁6 444 座,大橋119 935 座。目前,我國橋梁多為鋼筋混凝土結構,約占橋梁總數[2]的90%,在長期使用的過程中,由于受到車輛荷載、溫度變化及其他因素影響,局部路面出現不均勻沉降、平整度不足等狀況,橋梁路面結構也出現了裂縫、保護層脫落等問題。有關專家認為,我國40%的橋梁在役時間超過25 年,屬于“老齡化”橋梁[3]。由于橋梁瀝青路面養護多次大修中的銑刨、重鋪,使路面結構與設計初期存在較大差異,部分路段裂縫問題嚴重;其次,有些路面未能及時監測保養,路面表面損害嚴重,行車舒適性顯著降低,路面使用壽命大打折扣。
我國當前所使用的橋梁檢測手段仍然是以傳統的人工檢測為主,但人工檢測過程中需要占道施工,對行車安全以及檢測人員的安全都造成了一定的威脅,而且人工檢測的工作量大、效率低、主觀性強,難以保證評估結果的準確性與客觀性。
深度學習被廣泛用于機器視覺、自然語言處理等領域,相比傳統目標檢測算法,基于深度學習的目標檢測技術可以自動提取目標特征[4],使特征表達更具魯棒性和泛化性[5]。根據有無候選框生成階段作為區分[6],基于深度學習的目標檢測技術主要分為雙階段模型和單階段模型,雙階段模型有R-CNN[7]、FastR-CNN[8]、FasterRCNN[9]、MaskR - CNN[10]等,單 階 段 模 型 有SSD[11]、DSSD[12]、YOLO[13]、YOLOv2[14]、YOLOv3[15]、YOLOv4[16]等。
YOLO 系列目標檢測算法是一種檢測精度高、速度快且檢測性能好的單階段檢測器。因此,本文以YOLO系列中較為先進的YOLOv5s 算法作為研究對象。YOLO 的整體思想是將整張圖作為神經網絡的輸入,把目標檢測的整個過程轉化成一個回歸問題,通過搭建的整個網絡結構輸出目標的坐標位置和它屬于哪一個類別,達到定位檢測的目的。基于深度學習的目標檢測彌補了傳統方法硬件成本高、現場布置復雜等缺點,對橋梁檢測工作有著較大的幫助,對未來橋梁養護也有著深遠意義。
YOLOv5s 網絡是YOLOv5 系列中深度最小、特征圖寬度最小的網絡。YOLOv5s 由Input、Backbone、Neck、Head 四個部分組成,圖1 所示為YOLOv5s 模型結構。
Input 部分進行Mosaic 數據增強、自適應錨框計算[16]及自適應圖片縮放。Mosaic 數據增強豐富了圖片信息,對圖片隨機縮放,再隨機分布進行拼接,大大豐富了檢測數據集,特別是隨機縮放增加了很多小目標,讓網絡的魯棒性更好。自適應錨框計算針對不同的數據集都會有初始設定長寬的錨框,訓練時網絡在初始錨框的基礎上輸出預測框,進而和真實框進行比對,計算兩者差距,再反向更新,迭代網絡參數。自適應圖片縮放可以有效提高檢測的準確率。
Backbone 部 分 主 要 包 含CBL 模 塊、Focus 模 塊、CSP[17]模塊、SPP[18]模塊。CBL 為標準卷積模塊,包括普通卷積層Conv、批量歸一化層BN 和Leaky ReLU 激活函數層。Focus 模塊是對圖片進行切片操作,具體操作是:在一張圖片中每隔一個像素取一個值,類似于鄰近下采樣,可以得到4 張采樣圖片,4 張圖片互補。CSP 模塊是將原輸入分成兩個分支,分別進行卷積操作使得通道數減半,然后進行Bottleneck·N操作,Concat 兩個分支使得Bottlenneck CSP 的輸入與輸出一樣大小,讓模型獲得更多的特征。SPP 模塊稱為空間金字塔池化模塊,通過引入不同的池化核來提取特征圖中不同大小目標的特征。
Neck 部分采用了PANET[19]的結構,將特征金字塔網絡(Feature Pyramid Network, FPN)[20]和路徑聚合網絡(Path Aggregation Network, PAN)[19]相結合。其中,FPN是自頂向下,將深層的語義特征傳遞到淺層,增強了語義信息,不過對淺層的定位信息沒有傳遞;PAN 是對FPN 的補充,在FPN 的后面添加了一個自底向上的金字塔結構,將淺層的強定位特征傳遞到深層。FPN 和PAN又被稱為“雙塔戰術”。Head 部分中的主體部分就是3 個Detect 檢測器,即利用基于網格的anchor 在不同尺度的特征圖上進行目標檢測的過程。 采用了Boundingbox 損失函數和NMS 非極大值抑制。非極大值抑制主要是用來抑制檢測時出現冗余的框。
對現有YOLOv5s 網絡結構進行擴展和優化,使網絡結構更簡單、更輕量。本文在刪除部分網絡結構的同時,還嵌入了注意力機制模塊,這樣網絡就不會失去太多的準確性。CBAM 模塊是一種的輕量級注意力模塊,模塊結構如圖2 所示,可以在通道和空間維度上增加關注。CBAM 模塊由通道注意力模塊和空間注意力模塊兩個獨立的子模塊組成,分別在通道和空間中添加注意力模塊,不僅可以節省參數和計算能力,還可以確保它作為即插即用模塊插入現有的網絡架構中。CBAM 模塊在特征映射上操作,通過通道注意力模塊和空間注意力模塊更細化地提取特征,提高了模型的表現力。本文在C3 模塊中相鄰的瓶頸模塊之間增加了CBAM 模塊,如圖3 所示,該模型稱為YOLOv5s-CBAM 模型。

圖2 CBAM 模塊結構

圖3 本文CBAM 模塊結構
通道注意力模塊是將特征圖輸入注意力模塊,分別為全局繪制池和空間最大池,然后分別變成兩層神經網絡,將這兩個特征與Sigmoid 激活函數相結合,得到權系數Mc,將權系數與原有特征相乘可以得到新特征F,公式如下:
式中MLP 為多層感知機。
空間注意力模塊是對獲得的新特征進行平均池化和最大池化,然后把兩個輸出進行拼接,經過一個7×7的卷積層和Sigmoid 激活函數后,得到權系數Ms,再乘以F′得到F″。最后,將F″與原始輸入相加,得到整個CBAM 輸出的新特征,公式如下:
式中:AvgPool 為平均池化;MaxPool為最大池化。
由于原YOLOv5 模型結構大、層次深、參數多,考慮到模型的運行速度和精度,本文進行了信道修改和刪除,刪除了所有不重要的信道。但修改強度大、刪除層數多會影響精度,因此,增加了CBAM 注意機制模塊,確保在信道刪除時通過調整注意力機制將模型保持到一定的精度。
YOLOv5s 模型的輸入圖像大小一般為640×640、80×80、40×40、20×20。特征圖中的1 個像素分別對應輸入圖像的8、16 和32 個像素。當輸入圖像被下采樣到20×20 時,圖像中小于32×32 的像素目標會被壓縮到小于一個像素點的大小,這樣目標的特征信息會丟失更多,所以用20×20 的檢測頭檢測更小的目標是沒有意義的。橋梁路面裂縫經圖像拍攝上傳后,表現效果差異不大,屬于小目標檢測,由于大目標檢測探頭檢測小目標意義不大,因此刪除了20×20 大目標檢測頭,針對優化后目標尺寸的特點,YOLOv5s-CBAM 模型結構如圖4 所示。

圖4 YOLOv5s-CBAM 模塊結構
本文研究對象為國內低等級橋梁,制作訓練集的過程中,從Github 上的橋梁裂縫數據集的開源圖片中選出了2 068 張裂縫的圖片。由于數據集中的圖像不足,因此本文決定使用數據增強來擴展數據集。
本文將原始圖像按1∶4 的比例展開,對圖像進行裁剪、旋轉、平移、鏡像等操作,最終獲得8 190 張圖片。5 000 張圖分配給訓練集,2 200 張分配給驗證集,990 張分配給測試集。由于圖像分辨率較高,直接計算量過多,因此將圖像縮放到416×416 像素,并盡可能添加不同尺度和角度的橋梁裂縫,這樣有利于避免訓練過程中出現過擬合現象,從而提高網絡的泛化能力。
根據要求,將圖像轉換為VOC 格式,使用LabeImg標注工具對圖像進行標注,將橋梁裂縫的位置標記為橫向裂縫(Transverse)、縱向裂縫(Longitudinal)、斜向裂縫(Oblique)以及交叉裂縫(Cross),如圖5 所示。

圖5 數據集標注
本實驗使用的配置如下:計算機系統使用Windows 10, CPU 使 用 AMDRyzen55600X, GPU 使 用NVIDIAGeForceRTX3070,深度學習框架使用Pytorch。
表1 所示為不同模型大小對比。從表1 可以看出,改進后的YOLOv5s 模型網絡結構層數減少了36.3%,參數數量減少了77%,都比原來的YOLOv5s 模型要小得多,加快了運算速度,更容易放入移動設備中進行檢測。

表1 模型大小對比
實驗采用準確率(Precision,P)、召回率(Recall,R)、F1分數(F1score)平均精度均值和每秒幀數來評價目標檢測方法的性能。準確率、召回率和F1分數計算公式如下:
式中:TP 為被正確檢出的目標數;FP 為被錯誤檢出的目標數;FN 表示未被檢測出的目標數。
本文YOLOv5s-CBAM 的檢測效果如圖6 所示,利用改進模型對橋梁裂縫進行檢測和分析,裂縫識別結果如表2 所示。從實驗結果來看,改進的基于YOLOv5s 的橋梁裂縫檢測模型對不同裂縫類型具有較好的識別效果。模型總體準確率、召回率和F1分數分別為91.8%、92.6%和91.9%。綜上,YOLOv5s-CBAM 模型可實現高精度的裂縫識別定位。

表2 裂縫識別結果 %

圖6 YOLOv5s-CBAM 的檢測效果
本文算法與其他目標檢測算法的對比實驗結果來自COCO 數據集,將YOLOv5s-CBAM 與其他目標算法的性能進行對比,結果如表3 所示。

表3 不同模型的算法檢測結果對比
由表3 可知:YOLOv5s-CBAM 和YOLOv3、YOLOv4、YOLOv5s 相比,模型參量更小,mAP 有明顯提升,并且FPS 也有提升。實驗結果表明,相較于YOLOv3、YOLOv4 這些模型較大的算法并綜合模型參數量、mAP和FPS 來看,本文模型mAP@0.5 為85.3%,相比改進前提高了7.2 個百分點,模型參量僅為5.1 MB,相比之前降低了2.1 MB,YOLOv5s-CBAM 有更好的性能,在刪除通道并嵌入CBAM 注意力模塊后,增強了模型在復雜背景下的特征提取能力,提高了模型的檢測精度,并且提升了檢測速度。
本文針對橋梁裂縫檢測模型內存消耗大、實時性差等問題,提出了一種基于YOLOv5s 目標檢測模型的改進輕量級檢測模型,在盡可能保證精度的前提下,根據目標尺寸的特點刪減網絡層數、裁剪通道、增加注意力機制。實驗結果表明,與其他主流的目標檢測算法相比,本文方法具有更高的準確率和效率,可以大大提高橋梁裂縫檢測的效率和安全性。