徐崇文
(湖北理工學(xué)院 電氣與電子信息工程學(xué)院,湖北 黃石 435003)
鐵軌檢修和鐵路枕木與扣件的維護對鐵路安全有著非常重要的意義。對于整個鐵軌而言,枕木的腐蝕與斷裂會使鐵軌與地面的受力面積減小,使鐵軌慢慢下沉。扣件的主要作用是把鐵軌牢牢固定于地面上。一旦扣件缺失部分零件,或發(fā)生損壞,鐵軌將會出現(xiàn)變形或者歪曲等問題,形成重大的安全隱患[1]。傳統(tǒng)的鐵軌檢修一般由專門的鐵路檢修車或者工人來完成,人工費用和車輛維護費用較大。本文提出了一種基于無人機的鐵軌區(qū)域探測的鐵軌檢修模式。該模式由無人機拍攝鐵軌圖片,再由系統(tǒng)自動識別圖像中的枕木與扣件并進行分類,既高效又經(jīng)濟實惠,有望替代傳統(tǒng)的鐵軌檢修模式。
基于無人機的鐵軌探測檢修工作,首先是對鐵軌進行自動探測,然后依據(jù)鐵軌信息對圖像進行預(yù)處理,最后將預(yù)處理的圖像送入機器學(xué)習(xí)訓(xùn)練模型完成分類[2]。
相比于鐵軌檢修車拍攝,無人機拍攝的圖片方向具有不確定性,即鐵軌不再垂直或平行于整張圖片,因此需要對原圖片進行預(yù)處理[3]。
由無人機在高空約180 m處拍攝鐵軌,形成圖像數(shù)據(jù)。無人機拍攝的示例原圖如圖1所示。
圖1 無人機拍攝的示例原圖
由圖1可以看出,每張圖片中不僅包含了鐵軌,還存在很多樹木、草地、車和石子等干擾因素,因此要先將2條鐵軌完整地從整張圖片中分離出來。LSD(Line Segment Detector)是一種能夠快速探測直線特征的算法[3],其整體思路如下。
1)選取1個起始點為種子點,并計算其梯度方向θregion及其在x,y方向上的分量Sx,Sy。
2)計算種子鄰域內(nèi)其他點的梯度方向。若鄰域內(nèi)點的方向diff(θ-p,θregion)<τ(τ為閾值),那么這一點為直線區(qū)域點,并重新計算2個分量。
(1)
由此得到新的直線區(qū)域梯度方向為:
θregion=arctan(Sy/Sx)
(2)
3)不斷重復(fù)上述過程,直到找不到相同梯度方向的點或已經(jīng)進行過上述計算過程的點。
4)直線區(qū)域選定后,由于選定的是一個個像素點,所以需要用一個矩形框?qū)⒅本€區(qū)域圈定。直線區(qū)域中心點作為矩形的中心,主慣性軸為矩形的方向,長度和寬度則由最邊緣點決定。
5)驗證直線分割。LSD算法相比于原有的直線分割算法更加高效準(zhǔn)確[4],整個圖像上不論是背景或是鐵軌本身都會有返回值,其所返回的直線在實際情況下是一條條長短不一的線段。因此,需要從眾多的線段中選出鐵軌上的線段,并將其合并、延伸。每一條線段的返回值包括起點坐標(biāo)(xori,yori)和終點坐標(biāo)(xend,yend),以及整個線段寬度。由此可以計算出每一條線段的角度為:
(3)
圖像起始點到該直線的距離為:
(4)
將角度和距離信息添加到已存儲的線段信息中,與原線段一一對應(yīng)。設(shè)定通道間隔,將角度與距離分通道排列,建立直方圖,再將角度與距離直方圖最大值的LSD直線特征分離出來,濾除背景中造成干擾的直線特征以后,得到剩余的大部分直線特征都屬于鐵軌。對于示例圖,LSD算法運行結(jié)果如圖2所示。由圖2可以看出,整幅圖像包含大量的線段,長短不一,角度也不一致,覆蓋了2條鐵軌的大部分區(qū)域。
圖2 LSD算法運行結(jié)果
已知線段的終點和起點坐標(biāo),可計算兩兩相鄰直線的角度差值。若小于一定的閾值,可將2條直線進行合并;若大于一定的閾值,則計算下一條直線與這2條直線的角度差值,保留差值較小的2條直線。這樣就可以采用近似值將同距離同角度的直線進行合并、延伸,將鐵軌從整個原圖中分離[5]。
經(jīng)過計算直線角度和距離原點長度等預(yù)處理之后,篩選出鐵軌上的線段,將所有線段連接在一起并延長,即可得到分離鐵軌(如圖3所示)。分離鐵軌的首要目的是將鐵軌區(qū)域圈定,即將滑動窗口所需要掃描的區(qū)域圈定。由圖3可以看出,算法達(dá)到了預(yù)期目標(biāo),成功地將鐵軌從復(fù)雜的背景中分離出來。
圖3 分離鐵軌
無人機圖像大小為4 608×3 456,如果對整張圖片進行掃描,耗時較長,極大地浪費了數(shù)據(jù)集準(zhǔn)備時間。相比于傳統(tǒng)鐵軌檢修車上相機拍攝的圖片,數(shù)據(jù)庫中無人機圖片都是不規(guī)則的,鐵軌不再平行或者垂直于整張圖片。因此,在準(zhǔn)備數(shù)據(jù)集時更重要的是將每一張圖片根據(jù)已知的鐵軌角度進行旋轉(zhuǎn),使鐵軌平行于圖片,同時延長直線獲得2條鐵軌與圖片的交點,將這一交點作為滑動窗口的起始點,并重新計算鐵軌在旋轉(zhuǎn)后圖片中的起點和終點,規(guī)定滑動窗口從起點開始。對于示例圖,根據(jù)鐵軌角度旋轉(zhuǎn)后的圖片如圖4所示。
圖4 根據(jù)鐵軌角度旋轉(zhuǎn)后的圖片
滑動窗口有了起始點,還需對長度、寬度和步長等參數(shù)進行設(shè)定?;瑒哟翱诘某跏贾祵挾萳ori為:
lori=lmin-5×pixel
(5)
式(5)中,lmax和lmin分別為枕木寬度最大值和最小值,且在標(biāo)注數(shù)據(jù)時已知;pixel為像素。
間隔為15個像素點長度,滑動窗口截止寬度lend為:
lend=lmax+5×pixel
(6)
探測的鐵軌間距固定,長度Widthsleeper設(shè)定為:
Widthsleeper=Widthtrack-2×Widthtieplate
(7)
式(7)中,Widthtrack為鐵軌間寬度;2×Widthtieplate為扣件的寬度。
步長為16,依次遍歷每一張圖片中的鐵軌部分得到的數(shù)據(jù)集,約5~6萬張圖片。將這些圖片按照3∶1∶1的比例分為訓(xùn)練集、測試集和驗證集。
在預(yù)處理圖片的同時,需要用MATLAB軟件的Image Labeler將一部分圖片進行標(biāo)注。對于示例圖,圖片標(biāo)注如圖5所示,藍(lán)色方框的標(biāo)注為“bad”的枕木。因為整個系統(tǒng)需要分辨的是損壞的扣件和腐蝕、斷裂的枕木,所以標(biāo)注的時候,只用將壞的部分框出,進行二分類即可。
圖5 圖片標(biāo)注
從線性分類模型到解決實際問題的非線性模型,出現(xiàn)了2種代表性的方法:深度學(xué)習(xí)和支持向量機。本文用到的是深度學(xué)習(xí)分類方法,選用AlexNet訓(xùn)練模型。AlexNet在2012年由Hinton和他的學(xué)生AlexKrizhevsky提出,是一個基于CNN(卷積神經(jīng)網(wǎng)絡(luò))的深層神經(jīng)網(wǎng)絡(luò)模型,主要運用于圖像數(shù)據(jù)處理。
首先將訓(xùn)練集圖片進行分類,計算每一張圖片A與標(biāo)注數(shù)據(jù)B的重疊部分比例Ratio:
(8)
同時,設(shè)定一個閾值,大于閾值則定義為“bad”的數(shù)據(jù)(已經(jīng)腐蝕、斷裂的枕木),小于閾值則定義為“good”的數(shù)據(jù)。驗證集也采用同樣的方式進行劃分。分別保存這4個分類,送入訓(xùn)練模型中。啟用GPU運算,大約耗費2 h,查看訓(xùn)練成果,當(dāng)error不再下降時,保存分類器訓(xùn)練模型。將沒有分類的測試集直接送入訓(xùn)練模型,通過模型輸出與標(biāo)注數(shù)據(jù)進行IOU計算和非極大值抑制處理得出最終的結(jié)果。
對于示例圖,AlexNet枕木識別結(jié)果如圖6所示,每一個保留下的枕木用紅框標(biāo)記出來,并在上方顯示其擊中概率。從圖6可以看出,大部分?jǐn)嗔鸦蛲嵝钡恼砟径急蛔R別出來,但有部分紅框圈出的區(qū)域仍包含了背景(石子區(qū)域)。
圖6 AlexNet枕木識別結(jié)果
整個圖片數(shù)據(jù)庫約有2 000 ~3 000張圖片,對每一張圖片都進行LSD直線特征探測,分離鐵軌區(qū)域,將滑動窗口掃描到的圖片送入訓(xùn)練模型。對于示例圖,物體識別準(zhǔn)確率如圖7所示。大部分物體能夠識別成功,但整個鐵軌區(qū)域探測鐵軌檢修項目所能達(dá)到的枕木識別準(zhǔn)確率僅為20%,沒有達(dá)到預(yù)期的目標(biāo)。
圖7 識別準(zhǔn)確率
造成這一結(jié)果的原因可能有:①整個數(shù)據(jù)集圖片包含大量背景,目標(biāo)物體區(qū)域較小;②標(biāo)注過程中,有的斷裂枕木包含大量石子,與背景類似,于是訓(xùn)練模型將石子背景區(qū)域也劃分為“不好”的枕木。
基于無人機的鐵軌區(qū)域探測檢修模式利用基礎(chǔ)的直線特征LSD和相關(guān)預(yù)處理算法對直線特征進行篩選,實現(xiàn)了將固定的鐵軌區(qū)域特征從復(fù)雜背景中分離出來的目的,適用于整個數(shù)據(jù)集幾萬張圖片,方法魯棒性較高。由于無人機的拍攝飛行高度較高(180 m),獲得的圖片較為復(fù)雜,整個鐵軌只占圖片的一小部分,每個枕木所占的像素點較少,因此輸入到機器學(xué)習(xí)訓(xùn)練模型中得到的最終分類識別效果較差。
對于實驗結(jié)果不盡人意的情況,可以進行以下改進:①重新拍攝圖片數(shù)據(jù),將拍攝高度降低,得到盡可能清晰的圖片;②嘗試不同的機器學(xué)習(xí)訓(xùn)練模型,例如在AlexNet之后誕生的VGG16,GoogleNet等;③對不同的圖片進行圖像匹配以消除陰影干擾。