孟祥環(huán), 羅素云, 張玉祖, 陳 亞, 陳思濤
(上海工程技術(shù)大學(xué) 機械與汽車工程學(xué)院, 上海 201620)
傳統(tǒng)的車牌字符識別方法主要有3種,分別為基于模板匹配的字符識別、基于特征分析的字符識別和基于神經(jīng)網(wǎng)絡(luò)的字符識別[1-3].模板匹配法的關(guān)鍵是判斷待識別字符矩陣和模板庫中標(biāo)準(zhǔn)字符矩陣的相似程度,得到的圖像矩陣即兩個字符矩陣圖像的相似度,也是字符識別的判別依據(jù).實際應(yīng)用中因采集到的字符圖像容易受角度和噪聲的影響,該方法的識別準(zhǔn)確率并不高[4].基于特征分析的車牌字符識別方法首先對待識別圖像提取統(tǒng)計特征,特征提取以漢字的筆畫特征結(jié)構(gòu)為依據(jù),然后按照一定標(biāo)準(zhǔn)所確定的決策函數(shù)進行決策分類,最終將識別的偏旁部首整合到一起組成漢字[5].
深度學(xué)習(xí)技術(shù)的快速發(fā)展為解決目標(biāo)檢測和識別提供了新思路.在車牌字符識別方面,卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以有效地從大量樣本中學(xué)習(xí)到相應(yīng)的特征,相比其他算法可避免復(fù)雜的特征提取過程,越來越多地被相關(guān)研究人員關(guān)注.
魯揚[6]通過搭建8層卷積神經(jīng)網(wǎng)絡(luò)模型,采用線性整流函數(shù)(Rectified Linear Unit,ReLU)作為激活函數(shù)來提高模型收斂速度,把采集到的全國的原始車牌圖片進行預(yù)處理后投入卷積神經(jīng)模型進行訓(xùn)練,得到比較好的訓(xùn)練效果.李兵等[7]提出一種基于Gabor濾波特征提取的反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)絡(luò)字符識別算法,采用Gabor濾波提取特征,利用BP神經(jīng)網(wǎng)絡(luò)良好的學(xué)習(xí)機制、快速的分類方式和較強的容錯能力進行數(shù)據(jù)訓(xùn)練.使用BP神經(jīng)網(wǎng)絡(luò)能明顯提高復(fù)雜環(huán)境下車牌識別的準(zhǔn)確性、實時性及魯棒性[8].高攀[9]結(jié)合高階循環(huán)神經(jīng)網(wǎng)絡(luò)深入研究ResNet和DenseNet網(wǎng)絡(luò)拓撲結(jié)構(gòu),進而提出一個簡單、高效和模塊化的網(wǎng)絡(luò)拓撲結(jié)構(gòu),并基于此拓撲結(jié)構(gòu)提出基于深度卷積神經(jīng)網(wǎng)絡(luò)的車牌識別方案.張佑賢[10]在對車牌字符識別的過程中,分別對支持向量機(SVM)結(jié)合梯度方向直方圖(HOG)、CNN結(jié)合SVM、CNN結(jié)合門控制單元(GRU)等3種算法試驗研究.結(jié)果表明,CNN-GRN算法對常規(guī)車牌字符識別具有很好的魯棒性.王晶[11]將CNN應(yīng)用于車牌字符識別,相比BP神經(jīng)網(wǎng)絡(luò),CNN的識別率提高5%.
本文基于TensorFlow深度學(xué)習(xí)框架[12],搭建卷積神經(jīng)網(wǎng)絡(luò)模型.使用卷積核提取特征,通過卷積和池化操作,使參數(shù)數(shù)量極大減少,提高算法的準(zhǔn)確度和泛化能力.
人腦是由860多億個神經(jīng)元組成,所有的思維意識都是以它為基本單元,連接成網(wǎng)絡(luò)實現(xiàn)的[7].
1943年,心理學(xué)家McCulloch和數(shù)學(xué)家Pitts從生物神經(jīng)元中得到啟發(fā),通過計算機訓(xùn)練得到神經(jīng)元模型(MP),如圖1所示.該模型包含輸入、輸出與計算功能.輸入可以類比為神經(jīng)元的樹突,輸出可以類比為神經(jīng)元的軸突,計算可以類比為細胞核[13].
圖1 MP模型Fig.1 MP model
由多個神經(jīng)元模型相連接構(gòu)成的神經(jīng)網(wǎng)絡(luò)發(fā)展迅速.在各種深度神經(jīng)網(wǎng)絡(luò)中,卷積神經(jīng)網(wǎng)絡(luò)是應(yīng)用范圍最為廣泛的一種多層人工神經(jīng)網(wǎng)絡(luò),它由Yann LeCun教授在1989年提出,被成功應(yīng)用于各類圖像的識別[14-19].
1.1.1 卷積層
式中,Mj為選擇的輸入特征圖的集合.
1.1.2 池化層
卷積網(wǎng)絡(luò)中經(jīng)常使用池化層(Pooling Layers)來縮減模型大小,提高計算速度和所提取特征的魯棒性.池化層計算式為
式中,down(.)為下采樣函數(shù).
1.1.3 前向傳播
本文在后續(xù)推導(dǎo)中采用平方誤差代價函數(shù).對于多類問題,共c類,N個訓(xùn)練樣本,EN為代價函數(shù),表示為
第n個樣本的誤差可表示為
式中,l為當(dāng)前層.當(dāng)前層的代價函數(shù)可以表示為
xl=f(ul)
ul=Wl-1Xl-1+bl
式中:f(.)為輸出激活函數(shù),可以有很多種,一般為Sigmoid函數(shù)或者雙曲線正切函數(shù).
1.1.4 反向傳播
反向傳播回來的誤差可以看作是每個神經(jīng)元的基的靈敏度(sensitivities).定義為(第2個等號根據(jù)求導(dǎo)的鏈?zhǔn)椒▌t得到)
第l層靈敏度表示為
δl=(Wl+1)Tδl+1°f′(ul)
式中,“°”為每個元素相乘,即
δl=f′(ul)°(yn-tn)
對于第l層,誤差等于該層每一個權(quán)值的導(dǎo)數(shù)是該層的輸入(等于上一層的輸出)與該層的靈敏度的叉乘.然后得到的偏導(dǎo)數(shù)乘以一個負學(xué)習(xí)率就是該層的神經(jīng)元的權(quán)值的更新,即
每一個權(quán)值(W)ij都對應(yīng)一個特定的學(xué)習(xí)率ηij.
一個簡單的卷積神經(jīng)網(wǎng)絡(luò)模型如圖2所示.它主要分兩大部分:由多重卷積和池化操作構(gòu)成的特征提取網(wǎng)絡(luò)和基于提取特征的分類神經(jīng)網(wǎng)絡(luò).特征提取神經(jīng)網(wǎng)絡(luò)接收輸入圖像,經(jīng)過卷積層(c1,…,cn)的卷積操作后得到特征映射圖[20].通過池化層(P1,…,Pn)對卷積后的特征圖進行降維,將降維后的特征值輸入分類神經(jīng)網(wǎng)絡(luò)的全連接層,最后輸出判別結(jié)果,如圖3所示.
圖2 一個簡單的卷積神經(jīng)網(wǎng)絡(luò)Fig.2 A simple convolutional neural network
圖3 卷積神經(jīng)網(wǎng)絡(luò)連接關(guān)系圖Fig.3 Connection diagram of convolutional neural network
車牌字符數(shù)據(jù)通過實景拍攝和網(wǎng)絡(luò)收集獲得.數(shù)據(jù)集包括30個省市簡寫漢字(不包括港澳臺)、英文字母和阿拉伯?dāng)?shù)字字符,共6 000個字符數(shù)據(jù).首先對采集到的車牌完成字符分割;然后進行圖片裁剪,使所有圖片大小一致;最后將所有圖片進行二值化處理.試驗發(fā)現(xiàn),當(dāng)閾值設(shè)為160左右時,二值化圖像有較好的效果.將數(shù)據(jù)放入指定文件夾,運行程序,即可完成數(shù)據(jù)集制作,過程如圖4所示.
圖4 數(shù)據(jù)集制作流程圖Fig.4 Flow chart of making data set
具體算法過程如下:
String savedfilename;
cv::glob(pattern_jpg,image_files);
for(int ii=0;ii { Mat dd=imread(image_files[ii]); Mat grayImage,res,bin; cvtColor(dd,grayImage, COLOR_BGR2GRAY); threshold(grayImage,bin,160,255, THRESH_BINARY); cv::resize(bin,res,cv::Size(32,40),(0,0),(0,0),cv::INTER_LINEAR); savedfilename=image_files[ii]; imwrite(savedfilename,res); } 神經(jīng)網(wǎng)絡(luò)可以分為前向傳播過程、反向傳播過程和測試過程[21].本文樣本集為40×32像素點的二值化圖片,將數(shù)據(jù)集輸入神經(jīng)網(wǎng)絡(luò)時,需先將數(shù)據(jù)集中每張圖片變?yōu)殚L度為1 280的一維數(shù)組,然后將該數(shù)組作為輸入特征輸入到神經(jīng)網(wǎng)絡(luò). 卷積神經(jīng)網(wǎng)絡(luò)是在全連接網(wǎng)絡(luò)的基礎(chǔ)上加入卷積層和池化層,其在圖像處理方面有獨特的優(yōu)勢.卷積神經(jīng)網(wǎng)絡(luò)通過卷積和池化的多次組合來自動學(xué)習(xí)圖像在各個尺度上的特征,這與人類理解圖像的過程相同.人在認知圖像時是分層進行的,首先理解顏色和亮度,然后是邊緣、角點、直線等局部信息,最后形成整個物體的概念[22-23].為得到比較好的訓(xùn)練結(jié)果,本文設(shè)計并訓(xùn)練一個擁有兩個卷積和兩個池化層的神經(jīng)網(wǎng)絡(luò)模型,網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示. 圖5 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Structure diagram of convolutional neural network 該網(wǎng)絡(luò)以灰度化處理后的40×32像素點圖像為輸入.16個卷積核得到的特征圖構(gòu)成神經(jīng)網(wǎng)絡(luò)的第1層,這一層的目的是粗略提取不同車牌字符數(shù)據(jù)的特征,以便進一步學(xué)習(xí).卷積核大小為8×8,最終得到16個大小為20×16像素點的特征圖像.第2層為由16個卷積圖像構(gòu)成的池化層,首先進行補零填充補充邊緣,然后使用大小為2×2的卷積核進行卷積操作,由于使用的步長為1,所以輸出16個特征圖.第3層為第2個卷積層,這一層使用大小為5×5的卷積核,最終得到32個20×16像素點的特征圖.第4層再將第3層得到的特征圖通過取最大值方法合并為1個20×16像素點的、具有像素最大值的精確特征圖.第5層以后都屬于全連接神經(jīng)網(wǎng)絡(luò)部分,是對上一層得到的精確特征圖進行矩陣變換,得到1個一維向量輸入到全連接神經(jīng)網(wǎng)絡(luò)中,這一層共設(shè)置512個隱藏節(jié)點.考慮到過擬合問題,加入dropout算法處理.卷積神經(jīng)網(wǎng)絡(luò)的具體參數(shù)設(shè)置見表1. 表1 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置Table 1 Network structure setting 中文字符是車牌字符中筆畫連接最復(fù)雜的字符,針對中文字符的特殊性,本文在卷積神經(jīng)網(wǎng)絡(luò)中使用兩次卷積和池化操作,充分提取特征.本文設(shè)定當(dāng)訓(xùn)練滿足準(zhǔn)確率>99.66%且訓(xùn)練次數(shù)>250次時終止訓(xùn)練.在全連接網(wǎng)絡(luò)中使用含有兩個隱藏層的網(wǎng)絡(luò),考慮到全連接神經(jīng)網(wǎng)絡(luò)訓(xùn)練的輸入數(shù)據(jù)集參數(shù)比較多,適當(dāng)降低訓(xùn)練終止時刻的準(zhǔn)確率,設(shè)定當(dāng)訓(xùn)練滿足準(zhǔn)確率>99.22%且訓(xùn)練次數(shù)>250次時終止訓(xùn)練. 實際訓(xùn)練過程證明,這兩個模型都具有比較好的收斂性,如圖6和圖7所示.利用全連接網(wǎng)絡(luò)搭建的車牌號碼中文識別模型的初始準(zhǔn)確率為5.22%,在第25次迭代時準(zhǔn)確率已經(jīng)達到91.79%,之后呈緩慢上升趨勢,在第75次訓(xùn)練時,準(zhǔn)確率突破99.22%,隨后雖有一定程度的波動,但最終趨于平穩(wěn),達到99.25%,最終的訓(xùn)練耗時為74 s,訓(xùn)練結(jié)果證明模型設(shè)置是合理的.搭建的卷積神經(jīng)網(wǎng)絡(luò)中文字符識別模型的初始準(zhǔn)確率為7.46%,在第15次訓(xùn)練時準(zhǔn)確率已經(jīng)達到94.03%,之后的訓(xùn)練過程中準(zhǔn)確率在小范圍內(nèi)波動,在第75次訓(xùn)練時準(zhǔn)確率達到99.25%,最終達到99.99%,用時696 s.符合反向傳播中學(xué)習(xí)率的函數(shù)設(shè)定,可實現(xiàn)較好的訓(xùn)練結(jié)果. 圖6 全連接網(wǎng)絡(luò)迭代過程Fig.6 Iteration process of fully connected network 圖7 卷積神經(jīng)網(wǎng)絡(luò)迭代過程Fig.7 Iterative process of convolutional neural network 從訓(xùn)練用時的對比可以看出,由于全連接網(wǎng)絡(luò)相比卷積神經(jīng)網(wǎng)絡(luò)有更簡單的網(wǎng)絡(luò)結(jié)構(gòu),其在訓(xùn)練時間成本上明顯小于卷積神經(jīng)網(wǎng)絡(luò).但從訓(xùn)練的質(zhì)量來看,卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果的質(zhì)量明顯好于全連接網(wǎng)絡(luò),全連接網(wǎng)絡(luò)在迭代過程中出現(xiàn)較大程度的準(zhǔn)確率下降問題,而卷積神經(jīng)網(wǎng)絡(luò)迭代曲線比較平滑,對數(shù)據(jù)的吸收和處理能力更強,提取特征的方式更加有效,在訓(xùn)練過程中波動幅度明顯小于全連接網(wǎng)絡(luò). 在實際車牌檢測中,由于汽車行駛環(huán)境的復(fù)雜性導(dǎo)致車牌字符被障礙物遮擋,造成車牌分割后得到的字符模糊.本文重點分析京、閩等中文和B、8、Q、0等相似字符的識別結(jié)果,見表2.從不同字符的識別結(jié)果可以看出,卷積神經(jīng)網(wǎng)絡(luò)能夠有效地提取車牌字符的特征,在中文的識別上都能得到較好的識別效果.全連接神經(jīng)網(wǎng)絡(luò)的識別效果對訓(xùn)練庫的訓(xùn)練樣本數(shù)量要求較高,“京”“閩”訓(xùn)練庫中分別有180張圖片,字符識別效果較好.“吉”訓(xùn)練庫有40張圖片,較少的訓(xùn)練樣本無法讓全連接網(wǎng)絡(luò)充分地學(xué)習(xí),不能達到很好地識別效果. 表2 漢字識別結(jié)果Table 2 Recognition results of Chinese character 將制作好的字母數(shù)據(jù)集和數(shù)字數(shù)據(jù)集帶入上述模型進行訓(xùn)練.將卷積神經(jīng)網(wǎng)絡(luò)和全連接神經(jīng)網(wǎng)絡(luò)對字母和數(shù)字的識別結(jié)果進行對比,結(jié)果見表3.從“B”字符的識別結(jié)果可以看出,面對高度模糊字符時,卷積神經(jīng)網(wǎng)絡(luò)仍能夠準(zhǔn)確地提取特征并完成字符的識別,相比之下,全連接神經(jīng)網(wǎng)絡(luò)的識別準(zhǔn)確率嚴(yán)重下降. 表3 字母、數(shù)字識別結(jié)果Table 3 Recognition results of letters and numbers 為更好地說明卷積神經(jīng)網(wǎng)絡(luò)對車牌字符識別的效果.將本文方法與基于模板匹配的字符識別方法、HOG特征匹配識別方法和k最鄰近(KNN)分類識別方法進行對比,見表4. 表4 不同識別方法結(jié)果比較Table 4 Results comparison of different recognition methods 通過上表可以看出,利用卷積神經(jīng)網(wǎng)絡(luò)進行車牌字符識別的準(zhǔn)確率達到99.40%,遠超過其他幾種方法.傳統(tǒng)模板匹配方法和HOG特征匹配方法對一些形狀相近的字符識別效果不佳,如,O和Q、B和8、D和0等.KNN分類識別方法的優(yōu)點是不需要訓(xùn)練,每次進行識別操作時,可直接調(diào)用數(shù)據(jù)文件,然后進行距離運算;其缺點是識別的結(jié)果與k值的選擇有很大關(guān)系,因此如何合理地選擇k值是該算法主要面臨的問題.而全連接神經(jīng)網(wǎng)絡(luò)識別方法和卷積神經(jīng)網(wǎng)絡(luò)對字符0和D的識別都匹配錯誤. 通過對比研究可以發(fā)現(xiàn),本文構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)在字符識別方面比傳統(tǒng)的全連接神經(jīng)網(wǎng)絡(luò)有更高的準(zhǔn)確率.與其他算法相比,運用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的網(wǎng)絡(luò)結(jié)構(gòu)有更強的應(yīng)用范圍,其在中文、英文和數(shù)字字符的識別方面均有很好表現(xiàn).卷積神經(jīng)網(wǎng)絡(luò)通過卷積核提取特征,極大降低了訓(xùn)練網(wǎng)絡(luò)對數(shù)據(jù)集數(shù)量的要求,相比全連接神經(jīng)網(wǎng)絡(luò),其在字符識別方面有明顯優(yōu)勢.運用本文的數(shù)據(jù)集制作方法,在現(xiàn)有硬件設(shè)備基礎(chǔ)上更大范圍地采集數(shù)據(jù),進行網(wǎng)絡(luò)參數(shù)優(yōu)化,將會使車牌字符識別的準(zhǔn)確度大幅提高.雖然卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜,網(wǎng)絡(luò)訓(xùn)練時間較長,但一次訓(xùn)練得到的參數(shù)是可以移植的,且不需要對字符識別硬件設(shè)備持續(xù)更新,因此,其將逐漸取代傳統(tǒng)算法.3 字符識別
3.1 全連接網(wǎng)絡(luò)的搭建
3.2 卷積神經(jīng)網(wǎng)絡(luò)的搭建
3.3 訓(xùn)練結(jié)果
3.4 識別結(jié)果
3.5 識別算法比較分析
4 結(jié) 語