王志明,劉志輝,黃洋科,邢宇翔
1) 北京科技大學(xué)計算機與通信工程學(xué)院,北京 100083 2) 清華大學(xué)工程物理系,北京 100084
火車號是一個火車車箱的身份標(biāo)識,一般噴涂在火車車箱的兩側(cè),在鐵路交通運輸管理系統(tǒng)中經(jīng)常需要獲取火車號作為每個車箱唯一的標(biāo)識來確認(rèn)車箱當(dāng)前的位置和狀態(tài)等信息.采用人工記錄的方式效率低、成本高,利用圖像處理和模式識別技術(shù)自動識別火車號不僅可以節(jié)省人力,而且可以大大提高鐵路運輸管理系統(tǒng)的智能化程度.然而,利用火車號圖像實現(xiàn)火車號的識別存在很多困難.首先,相對整個車箱,火車號區(qū)域占比非常小,要獲得清晰可辨識的火車號需要較高的成像分辨率,而這又會導(dǎo)致整個圖像像素數(shù)巨大,使得圖像處理算法難以實時處理;其次,由于戶外拍攝環(huán)境惡劣會導(dǎo)致對比度低、曝光不足或者過曝光,而且火車號圖像背景復(fù)雜,存在臟污、銹跡、其他標(biāo)識等較多干擾因素,導(dǎo)致準(zhǔn)確定位火車號區(qū)域較為困難;第三,火車號字符本身存在字符粘連、筆畫斷裂、字符間距和排列規(guī)則多變等現(xiàn)象,這些都會導(dǎo)致字符分割和識別比較困難.
在近十多年中,基于深度學(xué)習(xí)的圖像目標(biāo)檢測算法得到了長足的發(fā)展,檢測精度相比傳統(tǒng)方法有了很大的提高.深度學(xué)習(xí)與傳統(tǒng)算法最大的區(qū)別在于其利用多層卷積神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)圖像特征,將特征提取和分類識別融為一體.自從2012年Krizhevsky等[1]使用深度卷積神經(jīng)網(wǎng)絡(luò)在大規(guī)模視覺識別挑戰(zhàn)(Large scale visual recognition challenge, LSVRC)上獲得冠軍后,深度學(xué)習(xí)在圖像、視頻、語音等領(lǐng)域受到了廣泛的關(guān)注[2].近年來,已有不少學(xué)者將深度學(xué)習(xí)算法應(yīng)用于火車號識別、汽車牌號識別、集裝箱號識別、車輛類型識別等領(lǐng)域[3-8].在廖健[3]提出的貨車號識別算法中,通過分割邊緣密度圖像得到字符所在的候選區(qū)域,然后利用深度卷積神經(jīng)網(wǎng)自動學(xué)習(xí)圖像特征,再由兩個softmax分類器分別完成字符檢測和識別.這一方法只是在第二階段采用了深度學(xué)習(xí)算法,檢測火車號區(qū)域是傳統(tǒng)方法,因此魯棒性和識別精度會受到一定的影響.Li等[4]提出一種結(jié)合目標(biāo)檢測算法和序列串識別算法的車牌號識別算法,首先采用一個4層卷積神經(jīng)網(wǎng)絡(luò)檢測所有可能的字符,并利用行程長度平滑算法(Run length smoothing algorithm, RLSA)和連通域分析得到候選車牌區(qū);然后利用雙向回歸神經(jīng)網(wǎng)絡(luò)(Bidirectional recurrent neural networks, BRNNs)算法識別車牌號.但其中搜索車牌的過程涉及大量先驗知識和基于規(guī)則的方法,難以進(jìn)行整體優(yōu)化.因此,后來作者又將前端的檢測模塊改為采用兩階段的目標(biāo)檢測算法[5].
Montazzolli和Jung[6]基于目標(biāo)檢測算法進(jìn)行巴西車牌號檢測與識別,分階段檢測汽車前臉、車牌區(qū)域和字符,考慮到速度和精度的折衷,采用了簡化的快速目標(biāo)檢測算法,但沒有對檢測網(wǎng)絡(luò)本身進(jìn)行優(yōu)化.Laroca等[7]在車牌和字符檢測中采用了類似的策略,但在字符識別階段增加了兩個獨立的網(wǎng)絡(luò)分別進(jìn)行數(shù)字和字母的識別.
本文采用基于深度學(xué)習(xí)的目標(biāo)檢測算法進(jìn)行火車號識別,分別針對火車號圖像分辨率高、存在校驗位和實時性要求高等特點提出了相應(yīng)的解決策略.本文的主要創(chuàng)新點包括:
(1)采用分階段策略,先在低分辨率全局圖像中檢測火車號區(qū)域,再在高分辨局部圖像中檢測字符并識別火車號,實現(xiàn)實時高精度識別;
(2)字符檢測過程中對每個區(qū)域輸出多個候選類別概率,利用各個字符的概率對整個火車號進(jìn)行校驗糾錯,在特定的目標(biāo)檢測精度下進(jìn)一步提高整體識別正確率;
(3)結(jié)合批歸一化因子和濾波器權(quán)重相關(guān)度進(jìn)行模型通道剪枝,簡化網(wǎng)絡(luò),提高檢測速度和整體識別效率.
本文后續(xù)內(nèi)容安排如下,第一部分介紹相關(guān)的深度學(xué)習(xí)目標(biāo)檢測算法,第二部分介紹整體識別框架,第三部分介紹火車號區(qū)域檢測方法,第四部分介紹字符檢測及校驗糾錯方法,第五部分介紹結(jié)合批歸一化因子和濾波器相關(guān)度的剪枝算法,第六部分介紹實驗數(shù)據(jù)及實驗結(jié)果,最后是結(jié)論及下一步可能的改進(jìn)方向.
目標(biāo)檢測算法是對圖像內(nèi)給定的一組目標(biāo)進(jìn)行定位和分類,一般用矩形框來標(biāo)記目標(biāo)位置.基于深度學(xué)習(xí)的目標(biāo)檢測算法可分為兩類[9]:一類是二階段方法,遵循傳統(tǒng)的目標(biāo)檢測流程,先產(chǎn)生候選區(qū)域(Region proposal),然后對每個候選區(qū)域進(jìn)行分類;另一類是一階段方法,將目標(biāo)檢測視為一個回歸和分類問題,采用統(tǒng)一的框架直接實現(xiàn)定位和分類.典型的二階段方法有Faster R-CNN[10]、FPN[11]、Mask R-CNN[12]、Grid R-CNN[13]、Cascade R-CNN[14]等;典型的一階段方法有SSD[15]、YOLO[16]及改進(jìn)其損失函數(shù)的GIOU[17]和DIOU[18]、RetinaNet[19]、DSOD[20]等.近兩年還涌現(xiàn)出一些不依賴于錨點(Anchor free)的方法,如 CornerNet[21]、CenterNet[22]、MatrixNets[23]等,旨在進(jìn)一步改進(jìn)對目標(biāo)的定位精度.二階段方法具有較高的準(zhǔn)確率,但是檢測流程復(fù)雜,因此相對速度比較慢;一階段方法在檢測速度和內(nèi)存效率上有很大的優(yōu)勢,在實際工程中得到廣泛的應(yīng)用.綜合考慮后,本文選擇速度和精度都比較好的YOLOv3[24]進(jìn)行火車號識別.
為了能檢測不同大小的目標(biāo),YOLOv3算法在三個不同尺度的特征層上進(jìn)行預(yù)測.YOLOv3算法采用網(wǎng)格化的思想,將每個特征層劃分成固定大小的網(wǎng)格,每個網(wǎng)格設(shè)置3個錨框(Anchor)作為預(yù)定義的形狀來預(yù)測目標(biāo).錨框可使用k-means聚類算法根據(jù)訓(xùn)練集上目標(biāo)的形狀分布計算聚類得到,從而減少預(yù)測誤差并加速訓(xùn)練過程的收斂速度.
網(wǎng)絡(luò)對每一個錨框預(yù)測四個坐標(biāo)值:tx、ty、tw、th,其中tx和ty是目標(biāo)中心點的偏移量,tw和th是目標(biāo)寬高相對于錨框的偏移量.中心點偏移量是相對于網(wǎng)格單元左上角的坐標(biāo),算法采用邏輯回歸函數(shù)將預(yù)測值tx和ty限制值在[0, 1]區(qū)間內(nèi);寬高偏移量是相對錨框的比例,采用指數(shù)函數(shù)將 [-∞, +∞]區(qū)間映射到 [0, +∞]區(qū)間.
假設(shè)某個網(wǎng)格單元相對于圖像左上角的偏移是(cx,cy),錨框的寬和高是pw和ph,那么包圍框(Bounding box)的預(yù)測值如下:
目標(biāo)檢測算法在定位的同時進(jìn)行識別,除位置信息外還會同時預(yù)測這一包圍框?qū)儆诿總€類別的概率Pi,0≤i<C(C為目標(biāo)類別數(shù)).對于一般目標(biāo)檢測應(yīng)用,取概率最高的類別作為識別結(jié)果即可.但對于具有校驗位的火車號識別,其他次要類別概率信息也具有應(yīng)用價值.當(dāng)由于噪聲造成單個字符可能識別錯誤時,可以利用后續(xù)的選項進(jìn)行校驗糾錯.因此,在應(yīng)用中本文修改網(wǎng)絡(luò)輸出部分的結(jié)構(gòu),對每一個檢測位置輸出多個可能的目標(biāo)類別及相應(yīng)的概率.
本文的火車號圖像采用線陣相機拍攝,即在固定位置放置由多個光學(xué)傳感縱向排列組成的拍攝裝置,每次曝光獲取一列圖像,當(dāng)火車通過時采用固定的曝光頻率不斷拍攝,最終所有列組成一個二維圖像.圖像的高度由傳感器數(shù)量決定,是一個固定的值;圖像的寬度由曝光頻率和拍攝時間來確定,當(dāng)曝光頻率固定時,由火車車體長度和運行速度來決定,寬度不固定.在本文的火車號識別中,圖像高度固定為2048像素,寬度范圍為5000~11000像素.圖1是一個典型的火車號圖像,其分辨率為2048像素×7168像素,圖中紅框所標(biāo)為火車號位置,在全圖中占比非常小.
整個車箱圖像的分辨率很高,直接利用目標(biāo)檢測算法進(jìn)行檢測和識別計算量巨大,難以滿足實時應(yīng)用的需求.因此,本文提出一種由粗到細(xì)的兩階段識別策略.第一階段,根據(jù)火車號分布的統(tǒng)計熱力圖從高分辨率完整圖像中提取固定大小為1200像素×2400像素的區(qū)域,再降低分辨率縮小至288像素×576像素進(jìn)行火車號區(qū)域檢測;第二階段,根據(jù)第一階段檢測結(jié)果從原始高分辨圖像中提取出火車號區(qū)域圖像,并縮放至288像素×416像素大小進(jìn)行字符檢測與識別.得到字符檢測結(jié)果后,根據(jù)位置排列搜索完整火車號,并根據(jù)字符識別概率進(jìn)行校驗糾錯.最后,對訓(xùn)練好的檢測模型運用剪枝算法進(jìn)行剪枝,并對簡化的網(wǎng)絡(luò)進(jìn)行再次精調(diào)訓(xùn)練得到最終的高效檢測模型.
整個識別流程如圖2所示.
圖1 火車號圖像示例Fig.1 Example of a wagon number image
圖2 火車號識別流程Fig.2 Pipeline of the wagon number recognition
由于原始火車車箱圖像分辨率較高,火車號區(qū)域僅占很小的一部分,直接采用原圖計算量太大,難以實時處理;如果直接縮小圖像,又會使得火車號區(qū)域太小難以檢測.因此,本文根據(jù)火車號的位置統(tǒng)計分布采用滑動窗口方式進(jìn)行檢測.
本文將所有的火車號圖像左上角設(shè)為原點,統(tǒng)計所有火車號出現(xiàn)的位置得到了火車號分布的熱力圖,如圖3所示,其中紅色對應(yīng)于較高的頻次,藍(lán)色對應(yīng)于較低頻次.從圖中可以看出火車號大部分都分布在圖像靠左的位置,越往后火車號出現(xiàn)的頻率就越小,另外垂直方向小于600像素和大于1800像素的區(qū)域幾乎沒有火車號出現(xiàn)(只有一處火車號出現(xiàn)在了1800像素以外的區(qū)域).因此,本文裁剪圖像時在圖像垂直方向取600~1800像素位置,從左到右依次截取分辨率為1200像素×2400像素大小的局部圖像進(jìn)行檢測.如果檢測成功,則進(jìn)行下一步的字符檢測和識別;如果檢測失?。ㄎ礄z測到火車號區(qū)域),則向右滑動到下一個1200像素×2400像素的窗口進(jìn)行檢測.考慮到火車號區(qū)域可能位于截取圖像的邊緣,因此在裁剪時預(yù)留了一定的重疊區(qū)域來保證裁剪時火車號區(qū)域的完整性.圖4為截取的局部圖像示例.
圖3 火車號分布的熱力圖Fig.3 Heatmap of the wagon number distribution
圖4 火車號區(qū)域檢測圖像Fig.4 Images for the wagon number region detection
對于剪裁得到的局部圖像,直接進(jìn)行檢測還是計算量過大,將其按比例縮小至288像素×576像素大小.然后訓(xùn)練包含三個尺度的YOLOv3網(wǎng)絡(luò)進(jìn)行火車號區(qū)域檢測.根據(jù)火車號的排列規(guī)則,將火車號區(qū)域分為三行和一行兩種類型.
圖5為三行和一行火車號區(qū)域檢測結(jié)果及提取出的局部圖像.所有局部圖像區(qū)域歸一化到固定大小,并對一行排列進(jìn)行了邊界填充,以保持和三行火車號相近的字符寬高比.從圖5(b)可以看出,即便經(jīng)過歸一化,字符的大小相差還是非常大,因此需進(jìn)行多個尺度的字符檢測.
得到火車號區(qū)域圖像后,下一步的任務(wù)是從圖像中檢測到所有構(gòu)成火車號的字符,并根據(jù)先驗知識搜索得到火車號.最后,進(jìn)行校驗計算,如果校驗通過則輸出火車號,否則根據(jù)每個字符的識別概率和候選類別進(jìn)行糾錯,直到校驗通過或輸出識別失敗信號.
對于上一階段剪裁得到的火車號區(qū)域圖像,統(tǒng)一縮放為288像素×416像素大小進(jìn)行字符檢測.組成火車號的12位數(shù)字通常有兩種排列方式:一種為單行排列,另一種為三行排布,三行排列的火車號由每一行前2、2、8個數(shù)字組成.對于一行排列的火車號,從左到右依次搜索12個字符;對于三行排列的火車號,從上到下、從左到右依次搜索包含2、2、8個字符的字符行.
為保證檢測效果,對一行排列方式采用寬高等比例縮放方式,不足區(qū)域補充為中等灰度值128.檢測模型同樣采用包含三個尺度的YOLOv3算法,但輸出類別數(shù)為10,對應(yīng)10個數(shù)字.圖6為字符檢測結(jié)果示例,從圖中可以看出,YOLOv3算法可以很好地檢測顏色、亮度、尺度差異非常大的字符.
對于網(wǎng)絡(luò)檢測得到的所有字符,根據(jù)火車號排列規(guī)則從上到下(三行排列)、從左到右依次找到組成火車號的12個字符.記錄網(wǎng)絡(luò)輸出的每個字符按概率從大到小8個可能的類別及相應(yīng)概率,即得到一個12×8的類別和概率矩陣,每個字符的候選類別按概率進(jìn)行降序排序,作為下一步搜索最終火車號的輸入信息.
圖5 火車號區(qū)域檢測結(jié)果.(a)區(qū)域檢測結(jié)果;(b)提取到的局部區(qū)域圖Fig.5 Wagon number region detection results: (a) region detection results; (b) extracted region image
圖6 火車號字符檢測結(jié)果示例Fig.6 Examples of wagon number character detection results
根據(jù)火車號編碼的國際標(biāo)準(zhǔn),火車號由12位數(shù)字組成,其中最后1位為校驗位,它可以由前11位Luhn算法計算得來,校驗位可以用來判斷識別的火車號是否正確.第12位校驗數(shù)字的生成方式如式(3)所示.
其中,ki為加權(quán)系數(shù),對奇數(shù)位為2,對偶數(shù)位為1,di表示第i位火車號數(shù)字,“/”表示整除,“%”表示模運算.計算各位數(shù)字乘以權(quán)重后得到數(shù)字的個位和十位相加之和,并取距離下一個最近的10的整數(shù)倍的差值作為校驗結(jié)果.
對上一步得到的字符與概率矩陣,首先選擇每一位最大概率的數(shù)字進(jìn)行校驗,如果校驗通過,則輸出這些數(shù)字作為火車號的識別結(jié)果;如果校驗錯誤,則需根據(jù)概率矩陣進(jìn)行替換糾錯.替換的策略是:將每個位置的最大概率排除后,在其他的概率值中尋找最大的概率值,用對應(yīng)的類別替代當(dāng)前位置最大概率所對應(yīng)的類別,然后再對新的數(shù)字串進(jìn)行校驗,如果通過則視為糾正正確,輸出新的火車號;否則,恢復(fù)交換前位置,再接著尋找下一個最大的概率值,如此迭代進(jìn)行直到校驗正確,或嘗試的次數(shù)超過10次為止.
如圖7是一個校驗糾錯的例子.圖中每一行對應(yīng)一個位置的檢測結(jié)果,包含依概率排列的8個可能的類別號及其相應(yīng)概率,一共12行對應(yīng)搜索到的構(gòu)成火車號的12個字符.如果取第一列概率最大的結(jié)果,則會發(fā)現(xiàn)校驗錯誤.原因是第10位字符錯誤地將數(shù)字“8”識別為數(shù)字“9”,可以看出排除第一列最大概率后,第10位字符為“8”的概率要比其他所有的概率都要大,因此將第10位的“9”替換為“8”(圖中紅框所示),此時校驗通過,得到正確的火車號.
在實際工程應(yīng)用中,除識別準(zhǔn)確率外,識別速度也是一個影響使用效果的關(guān)鍵因素.深度神經(jīng)網(wǎng)絡(luò)的計算量主要消耗在卷積層特征提取階段,隨著網(wǎng)絡(luò)中各個卷積層中通道數(shù)的增加計算量急劇增加.通道數(shù)一般都是人工根據(jù)經(jīng)驗設(shè)定,但不同應(yīng)用所需要提取的特征數(shù)可能不同.因此,可以通過一定的剪枝技術(shù)去除多余的通道,從而降低計算量,提高檢測速度.
圖7 每個字符對應(yīng)的前8個最大概率類別、概率值及校驗糾錯位Fig.7 Top 8 class and corresponding probabilities of every character and correction by verification
本文采用“靜態(tài)剪枝+精細(xì)調(diào)節(jié)”的方式進(jìn)行網(wǎng)絡(luò)剪枝,參考基于批歸一化(Batch norm)因子剪枝算法[25]并進(jìn)行改進(jìn),綜合考慮濾波器權(quán)重之間的相關(guān)性和批歸一化因子生成通道重要性因子,然后根據(jù)這一重要性因子對YOLOv3網(wǎng)絡(luò)的各個卷積層進(jìn)行剪枝,最后對剪枝過的網(wǎng)絡(luò)進(jìn)行精調(diào)訓(xùn)練,得到優(yōu)化后的檢測模型.
批歸一化層的輸入與輸出關(guān)系如式(4)所示.
其中,μB和 σB分別為當(dāng)前層輸入的均值和標(biāo)準(zhǔn)差,ε為一個小的正數(shù),防止出現(xiàn)除零現(xiàn)象.γ和β分別為批歸一化層的歸一化因子和偏置值,通過網(wǎng)絡(luò)學(xué)習(xí)得到,其中 γ在一定程度上代表了各個通道的重要性.但這種剪枝方法沒有考慮到濾波器之間的相似度,在剪枝過程中可能會把兩個 γ值較大、但相關(guān)性較高的通道同時保存下來.因此,本文綜合考慮批歸一化因子和相關(guān)性計算一個濾波器的重要性.設(shè)某一卷積層的卷積核大小為r×r,輸入通道數(shù)為m,輸出通道數(shù)為n,則該層共有n個r×r×m的三維濾波器,對應(yīng)于每個輸出通道.將每個濾波器中所有權(quán)重看作一個一維向量wi,則第i個濾波器與第j個濾波器之間的相關(guān)度可由下式得到:
其中,Cov(·,·)表示協(xié)方差,Var(·)表示方差.由相關(guān)度產(chǎn)生的重要性因子記為1減去每個濾波器與其他所有濾波器相關(guān)度的和(經(jīng)歸一化處理),如式(6)所示.
如果記由批歸一化因子產(chǎn)生的重要性為:
每個濾波器的最終重要性因子定義為:
其中,α1和α2為兩個正系數(shù),分別代表批歸一化因子和相關(guān)性的加權(quán)系數(shù),實驗中取α1=α2=0.5.
得到重要性因子后,根據(jù)重要性因子從大到小對濾波器進(jìn)行排序,剪枝一定比例的濾波器(實驗中取50%),降低平均輸出通道數(shù)(特征維度).再經(jīng)過精調(diào)訓(xùn)練,在保證檢測準(zhǔn)確率的條件下簡化網(wǎng)絡(luò),提高檢測效率.
本文實驗用的火車號圖像采用線陣相機拍攝,每張圖像都包含需要識別的12位符合火車號編碼國際標(biāo)準(zhǔn)的火車號,一共采集了5397幅原始圖像,其中只有單行排列火車號的1678幅,只有三行火車號的2054幅,既包含單行火車號又包含三行火車號的1665張圖像(兩個號碼相同).
由于原始的火車號圖像分辨率太大,根據(jù)火車號分布熱力圖從每一個原始圖像上裁剪分辨率為1200像素×2400像素的圖像用于訓(xùn)練火車號區(qū)域檢測模型,裁剪時保證每張圖像都包含火車號,且火車號在圖像上分布的位置隨機.然后在每個圖中標(biāo)注其中的火車號字符,根據(jù)字符標(biāo)注可以生成用于訓(xùn)練火車號區(qū)域檢測的區(qū)域標(biāo)記,同時提取火車區(qū)域及相應(yīng)的字符標(biāo)注作為訓(xùn)練字符檢測的樣本.從所有數(shù)據(jù)集中隨機提取1072個樣本作為測試集,其余4325個作為訓(xùn)練樣本.
對于兩個階段的檢測模型,采用目標(biāo)檢測常用的綜合評價指標(biāo)平均精度均值(Mean average precision,mAP)進(jìn)行評價.另外,在一個帶有Nvidia GTX 1060顯卡的筆記本電腦上測試了平均檢測時間和顯存占用量,以衡量算法的計算效率.
除YOLOv3外,同時基于MMDetection目標(biāo)檢測算法框架[26],比較了經(jīng)典的目標(biāo)檢測模型Faster-RCNN[10](主干網(wǎng)絡(luò)為 ResNet50)和 SSD[15](主干網(wǎng)絡(luò)為VGG16).每個模型都經(jīng)過充分訓(xùn)練后,選擇最優(yōu)結(jié)果.表1為火車號區(qū)域檢測和字符檢測的實驗結(jié)果.
從表1可以看出,兩個階段的檢測都具有較高的mAP,且YOLOv3的性能和Faster-RCNN及SSD基本相當(dāng).區(qū)域檢測比字符檢測具有更高的mAP,可能是由于區(qū)域類別少、面積大,檢測相對更為容易.另外,經(jīng)過剪枝和再訓(xùn)練的模型具有更高的精度,這可能是因為樣本數(shù)量相對較少,在模型簡化后在一定程度中抑制了訓(xùn)練過程中的過擬合現(xiàn)象.剪枝后模型的大小只有原來1/3左右,顯存占用率節(jié)約30%左右,計算時間節(jié)省1/3左右.與Faster-RCNN相比,模型較小,雖然顯存占用較多,但平均處理時間有很大的優(yōu)勢;與SSD相比,剪枝前模型較大,剪枝后模型較小,顯存占用較多,但平均處理時間也有較大的優(yōu)勢.考慮到應(yīng)用現(xiàn)場對識別速度的苛刻要求,本文選擇采用YOLOv3并結(jié)合模型剪枝實現(xiàn)整個識別系統(tǒng).
表1 火車號區(qū)域檢測和字符檢測的實驗結(jié)果Table 1 Results of wagon number region detection and character detection
基于C++程序語言設(shè)計實現(xiàn)了一個完整火車號識別系統(tǒng),集成兩個階段的檢測結(jié)果完成完整的火車號識別功能,并在第二階段按字符概率進(jìn)行火車號校驗糾錯.識別效果在包含1072張原始火車號圖像的測試集上評價,所有12位火車號全部識別正確視為結(jié)果正確.
在第一階段檢測中,有的圖像中會包含兩個排列方式不同但號碼相同的火車號.因此,在整個系統(tǒng)識別流程中,當(dāng)?shù)谝浑A段檢測到圖像中存在不止一個火車號時,先對識別置信度大的火車號區(qū)域進(jìn)行字符檢測和火車號識別,若檢測到足夠多的字符且校驗正確,則完成識別;否則,對下一個候選火車號區(qū)域進(jìn)行字符檢測和識別.另外,在識別過程中可能出現(xiàn)識別的火車號字符位數(shù)小于12位,這種情況一般是由于火車號區(qū)域定位不準(zhǔn)確導(dǎo)致包圍框未能包含所有的火車號字符,此時將包圍框的左右邊界各向外擴大寬度的10%進(jìn)行再次檢測.實驗結(jié)果表明,這一處理可以進(jìn)一步提高識別正確率.
為驗證校驗糾錯的有效性,以及模型剪枝后對整體識別性能的影響,對比了有無校驗糾錯和有無模型剪枝的整體識別效果,結(jié)果如表2所示.從表中可以看出,校驗糾錯過程在平均時間提高極少的條件下可將整體識別正確率提高2.80%.通過對兩個階段目標(biāo)檢測模型的剪枝簡化,在平均處理時間減少約15%的同時,識別正確率提高了0.56%,從而可以更好地滿足實際工程應(yīng)用的需求.
火車號在整個車箱上只占很小的一部分,為準(zhǔn)確識別需要采用較高的分辨率,而高分辨率又造成圖像像素數(shù)巨大,現(xiàn)有的深度學(xué)習(xí)算法和硬件條件難以進(jìn)行實時處理.本文提出一種由粗到細(xì)、分階段進(jìn)行目標(biāo)檢測的火車號識別算法,較好地解決了在高分辨大圖中檢測和識別相對很小的火車號目標(biāo)的問題.
表2 校驗和模型剪枝對識別結(jié)果的影響Table 2 Influence of model pruning and verification on the recognition results
基于火車號編碼所包含校驗位的先驗知識,本文在第二階段的檢測中輸出多個候選類別概率,從而可以依照概率對個別位識別錯誤的結(jié)果進(jìn)行校驗糾錯,在同樣的目標(biāo)檢測精度下提高了整體識別正確率.
針對實際應(yīng)用中對實時處理的要求,本文提出一種結(jié)合批歸一化因子和濾波器相關(guān)性的通道剪枝方法,經(jīng)過對兩個階段檢測模型的剪枝和優(yōu)化訓(xùn)練,在提高處理速度的同時使得整體識別正確率略有提高.
下一步的可能的研究方向包括:采用更為高效的目標(biāo)檢測算法以提高識別正確率;在模型剪枝過程中采用更為合理的濾波器重要性度量,以實現(xiàn)更高比例的模型壓縮,從而進(jìn)一步提高處理速度.