何 慶,陳正興,王啟航,王曉明,王 平,余天樂
(1.西南交通大學 土木工程學院,四川 成都 610031;2.西南交通大學 高速鐵路線路工程教育部重點實驗室,四川 成都 610031;3.上海市東方海事工程技術有限公司,上海 200011)
目前鋼軌探傷設備在國內普速鐵路和高速鐵路都得到了廣泛應用。由于受探傷設備自身設置不合理、探傷靈敏度不足以及傷損數據分析方法單一、數據處理智能化程度不高等內外部因素影響,鋼軌探傷設備陸續產生傷損漏報、誤報問題[1-3]。同時,由于過去針對上述問題主要依靠改進探傷設備的探頭、邀請專家系統培養工作人員、工作人員自學等方法,因此傷損識別主觀性較強,無法得到推廣。因此,通過機器學習的方法對傷損回波數據進行智能分析是提高傷損識別率的有效方法。
目前各國對于鋼軌傷損的評判不再局限于傷損存在與否,還要對鋼軌傷損檢測數據進行評價,包括對鋼軌的失效原因、安全可靠性、物理和力學性能的綜合性檢測及其評價[4]。雖然我國在超聲檢測領域的數字化、智能化研究也有很大程度的發展,但是傷損的檢測判定、鋼軌失效的原因分析依然需要依靠經驗豐富的專家,智能化程度遠不及工業發達國家;并且由于超聲回波數據分析方法較為單一,我國在超聲波探傷領域一度陷入僵局[5-6]。為提高鋼軌傷損的識別率,降低誤報、漏報率,目前的方法主要是人工提取分類特征,再設計分類器對鋼軌傷損進行分類。目前,鋼軌缺陷的檢測方法主要有超聲波[7]、聲發射[8]、振動加速度[9]、圖像處理[10]等。不同檢測方法的特征提取方法也不盡相同,一般可以通過一些統計或信號處理方法來獲得特征,包括小波包變換(WPT)[11]、核主成分分析(KPCA)[12]、自適應線增強器[13]等。現有的利用機器學習方法進行鋼軌傷損檢測的研究方法包括支持向量機[14]、感知機[15]、貝葉斯模型[16]、半監督模型[17]、最大熵法[18]等。以上方法大多通過人工處理分類特征的方式對鋼軌傷損進行分類識別,這些方法中鋼軌傷損判別效果依賴工作人員選取特征的準確性,對于經驗不足或認識不夠的傷損類型會有所遺漏。另一方面,由于傷損的尺寸較小,可提取的特征較少,同樣會造成鋼軌探傷的誤報、漏報率高等問題。
本文的鋼軌傷損B顯圖像數據集由雙軌式鋼軌超聲波探傷儀采集。近年來,大數據分析技術已經廣泛應用于軌道交通領域[19]。相關研究表明鐵路現場最常出現的傷損類型主要包括核傷、軌底傷損、表面傷損(包含擦傷、魚鱗紋、剝離掉塊)、異常螺孔等[20]。基于此,本文選擇上述四類傷損情況,結合斷面、接頭、螺孔、焊縫四類正常但在B顯圖像上出波情況,通過改進YOLO V3模型,將上述各類正常、異常出波點作為訓練和檢測目標,為鋼軌超聲波探傷設備提供快速高效的傷損智能檢測功能。
在B顯圖像中各類傷損(包括核傷、軌底傷損)的尺寸較小,一般只有少于3個反射點。傳統的YOLO V3模型很容易漏檢這種尺度較小的對象。因此,如何擴展YOLO V3模型的感受野(特征圖上的一點對應的輸入圖像的區域)從而確保較高的檢測召回率是本文改進YOLO V3模型時關注的重點,主要包括四種方法:提升輸入圖像分辨率、增加極小尺度檢測層、增加SPP模塊以及增加SE模塊。
YOLO V3模型通過多個卷積層來不斷修改輸入層的大小和通道,從而獲取被檢測對象的更高層次信息。為了提升檢測精度,本文將輸入圖片尺寸由416像素×416像素提升到608像素×608像素。
為了提升小目標的檢測精度,YOLO V3模型引進了特征金字塔的概念并且使用三種不同大小的特征圖進行多尺度預測。以本文的輸入分辨率為例,第一個尺度將輸入圖片劃分為19×19的網格,每個網格的尺寸為32像素×32像素。第二個尺度以第一個尺度為基礎進行2倍采樣,輸入圖片劃分為38×38的網格,每個網格的尺寸為16像素×16像素。同樣地,第三尺度以第二尺度為基礎再進行2倍采樣,輸入圖片劃分為76×76的網格,每個網格的尺寸為8像素×8像素。然而,由于各類傷損的尺寸非常小,即使是第三尺度檢測層也難以很好地檢測到非常小的傷損。因此,為了獲取更為細小的信息,我們繼續對第三尺度進行2倍采樣,將輸入圖片劃分為152×152的網格,最終得到第四尺度的極小尺度檢測層,網絡結構如圖1所示。

圖1 改進的YOLO V3網絡結構
SPP模塊全稱為空間金字塔池化模塊,是由文獻[21]提出的,其優點在于不論輸入圖像的尺寸是多少,都能產生固定尺寸的輸出圖片。試驗表明輸入圖像尺寸多樣比圖像單一尺寸更容易使網絡收斂,但是全連接層在處理不同尺度圖像時會導致精度下降。因此,可以通過數據增強方式任意改變輸入圖像的尺寸和縱橫比,之后通過SPP模塊輸出固定尺寸的特征圖到YOLO檢測層,從而提高圖像的尺度不變性并降低過擬合。SPP模塊的另一個特點在于其相較于原網絡的設計和結構是獨立的,因此可以用在網絡層之后而對原網絡結構沒有影響。為保證輸入YOLO檢測層的特征圖尺寸固定,本文在每個YOLO檢測層前都加入了SPP模塊,如圖1所示。
SE模塊屬于注意力機制模塊[22],是Squeeze-and-Excitation模塊的簡稱,該模塊學習了特征圖通道之間的相關性,篩選出針對通道的注意力權重,從而使網絡更加關注存在檢測對象的通道。模塊分為兩個部分:第一個部分為壓縮(Squeeze),即對特征圖進行全局平均池化,得到通道數與原特征圖一致的一維張量,該張量可以理解為全局感受野;第二個部分為激活(Excitation),即對壓縮后的一維張量采用激活函數進行非線性變換。最后將激活后的一維張量作為權重與輸入特征圖相乘。本文在第一個SPP模塊之后加入了SE模塊(圖1)進而提升了網絡檢測性能。
本文的鋼軌傷損B顯圖像數據集由雙軌式鋼軌超聲波探傷儀采集。數據來源多樣,主要有朔黃線、懷化工務段、開遠工務段、廣州地鐵、武漢地鐵等,采集的B顯圖像皆來自現場實際傷損。數據集類型主要包括:核傷、軌底傷損、表面傷損、異常螺孔四類異常數據集和斷面、接頭、螺孔、焊縫四類正常數據集。
本文所用的雙軌式探傷儀在每側鋼軌處設置有1個超聲波探輪,每個超聲波探輪有9個超聲波探頭,共18個超聲波通道。每個超聲波通道輸出一個B顯數據組,每個通道的名稱由“左輪/右輪+前/后/縱+內/外/直+角度”組成。各通道在B顯圖像中的出波示意如圖2所示。圖2中虛線分割開來的區域分別用70°探頭檢測軌頭外側、軌頭中間、軌頭內側,用0°和37°探頭檢測軌頭、軌腰、軌底,最終每張B顯圖片可以看作由18個通道的出波疊加而成。

圖2 各通道在B顯圖像中的出波示意
本文關注的重點是小尺寸的傷損檢測。數據集中檢測對象目標框的面積分布如圖3所示。從圖3可以看出,大多數目標框的面積聚集在500~2 000像素,而小目標大多聚集在面積為100像素處。因此小目標所能提取的特征非常少,不利于檢測。各類B顯檢測對象數量占比見表1。由表1可以看出,核傷、軌底傷損兩類小目標傷損的占比較小,因此數據集中數據不平衡的問題較為突出,而這會進一步導致YOLO V3模型更加關注中、大目標的檢測,而忽略了小目標。

圖3 B顯數據集檢測對象尺寸直方圖

表1 各類B顯檢測對象數量占比 %
基于以上原因,為了解決本文出現的數據不平衡問題,提升小尺寸目標的占比,采用在圖片指定區域內的任意位置粘貼小目標的數據增強方法[23]。其具體實現思路是:先將每一類中所有的小目標根據其邊界框的中心點坐標和尺寸摳出來保存在文件夾中備用;然后隨機選取n個小目標進行縮放(范圍在0.9~1.1),在圖像上對應區域粘貼小目標,要求兩兩之間不能重合(即兩兩之間計算的IoU必須為0)并且粘貼位置不能超出圖片。需要注意的是,本數據集中各類小目標有特定的出現區域,核傷只會出現在B顯圖像中的軌頭區域,軌底傷損只會出現在軌底區域,因此還需限制兩類小目標傷損的出現區域。以核傷為例,圖4展示了隨機粘貼3個小目標后的效果,除上方紅框內的核傷外,其他3個藍框內的核傷是經過隨機粘貼生成的。本文將經上述處理后的圖片添加到訓練集中與原始數據一起訓練,從而達到提升檢測精度的目的。

圖4 數據增強后的B顯圖片
與普通圖像數據一樣,B顯圖像數據也存在很多雜波噪聲干擾,而檢測中的噪聲主要由探傷時探輪調整不良、通道靈敏度在不同軌面狀態時修正不及時、鋼軌材質噪聲不同等因素造成,沒有規律可循。雜波濾除前后對比見圖5。由圖5(a)可以看到,B顯圖像中存在一些少于3個反射點的小回波點(黃色框標出)以及與超聲波傳感器檢測角度及通道顏色不符的連續長條波形(紅色框標出),這些雜波會對檢測過程造成一定的干擾。因此本文采用8鄰域降噪法將上述的雜波濾除。
8鄰域指的是中心點周圍的8個像素點,如果這8個點中像素值大于0的個數小于某個閾值k就判斷這個點處為雜波點。經過試驗,本文將閾值k設定為3。降噪后的圖像如圖5(b)所示,可以看到原圖像中過小的雜波點和連續的白色長條波形皆被濾除。

圖5 雜波濾除前后對比
YOLO V3開始引入Faster R-CNN中錨框(Anchor Boxes)的概念。初始錨框是一組具有固定高度和寬度的先驗框,而先驗框的選擇將會直接影響檢測的精度和速度。與Faster R-CNN的手動選擇錨框不同,YOLO V3通過在數據集標簽上運行K-means聚類算法自動找到合適尺寸的錨框。通過K-means生成的聚類可以反映數據集中樣本的分布,使YOLO網絡能夠更容易做出良好的預測。另一方面,如果直接采用標準的K-means聚類算法,在邊界框尺寸比較大時其產生的誤差也更大,而聚類分析時希望誤差和邊界框的尺寸沒有太大關系。因此,通過IoU定義了距離函數,使誤差與邊界框的尺寸無關。距離函數d為
d(box,centroid)=1-IoU(box,centroid)
( 1 )
式中:box為目標對象的實際邊界框;centroid為聚類中心框。
本文的試驗硬件環境配置,采用NVIDIA Tesla系列計算顯卡,適用于深度學習大規模數據計算。系統配置主要包括Windows10、CUDA10.2、cuDNN7.6.5、Python3.7等常用環境,深度學習框架使用PyTorch框架。
本文的數據集共有17 601張B顯圖片,其中核傷1 363張,表面傷損7 208張、異常螺孔1 320張、軌底傷損584張、螺孔2 496張、焊縫1 310張、斷面1 656張、接頭1 664張。采用LabelImg工具對數據集進行標注,并保存為VOC數據集格式,在訓練前根據VOC數據集的格式與結構轉換為YOLO數據集格式。本文將總數據集的90%作為訓練集,將10%的數據集作為測試集。
使用本文改進的YOLO V3網絡訓練前需要先配置網絡參數。為提高網絡分辨率,本文將輸入的416像素×416像素的原始數據集重新調整為608像素×608像素。考慮到高網絡分辨率會占用大量顯存,導致顯存溢出情況發生,因此本文將每次輸入的批量大小(batch)設置為12。深度學習模型可以通過數據增強的方式提升模型的泛化能力和魯棒性,而YOLO算法內置了通過修改初始超參數的方法進行數據增強。本文設置色調為0.013 8,色飽和度為0.678,明度值為0.36,旋轉角度為1.98,平移值為0.05,縮放值為0.05,剪切值為0.05。本文將初始學習率設置為0.000 579,優化器選用SGD優化器,設置動量為0.937,權重衰減系數為0.000 484。
2.2節介紹了在指定區域內粘貼多個檢測對象的數據增強方法。然而,同一張圖內檢測對象的粘貼個數和加入訓練集的增強圖片數量并不是越多越好,最終的檢測效果需要通過評價指標來確定。

( 2 )
( 3 )
( 4 )
( 5 )
( 6 )
式中:TP為真正例;FP為假正例;FN為假負例;n為最大精度的數量;i為檢測類別的數量;根據VOC2007數據集格式[24],用最大精度的平均值求得平均精度AP,其中最大精度pinterp(Rn+1)為
( 7 )

以核傷為例,本文首先使用YOLO原網絡對同一張圖內小目標的粘貼個數進行試驗對比,見表2。由于平均精度可以較好地考慮精度和召回率的綜合關系,因此本節將平均精度作為主要評價指標。從表2可以明顯看到,同一張圖內粘貼2個小目標所得到的平均精度是最高的。隨后,本文對粘貼2個小目標的增強圖片進行試驗,分別取增強后的圖片數量50、100、200、300張加入原始訓練集進行對比試驗,觀察其測試效果,見表3。從表3看出,取100張增強圖片加入訓練集中進行試驗最終得到的測試效果最好。因此,本文最終確定取100張隨機粘貼2個小目標的增強圖片加入訓練集中進行模型訓練。

表2 同一張圖內不同小目標粘貼個數對應的測試結果

表3 不同增強圖片數量對應的測試結果
根據2.4節提出的K-means聚類算法,本文首先設定需要聚類的錨框數量為1~20,對所使用的數據集進行K-means聚類分析,結果如圖6所示。

圖6 錨框K-means 聚類分析結果
從圖6可以看出,隨著錨框數量的增加,平均交并比也在提升。因為錨框數量增加,計算量也會增加,損失函數的收斂速度也會減慢,所以綜合考慮誤差與計算量,本文選擇的聚類錨框數量為12個。因此所聚類出來的12個先驗框的寬和高為(573,218)、(582,34)、(582,26)、(302,25)、(203,26)、(127,22)、(428,26)、(38,186)、(13,18)、(77,45)、(57,29)、(66,35)。
模型訓練完成后,對測試集中的17 601張B顯圖像中的8類目標進行檢測,各B顯圖像檢測對象識別效果評價見表4,各B顯圖像檢測對象識別效果如圖7所示。

表4 各B顯圖像檢測對象識別效果評價

圖7 各B顯圖像檢測對象識別效果
從表4可以看出基于改進YOLO V3模型的B顯圖像檢測方法的總體平均精度為92.3%,總體上具有較高的識別精度。對于正常數據集,檢測對象的識別精度均在90%以上,說明該模型誤檢率很低;而在召回率方面,除了斷面,其他類型均在0.95以上,因此除斷面可能存在少許的漏檢情況外,其他類型均能保證較高的檢測全面性。對于異常數據集,核傷和軌底傷損尺寸很小,檢測難度較大,即便如此平均精度也達到88%以上;另一方面,表面傷損和異常螺孔的平均精度均在90%以上,基本可以保證較低的漏檢、誤檢率。同時,可以看出該模型的檢測速度達到44 ms/張,基本滿足實時檢測的要求。由此可見,基于改進YOLO V3的鋼軌傷損B顯圖像識別算法保證了檢測準確性和實時性,能夠較好地完成鋼軌傷損檢測任務。
(1)本文詳細介紹了YOLO V3模型的網絡結構改進方法,包括提升輸入圖像分辨率、增加極小尺度網絡檢測層、增加SPP模塊和增加SE模塊等,從而提升了網絡對小尺度目標的檢測能力。
(2)本文介紹了B顯數據預處理方法,包括數據增強和雜波濾除方法;提出了通過邊界框K-means聚類算法獲取12個先驗框,從而優化了檢測的精度和速度。
(3)本文通過網絡參數調整等方法優化了改進的YOLO V3算法,并用核傷、軌底傷損、表面傷損(包含擦傷、魚鱗紋、剝離掉塊)、異常螺孔四類異常數據集和斷面、接頭、螺孔、焊縫四類正常數據集進行檢測試驗。
(4)試驗結果表明,本文提出的改進算法檢測平均精度達到92.3%,檢測速度達到44 ms/張,該模型具有較好的檢測效果。不足之處在于小目標數據集檢測精度還有一定的提升空間,如何繼續提升小尺度傷損的檢測精度將是未來的主要研究方向。
未來,我們可以將該算法進一步完善并將其打包為軟件安裝到雙軌式探傷系統中,為現場智能探傷提供輔助。