羅玉勝,譚兆海,趙 波
(1.中國鐵路蘭州局集團有限公司,甘肅 蘭州 730000;2.成都鐵安科技有限責任公司,四川 成都 610091)
全車運行故障動態圖像綜合檢測系統安裝在客整所入段線上,對動力集中型動車組的車底走行部、車側轉向架、車體車窗及車頂部位進行動態檢測,自動識別判斷關鍵部件變形、脫落、異物等異常情況。
撒砂管是撒砂裝置的一部分,通過撒砂管撒砂可以增大動車車輪和軌道之間的動摩擦系數,能夠有效地提升牽引力和防止車輪空轉[1]。在列車的行駛過程中,撒砂管有可能受到碎石或者其他外力的撞擊,導致撒砂管的高度產生變化影響其撒砂功能,對行車安全造成威脅。目前對撒砂管的高度測量主要是通過千分尺、標準尺等傳統測量工具對其進行人工測量,缺點是費時、費力、工作量大。如果能通過全車運行故障動態圖像綜合檢測系統實現撒砂管高度的通過式自動檢測,將極大地提高檢測效率替代傳統人工測量,對保障動車組運行安全具有重要意義。
高度測量是計算機視覺技術的一大主要研究方向,最初的高度測量算法都是依賴于二維圖像,通過對二維圖像的處理以及圖像坐標、相機坐標、空間坐標之間的轉換關系來測量被測物體的高度[3]。也正是因為其完全依賴于二維圖像,而二維圖像缺少深度信息,所以其測量精度往往不高。隨著3D技術的發展,非接觸式的車輛和動車部件的高度測量技術得到了廣泛的應用和發展[4]。以往的研究都是基于3D點云數據的處理來測量物體的高度,這些研究都有一個共同點,那就是面對的場景比較單一,背景干擾很小或者幾乎為零[4-6]。撒砂管是撒砂裝置的一部分,而撒砂裝置又是動車的一部分,因此撒砂管的背景相對更加復雜,通過普通的點云數據處理無法濾除所有背景的干擾。所以僅僅依賴于3D數據處理的算法也無法滿足撒砂管高度測量的需求。
得益于深度學習技術的發展,在二維圖像上檢測和識別特定的目標成為了可能。目標檢測技術能夠從復雜的背景圖像中檢測并定位到目標[7-9]。基于此,本文提出了一種撒砂管高度測量算法。該算法通過深度學習的目標檢測技術在二維圖像上定位出撒砂管,然后根據二維圖像與三維點云數據的對應關系取出對應的撒砂管點云數據,以此來克服復雜背景對測量結果的干擾。
從圖1中可以看出拍攝到的撒砂管樣本,除了包含撒砂管部件本身之外,還包含鐵軌、管道、車輪等干擾物,背景較為復雜。而且各個干擾物的像素灰度與撒砂管的像素灰度之間的差距并不大,也就是說圖像的梯度信息并不是很明顯。因此不能通過傳統的邊緣檢測和圖像分割算法來從圖像中提取出撒砂管部件。同時不同列車和不同車廂的撒砂管高度都不一樣,因此很難在3D點云數據上根據高度和深度范圍直接來提取撒砂管。所以需要利用深度學習技術,首先在二維圖像上定位出撒砂管,然后再根據二維圖像與3D點云數據的對應關系獲取撒砂管的3D點云數據信息。

圖1 撒砂管樣本
撒砂管的定位采用的是端到端的YOLOv3算法,YOLOv3算法檢測精度高,速度快,能夠滿足現場應用中的實時性需求[10]。其神經網結構圖如圖2所示。

圖2 YOLOv3神經網絡結構圖
圖2中DBL代表—卷積層+BN層+激活函數,這是一種新的神經網絡塊。它與普通的神經網絡相比,最大的好處是加入了BN層,在特征圖像整體偏暗或者偏亮時,對圖像重新做歸一化,使得特征圖的梯度特征更加明顯,有利于梯度的傳導和更新。res_unit代表殘差塊,殘差塊直接將梯度信息向后傳遞,能夠有效解決神經網絡在訓練過程中梯度消失和梯度爆炸的問題。
YOLOv3網絡輸入的是撒砂管數據(見圖1),其輸出為定位和識別的結果。為了增強神經網絡對不同尺度目標(撒砂管)的定位識別性能,本文在原本YOLOv3算法的基礎上使用了Mosaic數據增強,該方法通過隨機縮放、隨機裁剪、隨機排布的方式對訓練數據進行拼接[11]。
撒砂管的高度(h)指從鋼軌平面到撒砂管最低點的距離(見圖3)。按照這個定義可以將撒砂管高度測量算法分為三大步驟:首先擬合鋼軌平面得到平面的參數方程,然后通過2D和3D數據處理技術獲得最低點的坐標,最終根據撒砂管最低點的坐標計算撒砂管高度h。

圖3 撒砂管高度測量示意圖
擬合鋼軌平面的參數是計算撒砂管高度的基礎,平面擬合包括平面數據采集和參數計算兩個過程。在數據采集階段,首先將標定板放置在鋼軌上;然后通過水平尺來保證標定板的水平;最后通過3D相機采集標定板上表面的點云數據。三維平面的表達式如公式(1)所示:
Ax+By+Cz+D=0
(1)
鋼軌平面擬合的過程就是求取公式(1)所示的A、B、C、D4個參數的過程。要求取這4個參數,至少需要3個平面中的點。3D相機獲取到的平面如圖4所示。
由于存在相機畸變等問題,獲取到的平面點云數據并不是完全水平的(見圖4)。所以在擬合平面時選用了RANSAC算法來擬合平面,而不是隨機3個點求取平面的參數[12]。RANSAC算法將數據分為“局內點”與“局外點”。“局內點”是可以用來估計模型參數的點,“局外點”是不屬于估計的模型,屬于噪聲點[12]。RANSAC算法在擬合點云平面時,根據設置閾值來確定該點是否偏離了當前平面,即在擬合時如果該點距離平面較遠就判定為噪聲點,然后根據出噪聲點外的數據距離該平面的最大距離值是否在誤差允許范圍內來判定該平面的參數是否正確。如果不正確就繼續重新取點進行迭代計算,知道計算得出最佳平面。

圖4 3D標定板平面
如上文所述,在拍攝3D數據時,標定板是放置在鋼軌平面上的,所以在通過RANSAC算法計算得到標定板的平面參數方程之后,還需要再加上標定板厚度才能得到鋼軌平面的參數方程如公式(2)所示:
Ax+By+Cz+D+d1=0
(2)
公式(2)中A、B、C、D表示從標定板點云數據擬合到的平面參數,由于標定板平面和鋼軌平面是完全平行的,所以x軸,y軸,z軸的參數完全相同,d1表示標定板厚度。
撒砂管最低點選取的第一步是根據二維圖像的定位結果與3D點云數據的對應關系來獲取撒砂管所在區域的點云數據。二維圖像中撒砂管的定位通過YOLOv3算法來完成,而2D圖像與3D點云數據的對應轉換關系則通過二維相機與3D的聯合標定來獲取,由于聯合標定不是本文重點,所以這里不做過多介紹。
獲取到撒砂管所在區域的點云數據(見圖5)。從圖5中可以看出,通過二維圖像的定位已經去除了大多數背景噪聲的干擾,但是在二維圖像上離撒砂管很近的區域仍然存在干擾。

圖5 撒砂管所在區域點云數據
為了除去這部分噪聲的干擾,首先通過體素濾波對如圖5所示的3D數據進行體素濾波消除噪點,然后通過kd-tree對進行點云數據的連通域分析[13]。kd-tree算法將在一定搜索半徑范圍內的點云數據進行歸類,將整個點云數據分為不同的點云團,并為這些點云團分配不同的索引。所以后續對這些點云團進行處理時只需要按照索引去取對應的3D數據。由于撒砂管的大小是有一定范圍的。所以,通過對點云數據規模的判斷就能除去點云規模較小的區域對測量結果的干擾。
通過對所有的撒砂管數據進行統計和分析發現,點云數據規模差不多的情況下,撒砂管的點云團到鋼軌平面的平均高度是最低的。因此通過計算各個點云團到鋼軌平面的平均高度就能挑選出撒砂管對應的點云團如圖6所示。

圖6 撒砂管3D點云數據
從圖6中可以看出已經濾除了點云數據中的噪聲,接下來就是選取最低點。通過對現有數據的統計和分析,發現90%的撒砂管點云數據的規模都在20 000個數據點以上,逐一計算其到鋼軌平面的距離選取最低點將耗費大量的計算時間,降低算法的時間效率。同時,根據撒砂管的結構可以出來,撒砂管的最低點一定在底面上。所以提取了撒砂管的底面點云數據,如圖7所示。

圖7 撒砂管底面點云
獲得撒砂管底面點云的數據之后,將所有的點帶入公式(3)計算每個點的高度值:
dis=Ax+By+Cz+D+d1/(A2+B2+C2)
(3)
公式(3)中x、y、z表示底面上的點的坐標。計算完所有的點之后,選取計算得到的高度值的最小值就是撒砂管的高度值,該值對應的點就是撒砂管的最低點。
進行的實驗是YOLOv3算法的定位實驗和撒砂管高度測量的實驗。2個實驗的硬件基礎都是一樣的,使用的平臺為Windows服務器,其GPU為RTX3090 Ti,顯存大小為24 G。
YOLOv3定位算法的評價指標為IoU(intersection over union),其計算公式如公式(4)所示:
IoU=A∩B/A∪B
(4)
公式(4)中A表示預測的框,B表示實際的框。
高度測量算法則通過誤差來評價算法的好壞,其計算公式如公式(5)所示:
Er=|dc-dr|
(5)
公式(5)中,Er表示計算誤差,dc表示算法計算得到的撒砂管高度值,dr表示撒砂管的實際高度值。取dc與dr相減的絕對值作為誤差。
實驗過程所使用的數據均通過實地相機采集獲得,所有的數據均來自于HXD1和HXD2兩種車型,涉及到20 000個撒砂管樣本,定位網絡訓練過程中的訓練集、驗證集、測試集的比例為6:2:2。高度測試時選取了3 000個樣本進行驗證和測試。
通過實驗發現YOLOv3算法的撒砂管定位算法,所有參與測試的4 000個樣本都是能被定位到,沒有出現誤檢和漏檢的情況,平均的IoU的得分為0.93,其定位結果如圖8所示。

圖8 YOLOv3定位結果展示
在實際應用中允許的最大測量誤差為5 mm,實驗發現參與測試的所有樣本測試誤差都小于等于4 mm,完全滿足實際應用的需求。為了進一步驗證算法的性能,在不同的測試誤差下對實驗結果進行了統計,其結果如表1所示。

表1 撒砂管高度測量誤差統計
本文針對以往研究中沒有與撒砂管高度測量相關的機器視覺技術方案的問題,提出了一種可以在列車運行過程中檢測列車撒砂管高度的算法。該算法通過目標檢測算法YOLOv3在2D圖像上的定位結果消除了大多數背景信息的干擾,然后通過點云數據的濾波等操作濾除了所有的背景信息,能在有管道等復雜背景的情況下測出撒砂管的高度。經過實驗驗證,所有樣本的高度測量誤差都不超過4 mm,測量誤差小于3 mm的樣本占96%,測量誤差小于2 mm的樣本占90%,滿足實際應用的需求。但是針對光線較暗的情況下,該算法的測量誤差仍然較大,后續將繼續這方面算法的研究。