陶星珍,李康順,劉 玥
(1.江西應用技術(shù)職業(yè)學院 信息工程學院,江西 贛州 341000;2.華南農(nóng)業(yè)大學 數(shù)學與信息學院,廣州 510642)
隨著城市發(fā)展,地面“停車難、亂停車”現(xiàn)象不斷加劇,嚴重影響了城市環(huán)境和交通秩序,地下車庫智能化的發(fā)展是必然趨勢。智能停車場中車牌的識別是關(guān)鍵技術(shù)之一,由于車牌識別系統(tǒng)中圖像是從應用環(huán)境中獲取,受地下停車場的光照、坡度等因素的影響, 獲取的圖像質(zhì)量不高,使得分割出的車牌字符存在著斷裂、粘連、模糊、毛刺等問題[1],因此如何準確地識別出車牌字符成為難點[2]。
對車牌識別問題,主要解決方法分為兩大類。第一種,將車牌字符分割后再識別;第二種是不分割車牌字符而直接識別。金亞飛[3]針對復雜場景中車牌識別采用了第一種方法,先對車牌字符添加矩形框來分割字符,采用傳統(tǒng)圖像處理技術(shù),然后用卷積神經(jīng)網(wǎng)絡對字符進行識別,識別率最高達到97.3%。周文婷[4]僅對車牌中首字符漢字進行垂直投影分割,其余字符不分割,對漢字和剩余字符分別設(shè)計識別網(wǎng)絡,識別率達到97.6%。張文超等[5]運用第二種方法,提出一種車牌定位到識別通道化模型,該模型不需要分割字符,實現(xiàn)車牌的一次性識別,通過在識別模型中共享卷積神經(jīng)網(wǎng)絡,實現(xiàn)字符的多任務分類,同時降低了對復雜背景環(huán)境對字符識別的影響;模型應用在車牌識別中取得較好效果,識別率達到94.56%。曹正鳳等[6]針對傳統(tǒng)的車牌檢測和識別任務,提出一個可以同時完成車牌的檢測和無分割識別任務的模型,不僅可以避免誤差的累積,而且可以進一步加速神經(jīng)網(wǎng)絡的收斂,提高神經(jīng)網(wǎng)絡的泛化性,識別率達到95.4%。
對比兩種識別方法,由于車牌中的字符特征各不相同,沒有統(tǒng)一的輪廓,尤其漢字特征復雜,對于同時識別車牌所有字符,會導致識別率低,第一種方法識別率明顯高與第二種。因此,本文提出一種車牌字符識別網(wǎng)絡LeNet-5-L,將車牌字符識別分為兩個階段,首先運用OpenCV庫函數(shù)和垂直投影字符分割方法對車牌進行識別前的預處理,依次進行車牌圖像二值化、車牌字符分割,分割后的單個字符結(jié)構(gòu)特征相對簡單,降低卷積神經(jīng)網(wǎng)絡特征提取難度,從而提高字符識別速度;然后運用卷積神經(jīng)網(wǎng)絡對圖像進行字符識別,通過對經(jīng)典字符識別網(wǎng)絡LeNet-5進行修改,設(shè)計一種能完成車牌字符分類的卷積神經(jīng)網(wǎng)絡LeNet-5-L,解決車牌中漢字字符識別率不高的問題。
為了提高圖像中字符的識別率,對于由多字符組成的圖像,一般在字符識別前先進行字符分割,即把圖像中的每一個字符從圖像中分離出來,降低識別難度。常用的字符分割方法有投影法、基于聚類分析法及模板匹配法等。對于車牌圖像中字符分割,由于其字符排列整齊,一般采用投影分割法[7]。
投影分割方法的基本思路就是對圖像進行行列掃描,橫向掃描,切割出行字符,在對行字符進行總線掃描,分割出每個字符。該方法首先將圖像進行二值化后,得到黑白圖像,一般黑色為背景,接下來只需對圖像像素灰度值按垂直方向累加。具體分割原理分為3個階段:
1)確定字符最大高度。通過水平方向投影,獲取圖像的直方圖,分析直方圖,計算出圖像中字符的最大高度,以及圖像邊框位置。
2)去除第一步后確定的圖像邊框。
3)確定字符分割間距。通過對步驟2)之后的圖像進行垂直方向的投影,獲得直方圖,計算出圖像中字符間最大中心距,從而確定分割閾值。
4)運用步驟3)中的分割閾值,完成圖像中字符分割。
投影分割法運用廣泛,許多開發(fā)工具包實現(xiàn)了該功能,經(jīng)常被應用在車牌、輪渡等標識的分割任務中。這種分割方法程序算法簡單,程序員可以運用簡單的控制語句實現(xiàn),同時程序簡潔,系統(tǒng)可以快速執(zhí)行,節(jié)省分割時間。
字符識別技術(shù)是指從圖像圖形數(shù)據(jù)中自動提取字符信息,并且進行字符識別[8]。目前,字符識別方法主要有字符模板匹配法、字符特征統(tǒng)計法和機器學習方法等[9]。
1.2.1 基于模板匹配的字符識別
模板匹配是圖象識別方法中使用非常早的一種方法,由于使用簡便,至今仍廣泛應用。它的識別思路是:從圖像或圖像區(qū)域I(i,j) 中提取的若干特征向量,接著與事先構(gòu)造好模板T(i,j) 中對應的特征向量逐個進行比對。基于模板匹配的字符識別方法將字符識別分為三個步驟: 首先將要識別字符圖像處理為黑白圖像,同時修改二值化后的字符圖像尺寸,使其尺寸與模板庫圖像一致,然后與模板庫中的字符一一比對,最后匹配系數(shù)最優(yōu)的為最終識別結(jié)果。計算匹配系數(shù)采用如式(1):
(1)
其中:R(x,y)閾值的取值為[0,1]。
1.2.2 特征統(tǒng)計字符識別法
基于特征統(tǒng)計的識別與模板匹配方法一樣需要進行匹配工作,但是該方法的模板庫更為復雜,需要構(gòu)建的不同字符的特征集合。在進行字符識別時首先建立每個字符的特征向量,并將字符特征分類,比如外輪廓特征、筆畫變化特征和內(nèi)部結(jié)構(gòu)特征等,需要經(jīng)過大量的統(tǒng)計才能得到所用的特征集合,最后將字符特征與字符庫特征集合進行匹配,得出待識別字符的識別結(jié)果。
1.2.3 深度學習字符識別法
深度學習的強大的圖像特征提取功能,近年來大量地運用在字符識別中,深度學習識別方法需要先對對象預處理之后,采用卷積操作對圖像提取特征,最后對提出的特征進行組合完成字符識別。其中特征提取可以采用人工提取特征或者卷積神經(jīng)網(wǎng)絡來提取圖像特征[11]。卷積神經(jīng)網(wǎng)絡是當前最適合做字符識別的一種神經(jīng)網(wǎng)絡模型,具有局部感知野和權(quán)值共享的特征,極大地減少了計算復雜度,對于簡單分類或特定對象的分類,通過借用機器學習的方法,只需要比較少的數(shù)據(jù)集可以達到一個比較好的效果[12]。卷積神經(jīng)網(wǎng)絡最基本的架構(gòu)包括卷積層、池化層、全連接層。
1)卷積層。卷積運算是卷積神經(jīng)網(wǎng)絡的基石,該運算的目的是提取輸入圖像的不同區(qū)域的特征信息,為圖像識別做好準備。網(wǎng)絡中可以由多個卷積層,從低層到高層,分別提取淺層特征和高級特征。卷積操作過程如圖1所示,對輸入的圖像進行卷積操時,需要設(shè)計一個可訓練的濾波器fx向量,計算時用該向量乘以一個輸入的對象(第一層卷積對象為輸入圖像向量,后面卷積對象為上一層卷積特征圖向量),然后加一個偏置向量bx,得到卷積層Cx。
圖1 卷積運算過程
卷積操作中卷積核大小的設(shè)計和卷積核窗口滑動的大小是關(guān)鍵參數(shù)[13]。卷積層計算是通過矩陣來完成操作的,步長不夠時需要進行填充操作,填充大小根據(jù)情況而定。卷積層通過權(quán)值共享降低計算量,一個神經(jīng)元就代表圖像的一個特征,一層卷積操作完成圖像的一次局部特征提取[14]。卷積操作可以使特征提取效果不降低的前提下,大大減少了參數(shù)數(shù)量,有效防止了過擬合問題。卷積層的過濾器定義如下:
(1)觀察窗口大小F一般都是奇數(shù)(1*1、3*3、5*5);
(2)窗口移動的步長S為每次移動的像素大小,一般為一個像素;
(3)計算公式:輸入體積大小為H1*W1*D1,4個參數(shù)Filter數(shù)量K,F(xiàn)ilter大小F,步長S,零填充大小P,輸出體積大小為H2*W2*D2。
H2=(H1-F+2P)/S+1
(2)
W2=(W1-F+2P)/S+1
(3)
D2=K
(4)
通過上述公式,計算出網(wǎng)絡中某一層通過卷積操作之后通道組成情況。
2)池化層。池化的過程和卷積的過程有些類似,同樣采用過濾器方式,但計算方式不同,池化層中采用最大池化和平均池化的操作,也就是說在一個過濾器尺寸內(nèi)求矩陣的最大值或者平均值,圖像中相鄰的特征總會相似,所以可以除掉特征圖中一些不重要的特征數(shù)據(jù),從而減少卷積操作時的參數(shù)數(shù)量[15]。 深度學習中的池化操作過程如圖2所示,相鄰的4個像素通過求和變?yōu)橐粋€像素,然后對它進行加權(quán)Wx+1,同時加偏置矩陣bx+1,最后通過一種激活函數(shù)sigmod,得出特征圖Sx+1,該特征圖大小僅有原特征圖的四分之一。
圖2 池化運算過程
在池化層中,可以有效地縮小特征圖矩陣的大小,但深度一般不會改變,從而有效減少全連接神經(jīng)網(wǎng)絡中的參數(shù),以達到加快計算速度和防止過擬合問題出現(xiàn)的效果。根據(jù)車牌特點,有些字符之間相似,為了提高識別準確率,采用最大值池化,從而保留更多的邊緣特征。
3)全連接層。卷積神經(jīng)網(wǎng)絡中的卷積層和池化層主要完成圖像局部特征提取,那么全連接層的功能就是將前面提取的局部特征進行整合,即將前面卷積操作輸出的二維特征圖轉(zhuǎn)化成一維向量,達到分類效果,實際上全連接層在整個卷積神經(jīng)網(wǎng)絡中充當“分類器”的角色[16-17],計算過程如圖3所示。
圖3 全連接計算過程
z=w*x+b
(5)
令:
x=|x1x2|
則:
a(1)=|a1a2a3|=x*w(1)
y=a(1)*w(2)
LeNet-5模型是Yann LeCun教授于1998年在論文《Gradient-based learning applied to document recognition》中提出的,用于手寫體字符識別[18],對MNIST數(shù)據(jù)集的分識別準確度可達99.2%,它是一種高效的字符識別卷積神經(jīng)網(wǎng)絡。LeNet-5模型一共有7層[19-20],LeNet-5模型的架構(gòu)如圖4所示。
圖4 LeNet-5卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)
由于LeNet-5網(wǎng)絡包含了卷積神經(jīng)網(wǎng)絡中的卷積層,池化層,全鏈接層所有基本層,是一種非常好的參考模型的[21]。對LeNet-5各層計算原理進行深入分析,加深對與卷積層和池化層的理解,為設(shè)計車牌字符識別網(wǎng)絡奠定基礎(chǔ),下面對LeNet-5的每一層進行詳細的分析。
1)輸入層Input:該層輸入圖像,圖像需要經(jīng)過預處理,將尺寸歸一化為32*32,該層僅為輸入識別對象,并不是LeNet-5網(wǎng)絡的計算層。
2)卷積層C1:輸入圖像后,經(jīng)過 6 個可訓練的5*5卷積核進行卷積操作,得到特征圖C1,卷積操作過程如圖5所示。由前面卷積原理和公式(3)可知,輸出特征圖尺寸大小為(32-5+1)*(32-5+1)=28*28,神經(jīng)元數(shù)量為6*28*28,在C1 層產(chǎn)生6 個 28*28 的特征向量圖,可訓練參數(shù)有6*(5*5+1)=156,連接數(shù)為(5*5+1)*6*28*28=122 304,為了加快網(wǎng)絡訓練,需要減少連接數(shù),由于局部像素關(guān)聯(lián)性較強,所以神經(jīng)元在空間維度進行局部連接,同時通過統(tǒng)一深度切片權(quán)值共享實現(xiàn)連接數(shù)大幅下降。
圖5 卷積計算原理
3)池化層S2:將C1層中的尺寸為28*28的特征圖,經(jīng)過6個2*2采樣區(qū)域,得到池化層S2。輸出尺寸為(28/2)*(28/2)=14*14,特征圖尺寸大小為C1的1/4。計算過程如圖6所示,首先是2*2單元里的值相加,然后再乘以訓練參數(shù)w,再加上一個偏置參數(shù)b,然后取sigmoid值(S函數(shù):0-1區(qū)間),作為對應的該單元的值。
圖6 池化計算原理
4)卷積層C3:第一次池化后得到的S2經(jīng)過16個5*5卷積核進行卷積操作,得到C3。格局公式(3)得到輸出特征圖尺寸大小為(14-5+1)*(14-5+1)=10*10,由于S2有6個14*14 的特征圖,C3有16個10*10特征圖,這樣的不對稱性連接,需要對S2的特征圖特殊組合計算才能得到的16個特征圖。具體如圖7所示,C3的前6個特征圖(0~5)與S2層中相鄰的3個特征圖映射,后面6個特征圖(6~11)與S2層中相鄰的4個特征圖映射,后面3個特征圖(12~14)則與S2層部分不相連的4個特征圖映射,只有最后一個特征圖(15)與S2層的所有特征圖相連。
圖7 S2到C3映射關(guān)系
5)池化層S4:與S2層類似,C3經(jīng)過16個2*2卷積核池化操作之后得到S4,該層與C3一樣共有16個特征圖,每個特征圖的大小為(10/2)*(10/2)=5*5,S4的大小為C3的1/4,連接的方式與S2層類似。
6)卷積層C5:將S4層的所有特征圖經(jīng)過120個5*5卷積核進行卷積之后得到C5。該層大小為(5-5+1)*(5-5+1)=1*1,從而達到完成向量化,輸入到全連接神經(jīng)網(wǎng)絡,輸出120*1*1個神經(jīng)元。
7)全連接層F6:C5的120個神經(jīng)元經(jīng)過最后一次卷積操作得到F6。計算輸入向量和權(quán)重向量之間的點積,再加上一個偏置,結(jié)果通過sigmoid函數(shù)輸出。
F6層有84個節(jié)點,對應于一個7x12的比特圖,-1表示白色,1表示黑色,這樣每個符號對應的比特圖中的黑白色就對應于一個編碼。ASCII編碼如圖8所示。
圖8 ASCII編碼圖
8)輸出層Output: 輸出層由10個歐幾里得徑向基函數(shù)RBF(Radial Basis Function)核構(gòu)成,計算公式如式(6)所示:
(6)
式中,x是上一層的輸入,y是RBF函數(shù)的輸出,代表輸入字符x的編碼與ASCII編碼的差值,wij的值由i的比特圖編碼確定,i從0到9,j取值從0到7*12-1。RBF函數(shù)輸出的值反應了識別字符與ASCII編碼的差異大小,如果差異越小,也就是越接近于0 ,則為字符i的概率越大。
針對漢字字符識別正確率低和速度慢的問題,本文提出一種基于深度學習的字符識別網(wǎng)絡LeNet-5-L,將該字符識別網(wǎng)絡運用在車牌識別中,把車牌字符識別分為兩個階段。首先運用傳統(tǒng)字符識別方法對車牌進行字符分割,減少識別目標干擾因素,降低特征提取難度,從而提高字符識別率;然后運用高效的卷積神經(jīng)網(wǎng)絡對圖像提取特征,通過對經(jīng)典字符識別網(wǎng)絡LeNet-5進行修改,設(shè)計一種能完成車牌字符分類的卷積神經(jīng)網(wǎng)絡,解決車牌中漢字識別率低的問題。網(wǎng)絡結(jié)構(gòu)如圖9所示,圖中上面部分為車牌字符分割,下面部分為字符識別卷積神經(jīng)網(wǎng)絡LeNet-5-L。
圖9 基于LeNet-5-L的車牌字符識別過程
通過觀察圖10所示的車牌可知,車牌字符具備有不同類別字符特征,特征區(qū)分明顯,同一類別的字符變化性小,并且底色為藍色,容易進行字符輪廓提取及分割。因此,在字符識別網(wǎng)絡的第一個階段,完成車牌字符分割,為設(shè)計一個簡化高效的卷積神經(jīng)分類網(wǎng)絡提供基礎(chǔ)。
圖10 車牌字符組成結(jié)構(gòu)
本文充分結(jié)合車牌自身的特點,車牌尺寸一致、為單行字符、字符間距一致、高度一致等等,對車牌區(qū)域進行垂直方向的投影,利用車牌中各個字符之間的空白間隙,將車牌中的7個字符圖像依次切割開來。本文采用Python+OpenCV庫完成車牌字符分割,OpenCV庫中實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法方法,在程序中引用該庫,可以很方便對字符進行分割以及二值化處理,具體流程如下。
第一步:調(diào)用函數(shù)imread()讀取圖像,通過函數(shù)cvtColor()將圖像轉(zhuǎn)換為灰度圖像,并用函數(shù)imshow()顯示處理之后的圖像,處理結(jié)果如圖11所示。
圖11 車牌灰度圖
第二步:調(diào)用庫函數(shù)threshold()將灰度圖像二值化,設(shè)定閾值是100,處理結(jié)果如圖12所示。
圖12 車牌二值化效果
第三步:通過函數(shù)imwrite()保存黑白圖片。
第四步:分割字符,經(jīng)過了預處理后的圖像干擾少,易于分割,車牌字符間大小一致,排列規(guī)則,本文選擇垂直投影分割法,具體分割流程如圖 13所示。
圖13 字符分割流程圖
車牌字符分割后得到圖14所示的7張獨立圖像,這樣處理后使得圖片含的有效信息更加突出,干擾信息大大降。從而降低了深度學習網(wǎng)絡識別的難度。對于這樣的輸入數(shù)據(jù),通過深度學習理論可知,只需要極少的數(shù)據(jù)訓練一個簡單的網(wǎng)絡就能完成分類任務,而不會出現(xiàn)過擬合和欠擬合現(xiàn)象。
圖14 車牌字符分割
經(jīng)過前面對識別圖像的預處理之后,由于車牌中的字符種類多、漢字特征復雜,如果繼續(xù)采用傳統(tǒng)特征提取方法,比較困難,為此我們選用深度學習網(wǎng)絡結(jié)構(gòu)LeNet-5 作為我們的字符識別第二個階段的分類網(wǎng)絡,運用卷積神經(jīng)網(wǎng)絡的高效特征提取能力,提高識別效率。
LeNet-5用于10個手寫體數(shù)字字符識別取得了很好的效果,它包含了深度學習的基本模塊:卷積層、池化層及全鏈接層,是設(shè)計其他深度學習模型的基礎(chǔ),前面我們已經(jīng)對該網(wǎng)絡進行了詳細的分析。然而該網(wǎng)絡最初是用于識別手寫數(shù)字的,輸入的類別數(shù)目為 10 個,車牌與數(shù)字相比,除了 10 個阿拉伯數(shù)字,還包括31個漢字和24個英文字母,所以針對車牌字符組成與手寫數(shù)字之間的區(qū)別,對傳統(tǒng)的 LeNet-5 進行重新構(gòu)建,設(shè)計一種結(jié)構(gòu)簡潔的字符識別卷積神經(jīng)網(wǎng)絡LeNet-5-L,用于字符分類,如圖15所示。
圖15 卷積神經(jīng)網(wǎng)絡LeNet-5-L結(jié)構(gòu)
傳統(tǒng)LeNet-5網(wǎng)絡是一個7層卷積神經(jīng)網(wǎng)絡,為了提高車牌中的相似字符漢和字的識別率,結(jié)合前面介紹的卷積神經(jīng)網(wǎng)絡原理,將卷積層C5改為全連接層Fc5,同時增加全連接層Fc7,卷積神經(jīng)網(wǎng)絡LeNet-5-L各層參數(shù)配置設(shè)計如表1所示。
表1 LeNet-5-L參數(shù)配置
本文設(shè)計的車牌字符識別網(wǎng)絡LeNet-5-L將字符識別分為3個階段,首先是運用兩層卷積層和兩層池化層提取字符的局部特征,然后運用三層全連接層將局部特征組合得出全局特征,最后在輸出層采用函數(shù)softmax()輸出字符分類概率值。模型用于車牌字符識別,輸出互斥類別,故選用函數(shù)softmax()對輸出結(jié)果進行處理,該函數(shù)如式(7)所示,其中而約等于2.718 28。
(7)
對經(jīng)典卷積神經(jīng)網(wǎng)絡模型LeNet-5進行調(diào)整,主要有如下調(diào)整:
1)增加全連接層:考慮到實驗環(huán)境和實驗數(shù)據(jù)集的局限性,減少一層卷積層,防止因數(shù)據(jù)集少造成的過擬合現(xiàn)象。同時為了提取更多的特征信息,增加兩層全連接層,目的是提高網(wǎng)絡分類的維度,由于特征表較復雜,前面幾層卷積層提出出來的特征信息還無法實現(xiàn)線性可分,增加全連接層可以讓網(wǎng)絡在更高的維度去對待特征,從而進行分類。
2) 輸出層類別增加:中國民用車牌由65種字符組成,而經(jīng)典LeNet-5為手寫阿拉伯數(shù)字識別問題,輸出層為10個字符標簽,所以本文將輸出層更改為65個獨立通道,輸出識別字符及概率值。
實驗運行環(huán)境為Win10 64 位操作系統(tǒng),CPU為因特爾i5,主頻率為 3.2 GHz,內(nèi)存大小為 4 GB,采用TensorFlow程序框架進行程序編輯。數(shù)據(jù)集來自網(wǎng)絡收集,總共有圖片5 771張,每張圖片均由一個字符組成,部分數(shù)據(jù)集圖像如圖16所示。
圖16 車牌字符數(shù)據(jù)集樣本
神經(jīng)網(wǎng)絡工作過程分為3個步驟:首先建立神經(jīng)網(wǎng)絡;然后,將測試數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡進行訓練,得到需要的網(wǎng)絡模型;最后,將測試數(shù)據(jù)輸入到訓練得到的網(wǎng)絡模型中,獲取識別結(jié)果。將本文設(shè)計的網(wǎng)絡運用在車牌識別中,首先對車牌字符分割,將分割后的每一個字符輸入到訓練后的卷積神經(jīng)網(wǎng)絡中,輸出識別結(jié)果和對應的概率值(0~1)。實驗流程如圖17所示。
圖17 LeNet-5-L網(wǎng)絡模型識別過程
具體實驗步驟如下:
1)對數(shù)據(jù)進行分類整理,分為訓練數(shù)據(jù)集和驗證數(shù)據(jù)集。訓練數(shù)據(jù)集圖片個數(shù)為5 539張,驗證數(shù)據(jù)集圖片個數(shù)為232張。
2)讀取數(shù)據(jù)。首先在程序中建立圖片文件路徑以及對應標簽的列表,然后使用TensorFlow官方接口依據(jù)列表數(shù)據(jù)按隨機隊列的方式讀取圖片。
3)預處理數(shù)據(jù)。對于讀取到的圖片數(shù)據(jù)需要做兩步處理。首先重新調(diào)整尺寸為32*32*1,使數(shù)據(jù)能夠輸入到模型中。然后做增強數(shù)據(jù)處理,主要操作就是隨機裁剪字符圖片。這樣做主要是防止數(shù)據(jù)量過少,網(wǎng)絡訓練不出來。
4)訓練模型。把處理后的數(shù)據(jù)輸入給模型,啟動梯度計算,并更新權(quán)值參數(shù)。通過觀察正確率變化結(jié)果調(diào)整超參數(shù),最后調(diào)試結(jié)果。在實驗中設(shè)置超參數(shù)值如下:訓練輪數(shù)設(shè)為256。學習速率為0.001。
5)驗證模型效果。把驗證數(shù)據(jù)輸入到訓練好的模型里,得出正確率,如果跟訓練時正確率相差不多,說明網(wǎng)絡已經(jīng)訓練成功,訓練結(jié)果如圖18所示,整個網(wǎng)絡訓練時間約1.5 h。
圖18 LeNet-5-L網(wǎng)絡模型訓練完成結(jié)果圖 圖19 LeNet-5-L網(wǎng)絡模型車牌識別結(jié)果
6)對模型進行測試。讀取車牌,進行預處理,二值化圖像,分割出車牌中獨立的7個字符圖片,然后輸入到卷積神經(jīng)網(wǎng)絡模型中,得出預測結(jié)果,如圖19所示。
為了更好地測試模型識別效果,開發(fā)了一個小型應用測試系統(tǒng),其中車牌定位是基于邊緣和顏色特征,具體算法如下:
1)高斯去噪,去掉圖像中不會是車牌的區(qū)域,找到圖像邊緣,使用開運算和閉運算讓圖像邊緣成為一個整體,查找圖像邊緣整體形成的所有矩形區(qū)域,車牌就在其中一個矩形區(qū)域中;
2)根據(jù)矩形區(qū)域長寬比在2~5.5之間參數(shù)要求,一一排除不是車牌的矩形區(qū)域;
3)矯正矩形的傾斜問題,避免車牌邊緣被排除;
4)根據(jù)車牌顏色再定位,縮小邊緣非車牌邊界,最終得到車牌矩形。
實驗選取多張車輛正前面照片作為測試對象,將文中設(shè)計的卷積深度網(wǎng)絡作為識別網(wǎng)絡,測試結(jié)果如圖20所示。
圖20 車牌識別測試結(jié)果
運用本文提出的字符識別網(wǎng)絡,運用在車牌識別中,通過選取10張不同車牌圖像進行測試,車牌中字符的識別率均高于99.97%,整個車牌識別平均時間為0.83 ms。與其它識別算法比較結(jié)果如表2所示,表中識別算法均為車牌的字符識別,識別模型訓練數(shù)據(jù)集同為省份漢字、字符和數(shù)字,算法應用在車牌測試時,選取的車牌圖像不同,但車牌規(guī)格一致,不影響比較結(jié)果。結(jié)果表明本文針對地下停車場設(shè)計的車牌字符識別算法,識別率高,識別時間短,能夠?qū)崿F(xiàn)車輛快速出入。
表2 車牌字符識別算法比較 %
本文提出了一種基于深度學習的車牌字符識別算法,該算法將傳統(tǒng)字符識別方法和卷積神經(jīng)網(wǎng)絡結(jié)合,將該算法運用在車牌識別中,字符識別正確率均高于99.97%,同時識別單張車牌時間僅需0.83 ms,比傳統(tǒng)字符識別速度快,同時比端到端車牌識別方法識別率高,從而有效解決地下停車場因車牌識別效率低而導致的車輛出入緩慢問題。本文重點設(shè)計了網(wǎng)絡模型訓練數(shù)據(jù)為分割之后的字符圖片,所以在最后的整體測試中,整體車牌的識別情況會受到車牌定位和字符分割的影響,將在今后的研究中繼續(xù)改進。