吳志新 聶留陽 董容君 劉書豪 呂欣航
(中國民航大學計算機科學與技術學院 天津市 300300)
隨著中國經濟的迅速發展,全國各地開始大力發展道路基礎建設。飛機作為最便捷的交通工具,越來越多的人選擇乘坐飛機出行。據最新的民航機場生產統計公報[1]顯示,我國2019年全年機場旅客吞吐量為135162.9 萬人次,貨郵吞吐量為1710.0 萬噸,完成飛機起降1166.0 萬架次。面對如此龐大的旅客運輸量和貨郵運輸量,機場道面會不可避免地出現病害,進而對飛機的起降安全產生威脅。機場道面多數病害表現為裂縫,傳統的裂縫檢測主要為人工檢測,效率低下而且準確率低。因此,對于機場道面裂縫的自動檢測具有極大的研究意義。
近幾年,隨著智能時代的來臨,對圖像自動識別的方法逐漸多樣化,檢測效率也逐漸提高。但是,與普通路面不同機場道面,飛機存在著明顯的油污和橡膠殘留痕跡等干擾因子,對檢測的效果產生極大的影響。為了檢測出目標,Ultralytics LLC 公司提出了YOLOv5 等算法。YOLOv5 共有四個網絡模型,分別為YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,其中YOLOv5s 體積最小。YOLOv5 與YOLO[2]之前的系列相比,增加了正樣本,通過靈活的配置參數以及一些內置的超參優化策略,得到不同復雜程度的模型,提高了算法整體的性能;此外,YOLOv5 在數據處理方面,使用mosaic 數據增強,隨機選取四張圖片,隨機縮放,然后再隨機拼接,很大程度上豐富了數據集。
2014年RCNN 算法提出后,由于其存在三個明顯的問題:提取候選區占用較大空間,訓練步驟繁瑣以及訓練測試速度慢,必須對其進行改進才能更好地使用。Fast-RCNN[3]針對RCNN 需要對每一個候選區進行CNN 操作這一繁瑣過程進行改進,提高了訓練速度和網絡利用的效率,但其仍存在候選區的生成速度不夠快等問題。經過R-CNN 和Fast-RCNN 的積淀,Ross B.Girshick 在2016年提出了新的Faster-RCNN。在結構上,Faster-RCNN 已經將特征提取,proposal 提取,b_box regression(rect refine),分類器(classification)都整合在一個網絡中。但由于傳統目標檢測的算法使用selective search 提取候選框,該方法存在耗時的問題,難以滿足檢測快、耗時少的需求。基于對Fast-RCNN 算法的改進,Faster-RCNN 提出了RPN(Region Proposal Network)[4]網絡,專門用于提取目標候選框,使得訓練速度得到提高,整體性能也得到較大的提升。
2015年,Olaf[5]等在提出了提出了基于U-Net 的醫學圖像分割方法。該方法使用包含壓縮路徑和擴展路徑的對稱U 形結構,能夠利用非常少的圖像進行端到端的訓練。U-Net 的卷積部分可以分為5 層,通過進行降采樣和上采樣,再對特征張量進行拼接,最后的輸出結果和輸入圖像大小一致為止。至今,U-Net已經有了很多變體,但仍延續了U-Net 的核心思想,只不過是加入了新的模塊或者融入其他設計理念。

圖1:Faster-RCNN 檢測過程

圖2

圖3:三種模型的bounding box 合并過程
本文綜合YOLOv5、Faster-RCNN 以及U-Net 三種模型的優點,對訓練后模型結果進行合并優化,提高了裂縫檢測的精確率。

圖4:兩種bounding box 合并
實驗先使用YOLOv5s 模型進行簡單的訓練測試,最后使用YOLOv5x 模型訓練。YOLOv5 采用GIoU Loss[5]來計算bounding box 的 Loss, GIoU 直接把IoU 設為回歸的 Loss,其公式如下:

在任意兩個框A、B 中找到一個最小的封閉形狀C,接著用A 與B 的IoU 減去C 中沒有覆蓋A 和B 的面積占C 總面積的比值。與IoU 類似,GIoU 也可以作為一個距離,loss 可以用LGIoU=1-GIoU。
Faster-RCNN 網絡主要包括三個部分:卷積網絡特征提取部分,基于RPN 網絡的候選區選取部分和目標識別定位部分。其中卷積網絡特征提取部分對輸入的機場道面圖片進行卷積和池化操作,提取特征。接著在RPN網絡中通過對anchor的中心坐標和長寬的調整,得到道面表觀缺陷的候選區,建立特征區域與特征圖的映射關系。最后在目標識別定位部分給出缺陷的位置并對其進行類別的判定,其過程圖1 所示。
實驗所用訓練數據集為灰度圖,輸入單通道。對于二分類問題,本實驗的損失函數使用交叉熵損失函數BCEWithLogitsLoss,該函數整合了Sigmoid 函數,不用計算概率,自動在內部實現添加Sigmoid 激活函數。其公式如下:
假設有N 個batch,每個batch 預測n 個標簽,則loss 為:

其中σ(xn)為Sigmoid 函數,可以把x 映射到(0,1)區間:
相比于BCELoss函數,它更加方便且增加了計算的數值穩定性,從而提高模型訓練的效果。
優化器選擇RMSprop 來對模型進行優化,其公式如下:

α:學習率;β:動量參數;dw:梯度
使用該函數,通過使用梯度自身的大小來約束避免過大或者過小,從而減少了人為干預和極端情況發生的可能。
機場道面表觀主要分為裂縫(crack)、板角剝落(cornerfracture)、接縫破碎(seambroken)、補丁(patch)、修補(repair)、板縫(slab)、痕跡(如標線、車輪印、水漬、油漬等track)和機場燈(right)等八類表觀。其中,對飛機的起飛降落產生直接威脅多為裂縫、板角剝落、接縫破碎。
使用數據標注軟件labelme 對2000 張機場道面圖像數據進行像素級別的標注。標注工作中主要出現的難點為裂縫較為細長狹小,需將圖像放大才能精細描出裂縫邊緣。由于飛機起降、加油車、擺渡車和天氣等原因產生的標線、車輪印、油漬和水漬等表觀,使裂縫等表觀缺陷與背景間的對比度較低,易產生漏標和錯標等操作。裂縫易板角剝落和接縫破碎等表觀缺陷發生混淆。部分標注效果如圖2(a)和(b)所示。
為保障數據標注的正確性。本實驗采用抽樣檢查的方法,抽檢率為10%。若檢查的圖片不合格率為20%,則認為該批次數據標注不合格,需重新標注。
不合格圖片定義:
(1)有明顯的標簽類別錯誤;
(2)標注的范圍過大,整體超過應標注邊界范圍2 個像素;
(3)圖片中有明顯的未標注部分。
標注工作需對數據集進行反復的標注和檢查,確保標注數據集的準確性,從而保證最后的訓練效果更加精確,避免返工。
分別訓練三種網絡,YOLOv5、Faster-RCNN 以及U-Net。使用想用的測試集進行測試,由于YOLOv5 和Faster-RCNN 均為目標檢測算法可以直接生成bounding box 結果,U-Net 為語義分割算法產生的結果為分割后的圖像。使用opencv 中的boundingRect 方法計算輪廓的垂直邊界最小矩形產生bounding box。對三種網絡的bounding box 進行合并,產生新的bounding box 結果,其過程如圖3 所示。
bounding box合并有兩種形式,一種是相交型,另一種是包圍型。合并的策略是取最大的左上角和右下角的坐標或最大的右上角和左下角坐標,合并成更大的bounding box,如圖4 所示。
使用的編程語言為Python ,平臺為Facebook 開源的Pytorch, 使用的操作系統為Ubuntu 20.04.2,以及一個8GB 顯存的NVIDIA Quadro RTX4000。
對于實驗結果與標準參考之間的差別,本實驗使用了mAP@.5、精確率、召回率和綜合評價指標[6]來衡量訓練模型的好壞程度。
(1) mAP@.5(mean Average Precision):給每一類分類計算平均精確度(AP),然后做mean 平均。AP 是Precision-Recall Curve(PRC)下面的面積。
(2)P(Precision)精確率:正確預測的正樣本數占所有預測為正樣本的數量的比值。

(3)R(Recall)召回率:正確預測的正樣本數占真實正樣本總數的比值。

圖5:YOLOv5 檢測七類表觀的效果

圖6

圖7:Faster-RCNN 預測效果圖

TP(True Positive):預測為正例,實際為正例;
FP(False Positive):預測為正例,實際為負例;
TN(True Negative):預測為負例,實際為負例;
FN(False Negative):預測為正例,實際為負例;
(4)綜合評價指標(F-Measure):相當于精確率和召回率的調和平均。

表1:YOLOv5 訓練的評估結果

圖8:U-Net 的損失率圖

本實驗將除痕跡等其他七類表觀進行檢測。準備訓練數據集,將labelme 標注的json 數據集轉yolo 所需的txt 數據集。yolov5 中txt 中的五個值,分別對應此標簽的類別、中心點的x、y 值以及長 和 寬, 即
訓練完成后,用698 張圖片測試。下面給出測試和評估結果,如表1 和圖5 所示。
實驗使用另一種目標檢測算法Faster-RCNN 對YOLOv5 實驗自制的數據集進行訓練。準備訓練數據集,將labelme 標注的json數據集,轉為本實驗所需的coco 數據集,數據總共包含2769 個訓練集和698 個測試集。每迭代5 次記錄一次損失函數值,將數據送入coco 預訓練模型進行訓練,給出最終的總損失如圖6 所示。
訓練總共完成16632 次迭代共24 個輪次。從圖6(a)可以看出,總體損失函數在迭代1000 次之前持續下降,在1000 次之后,大致趨于穩定狀態,此模型達到收斂的效果。從圖6(b)可以看出平均準確率維持在較高水平。在完成24 輪次的訓練后,bbox_mAP_50:達到0.3440,模型檢測效果如圖7 所示。

圖9:U-Net 預測效果對比圖

圖10:合并后的預測圖
機場道面病害由于存在形狀不規則,跨度大等問題。而檢測框用矩形框表示,導致目標檢測框內可能存在多種類型的病害,這會對精度及準確率造成影響。所以下面采用語義分割網絡U-Net 對裂縫數據集進行訓練。
本實驗僅對裂縫的表觀缺陷進行檢測。準備訓練數據集,先將原始圖像裁剪成合適大小的圖像,再將三通道的RGB 圖轉換為單通道的灰度圖。然后調整圖像像素,將裂縫部分像素設為1,背景部分像素設為0。最終生成16818 張480*640 的灰度圖訓練集。訓練200 個epoch,計算單個epoch 的損失率,保存最小loss 值的網絡參數。如圖8 可以看出當訓練100 個epoch 時,loss 下降曲線基本平穩,損失率基本收斂為0.0003028048752054672。
使用986 張驗證數據集對訓練后的模型進行預測,預測效果為P=0.620, R=0.748, F=0.678 部分結果如圖9。
本實驗將對上述的三種網絡檢測的結果進行取并集。對于698 張數據集,使用YOLOv5 檢測生成bounding box1,使用Faster-RCNN 檢測生成bounding box2,使用U-Net 檢測再通過boundingRect 方法生成bounding box3。然后合并三種結果生成bounding box。預測效果為P=0.671, R=0.763, F=0.712,部分結果如圖10 所示。
本文主要針對目前機場道面表觀缺陷檢測的實際問題。通過使用目標檢測算法YOLOv5 和Faster-RCNN 對采集的數據集進行訓練,并在這兩個模型的基礎上使用語義分割算法U-Net 進行訓練。從結果可以看出U-Net 的實驗結果優于YOLOv5 和Faster-RCNN的結果,對裂縫檢測的精確率從0.418 上升至0.620。再通過將三種網絡的預測產生的bounding box 結果合并優化,預測的效果的精確率從0.620 上升至0.671,證明了融合結果的可行性。但由于現有數據集相對較小,在進行機場道面表觀缺陷檢測時精確度仍有待提高。因此在未來的研究中,將通過采集更多的數據擴大數據集進行訓練,來進一步提高檢測的準確率。