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