基于深度學(xué)習(xí)的道路表面裂縫檢測研究
引言
隨著深度學(xué)習(xí)快速發(fā)展,具有大量參數(shù)的神經(jīng)網(wǎng)絡(luò)可以提取到更多的圖像特征。張偉光等人基于卷積神經(jīng)網(wǎng)絡(luò)搭建了包含3個(gè)卷積層和2個(gè)全連接層的網(wǎng)絡(luò)模型,通過對(duì)比實(shí)驗(yàn)得出結(jié)論,卷積神經(jīng)網(wǎng)絡(luò)具有更高的精度[1]。為使檢測速度更快、精度更高,有學(xué)者提出SSD[2]算法。王博等人對(duì)此算法進(jìn)行優(yōu)化,用MobileNet網(wǎng)絡(luò)代替SSD特征提取網(wǎng)絡(luò)中的VGG模塊,并通過特征金字塔進(jìn)行融合,構(gòu)建出輕量級(jí)的道路裂縫檢測算法[3]。YOLO系列目標(biāo)檢測算法經(jīng)過不斷更新,檢測速度和模型尺寸相比其他檢測模型更占優(yōu)勢。J.zhang等人為提高檢測速度,用一些輕量級(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ò)以檢測路面坑洞,該方法適用于各種天氣的路面數(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á)到了提高檢測精度和響應(yīng)速度的目的。本文使用YOLOv5S模型對(duì)道路裂縫進(jìn)行檢測,并進(jìn)行了結(jié)構(gòu)改進(jìn),以改善對(duì)深層特征信息的提取與利用,保證實(shí)時(shí)檢測的同時(shí)提高了檢測精度。
1 YOLO算法原理
1.1目標(biāo)檢測
目標(biāo)檢測是計(jì)算機(jī)視覺領(lǐng)域的重要研究方向之一,目標(biāo)檢測主要完成三個(gè)任務(wù):檢測出圖像中目標(biāo)的位置且同一張圖片可能存在多個(gè)檢測目標(biāo);檢測出目標(biāo)的大小范圍;對(duì)檢測到的目標(biāo)進(jìn)行識(shí)別分類。最終輸出圖像中物體的類別和位置坐標(biāo)。二階段算法主要通過多個(gè)不同尺度的檢測框確定目標(biāo)候選區(qū)域,再進(jìn)行分類回歸運(yùn)算。而YOLO系列則是一階段目標(biāo)檢測算法,該系列算法能根據(jù)多個(gè)初始錨框一次性獲得多個(gè)回歸框的位置信息和分類信息,實(shí)現(xiàn)單階段目標(biāo)檢測的網(wǎng)絡(luò)訓(xùn)練。相比二階段算法,YOLO系列算法檢測速度更快。具有代表性的一階段算法還有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算法速度快于其他二階段檢測模型。本文使用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模塊通過使用三個(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)重通過一個(gè)能量函數(shù)來計(jì)算,如式(1)所示:
通過計(jì)算wt、bt的解析解以及通道中所有神經(jīng)元的均值和方差得到最小能量,能量越低,t神經(jīng)元和其他神經(jīng)元的區(qū)別越大,越重要。在識(shí)別裂縫時(shí),simAM模塊通過測量一個(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)先處理該類神經(jīng)元與任務(wù)相關(guān)的信息,進(jìn)而提高了模型檢測精度。
本文將注意力機(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ù)采集過程中,由于裂縫形狀大小不同以及采集距離有遠(yuǎn)有近,裂縫輸入數(shù)據(jù)的尺寸差別較大,而經(jīng)過YOLOv5S主干網(wǎng)絡(luò)中的多個(gè)C3模塊處理后,圖像尺寸會(huì)不斷縮小1/2且底層位置信息會(huì)部分丟失,沒有充分利用不同尺度之間的特征,導(dǎo)致網(wǎng)絡(luò)模型的檢測精度有限。
加權(quán)雙向特征金字塔網(wǎng)絡(luò)(BiFPN)[10]是一種具有高效雙向特征融合、跳躍連接以及帶權(quán)特征融合機(jī)制的模塊,能同時(shí)得到包含高層語義信息和低層語義信息的全局特征[11],不同輸入層的權(quán)重不同且權(quán)重可以根據(jù)網(wǎng)絡(luò)自動(dòng)更新,其結(jié)構(gòu)如圖3所示,它能保證網(wǎng)絡(luò)最大限度地保留全局上下文特征信息,使目標(biāo)檢測網(wǎng)絡(luò)提取不同尺度特征,大大提高了小目標(biāo)的檢測性能。BiFPN在輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)間加入了橫向跳躍連接,不但增加了融合節(jié)點(diǎn)的輸入,還保留了原始節(jié)點(diǎn)的特征信息,使得模型能融合更多特征;同時(shí)移除了單輸入邊沒有進(jìn)行特征融合的節(jié)點(diǎn),簡化了網(wǎng)絡(luò)結(jié)構(gòu),減少了計(jì)算量。BiFPN可以通過重復(fù)堆疊的方式進(jìn)行更多特征的融合,本文在Neck中引入BiFPN模塊。
2.3損失函數(shù)改進(jìn)
YOLOv5s使用CIoU一loss作為預(yù)測框損失函數(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為交并比;p為預(yù)測框與真實(shí)框中心點(diǎn)之間的距離;b和bgt為目標(biāo)框和預(yù)測框中心點(diǎn)坐標(biāo);m和h分別為預(yù)測框的寬和高;mgt和hgt分別為真實(shí)框的寬和高;c為能同時(shí)包含預(yù)測框與真實(shí)框的最小矩形框的對(duì)角線長度;cw為該最小矩形框的寬;ch為該最小矩形框的高。
EIoU一loss將m與mgt、h與hgt之間的差距最小化,使損失收斂速度更快、定位效果更好。
3模型測試和結(jié)果分析
3.1數(shù)據(jù)集及環(huán)境
數(shù)據(jù)集的選取對(duì)模型檢測結(jié)果具有重要作用,由于YOLOv5s的特征提取網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行了5次下采樣,所以圖像的長和寬需為32的整數(shù)倍。本文在公開的CRACK 200、CRACK 500和Bridge CRACK等數(shù)據(jù)集中經(jīng)過圖像清洗,最后選取了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)練和檢測。實(shí)驗(yàn)時(shí)將模型部署到電腦端PyCharm上,使用Python3.8為編譯語言,在Cuda加速和Pytorch深度學(xué)習(xí)框架下運(yùn)行。本次研究的實(shí)驗(yàn)配置如表1所示。
3.2評(píng)估標(biāo)準(zhǔn)
對(duì)模型的裂縫檢測能力進(jìn)行評(píng)估,引入了模型的評(píng)價(jià)指標(biāo)。準(zhǔn)確率P表示預(yù)測樣本中正樣本比例,召回率R表示預(yù)測樣本中實(shí)際正樣本數(shù)占所有預(yù)測樣本的比例,其計(jì)算公式分別如式(3)和(4)所示:
式中:TP為正確檢測出裂縫的樣本數(shù)量;FP為裂縫檢驗(yàn)出現(xiàn)錯(cuò)誤的數(shù)量;FN為裂縫的未檢驗(yàn)數(shù)量。
mAP(mean Average Precision)為多個(gè)不同類別的平均AP值,每個(gè)類別根據(jù)不同的置信度和IoU閩值,對(duì)應(yīng)有不同的準(zhǔn)確率和召回率,計(jì)算準(zhǔn)確率和召回率構(gòu)成的二維曲線圖面積即得到AP值。
3.3訓(xùn)練與檢測
選用1 280張大小為1 024X1 024X3的圖像作為總數(shù)據(jù)集,為了保證模型精度,減小泛化誤差,將訓(xùn)練集與測試集以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í),再通過余弦退火算法對(duì)學(xué)習(xí)率進(jìn)行不斷更新。經(jīng)過訓(xùn)練得到最優(yōu)權(quán)重,將最優(yōu)權(quán)重傳入Detect.py文件中用于最終檢測。檢測結(jié)果如圖4所示,可以看出該模型能準(zhǔn)確識(shí)別出裂縫、網(wǎng)狀裂縫和坑洞目標(biāo),初步達(dá)到預(yù)定要求。
如圖5所示,經(jīng)過200個(gè)選代周期后改進(jìn)YOLOv5S—SA+BF算法對(duì)道路裂縫的檢測精度逐漸收斂為00.5%,mAP值最后穩(wěn)定在02.4%。
為了驗(yàn)證加入注意力機(jī)制后模型在復(fù)雜背景下識(shí)別不同種類裂縫的能力,與其他主流方法進(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è)方法的檢測速度和模型大小,對(duì)比實(shí)驗(yàn)結(jié)果如表2所示。
由表2可知,相比YOLOv4和FaSter—RCNN算法YOLOv5S更具輕量性和實(shí)時(shí)性,模型僅有14.8 MB,在模型大小上更具優(yōu)勢。由于SimAM的無參性,改進(jìn)后的模型對(duì)每張圖像的推理耗時(shí)并未產(chǎn)生影響,每秒可處理52.6峽圖片。在平均精度上,加入注意力機(jī)制后的YOLOv5S—SimAM算法比原始YOLOv5S算法精度提高了1.4%,而YOLOv5S—SA+BF相比原始算法檢測精度提高了2.2%,召回率為04.5%,且檢測速度沒有太大區(qū)別,仍能滿足實(shí)時(shí)性需求。
圖6為驗(yàn)證集上測試改進(jìn)后模型檢測效果,由模型的回歸損失、置信度損失和分類損失的變化可知,改進(jìn)后的模型置信度損失和邊界框回歸損失更低,模型收斂速度也相對(duì)較快。YOLOv5S—SA+BF模型在200個(gè)選代周期后,各項(xiàng)損失均趨于平緩,不再下降,邊界框回歸損失達(dá)到0.0263,目標(biāo)置信度損失為0.0316,分類損失為0.025 1。可以看出,本文提出的改進(jìn)算法在三種不同的損失上都有著不同程度的減弱,對(duì)模型具有優(yōu)化作用。
4結(jié)束語
本文提出了一種基于改進(jìn)YOLOv5S的道路裂縫檢測模型,即YOLOv5S—SA+BF,在識(shí)別過程中能夠優(yōu)化裂縫特征的提取與檢測。該算法在一定程度上提高了對(duì)裂縫檢測的精確度,且在不引入額外參數(shù)的同時(shí)只增加了少量推理計(jì)算,對(duì)裂縫識(shí)別速度造成的影響可以忽略不計(jì)。實(shí)驗(yàn)結(jié)果表明,采用該算法,道路裂縫檢測的精度、召回率和平均精度均得到了提升。