李續(xù)穩(wěn) 張青哲
摘要:針對目前道路表面裂縫缺陷檢測方法普遍存在識別率低、實時性差以及多尺度特征下檢測效果不好等問題,提出一種改進的YOLOv5s算法模型。該算法引入SimAM三維帶權(quán)注意力機制且不引入額外參數(shù),在模型中融入加權(quán)雙向特征金字塔進行多尺度特征融合;同時改進預(yù)測框損失函數(shù),使得損失函數(shù)收斂更快。經(jīng)過對比實驗,改進后模型的裂縫檢測均值平均精度提高了2.2%,準(zhǔn)確率為90.5%,表明了模型的有效性。
關(guān)鍵詞:深度學(xué)習(xí);道路裂縫檢測;YOLOv5s;多尺度融合;注意力機制
中圖分類號:TP391.41? ? 文獻標(biāo)志碼:A? ? 文章編號:1671-0797(2023)17-0027-05
DOI:10.19514/j.cnki.cn32-1628/tm.2023.17.008
0? ? 引言
隨著深度學(xué)習(xí)快速發(fā)展,具有大量參數(shù)的神經(jīng)網(wǎng)絡(luò)可以提取到更多的圖像特征。張偉光等人基于卷積神經(jīng)網(wǎng)絡(luò)搭建了包含3個卷積層和2個全連接層的網(wǎng)絡(luò)模型,通過對比實驗得出結(jié)論,卷積神經(jīng)網(wǎng)絡(luò)具有更高的精度[1]。為使檢測速度更快、精度更高,有學(xué)者提出SSD[2]算法。王博等人對此算法進行優(yōu)化,用MobileNet網(wǎng)絡(luò)代替SSD特征提取網(wǎng)絡(luò)中的VGG模塊,并通過特征金字塔進行融合,構(gòu)建出輕量級的道路裂縫檢測算法[3]。YOLO系列目標(biāo)檢測算法經(jīng)過不斷更新,檢測速度和模型尺寸相比其他檢測模型更占優(yōu)勢。J. Zhang等人為提高檢測速度,用一些輕量級網(wǎng)絡(luò)代替YOLOv4中的特征提取網(wǎng)絡(luò)以使模型加速,減少了參數(shù)量和主干網(wǎng)絡(luò)層數(shù),使模型精度和速度更優(yōu),且模型更具輕量性[4]。為了提高復(fù)雜路面的識別精度,一些學(xué)者對YOLO系列算法進行了變體改進。R. Li等人使用半導(dǎo)體激光投射到路面裂縫上,再用攝像頭采集到更容易識別的圖像,將圖片輸進基于YOLO算法的PDNN神經(jīng)網(wǎng)絡(luò)以檢測路面坑洞,該方法適用于各種天氣的路面數(shù)據(jù)并能計算受損區(qū)域面積[5]。D. Ma等人基于改進的YOLO-MF和PCGAN對抗網(wǎng)絡(luò)對路面裂縫進行計數(shù)[6],實現(xiàn)了較高的準(zhǔn)確率和F1得分。彭雨諾等人提出了YOLO-lump和YOLO-crack用于提取稀疏表達的多尺度特征,能減少信息損失[7],達到了提高檢測精度和響應(yīng)速度的目的。本文使用YOLOv5s模型對道路裂縫進行檢測,并進行了結(jié)構(gòu)改進,以改善對深層特征信息的提取與利用,保證實時檢測的同時提高了檢測精度。
1? ? YOLO算法原理
1.1? ? 目標(biāo)檢測
目標(biāo)檢測是計算機視覺領(lǐng)域的重要研究方向之一,目標(biāo)檢測主要完成三個任務(wù):檢測出圖像中目標(biāo)的位置且同一張圖片可能存在多個檢測目標(biāo);檢測出目標(biāo)的大小范圍;對檢測到的目標(biāo)進行識別分類。最終輸出圖像中物體的類別和位置坐標(biāo)。二階段算法主要通過多個不同尺度的檢測框確定目標(biāo)候選區(qū)域,再進行分類回歸運算。而YOLO系列則是一階段目標(biāo)檢測算法,該系列算法能根據(jù)多個初始錨框一次性獲得多個回歸框的位置信息和分類信息,實現(xiàn)單階段目標(biāo)檢測的網(wǎng)絡(luò)訓(xùn)練。相比二階段算法,YOLO系列算法檢測速度更快。具有代表性的一階段算法還有SSD、ATSS和基于錨點的RepPoints等。
1.2? ? 算法結(jié)構(gòu)
YOLOv5s算法有四種模型:YOLOv5s、YOLOv5sm、YOLOv5sl、YOLOv5sx[8]。優(yōu)點是遷移能力強且識別速度快,對于欠實時系統(tǒng),YOLOv5s算法速度快于其他二階段檢測模型。本文使用YOLOv5s網(wǎng)絡(luò)作為基礎(chǔ)模型,由四部分組成:輸入層、主干網(wǎng)絡(luò)層、Neck層和輸出層。輸入層對圖像進行預(yù)處理、數(shù)據(jù)增強和自適應(yīng)錨框計算。在主干層,切片操作能使網(wǎng)絡(luò)在特征不丟失的情況下實現(xiàn)二倍下采樣操作。而CSP結(jié)構(gòu)則是受到CSPNet啟發(fā),將CSP1_X和CSP2_X分別引入到Backbone和Neck中。其中CSP1_X由X個殘差塊和若干卷積操作組成。SPP模塊通過使用三個卷積核實現(xiàn)最大池化,從而滿足最終輸入一致性。
2? ? 算法改進
2.1? ? SimAM注意力機制
本文引入SimAM注意力模塊[9],這是一種輕量級即插即用模塊,是受人腦注意力機制啟發(fā)而提出的一種具有三維權(quán)重的注意力模型。如圖1所示,在該模型中對明顯表現(xiàn)出空間抑制效應(yīng)的神經(jīng)元給予更高的權(quán)重,權(quán)重通過一個能量函數(shù)來計算,如式(1)所示:
式中:ωt為權(quán)重;bt為偏移量;M為該通道上的神經(jīng)元數(shù)量;i為空間維度上的索引;t和xi為輸入特征的單個通道中輸入特征的目標(biāo)神經(jīng)元和其他神經(jīng)元;λ為系數(shù),一般設(shè)置為0.000 1。
通過計算ωt、bt的解析解以及通道中所有神經(jīng)元的均值和方差得到最小能量,能量越低,t神經(jīng)元和其他神經(jīng)元的區(qū)別越大,越重要。在識別裂縫時,SimAM模塊通過測量一個目標(biāo)神經(jīng)元與其他神經(jīng)元的線性可分離性從當(dāng)前神經(jīng)元中計算出三維權(quán)重,即計算每個神經(jīng)元的能量函數(shù)。負(fù)責(zé)提取裂縫相關(guān)關(guān)鍵特征的神經(jīng)元權(quán)重更高,故優(yōu)先處理該類神經(jīng)元與任務(wù)相關(guān)的信息,進而提高了模型檢測精度。
本文將注意力機制加入YOLOv5s主干網(wǎng)絡(luò)的Bottleneck之中,且設(shè)計了兩種可行方法,如圖2所示。第一種方法是將SimAM放在每個C3模塊的后面,這樣可以使注意力機制看到局部的特征,每層進行一次注意力運算,可以分擔(dān)學(xué)習(xí)壓力。第二種方法是將SimAM放在backbone部分的最末端,這樣可以使注意力機制看到整個backbone部分的特征圖,具有全局視野,可以加強目標(biāo)特征信息的提取。經(jīng)實驗驗證,選用第二種方法作為本文的改進方法。
2.2? ? BiFPN
在道路裂縫數(shù)據(jù)采集過程中,由于裂縫形狀大小不同以及采集距離有遠有近,裂縫輸入數(shù)據(jù)的尺寸差別較大,而經(jīng)過YOLOv5s主干網(wǎng)絡(luò)中的多個C3模塊處理后,圖像尺寸會不斷縮小1/2且底層位置信息會部分丟失,沒有充分利用不同尺度之間的特征,導(dǎo)致網(wǎng)絡(luò)模型的檢測精度有限。
加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN)[10]是一種具有高效雙向特征融合、跳躍連接以及帶權(quán)特征融合機制的模塊,能同時得到包含高層語義信息和低層語義信息的全局特征[11],不同輸入層的權(quán)重不同且權(quán)重可以根據(jù)網(wǎng)絡(luò)自動更新,其結(jié)構(gòu)如圖3所示,它能保證網(wǎng)絡(luò)最大限度地保留全局上下文特征信息,使目標(biāo)檢測網(wǎng)絡(luò)提取不同尺度特征,大大提高了小目標(biāo)的檢測性能。BiFPN在輸入節(jié)點和輸出節(jié)點間加入了橫向跳躍連接,不但增加了融合節(jié)點的輸入,還保留了原始節(jié)點的特征信息,使得模型能融合更多特征;同時移除了單輸入邊沒有進行特征融合的節(jié)點,簡化了網(wǎng)絡(luò)結(jié)構(gòu),減少了計算量。BiFPN可以通過重復(fù)堆疊的方式進行更多特征的融合,本文在Neck中引入BiFPN模塊。
2.3? ? 損失函數(shù)改進
YOLOv5s使用CIoU_loss作為預(yù)測框損失函數(shù),但當(dāng)CIoU_loss中寬高比為一定比例時,損失函數(shù)中的懲罰項將不再起作用,會降低模型優(yōu)化速度。EIoU_loss在CIoU_loss的基礎(chǔ)上進行改進,LEIoU計算公式如式(2)所示:
式中:LEIoU為EIoU損失函數(shù);IoU為交并比;ρ為預(yù)測框與真實框中心點之間的距離;b和bgt為目標(biāo)框和預(yù)測框中心點坐標(biāo);w和h分別為預(yù)測框的寬和高;wgt和hgt分別為真實框的寬和高;C為能同時包含預(yù)測框與真實框的最小矩形框的對角線長度;Cw為該最小矩形框的寬;Ch為該最小矩形框的高。
EIoU_loss將w與wgt、h與hgt之間的差距最小化,使損失收斂速度更快、定位效果更好。
3? ? 模型測試和結(jié)果分析
3.1? ? 數(shù)據(jù)集及環(huán)境
數(shù)據(jù)集的選取對模型檢測結(jié)果具有重要作用,由于YOLOv5s的特征提取網(wǎng)絡(luò)對數(shù)據(jù)進行了5次下采樣,所以圖像的長和寬需為32的整數(shù)倍。本文在公開的CRACK 200、CRACK 500和Bridge CRACK等數(shù)據(jù)集中經(jīng)過圖像清洗,最后選取了1 280張JPG格式的路面裂縫圖片,數(shù)據(jù)集標(biāo)簽為“Crack” “Map crack”“Hole”。
為證明改進后模型的有效性,需對改進前后模型進行對比實驗。將上述標(biāo)簽處理和預(yù)處理后的圖片輸入網(wǎng)絡(luò)中進行目標(biāo)識別訓(xùn)練和檢測。實驗時將模型部署到電腦端PyCharm上,使用Python3.8為編譯語言,在Cuda加速和Pytorch深度學(xué)習(xí)框架下運行。本次研究的實驗配置如表1所示。
3.2? ? 評估標(biāo)準(zhǔn)
對模型的裂縫檢測能力進行評估,引入了模型的評價指標(biāo)。準(zhǔn)確率P表示預(yù)測樣本中正樣本比例,召回率R表示預(yù)測樣本中實際正樣本數(shù)占所有預(yù)測樣本的比例,其計算公式分別如式(3)和(4)所示:
式中:TP為正確檢測出裂縫的樣本數(shù)量;FP為裂縫檢驗出現(xiàn)錯誤的數(shù)量;FN為裂縫的未檢驗數(shù)量。
mAP(mean Average Precision)為多個不同類別的平均AP值,每個類別根據(jù)不同的置信度和IoU閾值,對應(yīng)有不同的準(zhǔn)確率和召回率,計算準(zhǔn)確率和召回率構(gòu)成的二維曲線圖面積即得到AP值。
3.3? ? 訓(xùn)練與檢測
選用1 280張大小為1 024×1 024×3的圖像作為總數(shù)據(jù)集,為了保證模型精度,減小泛化誤差,將訓(xùn)練集與測試集以8:2的比例劃分以進行交叉驗證。在實驗前需進行參數(shù)設(shè)置,初始學(xué)習(xí)率為0.01,下降學(xué)習(xí)衰減系數(shù)為0.000 5,置信度閾值IoU為0.5,批次量為15,迭代次數(shù)為200。
在預(yù)熱時,YOLOv5s利用一維線性插值去更新每次迭代的學(xué)習(xí)率,當(dāng)達到預(yù)設(shè)值時,再通過余弦退火算法對學(xué)習(xí)率進行不斷更新。經(jīng)過訓(xùn)練得到最優(yōu)權(quán)重,將最優(yōu)權(quán)重傳入Detect.py文件中用于最終檢測。檢測結(jié)果如圖4所示,可以看出該模型能準(zhǔn)確識別出裂縫、網(wǎng)狀裂縫和坑洞目標(biāo),初步達到預(yù)定要求。
如圖5所示,經(jīng)過200個迭代周期后改進YOLOv5s_
SA+BF算法對道路裂縫的檢測精度逐漸收斂為90.5%,mAP值最后穩(wěn)定在92.4%。
為了驗證加入注意力機制后模型在復(fù)雜背景下識別不同種類裂縫的能力,與其他主流方法進行了對比實驗。首先使用Faster-RCNN和YOLOv4模型對裂縫數(shù)據(jù)進行訓(xùn)練,再采用YOLOv5s模型和超參數(shù)設(shè)置相同的改進模型進行訓(xùn)練檢驗,在實驗同時統(tǒng)計各個方法的檢測速度和模型大小,對比實驗結(jié)果如表2所示。
由表2可知,相比YOLOv4和Faster-RCNN算法YOLOv5s更具輕量性和實時性,模型僅有14.8 MB,在模型大小上更具優(yōu)勢。由于SimAM的無參性,改進后的模型對每張圖像的推理耗時并未產(chǎn)生影響,每秒可處理52.6幀圖片。在平均精度上,加入注意力機制后的YOLOv5s_SimAM算法比原始YOLOv5s算法精度提高了1.4%,而YOLOv5s_SA+BF相比原始算法檢測精度提高了2.2%,召回率為94.5%,且檢測速度沒有太大區(qū)別,仍能滿足實時性需求。
圖6為驗證集上測試改進后模型檢測效果,由模型的回歸損失、置信度損失和分類損失的變化可知,改進后的模型置信度損失和邊界框回歸損失更低,模型收斂速度也相對較快。YOLOv5s_SA+BF模型在200個迭代周期后,各項損失均趨于平緩,不再下降,邊界框回歸損失達到0.026 3,目標(biāo)置信度損失為0.031 6,分類損失為0.025 1。可以看出,本文提出的改進算法在三種不同的損失上都有著不同程度的減弱,對模型具有優(yōu)化作用。
4? ? 結(jié)束語
本文提出了一種基于改進YOLOv5s的道路裂縫檢測模型,即YOLOv5s_SA+BF,在識別過程中能夠優(yōu)化裂縫特征的提取與檢測。該算法在一定程度上提高了對裂縫檢測的精確度,且在不引入額外參數(shù)的同時只增加了少量推理計算,對裂縫識別速度造成的影響可以忽略不計。實驗結(jié)果表明,采用該算法,道路裂縫檢測的精度、召回率和平均精度均得到了提升。
[參考文獻]
[1] 張偉光,鐘靖濤,于建新,等.基于機器學(xué)習(xí)和圖像處理的路面裂縫檢測技術(shù)研究[J].中南大學(xué)學(xué)報(自然科學(xué)版),2021,52(7):2402-2415.
[2] LIU W,DRAGOMIR A,DUMITRU E,et al.SSD:Single Shot MultiBox Detector[J].European Conference on Computer Vision,2016:21-37.
[3] 王博,李齊,劉皎.一種輕量級的SSD道路裂縫檢測算法[J].商洛學(xué)院學(xué)報,2022,36(4):83-90.
[4] ZHANG J,QIAN S R,TAN C.Automated Bridge Crack Detection Method Based on Lightweight Vision Models[J].Complex and Intelligent Systems,2023,9:1639-1652.
[5] LI R B,LIU C.Road Damage Evaluation via Stereo Camera and Deep Learning Neural Network[C]// 2021 IEEE Aerospace Conference,2021:1-7.
[6] MA D,F(xiàn)ANG H Y,WANG N N,et al.Automatic Detection and Counting System for Pavement Cracks Based on PCGAN and YOLO-MF[J].IEEE Transactions on Intelligent Transportation Systems,2022,23:22166-22178.
[7] 彭雨諾,劉敏,萬智,等.基于改進YOLO的雙網(wǎng)絡(luò)橋梁表觀病害快速檢測算法[J].自動化學(xué)報,2022,48(4):1018-1032.
[8] 邵延華,張鐸,楚紅雨,等.基于深度學(xué)習(xí)的YOLO目標(biāo)檢測綜述[J].電子與信息學(xué)報,2022,44(10):3697-3708.
[9] YANG L X,ZHANG R Y,LI L D,et al.SimAM:A Simple,Parameter-free Attention Module for Convolutional Neural Networks[C]//38th International Conference on Machine Learning,2021:11863-11874.
[10] 仇天昊,陳淑榮.基于EfficientNet的雙分路多尺度聯(lián)合學(xué)習(xí)行人再識別[J].計算機應(yīng)用,2022,42(7):2065-2071.
[11] TAN M X,PANG R M,LE Q V.EfficientDet:Scalable and Efficient Object Detection[C]//2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR),2020:10781-10790.
收稿日期:2023-05-08
作者簡介:李續(xù)穩(wěn)(1999—),男,河南駐馬店人,碩士研究生,研究方向:機器視覺。
通信作者:張青哲(1971—),男,陜西韓城人,博士,副教授,研究方向:道路質(zhì)量控制。