引言
隨著深度學習快速發(fā)展,具有大量參數的神經網絡可以提取到更多的圖像特征。張偉光等人基于卷積神經網絡搭建了包含3個卷積層和2個全連接層的網絡模型,通過對比實驗得出結論,卷積神經網絡具有更高的精度[1]。為使檢測速度更快、精度更高,有學者提出SSD[2]算法。王博等人對此算法進行優(yōu)化,用MobileNet網絡代替SSD特征提取網絡中的VGG模塊,并通過特征金字塔進行融合,構建出輕量級的道路裂縫檢測算法[3]。YOLO系列目標檢測算法經過不斷更新,檢測速度和模型尺寸相比其他檢測模型更占優(yōu)勢。J.zhang等人為提高檢測速度,用一些輕量級網絡代替YOLOv4中的特征提取網絡以使模型加速,減少了參數量和主干網絡層數,使模型精度和速度更優(yōu),且模型更具輕量性[4]。為了提高復雜路面的識別精度,一些學者對YOLO系列算法進行了變體改進。R.Li等人使用半導體激光投射到路面裂縫上,再用攝像頭采集到更容易識別的圖像,將圖片輸進基于YOLO算法的PDNN神經網絡以檢測路面坑洞,該方法適用于各種天氣的路面數據并能計算受損區(qū)域面積[5]。D.Ma等人基于改進的YOLO-MF和PCGAN對抗網絡對路面裂縫進行計數[6],實現了較高的準確率和F1得分。彭雨諾等人提出了YOLO-lump和YOLO-crack用于提取稀疏表達的多尺度特征,能減少信息損失[7],達到了提高檢測精度和響應速度的目的。本文使用YOLOv5S模型對道路裂縫進行檢測,并進行了結構改進,以改善對深層特征信息的提取與利用,保證實時檢測的同時提高了檢測精度。
1 YOLO算法原理
1.1目標檢測
目標檢測是計算機視覺領域的重要研究方向之一,目標檢測主要完成三個任務:檢測出圖像中目標的位置且同一張圖片可能存在多個檢測目標;檢測出目標的大小范圍;對檢測到的目標進行識別分類。最終輸出圖像中物體的類別和位置坐標。二階段算法主要通過多個不同尺度的檢測框確定目標候選區(qū)域,再進行分類回歸運算。而YOLO系列則是一階段目標檢測算法,該系列算法能根據多個初始錨框一次性獲得多個回歸框的位置信息和分類信息,實現單階段目標檢測的網絡訓練。相比二階段算法,YOLO系列算法檢測速度更快。具有代表性的一階段算法還有SSD、ATSS和基于錨點的RepPointS等。
1.2算法結構
YOLOv5S算法有四種模型:YOLOv5S、YOLOv5Sm、YOLOv5Sl、YOLOv5SX[8]。優(yōu)點是遷移能力強且識別速度快,對于欠實時系統(tǒng),YOLOv5S算法速度快于其他二階段檢測模型。本文使用YOLOv5S網絡作為基礎模型,由四部分組成:輸入層、主干網絡層、Neck層和輸出層。輸入層對圖像進行預處理、數據增強和自適應錨框計算。在主干層,切片操作能使網絡在特征不丟失的情況下實現二倍下采樣操作。而CSP結構則是受到CsPNet啟發(fā),將CsP1一X和CsP2一X分別引入到Backbone和Neck中。其中CsP1一X由X個殘差塊和若干卷積操作組成。sPP模塊通過使用三個卷積核實現最大池化,從而滿足最終輸入一致性。
2算法改進
2.1 simAM注意力機制
本文引入simAM注意力模塊[9],這是一種輕量級即插即用模塊,是受人腦注意力機制啟發(fā)而提出的一種具有三維權重的注意力模型。如圖1所示,在該模型中對明顯表現出空間抑制效應的神經元給予更高的權重,權重通過一個能量函數來計算,如式(1)所示:
通過計算wt、bt的解析解以及通道中所有神經元的均值和方差得到最小能量,能量越低,t神經元和其他神經元的區(qū)別越大,越重要。在識別裂縫時,simAM模塊通過測量一個目標神經元與其他神經元的線性可分離性從當前神經元中計算出三維權重,即計算每個神經元的能量函數。負責提取裂縫相關關鍵特征的神經元權重更高,故優(yōu)先處理該類神經元與任務相關的信息,進而提高了模型檢測精度。
本文將注意力機制加入YOLOv5S主干網絡的Bottleneck之中,且設計了兩種可行方法,如圖2所示。
第一種方法是將simAM放在每個C3模塊的后面,這樣可以使注意力機制看到局部的特征,每層進行一次注意力運算,可以分擔學習壓力。第二種方法是將simAM放在backbone部分的最末端,這樣可以使注意力機制看到整個backbone部分的特征圖,具有全局視野,可以加強目標特征信息的提取。經實驗驗證,選用第二種方法作為本文的改進方法。
2.2 BiFPN
在道路裂縫數據采集過程中,由于裂縫形狀大小不同以及采集距離有遠有近,裂縫輸入數據的尺寸差別較大,而經過YOLOv5S主干網絡中的多個C3模塊處理后,圖像尺寸會不斷縮小1/2且底層位置信息會部分丟失,沒有充分利用不同尺度之間的特征,導致網絡模型的檢測精度有限。
加權雙向特征金字塔網絡(BiFPN)[10]是一種具有高效雙向特征融合、跳躍連接以及帶權特征融合機制的模塊,能同時得到包含高層語義信息和低層語義信息的全局特征[11],不同輸入層的權重不同且權重可以根據網絡自動更新,其結構如圖3所示,它能保證網絡最大限度地保留全局上下文特征信息,使目標檢測網絡提取不同尺度特征,大大提高了小目標的檢測性能。BiFPN在輸入節(jié)點和輸出節(jié)點間加入了橫向跳躍連接,不但增加了融合節(jié)點的輸入,還保留了原始節(jié)點的特征信息,使得模型能融合更多特征;同時移除了單輸入邊沒有進行特征融合的節(jié)點,簡化了網絡結構,減少了計算量。BiFPN可以通過重復堆疊的方式進行更多特征的融合,本文在Neck中引入BiFPN模塊。
2.3損失函數改進
YOLOv5s使用CIoU一loss作為預測框損失函數,但當CIoU一loss中寬高比為一定比例時,損失函數中的懲罰項將不再起作用,會降低模型優(yōu)化速度。EIoU一loss在CIoU一loss的基礎上進行改進,LEIoU計算公式如式(2)所示:
式中:LEIoU為EIoU損失函數;IoU為交并比;p為預測框與真實框中心點之間的距離;b和bgt為目標框和預測框中心點坐標;m和h分別為預測框的寬和高;mgt和hgt分別為真實框的寬和高;c為能同時包含預測框與真實框的最小矩形框的對角線長度;cw為該最小矩形框的寬;ch為該最小矩形框的高。
EIoU一loss將m與mgt、h與hgt之間的差距最小化,使損失收斂速度更快、定位效果更好。
3模型測試和結果分析
3.1數據集及環(huán)境
數據集的選取對模型檢測結果具有重要作用,由于YOLOv5s的特征提取網絡對數據進行了5次下采樣,所以圖像的長和寬需為32的整數倍。本文在公開的CRACK 200、CRACK 500和Bridge CRACK等數據集中經過圖像清洗,最后選取了1 280張JPG格式的路面裂縫圖片,數據集標簽為“Crack”“Map crack”“Hole”。
為證明改進后模型的有效性,需對改進前后模型進行對比實驗。將上述標簽處理和預處理后的圖片輸入網絡中進行目標識別訓練和檢測。實驗時將模型部署到電腦端PyCharm上,使用Python3.8為編譯語言,在Cuda加速和Pytorch深度學習框架下運行。本次研究的實驗配置如表1所示。
3.2評估標準
對模型的裂縫檢測能力進行評估,引入了模型的評價指標。準確率P表示預測樣本中正樣本比例,召回率R表示預測樣本中實際正樣本數占所有預測樣本的比例,其計算公式分別如式(3)和(4)所示:
式中:TP為正確檢測出裂縫的樣本數量;FP為裂縫檢驗出現錯誤的數量;FN為裂縫的未檢驗數量。
mAP(mean Average Precision)為多個不同類別的平均AP值,每個類別根據不同的置信度和IoU閩值,對應有不同的準確率和召回率,計算準確率和召回率構成的二維曲線圖面積即得到AP值。
3.3訓練與檢測
選用1 280張大小為1 024X1 024X3的圖像作為總數據集,為了保證模型精度,減小泛化誤差,將訓練集與測試集以8:2的比例劃分以進行交叉驗證。在實驗前需進行參數設置,初始學習率為0.01,下降學習衰減系數為0.000 5,置信度閩值IoU為0.5,批次量為15,選代次數為200。
在預熱時,YOLOv5s利用一維線性插值去更新每次選代的學習率,當達到預設值時,再通過余弦退火算法對學習率進行不斷更新。經過訓練得到最優(yōu)權重,將最優(yōu)權重傳入Detect.py文件中用于最終檢測。檢測結果如圖4所示,可以看出該模型能準確識別出裂縫、網狀裂縫和坑洞目標,初步達到預定要求。
如圖5所示,經過200個選代周期后改進YOLOv5S—SA+BF算法對道路裂縫的檢測精度逐漸收斂為00.5%,mAP值最后穩(wěn)定在02.4%。
為了驗證加入注意力機制后模型在復雜背景下識別不同種類裂縫的能力,與其他主流方法進行了對比實驗。首先使用FaSter—RCNN和YOLOv4模型對裂縫數據進行訓練,再采用YOLOv5S模型和超參數設置相同的改進模型進行訓練檢驗,在實驗同時統(tǒng)計各個方法的檢測速度和模型大小,對比實驗結果如表2所示。
由表2可知,相比YOLOv4和FaSter—RCNN算法YOLOv5S更具輕量性和實時性,模型僅有14.8 MB,在模型大小上更具優(yōu)勢。由于SimAM的無參性,改進后的模型對每張圖像的推理耗時并未產生影響,每秒可處理52.6峽圖片。在平均精度上,加入注意力機制后的YOLOv5S—SimAM算法比原始YOLOv5S算法精度提高了1.4%,而YOLOv5S—SA+BF相比原始算法檢測精度提高了2.2%,召回率為04.5%,且檢測速度沒有太大區(qū)別,仍能滿足實時性需求。
圖6為驗證集上測試改進后模型檢測效果,由模型的回歸損失、置信度損失和分類損失的變化可知,改進后的模型置信度損失和邊界框回歸損失更低,模型收斂速度也相對較快。YOLOv5S—SA+BF模型在200個選代周期后,各項損失均趨于平緩,不再下降,邊界框回歸損失達到0.0263,目標置信度損失為0.0316,分類損失為0.025 1??梢钥闯觯疚奶岢龅母倪M算法在三種不同的損失上都有著不同程度的減弱,對模型具有優(yōu)化作用。
4結束語
本文提出了一種基于改進YOLOv5S的道路裂縫檢測模型,即YOLOv5S—SA+BF,在識別過程中能夠優(yōu)化裂縫特征的提取與檢測。該算法在一定程度上提高了對裂縫檢測的精確度,且在不引入額外參數的同時只增加了少量推理計算,對裂縫識別速度造成的影響可以忽略不計。實驗結果表明,采用該算法,道路裂縫檢測的精度、召回率和平均精度均得到了提升。