,
(四川大學(xué) 電子信息學(xué)院,成都 610065)
隨著信息科學(xué)的高速發(fā)展,智能化場景在人們生產(chǎn)生活中變得越來越常見。其中智能化交通設(shè)施就是比較經(jīng)典而常見的一個。汽車牌照是車輛身份的唯一標(biāo)識,通過智能化手段對現(xiàn)實(shí)場景中的汽車進(jìn)行身份識別是智能交通提出的基本功能需求。這樣的識別系統(tǒng)一般主要包含車牌檢測定位、字符分割和字符識別3個部分。實(shí)際拍攝的圖像往往存在噪聲污染,形變扭曲,字符斷裂,牌照顏色、尺寸多樣化等問題,而且系統(tǒng)對算法的復(fù)雜度魯棒性有較高要求,所以單一地運(yùn)用某種方法不能解決問題[1]。本文研究的車牌識別方法基于一定預(yù)處理技術(shù)提取車牌圖塊,對其運(yùn)用超分辨率的方法重建,然后對重建后的圖片執(zhí)行車牌識別前處理流程,提取到車牌并分割好字符后做特征提取,最后送入識別網(wǎng)絡(luò)進(jìn)行識別。測試之前先使用來源于網(wǎng)絡(luò)的100張全國各省的牌照圖片以及若干數(shù)量的字符圖片來訓(xùn)練SVM判決器和ANN識別網(wǎng)絡(luò)以及學(xué)習(xí)車牌的稀疏字典對。測試時使用了實(shí)地采集的小汽車正面或背面圖片樣本,共100張。樣本拍攝時候的距離大都在三米之內(nèi),拍攝角度大都傾斜較小,光照均勻聚焦良好。經(jīng)實(shí)驗(yàn)測試表明,該方案是一套行之有效的車牌識別方案。
該系統(tǒng)主要包括五個方面:候選車牌檢測、車牌SVM判決、車牌的超分辨率重建、車牌字符分割和字符識別。這前4個過程均可以視為識別的前處理,這些流程均是為了最后的識別。系統(tǒng)輸入為彩色圖片,一次能識別一個牌照。系統(tǒng)輸出為牌照的識別結(jié)果,即一個字符串。系統(tǒng)的結(jié)構(gòu)如圖1所示。圖中的每個模塊將在后文中詳細(xì)描述。
圖1 系統(tǒng)整體流程
車牌檢測是車牌識別系統(tǒng)的關(guān)鍵步驟,只有正確檢測到圖片中的車牌區(qū)域,后續(xù)的車牌分割提取以及識別才有意義。本文綜合基于顏色、基于邊緣和基于MSER算法三種策略,運(yùn)用并行計算技術(shù)分別得到三種方法的檢測結(jié)果,綜合之后來給出最后的車牌檢測結(jié)果。
1)基于車牌顏色的車牌檢測。國內(nèi)車輛牌照依據(jù)車輛類型分別有藍(lán)底白字、黃底黑字、黑底白字、白底黑字和白底紅字等5種標(biāo)準(zhǔn)。這種獨(dú)特的顏色特征可以用來檢測車牌的存在。
首先將RGB模型轉(zhuǎn)換成HSV模式,即色調(diào)、飽和度、亮度模型。當(dāng)H的取值在200~280度之間,顏色就可以確認(rèn)在藍(lán)色范疇;H取值30~80度之間就確認(rèn)為黃色;H取值0度左右為紅色;以上顏色在V和S越接近1時候越純正。S接近0而亮度V 接近1為白色,而S和V都接近0時為黑色。這樣,將原圖在HSV空間中遍歷所有的像素。根據(jù)前面的分析,若H值在200~280度之間,且S和V的值在0.30~1之間的像素點(diǎn)顏色標(biāo)記為白色,此時S和V不在此范圍則標(biāo)記為黑色。于是可以得到原圖像的一個經(jīng)過處理后的二值圖像。對這個二值圖像做進(jìn)一步的形態(tài)學(xué)處理,再結(jié)合車牌先驗(yàn)知識,最終確認(rèn)車牌候選區(qū)域。
基于車牌顏色特征的檢測時間效率很高,對于高清彩色車牌照片效果較好。不足之處在于,如果照片背景顏色過于復(fù)雜,比如藍(lán)色車牌照片中有大量藍(lán)紫色的圖像塊或區(qū)域,導(dǎo)致篩選提取受到干擾。
2)基于形態(tài)學(xué)處理以及邊緣檢測的車牌檢測。
車牌圖像區(qū)域相對背景區(qū)域有個明顯的特點(diǎn)就是,車牌部分的矩形邊框和里面的數(shù)字字母都包含著大量的橫豎邊緣,尤其是豎直邊。通過特定的一個圖像基元塊與圖像做某種類似邏輯運(yùn)算的作用,可以得到這一邊緣密集的區(qū)域。常見的這種操作有腐蝕膨脹、開操作和閉操作。具體地,先將彩色圖像轉(zhuǎn)化為灰度圖,并且利用5*5高斯模糊去除攝像機(jī)和環(huán)境噪聲。然后利用sobel濾波器和一個閾值濾波器來得到二值圖像。所采用的閾值由Otsu算法得到。使用形態(tài)學(xué)處理方法閉操作來刪除豎直邊之間的空白區(qū),從而得到包含這些大量豎直邊的連通閉合區(qū)域。這些區(qū)域就是車牌的候選區(qū)域。
圖2 閾值處理 圖3 形態(tài)學(xué)處理
3)基于MSER的車牌檢測。MSER全稱為Maximally Stable Extremal Regions,即最大穩(wěn)定極值區(qū)域。這種區(qū)域特點(diǎn)是相對背景而言自成一個組織,組織內(nèi)灰度比較一致。通過多次嘗試不同的閾值對原圖像進(jìn)行二值化濾波,獲取取各個閾值時候的各區(qū)域并計算相應(yīng)形態(tài)變化。在一定的閾值變化范圍內(nèi)如果某個區(qū)域的形狀達(dá)到最大而且穩(wěn)定(類似一個數(shù)學(xué)函數(shù)取得極大值的情況),那么認(rèn)定其為一個MSER區(qū)域[2]。通過設(shè)置合適的閾值變化范圍可以檢測到車牌候選區(qū)域。
這樣,同時運(yùn)行這三種算法就得到了一系列候選車牌區(qū)域,調(diào)整其尺寸為136*36為下一步的SVM判決做準(zhǔn)備。
上面的方法提取到的矩形區(qū)域可能不是車牌,需要經(jīng)過判決得到真實(shí)車牌。SVM(support vector machine)是一種基于統(tǒng)計學(xué)習(xí)理論的機(jī)器學(xué)習(xí)算法,并且是一種有監(jiān)督算法。監(jiān)督學(xué)習(xí)是通過輸入訓(xùn)練數(shù)據(jù)做運(yùn)算并對照數(shù)據(jù)標(biāo)簽提供的相關(guān)信息,利用梯度下降等策略來優(yōu)化調(diào)整系統(tǒng)參數(shù)的方法。標(biāo)簽數(shù)據(jù)標(biāo)識了每個數(shù)據(jù)樣本對應(yīng)所屬的類別標(biāo)號。SVM算法是通過在樣本空間通過計算來生成一個最優(yōu)的判決平面來將所有樣本分為兩類。本文采用該方法解決一個二分類問題,即候選矩形圖塊是或不是真實(shí)車牌圖片。
對測試圖片做判決工作之前,需要先用一定數(shù)量的正負(fù)樣本來訓(xùn)練SVM分類器。本文使用了在現(xiàn)實(shí)場景中拍攝以及從網(wǎng)絡(luò)獲取的數(shù)百張汽車牌照和非牌照照片作為原始素材,通過程序提取車牌圖片作為正樣本,使用相同尺寸的非車牌圖片作為負(fù)樣本。下面將詳細(xì)介紹SVM具體建模過程。
1)首先確定分類器個數(shù)。這里只有車牌這一個類別,則分類器個數(shù)是1。
2)建立樣本庫。選取來源于互聯(lián)網(wǎng)的各省車牌圖片100張作為正樣本負(fù)樣本圖像塊數(shù)據(jù)來源。利用系統(tǒng)測試時產(chǎn)生的與車牌等大小的矩形候選圖塊按照是否為車牌作為正負(fù)樣本。這些樣本在做成訓(xùn)練數(shù)據(jù)之前需要先預(yù)處理,比如灰度化,圖像濾波等。
3)特征提取。本文使用大小為136*36的整張車牌圖片作為訓(xùn)練數(shù)據(jù)輸入,因此特征就是車牌圖片本身。特征值排序后對其歸一化處理,與標(biāo)簽數(shù)據(jù)一起做成訓(xùn)練數(shù)據(jù)。
4)核函數(shù)選定。SVM的構(gòu)造效果受核函數(shù)選取影響很大,合適的核函數(shù)選取可以得到顯著的分類效果,相反核函數(shù)選取不當(dāng)則分類效果會大大降低。主要的核函數(shù)有線性內(nèi)核,多項(xiàng)式內(nèi)核,徑向基內(nèi)核(RBF)等,其中RBF核應(yīng)用最廣泛。本文選取RBF高斯徑向基核函數(shù)。
5)訓(xùn)練SVM。根據(jù)選定的核函數(shù)計算每個特征向量的映射值。SVM分類問題可歸結(jié)為尋找一個樣本集的最優(yōu)分割面。離這個分割面最近的正負(fù)樣本點(diǎn)稱為支持向量。優(yōu)化目標(biāo)則進(jìn)一步轉(zhuǎn)為去最大化這些支持向量到分割面的距離。通過一些數(shù)學(xué)轉(zhuǎn)化,優(yōu)化問題可以表達(dá)為,
s.t.y(i)(ωTx(i)+b)≥1,i=1,...,m
ω和b都是SVM的模型參數(shù),也是決定輸入樣本所屬類別的決策平面的特征參數(shù)。y是訓(xùn)練樣本的類別標(biāo)簽。m為訓(xùn)練樣本的個數(shù)。不等式約束條件是正負(fù)樣本分別約定標(biāo)示y為1和-1時的表達(dá)形式,等號當(dāng)且僅當(dāng)輸入為支持向量時取得。
通過拉格朗日松弛引入松弛因子α,得到拉格朗日多項(xiàng)式,將約束轉(zhuǎn)化到優(yōu)化目標(biāo)函數(shù)中去,問題轉(zhuǎn)化為求以下式子的最小值:
最后運(yùn)用KKT條件求解可得到模型參數(shù)以及預(yù)測表達(dá)式。此時SVM模型參數(shù)隨之確定。
OpenCV提供了一個FileStorage類可以來管理數(shù)據(jù)文件。我們借助這個類來存儲訓(xùn)練數(shù)據(jù)矩陣和類別標(biāo)簽。以上步驟完成好了就可以進(jìn)行訓(xùn)練了,這時候系統(tǒng)會按照以上數(shù)學(xué)原理來計算生成模型參數(shù)。借助OpenCV的CvSVM類,我們用之前生成的訓(xùn)練數(shù)據(jù)文件來初始化一個判決器實(shí)例來完成訓(xùn)練過程。訓(xùn)練完成后,系統(tǒng)就具備判決類似樣本數(shù)據(jù)類別的能力了,這個稱為訓(xùn)練過程。如圖4所示為訓(xùn)練SVM的部分樣本數(shù)據(jù)。
圖4 SVM訓(xùn)練樣本集
經(jīng)過判決后選出真實(shí)的灰度車牌如圖5所示。
圖5 提取的灰度車牌
這個步驟運(yùn)用超分辨率的方法來對提取到的灰度車牌進(jìn)行處理。車牌圖片質(zhì)量得到了增強(qiáng),大小和清晰度變得各加有利于下一步的處理。
目前研究的主流超分辨率重建方法有三種:基于插值、基于重建和基于字典學(xué)習(xí)的方法。其中基于插值的方法比較簡單也最為實(shí)用,能滿足一般的要求且能應(yīng)用于實(shí)時場景?;谥亟ǖ姆椒ㄊ抢们跋蛴^測模型對輸入的低分辨率圖像進(jìn)行一致性約束,同時結(jié)合圖像先驗(yàn)信息進(jìn)行求解,適合和運(yùn)動估計相關(guān)的多幀圖像的超分辨率重建場合。為了加入更多的先驗(yàn)信息,出現(xiàn)了基于學(xué)習(xí)的方法?;趯W(xué)習(xí)的方法最早可追溯到Freeman的VISTA方法[3]。這種方法主要思路是分別選定高低分辨率訓(xùn)練圖像集,在其上建立一種對應(yīng)關(guān)系。近些年來興起了基于字典學(xué)習(xí)的方法,建立高低分辨率圖像塊的基元組合即字典。字典的選取有鄰域嵌入方法(Neighborhood Embedding)和稀疏編碼法(Sparse Coding)。
鄰域法認(rèn)為同一幅圖的低分辨率和高分辨率版本中,流形對象的幾何結(jié)構(gòu)是一樣的。因此每一個圖像塊由K最近鄰的其他圖塊重建的關(guān)系也應(yīng)該是一樣的,即這里的重建系數(shù)是一樣的。這種方法直接使用采樣圖塊作為字典組成元素。但是隨著圖像塊數(shù)目增多,即這里采用的字典的原子數(shù)增大,計算復(fù)雜度會大大增加。
為了解決這個計算復(fù)雜度增加的問題,Yang等結(jié)合信號的稀疏編碼理論提出稀疏字典學(xué)習(xí)方法[4]。
這種方法主要包括兩個階段,先學(xué)習(xí)稀疏字典然后重建。首先分別建立高分辨率和低分辨率圖塊的字典Dh和Dl。問題歸結(jié)為尋找低分辨率塊yi在字典Dl下的最稀疏表示:
式中,α表示低分辨率字典下的稀疏表達(dá),F(xiàn)表示特征提取作用矩陣。L0范數(shù)優(yōu)化屬于NP難問題,于是轉(zhuǎn)化成L1范數(shù)最小化:
引入正則化因子λ,進(jìn)一步轉(zhuǎn)化為:
這是一個L1范數(shù)線性回歸問題,可以運(yùn)用優(yōu)化理論求解。解出最優(yōu)系數(shù)α后進(jìn)行超分辨率重建:
xi=Dhα
這種基于稀疏編碼的方法解決了字典數(shù)據(jù)集體量急劇增加的問題。但是這個稀疏字典集的建模過程仍然需要耗費(fèi)大量時間。
在以上研究的基礎(chǔ)之上,Radu等人提出一種結(jié)合鄰域和稀疏編碼的方法--固定鄰域回歸法(Anchored Neighborhood Regression)[5]。本文將使用這種方法來完成車牌圖片的超分辨率重建。
運(yùn)用嶺回歸的思想,該問題首先可以歸結(jié)為:
其中:Nl代表LR(low resolution)空間的鄰域字典,與之對應(yīng)地鄰域法中則是輸入特征yF的K個最近鄰,在稀疏編碼中則是LR字典。λ可以消除奇異解問題,使問題能有穩(wěn)定解。通過線性代數(shù)的方法可以解得圖塊的鄰域表達(dá)β為:
在該方法中,LR(Low Resolution)和HR(High Resolution)版本的鄰域關(guān)系視為等同,于是可以據(jù)此并結(jié)合HR的鄰域矩陣可以得出重建的高分辨率圖塊:
x=Nhβ
這里x即為HR輸出的圖像塊。Nh是HR版本的圖塊鄰域矩陣,和Nl對應(yīng)。至此求得了由輸入LR版本的特征向量yF得到HR版本圖塊的公式:
該方法可以從一個學(xué)習(xí)到的稀疏字典開始。對稀疏字典中的每個原子通過計算與其他原子的相關(guān)系數(shù)來找到K個最相近的鄰居。這樣原來圖塊的稀疏表達(dá)可以轉(zhuǎn)換成這些鄰居原子的表達(dá)。以這種方式,對于特定的圖塊而言,其表達(dá)空間維度大大減小,原來需要整個字典集來查找表達(dá)系數(shù),現(xiàn)在只需要在一個近鄰空間里去尋找表達(dá),這樣計算效率將大大提高。
車牌圖片可以看做一種特有的模式,其上的紋理是十分相似的。因此車牌圖片適合單獨(dú)訓(xùn)練一個字典然后完成高分辨率重建。通過學(xué)習(xí)一定數(shù)目的較清晰車輛圖片和較模糊車輛樣本,來訓(xùn)練這個字典。
進(jìn)行超分辨率重建后,車輛圖片分辨率明顯提高,字符骨干得到強(qiáng)化,從而各加利于下一步的處理。超分辨率重建后的車牌如圖6所示。
圖6 灰度車牌超分辨率重建
經(jīng)過超分辨率重建、濾波、二值化等過程,下一步采用基于連通域的方法來提取字符。字符分割的目的就是為了得到單獨(dú)的字符圖片作為識別模塊的輸入。常見的車牌分割方法有以下三種。
1)垂直投影法。得到車牌的二值圖后,從左到右掃描車牌的每一個縱列并統(tǒng)計非零像素個數(shù)。不難發(fā)現(xiàn)當(dāng)掃描到字符間隙的時候這個統(tǒng)計值達(dá)到極小值,且相鄰極小值之間就是字符區(qū)域。這種方法分割速度快,滿足實(shí)時性要求,不足之處在于對字符粘連處理效果不好。
2)模板匹配法。這種方法需要首先根據(jù)標(biāo)準(zhǔn)車牌設(shè)計一個同比例的模板,再調(diào)整到實(shí)驗(yàn)中的車牌尺寸。在該模板上用矩形框標(biāo)記好字符區(qū)域的位置。當(dāng)使用該模板從左到右在實(shí)驗(yàn)車牌上滑動時,標(biāo)記區(qū)域內(nèi)的白色像素值(字符像素)將在某一時刻達(dá)到峰值。此時矩形區(qū)域內(nèi)選中的部分即為實(shí)驗(yàn)車牌的字符區(qū)域。該方法對于車牌字符有缺損有較好的分割效果,但是計算復(fù)雜度較高,每次滑動的時刻要統(tǒng)計區(qū)域內(nèi)的像素,相鄰時刻還要計算變化趨勢。
3)連通域方法。車牌上除了漢字,其余字符均是連通的。運(yùn)用這個特點(diǎn),使用OpenCV的庫函數(shù)在二值車牌上標(biāo)記連通域并用外接矩形來包圍這些區(qū)域,以此分割得到車牌上的連通區(qū)域。通過尺寸校驗(yàn)字符像素空占比等可以去除分隔符等干擾。此方法對于車牌圖片質(zhì)量要求較高,否則容易受到背景要素干擾。
本文結(jié)合了連通域方法和基于模板匹配的分割方法。OpenCV提供了一個查找輪廓的函數(shù),可以方便的找到二值圖中的連通區(qū)域的輪廓。對連通域方法檢測到的車牌字符以水平位置排序。經(jīng)過尺寸校驗(yàn)去除干擾后,取后面六位字符存入字符向量。最后根據(jù)漢字到第一個英文字符的距離制作模板提取漢字字符存入單獨(dú)的漢字字符向量。
字符分割定位效果如圖7所示。
圖7 字符分割結(jié)果
識別之前先選取適當(dāng)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),將有標(biāo)簽的訓(xùn)練樣本輸入并使用BP算法訓(xùn)練。得到網(wǎng)絡(luò)模型后對測試樣本提取特征送入神經(jīng)網(wǎng)絡(luò)進(jìn)行識別。
1.5.1 字符特征選取
字符圖片送入神經(jīng)網(wǎng)絡(luò)進(jìn)行識別之前首先要做特征提取。傳統(tǒng)的特征有字符圖像的水平和豎直累計直方圖,低分辨率字符圖像樣本,SIFT(Scale-invariant feature transform)特征,LBP(Local Binary Pattern)特征等。本文同時采用LBP特征和水平豎直累積直方圖特征。LBP是一種用來描述圖像紋理特征的算子。初級的LBP算子反映每個像素與周邊像素的大小關(guān)系(比中心像素大則置1,否則置0),對所有像素和其領(lǐng)域執(zhí)行這種統(tǒng)計和比較便可以得到這種特征,特征維數(shù)和原圖大小相同。
圖8 LBP特征示意圖
對于數(shù)字和字母圖片尺寸歸一化到10*10,LBP特征占去100個數(shù)據(jù)位,加上橫豎的累計直方圖信息20位,整個特征將占用120位數(shù)據(jù)。這也決定了非漢字網(wǎng)絡(luò)的輸入神經(jīng)元為120個。類似地,漢字字符考慮到其復(fù)雜性,尺寸歸一成20*20,對應(yīng)的特征將占用440位,因此漢字網(wǎng)絡(luò)的輸入神經(jīng)元個數(shù)為440。特征收集好了之后,將使用人工神經(jīng)網(wǎng)絡(luò)來完成字符分類即識別過程。
1.5.2 人工神經(jīng)網(wǎng)絡(luò)選取
人工神經(jīng)網(wǎng)絡(luò)的本質(zhì)是一個從輸入映射到輸出的多層復(fù)合函數(shù)。
如果節(jié)點(diǎn)之間不構(gòu)成循環(huán),就稱為前饋網(wǎng)絡(luò)。前饋網(wǎng)絡(luò)也是最基本的神經(jīng)網(wǎng)絡(luò)。本文就使用這種網(wǎng)絡(luò)來做字符識別。
一般而言,層數(shù)多則網(wǎng)絡(luò)模擬現(xiàn)實(shí)世界復(fù)雜關(guān)系的能力就強(qiáng),但與此同時網(wǎng)絡(luò)的訓(xùn)練方法會隨著層數(shù)增加而變得非常復(fù)雜。如圖9所示,本文采用一個單隱層的網(wǎng)絡(luò)結(jié)構(gòu),為簡化表達(dá),輸出層只畫了一個節(jié)點(diǎn)作為代表。輸入層不計,總層數(shù)為兩層,即隱層和輸出層。
圖9 神經(jīng)網(wǎng)絡(luò)表示 圖10 神經(jīng)元表示
如圖10所示,對于每一個神經(jīng)節(jié)點(diǎn),來自上層的輸出首先作為本層的輸入被線性加權(quán)且?guī)в幸粋€額外的偏置量。線性加權(quán)后的結(jié)果隨后進(jìn)入激勵函數(shù),作用后傳入下一層。以第一層即隱層為例,用公式表達(dá)為:
z[1]=w[1]a[0]+b[1]
這里a[0]表示上一層的輸出,這里實(shí)際上是輸入向量。w[1]為第一層的權(quán)重矩陣,b[1]為第一層的線性偏置。z[1]為第一層的輸出向量。對于整個網(wǎng)絡(luò)而言,信息的傳導(dǎo)方向從網(wǎng)絡(luò)輸入到輸出層,如圖11所示。輸入經(jīng)過第一層節(jié)點(diǎn)線性加權(quán)后經(jīng)過激勵函數(shù)后被第二層再次線性加權(quán),隨后經(jīng)過第二層即輸出層激勵函數(shù)作用,最后在輸出層計算損失函數(shù)。這稱為信息流的前饋過程,如圖11所示。
圖11 信息流前饋過程
中括號中的1和2分別表示當(dāng)前矩陣參數(shù)所在的層數(shù)標(biāo)識。X表示輸入,Z表示線性加權(quán)結(jié)果,A表示經(jīng)過激勵函數(shù)后的結(jié)果,L表示損失函數(shù)。
1.5.3 BP算法流程與網(wǎng)絡(luò)訓(xùn)練
BP算法(Back Propagation)的提出極大促進(jìn)了神經(jīng)網(wǎng)絡(luò)的發(fā)展,使得神經(jīng)網(wǎng)絡(luò)的訓(xùn)練變得切實(shí)可行,是一種被廣泛采用的網(wǎng)絡(luò)學(xué)習(xí)方法。本文使用這種方法來更新網(wǎng)絡(luò)參數(shù)形成識別模型。這個學(xué)習(xí)過程實(shí)際是一個優(yōu)化過程,優(yōu)化目標(biāo)是一個損失函數(shù):
L(a,y)=-(ylog(a)+(1-y)log(1-a))
a是實(shí)際輸出,y是期望的輸出(類別標(biāo)簽)。實(shí)際計算損失函數(shù)時要逐個樣本求和。BP算法則本質(zhì)上是通過對這個函數(shù)求解對網(wǎng)絡(luò)連接權(quán)重的梯度然后迭代更新這個權(quán)重系數(shù)w:
其中:α是學(xué)習(xí)因子,決定向局部最優(yōu)點(diǎn)的接近速度,選取太小訓(xùn)練速度很慢,選取過大不易收斂,需要通過實(shí)驗(yàn)來逐步調(diào)整確定。i表示層數(shù)標(biāo)識,j表示層中的節(jié)點(diǎn)標(biāo)識,每個節(jié)點(diǎn)的w向量包含若干個元素,其個數(shù)等于與上層的連接數(shù)。這個迭代一直持續(xù)到輸出優(yōu)化到預(yù)定的水平或者迭代次數(shù)達(dá)到限制為止。因此為迭代得到各個權(quán)值系數(shù),需要計算對應(yīng)的微分量。為了推導(dǎo)表示的方便,下面約定dL/dz這一微分量就用dz簡化表達(dá),其他微分量也都這樣類比來表達(dá)。
輸出層采用的激勵為Sigmoid函數(shù)。結(jié)合以上公式以及求導(dǎo)的相關(guān)知識可以導(dǎo)出,
dz[2]=a[2]-y
z表示上一層的輸出a經(jīng)過本層線性加權(quán)的結(jié)果。本層的z經(jīng)過激勵函數(shù)將又得到本層輸出的a。
由輸出層的線性加權(quán)關(guān)系可以導(dǎo)出,
dw[2]=dz[2]a[1]T
db[2]=dz[2]
由鏈?zhǔn)椒▌t可知,
式中,dz表示真實(shí)的微分而不是上面約定的比值。不難發(fā)現(xiàn)上式右邊第二項(xiàng)即為第一層激勵函數(shù)g(雙曲正切)的導(dǎo)數(shù),第一項(xiàng)可以由輸出層的z與a線性關(guān)系式轉(zhuǎn)化成L對z[2]的導(dǎo)數(shù),同時結(jié)合矢量微積分可以導(dǎo)出,
dz[1]=w[2]Tdz[2]*g[1]'(z[1])
第一層的dw[1]和db[1]和第二層表達(dá)關(guān)系形式上是類似的,都是線性加權(quán)關(guān)系決定的。
計算了以上微分量之后于是可以代入權(quán)值迭代公式:
w[i](k+1)=w[i](k)-αdw[i],i=1,2
b[i](k+1)=b[i](k)-αdb[i],i=1,2
實(shí)際編碼時,為了啟動迭代還需要對權(quán)值進(jìn)行隨機(jī)初始化得到初始權(quán)值向量。每得到一次新的權(quán)值向量,信息流進(jìn)行一次前饋過程直到輸出層,在輸出層計算偏差;信息流到達(dá)輸出層后又進(jìn)行一次反向傳導(dǎo)計算各權(quán)值對應(yīng)的微分量直到第一層,微分量更新后又計算新的權(quán)值向量。整個迭代過程周而復(fù)始,信息流的前饋和反向傳播交替進(jìn)行,直到輸出層得到的偏差收斂于預(yù)設(shè)的水平或者迭代達(dá)到最大限度。這便是用反向傳播算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)的基本過程。對于每個訓(xùn)練樣本都經(jīng)歷上述迭代過程,最后平均各樣本得到的結(jié)果即得到整個訓(xùn)練完成后的分類模型。
考慮到數(shù)字字母與漢字形態(tài)的差異性,使用兩個獨(dú)立的網(wǎng)絡(luò)分開進(jìn)行訓(xùn)練。該訓(xùn)練過程為有監(jiān)督訓(xùn)練,因此需要提供樣本數(shù)據(jù)的類別標(biāo)簽信息。為此引入N*M的訓(xùn)練矩陣,N表示訓(xùn)練樣本的數(shù)目,M是樣本的類別數(shù)。比如對于單純的數(shù)字網(wǎng)絡(luò),M等于10,即十個待識別的數(shù)字類別數(shù)。加上車牌24個英文字母(不考慮字母I和O)的個數(shù),對于非漢字網(wǎng)絡(luò)類別數(shù)為34。對于漢字網(wǎng)絡(luò)類別數(shù)為31.如果第i行樣本屬于第j類那么該矩陣(i,j)位置標(biāo)記為1。以這種方式來存儲各個字符樣本的類別標(biāo)簽。系統(tǒng)識別完成后會給出字符屬于每個類別的概率從而選取最大的那個完成分類。
訓(xùn)練過程即神經(jīng)網(wǎng)絡(luò)的構(gòu)建過程。通過前處理,將提取的字符特征輸入神經(jīng)網(wǎng)絡(luò)先進(jìn)行訓(xùn)練,再利用測試集測試識別性能。
1.5.4 神經(jīng)網(wǎng)絡(luò)配置
對于非漢字網(wǎng)絡(luò)輸入神經(jīng)元120個,漢字網(wǎng)絡(luò)輸入神經(jīng)元440個。隱層神經(jīng)元40個。非漢字網(wǎng)絡(luò)輸出節(jié)點(diǎn)34個,漢字網(wǎng)絡(luò)輸出節(jié)點(diǎn)31個。學(xué)習(xí)率取0.01。激勵函數(shù)隱層選取常用的雙曲正切tanh函數(shù),輸出層激勵則選擇Sigmoid函數(shù)。訓(xùn)練算法為Back Propagation算法。
系統(tǒng)由VS2013開發(fā)平臺采用C++編碼,并鏈接了OpenCV庫,在CPU主頻2.3 GHz,8 G內(nèi)存的Win10家庭版筆記本電腦平臺上開發(fā)實(shí)現(xiàn)并測試識別效果。采用來源于網(wǎng)絡(luò)的訓(xùn)練樣本100張,拍攝距離2米左右,車牌傾斜較小。SVM使用這些樣本在實(shí)驗(yàn)時產(chǎn)生的分辨率為136*36的車牌圖片作為正樣本,使用程序在源圖中提取相同大小的非車牌區(qū)域塊作為負(fù)樣本,各150張。ANN訓(xùn)練字符樣本通過對車牌樣本圖片執(zhí)行字符分割算法得到。漢字分辨率均為20*20,數(shù)字和字母為10*10。實(shí)驗(yàn)結(jié)果如表1所示。
定位準(zhǔn)確率為所有檢測到真實(shí)車牌的樣本占測試集的比例。識別準(zhǔn)確率表示得出正確識別結(jié)果的樣本占比。拒識率是由于車牌未檢測到或者車牌曝光條件等不符合要求等而導(dǎo)致系統(tǒng)未給出識別結(jié)果的樣本比例。測量時統(tǒng)計每次處理的時間,最后取平均數(shù)作為系統(tǒng)運(yùn)行過程花費(fèi)的時間。
表1 實(shí)驗(yàn)結(jié)果
對誤識和拒識的樣本通過逐個反復(fù)測試分析發(fā)現(xiàn):1)個別車牌傾斜程度較大,漢字分割不準(zhǔn)從而導(dǎo)致識別偏差;2)對于少數(shù)遠(yuǎn)距離拍攝的樣本發(fā)生拒識現(xiàn)象,主要原因是此時背景的干擾要素與近距離樣本相比明顯變多,系統(tǒng)無法檢測到車牌。對于近距離且無明顯傾斜形變的絕大部分車牌樣本,系統(tǒng)表現(xiàn)良好。對于這些樣本,由于識別前處理加入超分辨率模塊改善了字符的可辨識度,從而保證了較高識別準(zhǔn)確率。對于較遠(yuǎn)距離的復(fù)雜場景則需要研究更加靈敏并且魯棒性好的車牌檢測方法。
本文討論了如何結(jié)合超分辨率領(lǐng)域的最新成果,對車牌進(jìn)行預(yù)處理進(jìn)而較準(zhǔn)確地完成識別。從至少三個方面增強(qiáng)了一個基本的車牌識別系統(tǒng):一是引入了超分辨率重建技術(shù)來強(qiáng)化車牌識別的前處理流程;二是增加了訓(xùn)練良好的SVM判決器來確認(rèn)識別前得到的是真實(shí)車牌;三是引入并行計算來綜合不同的車牌檢測策略,增加檢測準(zhǔn)確率的同時提高效率。未來考慮統(tǒng)一檢測和識別過程,建立端到端的識別框架,使得二者共用特征空間并建立統(tǒng)一提取漢字和其他字符的機(jī)制。
[1] 吳 昊,丁慶生.一種完整的汽車牌照識別算法[J].計算機(jī)測量與控制,2008,16(3): 392-394.
[2] Matas J,Chum O,UrbanM,et al.Robust Wide Baseline Stereo from Maximally Stable Extremal Regions[A].BMVC[C].London,2002:384-393.
[3] William T.Freeman,Egon C. Pasztor.Learning low-level vision[A].ICCV[C].1999,40(1):1182.
[4] Jianchao Yang,Image Super-Resolution via Sparse Representation[J]. IEEE Transactions on Image Processing,2010,19(11):2861-2873.
[5] Timofte R, De V, Gool L V. Anchored Neighborhood Regression for Fast Example-Based Super-Resolution[J].IEEE international Conference on Computer Vision,2013:1920-1927.