李姍
(成都信息工程大學計算機學院,成都 610225)
道路病害(裂隙、坑洞)檢測一直以來在道路安全領域中起著舉足輕重的作用,及時發現道路上的裂隙和坑洞并進行修補可以有效地減少路面病害(裂隙、坑洞)帶來的損失,進而減少對路面行車安全的影響。早期的道路病害檢測以傳統LBP、Gabor等紋理特征提取為主,往往在實際中表現不佳。由于近年發展起來的深度學習技術可發揮從數據中學習表征的優勢,基于深度學習的檢測方法相對于傳統的檢測算法來說,其道路病害的檢測精度已經有了很好的提升。
基于深度學習的道路病害(裂隙、坑洞)檢測方法一般有三種:①圖像分類。對不同病害類別或等級的路況圖像進行標注,并在采集到的圖像中進行重疊式區域劃分,進行分類,可以是二類(有無病害)和多類(不同病害級別)。②語義分割。對道路病害進行像素級標注,使用U-Net等語義分割方法進行像素級分類。好處是可以刻畫病害形態,但標注代價極其大。③目標檢測。將病害位置標成目標框,在采集的圖像中進行目標檢測,既可得到位置也可以得到類別。本研究采用基于深度學習的目標檢測算法進行檢測。傳統的目標檢測算法主要是基于設計好的手工特征來進行檢測,檢測的效果主要與設計的特征質量有關。對于不同的目標而言,沒有一種通用的特征,只能根據檢測對象的特點有針對性地設計特征,所以魯棒性很差[1-2]。近年來,基于深度學習的目標檢測技術取得了長足的進步,無論是在檢測效率還是準確率上都取得了很好的效果。
目前基于深度學習的目標檢測算法大致可以分為兩種方式:Two-stage目標檢測算法與Onestage目標檢測算法。Two-stage系列算法在目標檢測過程中分兩步完成,首先通過算法生成一系列的候選區域,然后再通過卷積神經網絡進行分類 , 代 表 性 的 算 法 有 RCNN[3]、 Fast RCNN[4]、Faster RCNN[5]等,這一系列算法在檢測的準確率和定位精度上相對要好一些,但在檢測速度上無法滿足實時性的需求。One-stage系列算法將目標檢測問題直接當作回歸問題來處理,不產生候選區域,直接預測出目標位置與類別;代表性的算法有 YOLO[6]、YOLOv2[7]、YOLOv3[8]、SSD[9-10]、RetinaNet[11]等,One-stage系列的算法精度上相對于Two-stage系列算法要低一些,但是檢測速度要快很多。
相比于其他檢測,道路病害檢測具有兩個非常大的困難:①道路圖像擁有很多不規則形狀的目標。②高分辨率致使背景復雜,語義信息豐富。因此,該文以One-stage系列算法中的YO?LOv5為基礎,針對道路上的裂縫和坑洞目標,提出了一種基于pytorch實現的改進型YOLOv5。相比于YOLOv5,本文的貢獻總結如下:①縮短算法的訓練時間到以前的40%,這意味著我們在道路圖像中可以更加高效地訓練得到一個效果很好的目標檢測器。②將注意力機制引入目標檢測算法,并且以多個視角聚焦在我們感興趣的區域去訓練。③將Transformer模型引入目標檢測算法,解決了圖像在訓練的過程中因分辨率降低所造成的信息丟失。
基于深度學習的目標檢測算法通常由四部分組成:input,backbone,neck,head。它主要有兩個分支:一階段和二階段。二階段算法主要由候選區域提取和目標的分類與回歸組成。一階段算法不用提取候選區域提取,可以直接確定物體的類別和位置。因此,兩階段算法精度高、速度慢,一階段算法精度略低、速度快。
一個通用的目標檢測器在backbone主要有以下 6 種 : VGG16, ResNet-50, SpineNet, Effifi?cient Net-B0/B7, CSPResNeXt50, CSPdarket53。它們都以一個視角去做特征提取,致使往往需要更多的層來達到提取相對充分的特征。但這遠遠不夠,而且還使整個目標檢測器的效率低下。
目前,在neck階段的方式主要有:FPN,PAN。 NAS-FPN, Fully-connected FPN, Bifpn,ASFF,SDAM。按照融合和預測的分類順序,它們的融合方式主要分為早融合和晚融合。它們在融合過程中并沒有關注到所有的特征層,僅僅通過簡單的堆疊和疊加操作進行融合,并且在融合階段過多地使用下采樣損失了過度的位置和細節信息,直接導致了算法的性能沒有達到一個更好的水平。
YOLOv5算法作為一種端到端的目標檢測模型,只需要在輸入端輸入圖像數據即可,在輸出端得到一個預測結果,預測結果為邊界框的位置信息、置信度以及所屬類別。如圖1所示,其基本思想是將輸入圖片分割成S×S個網格,如果標注的目標中心坐標落在某個網格中,那么就由該網絡來檢測這個目標。每一個網格都會預測出B個邊界框,每個邊界框都包含位置信息(x,y,w,h)、置信度(Confidence)以及C個類別的概率,對于輸出層來說,最終的輸出維度為S×S×B×(4+1+C)的張量。置信度是指邊界框包含目標的可能性Pr(object)以及包含目標情況下邊界框準確度IoU的乘積。
當檢測目標位于該網格中,Pr(object)=1,否則為0。IoU用于表達真實框與預測框的重疊度,表示的是預測框和真實框的交集與并集的比值。當一個目標被多個檢測框所預測時,通過設定閾值,將置信度低于閾值的邊界框去除,并且對高于閾值的邊界框進行非極大值抑制,去除多余的邊框,最終得到最佳邊界框。
YOLOv5采用Cspdarket53作為特征提取網絡。Cspdarket53相對于darket53來說,加入了cross stage partial結構,擁有特征復用和截斷冗余梯度信息傳遞的優點。Cspdarket53有一個Darket?Conv2D_BN_Mish和數個Resblock_body組成。YOLOv5在cspdarket53之后介入了FPN+PAN結構,增加了模型的感受域,借用了PANET的思想,用來聚合不同尺度的特征層對應的參數。
由于YOLOv5的最初版本在backbone階段,有過多卷積層的無效堆疊。這造成了三個現象:特征提取并不充分和目標檢測器的泛化能力差。為此,我們將Transformer模型引入backbone。并且與注意力機制相結合。這樣,我們的目標檢測器就可以得到不同的數據表示并時刻聚焦在我們感興趣的區域。
在neck階段,沒有對特征進行有效融合,采用無效的卷積操作。直接導致了目標檢測器效果差、訓練時間長和實時性低下的問題。在深度學習的目標檢測算法中,為了提高算法的性能,在neck階段主要做的工作是融合不同尺度的特征。低層特征的分辨率更高,包含更多的位置和細節信息,但語義性更低、噪聲更多。高層特征的分辨率更低,對細節的感知能力較差,但其包含更多的語義特征。為了將兩者做一個有效的融合,很多人做了大量的工作。針對這些問題,本文將backbone提取的所有的特征層都引入到neck,在融合階段加入注意力機制,去除了在neck階段的多余卷積操作。
在backbone部分。其改進主要如下:①在SPP之后引入Transformer模型和SE注意力機制;②采用C3特征提取模型和注意力機制交叉結合的方式。
在head部分。其改進主要如下:①將C3TR Transformer模型替代Yolo-v5中的C3特征提取模型,將backbone提取的所有特征層都接入neck。②在concat階段,采用和注意力機制結合的方式。
這項研究使用的是2020年IEEE大數據國際會議大數據杯組織的全球道路損傷檢測挑戰賽(GRDDC)的數據集,該數據集是從印度、日本和捷克共和國收集的26336個道路圖像。包括三個部分:Train,Test1,Test2。Testl和 Test2 包括2631和2664張圖像,約50%的圖像來自日本,37%來自印度,約13%來自捷克共和國。Train則包括帶有PASCAL VOC格式XML文件標注的道路圖像,包含來自日本的10506張圖像,來自捷克共和國的2829張圖像和來自印度的7706張圖像,如表1所示。所有路面裂縫分為縱向裂縫、橫向裂縫、鱷魚裂縫和坑洼裂縫,如圖1所示。每個損壞類型都用類名(如D0)表示。從表2可以看出,損害類型分為七類。

表2 損傷類型統計

圖1 訓練數據中不同損傷類型實例的分布
文中算法是在Pytorch深度學習框架上實現的,實驗使用的配置NVIDIA TITAN RTX GPU、16 G內存、操作系統為Ubuntu20.04的硬件平臺上訓練與檢測。模型訓練策略如表3所示。

表3 檢測模型訓練策略
文中通過計算一張圖片耗時、幀率、準確度與平均精度進行模型性能評估。
為了加快訓練速度,提高檢測精度,采用了SE注意力機制和Transformer模型,在計算機視覺和深度學習領域,注意力機制被廣泛用于學習技術。本研究使用在ImageNet上預先訓練的yolo權值作為道路損傷檢測任務的初始化權值。由于訓練數據集由三個不同國家的圖像組成,路面和開裂紋理之間存在一定的差異。雖然日本和捷克共和國的圖像有一些相似之處,但它們與印度的路面圖像仍有很大差距。因此,很明顯,在一個綜合的三國數據集上訓練的單一模型會產生較差的檢測和表征結果。因此,考慮到這一點,本研究訓練了一個模型僅檢測日本和捷克共和國的路面損害,而另一個模型則訓練檢測印度的路面病害。在NVIDIA TITAN RTX GPU上運行時,提出的模型實現了大約每秒65幀的推理速度。類似地,一個針對日本和捷克共和國數據集提出的模型經過54個epoch訓練的模型大約為381兆字節。經過66個epoch訓練的模型平均約為729兆字節。在這里,總訓練時間大約是15小時。為了了解基于YOLO模型的性能,網絡以恒定的學習率、權重和動量訓練了300個epoch。從實驗結果可以看出,在50-70個epoch訓練的模型性能要優于150-300個epoch訓練的模型。
為了驗證文中提出模型的性能,將改進算法與YOLOv5進行性能測試對比,結果見表3和表4。通過對表格數據的分析可以發現改進之后的算法在均值平均精度(mAP)和檢測耗時上都較YOLOv3有了不同程度的提升,這反映出了文中算法改進的有效性。

表4 改進算法與YOLOv5模型檢測準確率對比
本研究提出了一種路面自動化處理方法使用深度學習的遇險檢測和表征。研究表明,模型在檢測鱷魚裂縫和橫向裂縫檢測困難。特別是,從印度獲得的數據庫非常少可以看到橫向裂縫的實例。這引起了一些錯誤的分類來自印度的圖像,并導致了一個與縱向裂縫混淆。此外,從印度和捷克共和國的數據顯示,道路損傷等級似乎有些不平衡。不管怎樣,來自日本的數據集幫助模型實現了非常準確的檢測。本文在道路病害圖像檢測的實際問題的啟發下,針對基于深度學習的目標檢測算法在道路圖像具有的復雜背景和目標難以分辨的特點下難以充分提取特征和有效進行特征融合的問題。在YOLOv5的基礎上,引入了C3TR Transformer模型和注意力機制。經實驗表明,該模型能更充分的提取特征與更有效地進行特征融合,提高了檢測性能。并且在檢測精度方面也優于現有的目標檢測方法。其中,由于第一次將Transformer模型引入目標檢測算法,有著很好的效果。因此,今后的研究方向可能更關注Transformer模型在目標檢測領域的應用。