劉華春
(成都理工大學(xué) 工程技術(shù)學(xué)院 電子信息與計算機(jī)工程系,四川 樂山 614007)
隨著中國汽車保有量的持續(xù)增加,發(fā)展智能交通已經(jīng)成為一個社會共識,而車牌識別是智能交通的一個重要環(huán)節(jié)。車牌識別在道路收費(fèi)管理、超速違規(guī)、電子警察、停車場管理、交通數(shù)據(jù)采集等交通信息控制中發(fā)揮著重要的作用。通常的車牌識別系統(tǒng)包括車牌定位模塊、車牌校正和預(yù)處理模塊、字符分割模塊、字符識別模塊。文中著重研究車牌的字符識別模塊部分。
深度學(xué)習(xí)是一種特定類型的機(jī)器學(xué)習(xí)技術(shù)[1],是實現(xiàn)人工智能的一種有效方式,也是一種使計算機(jī)系統(tǒng)從經(jīng)驗和數(shù)據(jù)上得到改進(jìn)的技術(shù),具有很強(qiáng)的識別能力和靈活性[2]。深度學(xué)習(xí)可以發(fā)現(xiàn)和表征問題的復(fù)雜結(jié)構(gòu)特征,因此可以大大提高識別性能,還避免了統(tǒng)計機(jī)器學(xué)習(xí)中關(guān)于特征提取的一系列問題[3]。目前有大量的證據(jù)表明,在計算機(jī)視覺、圖像識別領(lǐng)域,深度學(xué)習(xí)的識別精度高于傳統(tǒng)的圖像處理和統(tǒng)計機(jī)器學(xué)習(xí)[4]。卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)是神經(jīng)網(wǎng)絡(luò)(neural network,NN)的發(fā)展,是源于人工神經(jīng)網(wǎng)絡(luò)的一種深度機(jī)器學(xué)習(xí)方法,近年來在圖像識別領(lǐng)域取得了巨大的成功。CNN由于采用局部連接和權(quán)值共享,保持了網(wǎng)絡(luò)的深層結(jié)構(gòu),同時又大大減少了網(wǎng)絡(luò)參數(shù),使模型具有良好的泛化能力,又較容易訓(xùn)練,很好地解決了NN中網(wǎng)絡(luò)訓(xùn)練時的梯度消失(vanishing gradient problem)和梯度爆炸(exploding gradient problem)等問題[5]。目前,卷積神經(jīng)網(wǎng)絡(luò)已經(jīng)成為眾多科學(xué)領(lǐng)域的研究熱點(diǎn)之一。由于卷積網(wǎng)絡(luò)避免了對圖像復(fù)雜的特征提取,可以直接輸入原始圖像,因而得到了更為廣泛的應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域具有良好的適應(yīng)性,目前在計算機(jī)視覺任務(wù)中應(yīng)用廣泛,并在手寫數(shù)字識別、人臉識別等圖像領(lǐng)域的應(yīng)用中取得了很好的效果[6]。
文中將改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)LeNet-5引入到車牌字符識別中,以提高傳統(tǒng)車牌識別方法的性能。
1.1.1 車牌形狀規(guī)格
國內(nèi)車牌種類較多,文中主要研究常用的民用車牌,車牌類型為單排車牌,如圖1所示。
圖1 標(biāo)準(zhǔn)車牌規(guī)格
車牌尺寸為長440 mm,寬140 mm的矩形,車牌上的字符由1個漢字字符和6個大寫英文字母/數(shù)字組成。中間一個小圓點(diǎn)分隔符將車牌分成區(qū)域和編碼兩部分,分隔符前面為2個字符,后面為5個字符,小圓點(diǎn)分隔符的直徑為10 mm。車牌中的每個字符大小為45 mm×90 mm的矩形區(qū)域[7-8]。字符之間有12 mm的標(biāo)準(zhǔn)間隔(小圓點(diǎn)間隔符與前后字符間隔也為12 mm),但實際車牌中,可能存在字符間隔大于12 mm的情況,因為有些字符不能填滿整個矩形空間的寬度,例如字符“1”和其他字符。車牌左右邊框與第一個字符和最后一個字符距離為15.5 mm,上下邊框與字符距離為25 mm。
1.1.2 編號規(guī)則
車牌字符是由漢字、英文大寫字母和數(shù)字組成。編號規(guī)則為,第一個字符是中國內(nèi)地各省、自治區(qū)、直轄市的漢字簡稱,共有31個,第二個字符是發(fā)證機(jī)構(gòu)代碼字符,使用英文大寫字母A-Z,第三到第七位由英文大寫字母和數(shù)字組成,不包含英文大寫字母I和O,因為容易與數(shù)字1和0混淆。所以,大寫字母為24個,數(shù)字為10個,共計65個字符。
目前,傳統(tǒng)的車牌字符識別方法主要有字符模板匹配法、字符特征統(tǒng)計法和統(tǒng)計機(jī)器學(xué)習(xí)方法等[9-12]。
1.2.1 模板匹配法
該方法是在車牌識別前,預(yù)先獲取各種車牌的標(biāo)準(zhǔn)字符模板,構(gòu)建一個庫。然后將待識別的車牌字符逐一與標(biāo)準(zhǔn)字符模板庫比較,計算待識別字符與每個字符模板的匹配程度,匹配度計算采用字符圖像對應(yīng)的像素進(jìn)行邏輯運(yùn)行,匹配度最高的模板即為該字符的類別。由于該方法采用像素邏輯運(yùn)算進(jìn)行相似度的匹配,對于相似度較小的字符,如Q與0,8與B不能很好地分別。另外,在光照條件不好,較為模糊或磨損、斷裂等情況下,識別率變低,所以,魯棒性低。
1.2.2 特征統(tǒng)計法
字符特征統(tǒng)計方法比模板匹配方法檢查更多的特征,該方法是提取車牌字符的一系列統(tǒng)計特征作為識別字符的判別特征,然后設(shè)計某種判別規(guī)則和決策函數(shù),對待識別的字符進(jìn)行分類。該方法的缺點(diǎn)與模板匹配法的缺點(diǎn)相似,即抗干擾能力低,性能不穩(wěn)定。
1.2.3 機(jī)器學(xué)習(xí)方法
機(jī)器學(xué)習(xí)方法是將大量的車牌字符訓(xùn)練學(xué)習(xí)模型,學(xué)習(xí)輸入輸出映射模型,讓分類器進(jìn)行有監(jiān)督學(xué)習(xí)。機(jī)器學(xué)習(xí)算法有SVM、貝葉斯、決策樹等。模型訓(xùn)練完成后,將待識別的字符輸入模型,輸出字符所屬的類別。其缺點(diǎn)是這類機(jī)器學(xué)習(xí)方法通常需要進(jìn)行大量車牌特征的抽取,抽取的特征不同,選用的分類器算法不同,往往結(jié)果也不完全相同。
綜上,由于這些方法都各有其自身的不足,有的魯棒性不強(qiáng),有的需要抽取復(fù)雜的車牌特征,對經(jīng)驗依賴性高。為了改善這些問題,進(jìn)一步提高識別準(zhǔn)確率,文中將深度學(xué)習(xí)中的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行改進(jìn)后應(yīng)用于車牌字符識別。
卷積神經(jīng)網(wǎng)絡(luò)是采用卷積運(yùn)算進(jìn)行特征提取的一類深度神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)通常由卷積層和子采樣層交替組成前端,后端輸出采用全連接層結(jié)構(gòu)。
卷積層的主要任務(wù)是進(jìn)行特征提取,運(yùn)算方式是卷積運(yùn)算,連接方法是局部連接。卷積層通常由多個特征平面組成,共同完成前一層的特征提取,每個特征平面內(nèi)神經(jīng)元的連接權(quán)值相同(權(quán)值共享)[13]。在特征平面中,每個神經(jīng)元連接到前一個特征平面的特定區(qū)域中的神經(jīng)元(局部感受野)。卷積計算過程是首先對輸入的特征平面像素進(jìn)行邊界填充,以保證卷積核與輸入像素尺寸匹配,然后將卷積核在整個特征平面上滑動一個固定的步長,從而構(gòu)建新的特征平面[14]。卷積層的連接關(guān)系表示為:
(1)
卷積運(yùn)算完成后,通常采用sigmoid或tanh激活函數(shù)對結(jié)果進(jìn)行變換。
子采樣層也稱為池化層(pooling layer)或下采樣層(subsampling)。該層的作用是降維,即降低輸入圖像的靈敏度。由于輸入數(shù)據(jù)經(jīng)過卷積層的卷積運(yùn)算后,根據(jù)卷積核形成多個特征平面,是一個升維過程,需要隨后進(jìn)行適度的降維處理,否則,可能造成“維數(shù)災(zāi)”。因此,子采樣層的功能是適當(dāng)?shù)貙矸e層的輸出進(jìn)行降維處理[15]。子采樣層的每個特征平面上的神經(jīng)元連接到卷積層的共享值區(qū)域,特征平面的數(shù)量是不變的,通過子采樣層的映射縮小比例,子采樣過程可以由式2表示。采用子采樣層處理,使得網(wǎng)絡(luò)降低了圖像位移翻轉(zhuǎn)的靈敏度。
(2)
卷積神經(jīng)網(wǎng)絡(luò)的前端是由若干卷積層和子采樣層構(gòu)成,后端輸出部分由全連接層組成。全連接層完整地連接當(dāng)前層和前一層的所有特征平面神經(jīng)元[16]。由于卷積層和下采樣層是二維特征平面,而全連通層輸出是一維類別向量,所以網(wǎng)絡(luò)中首個全連接層需要將二維特征平面轉(zhuǎn)換為一維向量形式。全連接層通常采用多層感知器網(wǎng)絡(luò)來實現(xiàn),最后輸出識別類別。
LeNet-5網(wǎng)絡(luò)最早是由YannLeCun于1998年提出的一個卷積神經(jīng)網(wǎng)絡(luò)模型,主要用于手寫數(shù)字識別,具有卷積神經(jīng)網(wǎng)絡(luò)的典型結(jié)構(gòu),是深度神經(jīng)網(wǎng)絡(luò)中最有代表性的實驗系統(tǒng)之一,曾廣泛用于美國銀行手寫數(shù)字的識別。網(wǎng)絡(luò)結(jié)構(gòu)由7層組成,每層包含訓(xùn)練參數(shù),LeNet-5中主要有卷積層、下抽樣層、全連接層3種連接方式。如圖2所示,其中Cx層代表卷積網(wǎng)絡(luò),Sx層代表子采樣層網(wǎng)絡(luò),F(xiàn)x層代表全連接層網(wǎng)絡(luò)。
圖2 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
C1層是卷積層,包含6個特征平面,每個特征平面由一個卷積核映射而形成。每個特征平面中的單元連接到輸入層中的一個5×5的區(qū)域,即卷積的輸入?yún)^(qū)域大小是5×5。該層的卷積運(yùn)算使用6個5×5的卷積核與輸入?yún)^(qū)域進(jìn)行卷積運(yùn)行。每個特征圖平面內(nèi)只使用一個共同卷積核,即共享權(quán)值。
S2層是下采樣層,采用的是2×2的輸入域,C1層的6個特征平面分別以2×2的區(qū)域進(jìn)行采樣,得到6個14×14的下采樣平面。C1層的4個單元作連接到S2層的1個單元,作為S2層的輸入,輸入?yún)^(qū)域滑動運(yùn)行,每次滑動2個像素。在這里,使用最大池化(maximum pool),大小為2×2的采樣核。
C3層是一個由16個10×10大小的特征平面組成的卷積層。卷積運(yùn)算與C1層相同,不同之處在于,C3層的每個神經(jīng)元與S2層中的多個特征平面相連,即該層的每個神經(jīng)元連接到S2層多個特征平面的5×5大小的輸入?yún)^(qū)域。C3層輸出是16個10×10的特征平面。
S4層是下采用層,采樣核大小為2×2。C3層的16個10×10的特征平面分別作為輸入,以采樣核為2×2的下抽樣,仍然使用最大池化,S4層得到16個5×5的特征平面。
C5層是由120個卷積結(jié)果構(gòu)成的卷積層。由于S4層的特征平面大小為5×5,與本層的卷積核大小相同,這樣經(jīng)過卷積后,形成特征平面的大小為1×1,所以就形成一維的卷積結(jié)果。這里采用120個神經(jīng)元,每個神經(jīng)元都連接到S4層的16個特征平面,這樣就得到120個卷積結(jié)果。
F6層是由84個神經(jīng)元組成的全連接層,它與C5層的120個神經(jīng)單元完全連接。
輸出層OUTPUT是由10個神經(jīng)元組成的全連接層,與F6層完全連接。每個神經(jīng)元代表輸出的一個類別,在這里分別代表數(shù)字0到9。采用徑向基RBF分類器連接F6層,RBF的映射關(guān)系如式3所示。
(3)
其中,xj為F6層上的第j個神經(jīng)元;yi為輸出層的第i個神經(jīng)元的輸出值;wij為神經(jīng)元i到神經(jīng)元j之間的偏置。輸出層的每個節(jié)點(diǎn)yi表示一個數(shù)字類別的置信度。
在車牌識別中,由于車牌分割的輸出由漢字和6位數(shù)字/字母組成,而傳統(tǒng)LeNet-5網(wǎng)絡(luò)主要用于數(shù)字0-9的手寫數(shù)字識別。這明顯是不同的,所以LeNet-5模型不能直接應(yīng)用,需要根據(jù)中國車牌中字符類別等特點(diǎn)進(jìn)行改進(jìn)。
3.2.1 輸出層的改進(jìn)
由于在傳統(tǒng)的LeNet-5模型中輸出的數(shù)字只有10個,而車牌對象共有65個類別(31+24+10=65),考慮到車牌中的字母/數(shù)字與中文字體相差很大,所以設(shè)計兩個分類器,一個用于漢字分類,一個用于字母數(shù)字的分類。這樣,模型輸出層的單元個數(shù)分別設(shè)計為31個和34個。
3.2.2 調(diào)整特征平面數(shù)
由于模型的識別數(shù)量修改為31和34,比原來模型的輸出類別大,而且有較為復(fù)雜的漢字識別,為了更全面地提取圖像特征,需要調(diào)整一些層的特征平面的數(shù)量。因此,將C1層和S2層的特征平面數(shù)量由6個增加到24個,將C3和S4層的特征平面數(shù)量由16個增加到52個,將C5層的特征平面數(shù)量由120個增加到480個。調(diào)整各層參數(shù),將對輸出的結(jié)果產(chǎn)生影響。
3.2.3 改進(jìn)模型輸入大小
由于傳統(tǒng)模型中為32×32的輸入,當(dāng)某些漢字圖像被壓縮時,可能會造成某些復(fù)雜的漢字信息丟失,如“藏”、“贛”、“鄂”等。因此,模型輸入修改為64×64大小,從而相應(yīng)地調(diào)整每個層的特征平面神經(jīng)元數(shù)量。
采用Tensorflow框架用于實現(xiàn)改進(jìn)后的LeNet-5網(wǎng)絡(luò)模型。將車牌字符分割后,得到的漢字和數(shù)字/字符圖像作為訓(xùn)練數(shù)據(jù)。部分訓(xùn)練樣本如圖3所示。
圖3 部分訓(xùn)練數(shù)據(jù)樣本
為了增加數(shù)據(jù)量,部分車牌數(shù)據(jù)通過圖像處理變形獲得。共獲得漢字圖像35 460個,類別31個,平均每個類別1 143個;數(shù)字/字符圖像32 100個,類別34個,平均每個類別944個。隨機(jī)抽取80%的數(shù)據(jù)作為訓(xùn)練樣本,其余20%作為測試樣本。所有數(shù)據(jù)標(biāo)準(zhǔn)化為64×64的二值圖像。分別為每個分類字符設(shè)置標(biāo)簽,漢字31個標(biāo)簽,從0到30,數(shù)字/字符34個標(biāo)簽,從0到33。在CPU為i5-5200U上訓(xùn)練模型,進(jìn)行有監(jiān)督學(xué)習(xí)。在訓(xùn)練中設(shè)置不同的迭代次數(shù),在2 000~10 000之間訓(xùn)練模型,直到收斂為止。
為了測試改進(jìn)后的LeNet-5網(wǎng)絡(luò)的性能,通過實驗進(jìn)行測試。將數(shù)據(jù)集的80%作為訓(xùn)練模型數(shù)據(jù),20%作為測試數(shù)據(jù)。測試樣本數(shù)據(jù)由6 420個數(shù)字/字母圖像和7 092個漢字圖像組成。分別與支持向量機(jī)(SVM)和BP神經(jīng)網(wǎng)絡(luò)進(jìn)行了對比實驗。
支持向量機(jī)也分別設(shè)計2個分類器進(jìn)行訓(xùn)練,一個用于漢字分類,一個用于數(shù)字/字母分類。支持向量機(jī)使用的特征包括筆畫、密度和網(wǎng)格特征,在相同的實驗環(huán)境下進(jìn)行實驗,結(jié)果如表1所示。
表1 改進(jìn)的LeNet-5與SVM實驗結(jié)果
從表1可以看出,采用卷積神經(jīng)網(wǎng)絡(luò)可以顯著地提高車牌中的字符識別準(zhǔn)確率,漢字分類準(zhǔn)確率可以提高約7%,字符/數(shù)字準(zhǔn)確率可以提高約4%。使用支持向量機(jī)方法,平均識別100個字符的時間為0.198 s,卷積神經(jīng)網(wǎng)絡(luò)的耗時為0.375 s,由于卷積網(wǎng)絡(luò)需要對車牌字符圖像進(jìn)行卷積運(yùn)算,故耗時較多。
在相同的實驗環(huán)境下,改進(jìn)的LeNet-5網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)分別進(jìn)行對比實驗測試,結(jié)果如表2所示。
表2 改進(jìn)的LeNet-5和BP網(wǎng)絡(luò)實驗結(jié)果
為了測試改進(jìn)的LeNet-5性能,將常用的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行對比實驗。BP網(wǎng)絡(luò)設(shè)計為三層結(jié)構(gòu),隱含層為450個節(jié)點(diǎn),學(xué)習(xí)率設(shè)為0.01。從表2可以看出,改進(jìn)的LeNet-5網(wǎng)絡(luò)識別準(zhǔn)確率比BP網(wǎng)絡(luò)高出約6%。時間性能方面,在相同實驗環(huán)境配置條件下,改進(jìn)的LeNet-5識別100個字符為0.375 s,BP神經(jīng)網(wǎng)絡(luò)需要0.582 s,改進(jìn)的LeNet-5網(wǎng)絡(luò)所需時間也少于BP網(wǎng)絡(luò)。
在車牌字符識別測試中,出現(xiàn)一些識別錯誤的情況。分析這些錯誤識別的字符原因,有如下特點(diǎn):(1)車牌中某些字符本身就比較模糊,因為光照、傾斜、變形、粘連、分裂等原因所致;(2)車牌分割時,由于噪音或其他原因的干擾引起的字符分割錯誤,如“京”與“瓊”,“1”與“T”等,“0”與“Q”等。對于這些識別錯誤,部分可以通過加大訓(xùn)練樣本來加以改善,部分可以通過提高字符分割正確率等預(yù)處理方法來加以改善。
為了改善傳統(tǒng)車牌識別方法中過分依賴車牌特征和魯棒性不強(qiáng)等問題,對卷積神經(jīng)網(wǎng)絡(luò)LeNet-5的結(jié)構(gòu)進(jìn)行了改進(jìn),并進(jìn)行了性能測試實驗,與三層BP神經(jīng)網(wǎng)絡(luò)和SVM進(jìn)行了對比。結(jié)果表明,改進(jìn)的LeNet-5在車牌字符識別中有良好的識別性能,與三層BP神經(jīng)網(wǎng)絡(luò)相比,改進(jìn)的LeNet-5在準(zhǔn)確率和識別速度方面都優(yōu)于BP神經(jīng)網(wǎng)絡(luò);與SVM相比,識別準(zhǔn)確率高于SVM,識別速度慢于SVM。由于實驗中沒有采用GPU,若在實際應(yīng)用部署時使用GPU加速,運(yùn)行速度會有很大程度的改善。改進(jìn)的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的魯棒性、準(zhǔn)確性和較好的實時性。下一步將進(jìn)一步完善數(shù)據(jù)預(yù)處理及車牌字符分割算法,構(gòu)建性能優(yōu)良的車牌識別系統(tǒng)。