彭家旭, 顧亦然,2
(1.南京郵電大學(xué) 自動化學(xué)院、人工智能學(xué)院, 江蘇 南京 210230;2.南京郵電大學(xué) 智慧校園研究中心, 江蘇 南京 210230)
公路橋梁是我國交通基礎(chǔ)設(shè)施體系中的一項(xiàng)重要組成部分。根據(jù)中華人民共和國交通運(yùn)輸部《2020 年交通運(yùn)輸行業(yè)發(fā)展統(tǒng)計(jì)公報(bào)》[1]顯示,截至2020 年末,全國公路橋梁91.28 萬座,其中特大橋梁6 444 座,大橋119 935 座。目前,我國橋梁多為鋼筋混凝土結(jié)構(gòu),約占橋梁總數(shù)[2]的90%,在長期使用的過程中,由于受到車輛荷載、溫度變化及其他因素影響,局部路面出現(xiàn)不均勻沉降、平整度不足等狀況,橋梁路面結(jié)構(gòu)也出現(xiàn)了裂縫、保護(hù)層脫落等問題。有關(guān)專家認(rèn)為,我國40%的橋梁在役時(shí)間超過25 年,屬于“老齡化”橋梁[3]。由于橋梁瀝青路面養(yǎng)護(hù)多次大修中的銑刨、重鋪,使路面結(jié)構(gòu)與設(shè)計(jì)初期存在較大差異,部分路段裂縫問題嚴(yán)重;其次,有些路面未能及時(shí)監(jiān)測保養(yǎng),路面表面損害嚴(yán)重,行車舒適性顯著降低,路面使用壽命大打折扣。
我國當(dāng)前所使用的橋梁檢測手段仍然是以傳統(tǒng)的人工檢測為主,但人工檢測過程中需要占道施工,對行車安全以及檢測人員的安全都造成了一定的威脅,而且人工檢測的工作量大、效率低、主觀性強(qiáng),難以保證評估結(jié)果的準(zhǔn)確性與客觀性。
深度學(xué)習(xí)被廣泛用于機(jī)器視覺、自然語言處理等領(lǐng)域,相比傳統(tǒng)目標(biāo)檢測算法,基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)可以自動提取目標(biāo)特征[4],使特征表達(dá)更具魯棒性和泛化性[5]。根據(jù)有無候選框生成階段作為區(qū)分[6],基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)主要分為雙階段模型和單階段模型,雙階段模型有R-CNN[7]、FastR-CNN[8]、FasterRCNN[9]、MaskR - CNN[10]等,單 階 段 模 型 有SSD[11]、DSSD[12]、YOLO[13]、YOLOv2[14]、YOLOv3[15]、YOLOv4[16]等。
YOLO 系列目標(biāo)檢測算法是一種檢測精度高、速度快且檢測性能好的單階段檢測器。因此,本文以YOLO系列中較為先進(jìn)的YOLOv5s 算法作為研究對象。YOLO 的整體思想是將整張圖作為神經(jīng)網(wǎng)絡(luò)的輸入,把目標(biāo)檢測的整個(gè)過程轉(zhuǎn)化成一個(gè)回歸問題,通過搭建的整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)輸出目標(biāo)的坐標(biāo)位置和它屬于哪一個(gè)類別,達(dá)到定位檢測的目的?;谏疃葘W(xué)習(xí)的目標(biāo)檢測彌補(bǔ)了傳統(tǒng)方法硬件成本高、現(xiàn)場布置復(fù)雜等缺點(diǎn),對橋梁檢測工作有著較大的幫助,對未來橋梁養(yǎng)護(hù)也有著深遠(yuǎn)意義。
YOLOv5s 網(wǎng)絡(luò)是YOLOv5 系列中深度最小、特征圖寬度最小的網(wǎng)絡(luò)。YOLOv5s 由Input、Backbone、Neck、Head 四個(gè)部分組成,圖1 所示為YOLOv5s 模型結(jié)構(gòu)。
Input 部分進(jìn)行Mosaic 數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算[16]及自適應(yīng)圖片縮放。Mosaic 數(shù)據(jù)增強(qiáng)豐富了圖片信息,對圖片隨機(jī)縮放,再隨機(jī)分布進(jìn)行拼接,大大豐富了檢測數(shù)據(jù)集,特別是隨機(jī)縮放增加了很多小目標(biāo),讓網(wǎng)絡(luò)的魯棒性更好。自適應(yīng)錨框計(jì)算針對不同的數(shù)據(jù)集都會有初始設(shè)定長寬的錨框,訓(xùn)練時(shí)網(wǎng)絡(luò)在初始錨框的基礎(chǔ)上輸出預(yù)測框,進(jìn)而和真實(shí)框進(jìn)行比對,計(jì)算兩者差距,再反向更新,迭代網(wǎng)絡(luò)參數(shù)。自適應(yīng)圖片縮放可以有效提高檢測的準(zhǔn)確率。
Backbone 部 分 主 要 包 含CBL 模 塊、Focus 模 塊、CSP[17]模塊、SPP[18]模塊。CBL 為標(biāo)準(zhǔn)卷積模塊,包括普通卷積層Conv、批量歸一化層BN 和Leaky ReLU 激活函數(shù)層。Focus 模塊是對圖片進(jìn)行切片操作,具體操作是:在一張圖片中每隔一個(gè)像素取一個(gè)值,類似于鄰近下采樣,可以得到4 張采樣圖片,4 張圖片互補(bǔ)。CSP 模塊是將原輸入分成兩個(gè)分支,分別進(jìn)行卷積操作使得通道數(shù)減半,然后進(jìn)行Bottleneck·N操作,Concat 兩個(gè)分支使得Bottlenneck CSP 的輸入與輸出一樣大小,讓模型獲得更多的特征。SPP 模塊稱為空間金字塔池化模塊,通過引入不同的池化核來提取特征圖中不同大小目標(biāo)的特征。
Neck 部分采用了PANET[19]的結(jié)構(gòu),將特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network, FPN)[20]和路徑聚合網(wǎng)絡(luò)(Path Aggregation Network, PAN)[19]相結(jié)合。其中,F(xiàn)PN是自頂向下,將深層的語義特征傳遞到淺層,增強(qiáng)了語義信息,不過對淺層的定位信息沒有傳遞;PAN 是對FPN 的補(bǔ)充,在FPN 的后面添加了一個(gè)自底向上的金字塔結(jié)構(gòu),將淺層的強(qiáng)定位特征傳遞到深層。FPN 和PAN又被稱為“雙塔戰(zhàn)術(shù)”。Head 部分中的主體部分就是3 個(gè)Detect 檢測器,即利用基于網(wǎng)格的anchor 在不同尺度的特征圖上進(jìn)行目標(biāo)檢測的過程。 采用了Boundingbox 損失函數(shù)和NMS 非極大值抑制。非極大值抑制主要是用來抑制檢測時(shí)出現(xiàn)冗余的框。
對現(xiàn)有YOLOv5s 網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行擴(kuò)展和優(yōu)化,使網(wǎng)絡(luò)結(jié)構(gòu)更簡單、更輕量。本文在刪除部分網(wǎng)絡(luò)結(jié)構(gòu)的同時(shí),還嵌入了注意力機(jī)制模塊,這樣網(wǎng)絡(luò)就不會失去太多的準(zhǔn)確性。CBAM 模塊是一種的輕量級注意力模塊,模塊結(jié)構(gòu)如圖2 所示,可以在通道和空間維度上增加關(guān)注。CBAM 模塊由通道注意力模塊和空間注意力模塊兩個(gè)獨(dú)立的子模塊組成,分別在通道和空間中添加注意力模塊,不僅可以節(jié)省參數(shù)和計(jì)算能力,還可以確保它作為即插即用模塊插入現(xiàn)有的網(wǎng)絡(luò)架構(gòu)中。CBAM 模塊在特征映射上操作,通過通道注意力模塊和空間注意力模塊更細(xì)化地提取特征,提高了模型的表現(xiàn)力。本文在C3 模塊中相鄰的瓶頸模塊之間增加了CBAM 模塊,如圖3 所示,該模型稱為YOLOv5s-CBAM 模型。
圖2 CBAM 模塊結(jié)構(gòu)
圖3 本文CBAM 模塊結(jié)構(gòu)
通道注意力模塊是將特征圖輸入注意力模塊,分別為全局繪制池和空間最大池,然后分別變成兩層神經(jīng)網(wǎng)絡(luò),將這兩個(gè)特征與Sigmoid 激活函數(shù)相結(jié)合,得到權(quán)系數(shù)Mc,將權(quán)系數(shù)與原有特征相乘可以得到新特征F,公式如下:
式中MLP 為多層感知機(jī)。
空間注意力模塊是對獲得的新特征進(jìn)行平均池化和最大池化,然后把兩個(gè)輸出進(jìn)行拼接,經(jīng)過一個(gè)7×7的卷積層和Sigmoid 激活函數(shù)后,得到權(quán)系數(shù)Ms,再乘以F′得到F″。最后,將F″與原始輸入相加,得到整個(gè)CBAM 輸出的新特征,公式如下:
式中:AvgPool 為平均池化;MaxPool為最大池化。
由于原YOLOv5 模型結(jié)構(gòu)大、層次深、參數(shù)多,考慮到模型的運(yùn)行速度和精度,本文進(jìn)行了信道修改和刪除,刪除了所有不重要的信道。但修改強(qiáng)度大、刪除層數(shù)多會影響精度,因此,增加了CBAM 注意機(jī)制模塊,確保在信道刪除時(shí)通過調(diào)整注意力機(jī)制將模型保持到一定的精度。
YOLOv5s 模型的輸入圖像大小一般為640×640、80×80、40×40、20×20。特征圖中的1 個(gè)像素分別對應(yīng)輸入圖像的8、16 和32 個(gè)像素。當(dāng)輸入圖像被下采樣到20×20 時(shí),圖像中小于32×32 的像素目標(biāo)會被壓縮到小于一個(gè)像素點(diǎn)的大小,這樣目標(biāo)的特征信息會丟失更多,所以用20×20 的檢測頭檢測更小的目標(biāo)是沒有意義的。橋梁路面裂縫經(jīng)圖像拍攝上傳后,表現(xiàn)效果差異不大,屬于小目標(biāo)檢測,由于大目標(biāo)檢測探頭檢測小目標(biāo)意義不大,因此刪除了20×20 大目標(biāo)檢測頭,針對優(yōu)化后目標(biāo)尺寸的特點(diǎn),YOLOv5s-CBAM 模型結(jié)構(gòu)如圖4 所示。
圖4 YOLOv5s-CBAM 模塊結(jié)構(gòu)
本文研究對象為國內(nèi)低等級橋梁,制作訓(xùn)練集的過程中,從Github 上的橋梁裂縫數(shù)據(jù)集的開源圖片中選出了2 068 張裂縫的圖片。由于數(shù)據(jù)集中的圖像不足,因此本文決定使用數(shù)據(jù)增強(qiáng)來擴(kuò)展數(shù)據(jù)集。
本文將原始圖像按1∶4 的比例展開,對圖像進(jìn)行裁剪、旋轉(zhuǎn)、平移、鏡像等操作,最終獲得8 190 張圖片。5 000 張圖分配給訓(xùn)練集,2 200 張分配給驗(yàn)證集,990 張分配給測試集。由于圖像分辨率較高,直接計(jì)算量過多,因此將圖像縮放到416×416 像素,并盡可能添加不同尺度和角度的橋梁裂縫,這樣有利于避免訓(xùn)練過程中出現(xiàn)過擬合現(xiàn)象,從而提高網(wǎng)絡(luò)的泛化能力。
根據(jù)要求,將圖像轉(zhuǎn)換為VOC 格式,使用LabeImg標(biāo)注工具對圖像進(jìn)行標(biāo)注,將橋梁裂縫的位置標(biāo)記為橫向裂縫(Transverse)、縱向裂縫(Longitudinal)、斜向裂縫(Oblique)以及交叉裂縫(Cross),如圖5 所示。
圖5 數(shù)據(jù)集標(biāo)注
本實(shí)驗(yàn)使用的配置如下:計(jì)算機(jī)系統(tǒng)使用Windows 10, CPU 使 用 AMDRyzen55600X, GPU 使 用NVIDIAGeForceRTX3070,深度學(xué)習(xí)框架使用Pytorch。
表1 所示為不同模型大小對比。從表1 可以看出,改進(jìn)后的YOLOv5s 模型網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)減少了36.3%,參數(shù)數(shù)量減少了77%,都比原來的YOLOv5s 模型要小得多,加快了運(yùn)算速度,更容易放入移動設(shè)備中進(jìn)行檢測。
表1 模型大小對比
實(shí)驗(yàn)采用準(zhǔn)確率(Precision,P)、召回率(Recall,R)、F1分?jǐn)?shù)(F1score)平均精度均值和每秒幀數(shù)來評價(jià)目標(biāo)檢測方法的性能。準(zhǔn)確率、召回率和F1分?jǐn)?shù)計(jì)算公式如下:
式中:TP 為被正確檢出的目標(biāo)數(shù);FP 為被錯(cuò)誤檢出的目標(biāo)數(shù);FN 表示未被檢測出的目標(biāo)數(shù)。
本文YOLOv5s-CBAM 的檢測效果如圖6 所示,利用改進(jìn)模型對橋梁裂縫進(jìn)行檢測和分析,裂縫識別結(jié)果如表2 所示。從實(shí)驗(yàn)結(jié)果來看,改進(jìn)的基于YOLOv5s 的橋梁裂縫檢測模型對不同裂縫類型具有較好的識別效果。模型總體準(zhǔn)確率、召回率和F1分?jǐn)?shù)分別為91.8%、92.6%和91.9%。綜上,YOLOv5s-CBAM 模型可實(shí)現(xiàn)高精度的裂縫識別定位。
表2 裂縫識別結(jié)果 %
圖6 YOLOv5s-CBAM 的檢測效果
本文算法與其他目標(biāo)檢測算法的對比實(shí)驗(yàn)結(jié)果來自COCO 數(shù)據(jù)集,將YOLOv5s-CBAM 與其他目標(biāo)算法的性能進(jìn)行對比,結(jié)果如表3 所示。
表3 不同模型的算法檢測結(jié)果對比
由表3 可知:YOLOv5s-CBAM 和YOLOv3、YOLOv4、YOLOv5s 相比,模型參量更小,mAP 有明顯提升,并且FPS 也有提升。實(shí)驗(yàn)結(jié)果表明,相較于YOLOv3、YOLOv4 這些模型較大的算法并綜合模型參數(shù)量、mAP和FPS 來看,本文模型mAP@0.5 為85.3%,相比改進(jìn)前提高了7.2 個(gè)百分點(diǎn),模型參量僅為5.1 MB,相比之前降低了2.1 MB,YOLOv5s-CBAM 有更好的性能,在刪除通道并嵌入CBAM 注意力模塊后,增強(qiáng)了模型在復(fù)雜背景下的特征提取能力,提高了模型的檢測精度,并且提升了檢測速度。
本文針對橋梁裂縫檢測模型內(nèi)存消耗大、實(shí)時(shí)性差等問題,提出了一種基于YOLOv5s 目標(biāo)檢測模型的改進(jìn)輕量級檢測模型,在盡可能保證精度的前提下,根據(jù)目標(biāo)尺寸的特點(diǎn)刪減網(wǎng)絡(luò)層數(shù)、裁剪通道、增加注意力機(jī)制。實(shí)驗(yàn)結(jié)果表明,與其他主流的目標(biāo)檢測算法相比,本文方法具有更高的準(zhǔn)確率和效率,可以大大提高橋梁裂縫檢測的效率和安全性。