陳冬英,曾淦雄
(1.福建江夏學(xué)院電子信息科學(xué)學(xué)院,福建福州,350108;2.福州大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福建福州,350108)
國(guó)內(nèi)人均汽車(chē)保有量不斷提高,帶來(lái)的交通壓力越來(lái)越重。因此實(shí)現(xiàn)對(duì)車(chē)輛的管理自動(dòng)化將是現(xiàn)在亟需解決的一大問(wèn)題,而車(chē)牌識(shí)別系統(tǒng)是實(shí)現(xiàn)這一過(guò)程不可缺少的環(huán)節(jié)。
車(chē)牌識(shí)別系統(tǒng)(License Plate Recognition System, LPRS)屬于計(jì)算機(jī)視覺(jué)中的一種現(xiàn)實(shí)應(yīng)用,對(duì)實(shí)現(xiàn)收費(fèi)停車(chē)場(chǎng)的無(wú)人化管理、不停車(chē)通過(guò)高速收費(fèi)站、各類(lèi)小區(qū)、校園機(jī)動(dòng)車(chē)出入登記有著重要的意義。[1-2]國(guó)內(nèi)外相關(guān)學(xué)者也進(jìn)行廣泛的研究。上海理工大學(xué)王艷、謝廣蘇等學(xué)者提出了一種基于最大極值穩(wěn)定區(qū)域(maximally stable extremal regions, MSER)和筆畫(huà)寬度變換(stroke width transform, SWT)的車(chē)牌識(shí)別方法。[3]該方法使用MSER和Canny邊緣相與運(yùn)算后得到MSER篩選得到區(qū)域,并在區(qū)域上做心態(tài)學(xué)操作,完成車(chē)牌定位。使用歸一化后的模板匹配,采用HU不變矩以及網(wǎng)格特征完成漢字識(shí)別,利用跳躍點(diǎn)實(shí)現(xiàn)識(shí)別數(shù)字與字母。貴州大學(xué)的李良榮、榮耀祖等學(xué)者,提出基于SVM的車(chē)牌識(shí)別技術(shù),基于Sobel與HSV色域空間的車(chē)牌定位,查找字符輪廓與垂直投影法的字符切割,基于SVM的字符識(shí)別,并利用遺傳算法對(duì)SVM參數(shù)進(jìn)行優(yōu)化。[4]
傳統(tǒng)的車(chē)牌識(shí)別包含車(chē)牌定位、字符切割及字符識(shí)別三個(gè)部分,存在著魯棒性和精確性不兼容性。為克服已有傳統(tǒng)技術(shù)存在的不足,本文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的車(chē)牌識(shí)別與精定位算法研究方法。主要通過(guò)對(duì)車(chē)牌識(shí)別三個(gè)階段的研究,分別提高各個(gè)階段的識(shí)別準(zhǔn)確性,進(jìn)而提高整個(gè)系統(tǒng)的識(shí)別率。首先,車(chē)牌的粗定位使用基于Haar特征級(jí)聯(lián)分類(lèi)器,而后結(jié)合精確定位算法包含上下邊界檢測(cè)與左右邊界檢測(cè)并進(jìn)行車(chē)牌矯正。其次,字符分割算法部分則通過(guò)基于字符分布特征的切割算法,在不降低切割率的情況下相較于傳統(tǒng)的切割方法簡(jiǎn)單易用。最后,分別設(shè)計(jì)了用于中文字符識(shí)別的卷積網(wǎng)絡(luò)和用于英文與數(shù)字識(shí)別的卷積網(wǎng)絡(luò)。通過(guò)對(duì)高速公路拍照系統(tǒng)拍攝的高清車(chē)牌圖像及由CCPD開(kāi)源提供具有低分辨率、弱光或強(qiáng)光、高度傾斜車(chē)牌等特征數(shù)據(jù)集進(jìn)行驗(yàn)證明,精定位算法能夠?qū)?chē)牌進(jìn)行有效定位,識(shí)別準(zhǔn)確達(dá)98%以上。
卷積神經(jīng)網(wǎng)絡(luò)屬于近些年來(lái)在計(jì)算機(jī)視覺(jué)鄰域引起廣泛重視的技術(shù)方向之一。[5]最早的真正意義上CNN由LeCun在1989年提出[6],隨后被改進(jìn)用于手寫(xiě)字符識(shí)別任務(wù)中。在2012年的ImageNet圖片分類(lèi)中,深度卷積神經(jīng)網(wǎng)絡(luò)AlexNet奪得桂冠。由于卷積神經(jīng)網(wǎng)絡(luò)能夠避免對(duì)圖像進(jìn)行復(fù)雜的前期預(yù)處理,因而得到了廣泛的應(yīng)用[7]。當(dāng)下CNN作為許多科學(xué)領(lǐng)域中的一個(gè)研究熱點(diǎn)。
將神經(jīng)元按層次組織在一起就構(gòu)成了神經(jīng)網(wǎng)絡(luò),一個(gè)簡(jiǎn)單的二分類(lèi)神經(jīng)網(wǎng)絡(luò)見(jiàn)圖1。
圖1 簡(jiǎn)單二分類(lèi)神經(jīng)網(wǎng)絡(luò)
其中input layer 接受網(wǎng)絡(luò)輸入,hide layer是網(wǎng)絡(luò)核心,output layer是網(wǎng)絡(luò)輸出,在二分類(lèi)問(wèn)題中,通常輸出是或否。數(shù)據(jù)通過(guò)輸入層進(jìn)入網(wǎng)絡(luò),每一層將計(jì)算結(jié)果輸入下一層,最后又通過(guò)輸出層完成輸出。
一個(gè)典型的用于手寫(xiě)數(shù)字識(shí)別的卷積神經(jīng)LeNet-5結(jié)構(gòu)見(jiàn)圖2。
其中c1/c3/c5是卷積層。卷積層是通過(guò)卷積核,對(duì)上一層的輸出進(jìn)行離散卷積運(yùn)算而得的,卷積核中的每一個(gè)參數(shù)都相當(dāng)于普通神經(jīng)網(wǎng)絡(luò)的權(quán)值。
S2/s4是池化層(下采樣),將輸入圖像分割為多個(gè)子區(qū)域,在區(qū)域內(nèi)取最大或平均形成新的圖像。經(jīng)過(guò)步長(zhǎng)為2的池化層后,原圖像尺寸減小一半。
F6是全連接層,圖像經(jīng)過(guò)卷積層和池化層之后,特征已經(jīng)提取充分。接下來(lái)就是把特征圖像偏平化,即通過(guò)Flatten層,將二維圖像變?yōu)橐痪S輸出。之后經(jīng)過(guò)全連接層,使用softmax進(jìn)行分類(lèi)。輸出結(jié)果中,概率值最高的即為分類(lèi)結(jié)果。
圖2 LeNet5神經(jīng)網(wǎng)絡(luò)
在車(chē)牌識(shí)別系統(tǒng)里,實(shí)現(xiàn)了字符分割以后,對(duì)字符進(jìn)行識(shí)別。傳統(tǒng)的方法包含支持向量機(jī)SVM分類(lèi),BP神經(jīng)網(wǎng)絡(luò)、基于字符的模板匹配等方法,隨著近年來(lái)人工神經(jīng)網(wǎng)絡(luò)的流程,在傳統(tǒng)的車(chē)牌識(shí)別算法中主要有采用基于BP的神經(jīng)網(wǎng)絡(luò)算法實(shí)現(xiàn),存在著魯棒性和精確性不兼容性。
車(chē)牌識(shí)別系統(tǒng)有3部分:一是車(chē)牌定位模塊;二是字符分割模塊;三是字符識(shí)別模塊。車(chē)牌定位模塊通過(guò)對(duì)圖像進(jìn)行灰度化處理、模糊處理、HAAR特征級(jí)聯(lián)類(lèi)器探測(cè)、車(chē)牌邊緣精定位等操作實(shí)現(xiàn)對(duì)車(chē)牌區(qū)域的提取。字符分割模塊則是通過(guò)對(duì)車(chē)牌進(jìn)行灰度圖像均值化處理,自適應(yīng)二值化處理,文字邊緣檢測(cè)等手段,結(jié)合車(chē)牌的字符分布特征從車(chē)牌上分割字符。字符識(shí)別模塊則是通過(guò)字符數(shù)據(jù)訓(xùn)練一個(gè)卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)字符識(shí)別。并將輸入圖片和輸出結(jié)果使用GUI界面顯示。具體的系統(tǒng)流程圖見(jiàn)圖3。
圖3 車(chē)牌識(shí)別系統(tǒng)流程圖
圖4 Haar特征種類(lèi)
車(chē)牌檢測(cè)與精確定位,分為兩個(gè)部:一是基于Haar特征的級(jí)聯(lián)分類(lèi)器,二是用于上下邊界擬合的精定位算法以及車(chē)牌矯正。[8]
1.Haar特征
Haar矩形特征是用于物體識(shí)別的一種灰度圖像的數(shù)字特征。Haar特征可以有效反映圖像的灰度變化,擁有較高的空間分辨率,可以有效提取圖像特征,形成特征值。最初的Haar特征有4類(lèi),見(jiàn)圖4。
其中A與B分別表示的是水平方向和豎直方向上的特征,特征值為對(duì)白色區(qū)域求和減去黑色區(qū)域求和。C包含了3個(gè)矩形區(qū)域,特征值為白色區(qū)域求和減去2倍黑色區(qū)域求和。D則是計(jì)算對(duì)角方向上的梯度。對(duì)于一副圖像而言,通過(guò)改變模板的大小和位置,通過(guò)矩形窗口的滑動(dòng),生成矩形特征。根據(jù)檢測(cè)目標(biāo)的特征的不同,Haar特征可以分為3類(lèi):直線模板、環(huán)形模板、對(duì)角模板。在識(shí)別過(guò)程中,Haar矩形特征通過(guò)在圖像上的滑動(dòng),完成對(duì)整張圖像的Haar特征值計(jì)算。
2.車(chē)牌檢測(cè)
該部分使用OpenCV中基于Haar特征的級(jí)聯(lián)分類(lèi)器實(shí)現(xiàn),在將圖像送入分類(lèi)器之前,對(duì)圖像進(jìn)行灰度化與高斯模糊處理[9]。級(jí)聯(lián)分類(lèi)器的輸出為原圖像中的車(chē)牌的左上角坐標(biāo)和車(chē)牌區(qū)域的寬度與高度。
1.上下邊界擬合
上下邊界擬合的基本思路:(1)通過(guò)對(duì)車(chē)牌圖像的多次自適應(yīng)二值化,形成不同的二值圖像;(2)每張二值化圖像都可以通過(guò)OpenCV的Findcontours查找到可能包含字符的矩形框,在一張圖上畫(huà)出所有的對(duì)角點(diǎn);(3)由上述兩個(gè)步驟能夠產(chǎn)生足夠的樣本點(diǎn)。通過(guò)上下邊樣本點(diǎn)采用隨機(jī)抽樣一致化算法擬合上下邊界。
其中,隨機(jī)抽樣一致化算法是基于最小二乘法的一種具有高度抗干擾能力的擬合算法。算法流程:(1)隨機(jī)選取若干樣本點(diǎn),設(shè)為k;(2)基于若干樣本點(diǎn),由最小二乘法擬合出直線方程f;(3)計(jì)算所有樣本點(diǎn)與該擬合方程f的估計(jì)誤差;(4)設(shè)置誤差閾值sigma,選出小于誤差閾值的樣本點(diǎn);(5)重復(fù)1—4的過(guò)程,選取足夠的樣本點(diǎn);(6)重復(fù)5的過(guò)程。最終找到的擬合方程f,即為最優(yōu)方案。
算法流程中的k參數(shù)選取,sigma參數(shù)與迭代次數(shù)的選取,針對(duì)不同的樣本數(shù)據(jù)有不同的選擇。
2.左右邊界的檢測(cè)
左右邊界確定的基本思路如下:(1)將灰度圖進(jìn)行均衡化后,通過(guò)Sobel算子找到垂直邊緣;(2)對(duì)垂直方向進(jìn)行統(tǒng)計(jì)求和,畫(huà)出直方圖;(3)對(duì)直方圖兩邊進(jìn)行處理可以確定左右邊界。
其中,Sobel算子[10]被用于提取圖像中的邊緣信息。Sobel算子的原理對(duì)傳入的圖像做像素卷積運(yùn)算,實(shí)質(zhì)是求解圖像的梯度值。
1)水平方向求導(dǎo)算子
2)垂直方向求導(dǎo)算子
3)通過(guò)水平方向和垂直方向求解近視梯度
本文中,sobel算子只應(yīng)用于垂直邊緣的檢測(cè)。因此在使用時(shí),只使用垂直方向的求導(dǎo)算子。
3.垂直邊緣的確定
通過(guò)對(duì)車(chē)牌圖像做sobel梯度求導(dǎo)后,做垂直投影,得到垂直分布直方圖。通過(guò)分析垂直直方圖兩端的波峰與波谷情況,進(jìn)而確定車(chē)牌字符的開(kāi)始與結(jié)束位置。
通過(guò)分析由前級(jí)產(chǎn)生的車(chē)牌圖片,以及根據(jù)中國(guó)車(chē)牌樣式的字符分布特點(diǎn),本設(shè)計(jì)采用基于先驗(yàn)字符分布特點(diǎn)的字符分割算法。字符分割步驟如下:
1.對(duì)圖片進(jìn)行放縮,放縮為標(biāo)準(zhǔn)車(chē)牌大小(440,140),進(jìn)行灰度化、高斯模糊處理,得到去噪后的圖片。在這個(gè)基礎(chǔ)上,進(jìn)行直方圖均衡化,降低環(huán)境光對(duì)后續(xù)處理的進(jìn)一步影響。接著,對(duì)均衡化的圖片做自適應(yīng)二值化得到二值化圖像,再進(jìn)行簡(jiǎn)單的粘連字符分割,得益于前級(jí)處理模塊的處理效果,該部分只做簡(jiǎn)單的判斷,根據(jù)某列上,白色像素點(diǎn)的數(shù)量進(jìn)行斷開(kāi)即可。
2.對(duì)處理完成的二值化圖像,使用OpenCV內(nèi)置的findcontours函數(shù)查找字符輪廓,并進(jìn)行簡(jiǎn)單的字符框過(guò)濾。
3.基于字符分布特征的后續(xù)處理。具體包括如下步驟:
(1)字符寬度和字符面積過(guò)濾。輸入的車(chē)牌尺寸被調(diào)整為(440 * 140)。因此正常字符寬度應(yīng)該大于45個(gè)像素寬,因涉及數(shù)字‘1’的存在,當(dāng)輪廓寬度大于13像素,小于90像素時(shí)接受。輪廓高度應(yīng)大于115,輪廓面積大于1500并且小于 11000時(shí)接受該輪廓為單字符輪廓??紤]到粘連字符分離不成功的情況下,若某個(gè)輪廓寬度大于90像素,面積大于11000時(shí),根據(jù)車(chē)牌字符特征,認(rèn)為此處存在粘連字符,進(jìn)行切分,切分根據(jù)字符特征進(jìn)行。
(2)根據(jù)字符的寬度特征進(jìn)行矩形區(qū)域重新定型。規(guī)則為:當(dāng)寬度小于35時(shí),認(rèn)為該字符為數(shù)字‘1’,裁剪其寬度值為40。由于中文漢字可能存在的一個(gè)字分離的情況,如“川”,采取當(dāng)其切割位置小于60時(shí),裁剪寬度為60。其他情況認(rèn)為字符切割正常,裁剪寬度為58。
(3)經(jīng)過(guò)上述處理,已經(jīng)排除絕大部分情況,然而對(duì)于某些情況下,還是存在切割字符過(guò)少,或過(guò)多的情況。處理辦法為,根據(jù)字符間距差小于35像素點(diǎn)剔除多余切割點(diǎn)。
該部分由兩個(gè)卷積網(wǎng)絡(luò)構(gòu)成。參考LeNet-5[11]網(wǎng)絡(luò),分別設(shè)計(jì)用于中文字符和英文與數(shù)字字符識(shí)別?;镜木W(wǎng)絡(luò)結(jié)構(gòu)與訓(xùn)練細(xì)節(jié)如下:
1.設(shè)計(jì)輸入的字符圖像為單通道灰度圖,經(jīng)過(guò)直方圖均衡以及歸一化處理的字符圖像。
2.輸入圖像大小為(23 * 23)。輸出為65類(lèi)(實(shí)際上,對(duì)于英文和數(shù)字識(shí)別模型,輸出只有34類(lèi)),具體的參數(shù)見(jiàn)表1。
表1 卷積神經(jīng)網(wǎng)絡(luò)參數(shù)
三層設(shè)計(jì)如下:
(1)第一層設(shè)計(jì)細(xì)節(jié):卷積層使用數(shù)量為32個(gè)大小5x5,滑動(dòng)步長(zhǎng)為1的卷積核,激活函數(shù)使用Rule,池化層使用大小2x2的最大值池化方案,為提高模型的泛化能力,加入0.25的Dropout比例數(shù)。
(2)第二層設(shè)計(jì)細(xì)節(jié):由第一層經(jīng)過(guò)卷積后輸出的圖像大小為(23-5)/1+1=19,經(jīng)過(guò)2x2的池化層后,圖像大小為 9x9大小。設(shè)計(jì)第二層卷積層使用數(shù)量32個(gè),大小3x3,滑動(dòng)步長(zhǎng)為1的卷積核。激活函數(shù)為Rule。同樣經(jīng)過(guò)2x2大小MaxPooling。
(3)第三層設(shè)計(jì)細(xì)節(jié)。首先經(jīng)過(guò)第二層卷積和池化運(yùn)算后,輸出的圖像大小為3x3。因此設(shè)計(jì)第三層卷積層的卷積核個(gè)數(shù)為512個(gè),大小3x3,無(wú)池化。此時(shí)輸入為1x1的特征點(diǎn)。之后為一個(gè)包含512個(gè)激活函數(shù)為Rule的神經(jīng)元構(gòu)成的全連接層,并使用0.5比例的Dropout。輸入最后的輸出層,輸出層神經(jīng)元個(gè)數(shù)為分類(lèi)器分類(lèi)個(gè)數(shù)65。
3.訓(xùn)練時(shí)使用損失函數(shù)為多分類(lèi)的對(duì)數(shù)損失函數(shù),優(yōu)化器方面使用Adam,默認(rèn)參數(shù)設(shè)置。Batch為32,epoch為1000次。
第一部分為常規(guī)數(shù)據(jù)集,特點(diǎn)為圖像背景單一,車(chē)牌字符清晰,無(wú)粘連,亮度較為均勻,車(chē)牌圖像傾斜角較小,識(shí)別難度總體偏小。多收集于高速公路上的拍攝照片。該部分用于驗(yàn)證系統(tǒng)在特定場(chǎng)景的應(yīng)用運(yùn)行情況。第二部分為挑戰(zhàn)性較高的CCPD(Chinese City Parking Dataset)[12]的部分?jǐn)?shù)據(jù),該數(shù)據(jù)集具有分辨率低,背景復(fù)雜,部分粘連亮度差異大、圖像傾斜角較大等特點(diǎn),識(shí)別難度大。該部分用于驗(yàn)證系統(tǒng)在復(fù)雜環(huán)境的運(yùn)行情況。本系統(tǒng)使用的測(cè)試數(shù)據(jù)集包含各省份的部分車(chē)牌圖片。
為了更準(zhǔn)確地評(píng)估系統(tǒng)各個(gè)模塊的工作情況,首先,測(cè)試車(chē)牌精確定位,輸入包含車(chē)牌的圖片,輸出精確定位的車(chē)牌。其次,測(cè)試切割算法的有效性,輸入車(chē)牌圖片,得到單個(gè)字符的輸出信息。最后,是系統(tǒng)的整體識(shí)別別率評(píng)估。其中,圖5為系統(tǒng)運(yùn)行界面與測(cè)試結(jié)果,表2為第一部分的測(cè)試結(jié)果。
圖5 系統(tǒng)運(yùn)行界面與測(cè)試結(jié)果
表2 常規(guī)數(shù)據(jù)集測(cè)試結(jié)果
完成系統(tǒng)測(cè)試后,由CCPD數(shù)據(jù)集中隨機(jī)抽取30張圖片進(jìn)行測(cè)試,目的是測(cè)試本文提出的識(shí)別方法是否具有較強(qiáng)的魯棒性和改進(jìn)空間。結(jié)果表明,在隨機(jī)抽取的車(chē)牌中,準(zhǔn)確識(shí)別出了25張。說(shuō)明本文的方法具有較強(qiáng)的魯棒性,能夠應(yīng)對(duì)一定程度的復(fù)雜環(huán)境下的車(chē)牌識(shí)別。
表2顯示的準(zhǔn)確率98.15%,而基于SVM的車(chē)牌識(shí)別方法,準(zhǔn)確率95%[1],基于MSER和SWT的新型車(chē)牌檢測(cè)識(shí)別方法,準(zhǔn)確率96.14%[3],可見(jiàn)本文算法更優(yōu)。
為提高車(chē)牌識(shí)別的準(zhǔn)確性,本文通過(guò)對(duì)車(chē)牌識(shí)別的四個(gè)子模塊進(jìn)行改進(jìn),主要采用Haar特征的級(jí)聯(lián)分類(lèi)器檢測(cè)出車(chē)牌信息后的精定位,并結(jié)合車(chē)牌字符的分布特征進(jìn)行字符切割的算法設(shè)計(jì),合理有效地使用先驗(yàn)的知識(shí),完成對(duì)字符的精確切割;最后,使用keras搭建深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)有效地對(duì)分割后的字符進(jìn)行準(zhǔn)確的識(shí)別。本文提出的算法,對(duì)特定場(chǎng)景的識(shí)別率很高,對(duì)某些復(fù)雜背景也具有一定精確的識(shí)別率,但對(duì)于國(guó)外車(chē)牌等的適用還沒(méi)有詳細(xì)研究。
福建江夏學(xué)院學(xué)報(bào)2020年6期