李瑞辰,姚宇峰,蔣元華
(1.中國鐵道科學研究院 研究生部,北京 100081;2. 中國鐵道科學研究院集團有限公司 通信信號研究所,北京 100081)
目前,編組站綜合自動化系統(tǒng)(SAM)普遍應用于我國大中型編組站,通過列車與調(diào)車的綜合管控技術(shù),提高了編組站的自動化程度與運輸生產(chǎn)效率,最大程度地降低了作業(yè)安全風險[1]。由于無法第一時間準確獲得擔當主要牽引任務的機車(簡稱:本務機車)的信息,本務機車的綜合管控技術(shù)一直難以實現(xiàn)。
國內(nèi)外針對車號識別的研究已取得了諸多重要成果,目前,主要由自動識別設(shè)備 (AEI,Automatic Equipment Identification)識別法和圖像識別法兩部分組成[3]。對于AEI識別方法,現(xiàn)階段大多數(shù)站場都配備有AEI車號自動識別系統(tǒng),但是由于機車標簽位置較低,維護困難,而射頻識別(RFID, Radio Frequency Identification)標簽容易損壞、丟失,所以機車AEI系統(tǒng)識別正確率不能保證[2]。近些年來,圖像識別技術(shù)高速發(fā)展,基于圖像識別方法的鐵路車號識別研究也取得了一定的成果?;陬伾臻g及灰度形態(tài)學的車號定位方法,能有效地自動定位、分割和識別鐵路貨車車號[3];針對車號區(qū)在野外使用過程中容易受灰塵或運輸貨物的污損,在提高貨車車號識別率方面做了相關(guān)研究[4]。
本文在前人對車號識別研究的基礎(chǔ)上,選擇并改進圖像識別算法,同時設(shè)計一個機車車號識別系統(tǒng),實時識別駛?cè)刖幗M站的機車車號,并將機車車號識別結(jié)果實時共享給車站與機務段。
機車車號識別系統(tǒng)組成,如圖1所示。
圖1 機車車號識別系統(tǒng)模塊分析圖
通過使用.NET開發(fā)平臺的WinForm搭建前端圖形化界面,調(diào)用通過Python語言實現(xiàn)圖像的預處理、圖形定位切割、識別等算法實現(xiàn)對機車車次圖像素材的識別,并通過識別結(jié)果輸出模塊輸出機車車號與機車類型,界面如圖2所示。
圖2 機車車號識別系統(tǒng)主界面
高清攝像頭在鐵路編組站中廣泛應用,可實時獲取全站站場視頻圖像數(shù)據(jù)。因此,可以利用設(shè)置在咽喉區(qū)與站段交界處的高清圖像數(shù)據(jù),點擊開始識別,系統(tǒng)將自動識別經(jīng)過此咽喉處的機車車號,并通過識別出的機車型號與數(shù)據(jù)庫內(nèi)機車類型進行對比,推出通過咽喉區(qū)處的機車類型,系統(tǒng)支持修改機車車次、修改機車類型、查詢歷史識別數(shù)據(jù)的功能。
卷積神經(jīng)網(wǎng)絡是近些年發(fā)展起來的一種高效識別方法,廣泛應用于手寫字符識別、行人識別、人臉識別中。卷積神經(jīng)網(wǎng)絡主要由卷積層與池化層兩部分組成[5]。
卷積層主要是將前一層的特征圖與一個可學習的核進行卷積,得到的結(jié)果再通過激活函數(shù)后形成這一層的特征圖,每一個特征圖都有可能與上一層的幾個特征圖建立卷積關(guān)系。卷積層數(shù)學函數(shù)表達如式(1):
其中,l為層數(shù)為特征響應圖為卷積核;Nl-1為l-1層特征圖的個數(shù);conv2(x,y)為對x,y進行卷積操作為輸出圖的偏置。
池化層主要是對輸入的上一層特征圖素材進行抽樣操作,經(jīng)過抽樣后的特征圖的圖像大小改變?yōu)樵瓉淼?/2,池化層數(shù)學函數(shù)表達如式(2):
其中,down(x)為次抽樣函數(shù),bl
ij為輸出圖的偏置。
卷積神經(jīng)網(wǎng)絡LeNet-5算法是由Y.LeCun提出的一個多層的神經(jīng)網(wǎng)絡,對于二維圖像的特征提取有著出色的表現(xiàn)。LeNet-5網(wǎng)絡模型結(jié)構(gòu),如圖3所示。主要由7層組成,每一層都包括可以訓練的參數(shù)。
圖3 LeNet-5神經(jīng)網(wǎng)絡的結(jié)構(gòu)
該網(wǎng)絡的輸入是32×32的圖像,其中,C層是由卷積層神經(jīng)元組成的網(wǎng)絡層,S層是由池化層組成的網(wǎng)絡層。
(1)輸入圖像后,經(jīng)過6個可訓練的卷積核進行卷積操作,在C1層產(chǎn)生6個28×28的特征響應圖;
(2)每個特征響應圖經(jīng)過池化操作后,S2層產(chǎn)生6個14×14的特征響應圖;
(3)經(jīng)過16個可訓練的卷積核進行卷積操作得到具有16個特征響應圖的C3層;
(4)經(jīng)過池化操作,S4層產(chǎn)生具有16個5×5的特征向量圖;
(5)將S4層的所有特征響應圖向量化,輸入到全連接神經(jīng)網(wǎng)絡,輸出120個神經(jīng)元;
(6)經(jīng)過兩個全連接層,到達輸出層,輸出層具有10個神經(jīng)元,每一個神經(jīng)元代表一個阿拉伯數(shù)字。通過得到的一個長度為10的行矩陣,最終確定屬于哪一個數(shù)字[6-7]。
LeNet-5最初是用于識別手寫數(shù)字的,輸入的類別數(shù)目為10個,鐵路機車型號與數(shù)字相比,需要進行分類的類別數(shù)目要多很多,除了10個阿拉伯數(shù)字組成的機車號碼外,還包括D、F、C、S、B、H、X、N共8個英文數(shù)字組成的機車型號。針對機車型號字符組成與手寫數(shù)字之間的區(qū)別,對傳統(tǒng)的LeNet-5進行改進,將傳統(tǒng)的LeNet-5的輸出層由10個神經(jīng)元改為18個神經(jīng)元。
機車車號識別模型的訓練和識別流程圖,如圖4所示。
圖4 識別與訓練流程圖
為了驗證改進的LeNet-5算法對機車車號的識別情況,收集了機車車次圖像數(shù)據(jù)850個,建立了測試與訓練使用的數(shù)據(jù)集,每組425個,其中,訓練數(shù)據(jù)中有310張圖像含有8個字符(如SS6B 1079、HXD1 1001),70張含有7個字符(如DF4 9422、DF7 0031),45張圖片含有 9個字符(如HXD3C 0822、HXN3B 0030),共3 375個字符學習樣本,測試集與訓練集樣本組成相同,且訓練集與測試集之間沒有重疊圖像。
為了提高識別效率,濾除掉圖像中與識別無關(guān)的大量特征,對圖像進行預處理,目前常用的圖像灰度化主要有最大值法、平均值法、加權(quán)平均法3種方法,且每種方法都有固定的圖像分量加權(quán)式。如圖5所示,通過對比灰度化的3種方法,使用加權(quán)平均法對圖像進行灰度化效果最好,所以按照式(3)將圖像轉(zhuǎn)化為灰度圖像。
其中,I為灰度圖像;R、G、B為紅綠藍3個圖像分量。
由于編組站具有全天候作業(yè)的特性,所以咽喉區(qū)攝像頭拍攝的圖像素材由于時間、天氣、季節(jié)等原因?qū)е滤夭牡谋尘昂蜋C車車號字符灰度化后會存在很大差距。為了高效獲取機車車號信息,減少由于這些原因產(chǎn)生的噪聲影響,我們將對圖像進行二值化處理。即通過設(shè)定某一指定閾值,將灰度化后的圖像表示成兩個灰度值表示的二值圖像。即背景和車號字符素材分別用兩個灰度值來表示,如圖6所示。
圖5 圖像灰度化處理
圖6 圖像二值化處理
機車車號區(qū)域定位在機車號碼識別中最為重要,因為區(qū)域定位準確與否直接決定后續(xù)工作的開展。采用常用的Sobel邊緣檢測方法進行機車車號區(qū)域的定位,使用Sobel邊緣檢測算子得到機車車次號碼輪廓。使用圖形學知識開、閉運算,利用小噪聲處理對小塊噪聲進行去噪處理,將大塊區(qū)域進行連接,定位出機車車號區(qū)域,如圖7所示。
圖7 圖像定位處理
機車車號印刷時彼此之間都留有一定空隙,但是每一個字符的寬度都大于空隙的寬度,所以可以利用機車車號排列分布規(guī)律分割法將車號進行分割。因為所有素材都經(jīng)過了灰度化、二值化處理,所以背景與機車車號位置灰度值差別明顯,背景灰度值為0,字符處灰度值為255。
先進行行分割,通過計算二值化后標準圖像文件格式(BMP)文件中每行中灰度值為255的像素總數(shù),如果像素總數(shù)超過閾值Q1,則認為此行為字符行。如果像素總數(shù)小于閾值Q2,那么認為此行為空白行。如式(4)所示。
閾值Q1,Q2的選擇比較重要,如果選擇的過大,會導致字符被切割,無法識別。如果選擇的過小,會導致圖像切割不明顯。經(jīng)過多次試驗,Q1=6,Q2=3效果最為明顯。
將經(jīng)過行分割后的圖像素材進行列分割。同樣,計算二值化后BMP文件中每列中灰度值為255的像素總數(shù),如果像素總數(shù)>閾值Q3,則認為此列為字符列。如果像素總數(shù)<閾值Q4,那么認為此列為空白列,如式(5)所示。
m為經(jīng)行切割后的起始行;n為經(jīng)行切割后的終止行,經(jīng)過多次試驗,Q3=2,Q4=3效果最為明顯。
經(jīng)過行切割與列切割后,得到的圖像數(shù)據(jù),如圖8所示。
圖8 圖像分割處理
LeNet-5卷積神經(jīng)網(wǎng)絡的輸入為32×32的圖像素材。經(jīng)過算法比對,雙三插值算法對于圖像某一區(qū)域的縮小放大有非常好的效果。其思想是在所需插值像素點位置選取周圍16個像素點,對選取的16個像素點分別進行水平與垂直方向的三階插值操作,并將所得結(jié)果賦值給所需插值像素點。進行水平與垂直方向插值操作的插值函數(shù)的一般表示形式,如式(6)所示。
使用雙3次插值算法將所有機車車號字符大小都歸一化為32×32大小的字符素材,以便可以使用LeNet-5算法進行分類識別。
卷積神經(jīng)網(wǎng)絡框架(CAFFE)是一種常用的深度學習框架,根據(jù)改進的卷積神經(jīng)網(wǎng)絡修改CAFFE平臺中的網(wǎng)絡結(jié)構(gòu)文件和網(wǎng)絡求解文件,通過CAFFE調(diào)用經(jīng)過預處理后的圖像數(shù)據(jù)進行模型訓練,最終訓練出穩(wěn)定的分類模型,基本步驟為:(1)先進行前向傳播,然后經(jīng)過反向傳導和梯度下降法更新卷積核,反復執(zhí)行前向、反向、更新卷積核,直到滿足結(jié)束條件,此時CNN訓練完成;(2)使用CNN訓練得到的特征向量訓練SVM支撐向量機分類器,完成LeNet-5訓練。
使用測試集對訓練完成的模型進行識別檢測,訓練次數(shù)與識別正確率之間的關(guān)系,如表1所示。通過識別試驗結(jié)果可以發(fā)現(xiàn),隨著訓練次數(shù)的增加,識別訓練集與測試集的準確率都在增加。如果訓練集的數(shù)據(jù)再豐富一些,準確率一定會更高,完全可以達到準確識別機車車次的目的。
表1 訓練次數(shù)與測試集識別率的關(guān)系
試驗發(fā)現(xiàn),有一些車次號識別效果并不樂觀,主要是機車車次號被污染腐蝕、不清晰、機車車號圖像傾斜角度過大、字符分割出現(xiàn)錯誤、圖像素材經(jīng)過灰度化后降噪效果不明顯等原因。
通過研究發(fā)現(xiàn),使用改進后的LeNet-5算法識別經(jīng)圖片預處理后的車次圖像素材,識別正確率可高達94%以上。對于識別效果不樂觀的情況,可以通過Hough變換對傾斜的圖像進行矯正,或通過其他行之有效的預處理方法對素材進行進一步的處理。增加訓練集素材數(shù)量,訓練出識別率更高的模型。
目前,機車車號識別系統(tǒng)已在中國鐵路武漢局集團有限公司襄陽北站試驗,與既有的AEI配合使用。高清圖像素材從車站高清貨檢系統(tǒng)處獲取,識別效果良好,可以滿足對機車車號識別的需求,對實現(xiàn)智慧型編組站提供了有力的技術(shù)支撐。