劉建國,代 芳,詹 濤
(1.武漢理工大學 現(xiàn)代汽車零部件技術(shù)湖北省重點實驗室,湖北 武漢 430070;2.武漢理工大學 汽車零部件技術(shù)湖北省協(xié)同創(chuàng)新中心,湖北 武漢 430070)
車牌自動識別是智能交通管理系統(tǒng)中的關(guān)鍵組成部分之一,在很多領(lǐng)域得到廣泛應用,如交通監(jiān)控,停車場管理等[1-2],國內(nèi)外許多學者進行了廣泛的研究。文獻[3]采用基于機器學習的方法進行車牌字符識別,該方法針對車牌字符清晰的車牌具有一定的魯棒性,但對于車牌字符傾斜、模糊則效果不佳。文獻[4]采用基于顏色的車牌定位方法,該方法充分利用車牌顏色信息,但車身顏色與車牌顏色一致時,定位錯誤率增加,且易受光照信息影響。文獻[5]采用了深度學習的方法對車牌進行識別,準確率較高,但進行了字符分割步驟,對于字符粘連的車牌無法進行識別,且效率較低。文獻[6]采用了基于顏色的車牌定位和基于LeNet-5的車牌字符識別方法進行車牌識別,但僅用單一的顏色定位在霧霾、夜晚等天氣進行車牌定位效果不佳。為了兼顧車牌檢測的定位速度和定位準確率,本文提出了一種由粗到精、基于SVM的車牌檢測方法。首先結(jié)合車牌的顏色信息、邊緣信息和文字信息快速檢測出車牌的候選區(qū)域,再利用梯度方向直方圖和支持向量機對候選區(qū)域進行篩選,從而實現(xiàn)車牌區(qū)域的快速精確定位。對于精確定位到的車牌進行樣本擴充,得到80 602張圖片,輸入到改進的AlexNet卷積神經(jīng)網(wǎng)絡中進行訓練,得到車牌字符識別模型,并使用該模型進行車牌識別。
本文提出算法的主要流程圖如圖1所示。首先對輸入圖像進行預處理,實現(xiàn)車牌的精確定位。將定位好的車牌輸入到SVM[7]模型中判斷是否為車牌,將判斷為車牌的圖塊輸入到端到端的深度學習模型License Plate Recognize(以下簡稱LPR)中進行車牌識別。
圖1 系統(tǒng)流程圖
車牌檢測是車牌識別系統(tǒng)的第一步,由于我國的車牌具有特征明顯,字符數(shù)目確定,選擇采用車牌邊緣檢測的方法進行車牌定位;在自然場景下,車牌存在部分遮擋或其他類似輪廓區(qū)域,使得車牌定位準確度不高,而車牌顏色特征明顯,因此采用基于顏色檢測方法進行車牌檢測;針對車身顏色與車牌顏色相近的情況,顏色檢測效果不佳,此時采用文字檢測進行補充[8]。
根據(jù)車牌本色的特點,采用垂直邊緣檢測進行車牌定位。車牌邊緣檢測中,由于原始圖像包含很多噪聲,因此采用高斯模糊算法對自然場景下的圖片進行處理,減少圖像噪聲,然后對圖像進行灰度化處理。車牌字符主要是垂直邊緣,因此選擇Sobel算子實現(xiàn)垂直邊緣檢測。該方法是用3*3的模板卷積對圖像進行變換,計算過程如式(1)所示。
其中,A代表灰度圖;Gx和Gy分別表示橫向和縱向邊緣檢測的圖像,G表示橫向和縱向合并后的梯度值,θ表示梯度方向。采用openCV中Soble算子實現(xiàn)橫向卷積,檢測出圖像的垂直邊緣,針對藍色車牌對檢測出垂直邊緣的圖像進行正二值化操作,即越接近0的像素值賦值為0,否則為1。而黃色車牌字符深,背景淺,因此進行反二值化操作,即接近0的像素值賦為1,否則為0。由于車牌圖像受光照影響,因此二值化的閾值采用openCV提供的自適應閾值進行處理。對得到的二值圖像進行形態(tài)學閉操作,使車牌區(qū)域連通,并取連通區(qū)域的外接矩形,并將取出的矩形塊輸入到SVM模型中進行判斷。
基于顏色檢測的方法中,由于GRB模型中對于顏色相近的圖像,G、R、B值相差較大,導致直接使用GRB模型進行車牌定位困難。因此將圖像從GRB顏色空間轉(zhuǎn)換到HSV顏色空間進行車牌定位,其中H表示色調(diào)(Hue),S表示飽和度(Saturation),V表示亮度(Value).轉(zhuǎn)換方法如下所示:
其中max=max(R,G,B),min=min(R,G,B)。本文主要對黃底和藍底車牌進行檢測,由統(tǒng)計數(shù)據(jù)得到藍色和黃色在HSV空間中的范圍,見表1。
表1 藍色和黃色在HSV空間中的范圍
為保證HSV分量落在0-255之間,對HSV分量進行處理,如公式(5)-(7)所示,
對轉(zhuǎn)換成HSV空間的圖像分別進行藍色模板匹配和黃色模板匹配,避免車牌和車身顏色的干擾。在藍色模板匹配過程中,將圖像中H、S、V分量落在表1藍色區(qū)域中的像素標記為白色像素,即255,否則標記為黑色像素,即0。在黃色模板匹配過程中,將圖像中H、S、V分量落在表1黃色區(qū)域中的像素標記為白色像素,否則標記為黑色像素。從而得到兩幅二值圖像。對得到的二值圖像進行形態(tài)學閉操作,使車牌區(qū)域連通,并取連通區(qū)域的外接矩形,并將取出的矩形塊輸入到SVM模型中進行判斷。
采用極大穩(wěn)定值區(qū)域方法對獲取的圖片進行車牌字符文本檢測,獲取極大穩(wěn)定值區(qū)域:
在對圖像二值化過程中,有些區(qū)域面積隨閾值上升變化很小,該區(qū)域稱為Mser區(qū)域,其中Qi表示第i個連通區(qū)域的面積,?表示微小的閾值變化,當Vi小于閾值時認定該區(qū)域為Mser區(qū)域。對Mser文字獲選區(qū)域進行連通域分析,求最小外接矩形。若存在連續(xù)七個Mser文本區(qū)域,將七個矩形框進行合并,并判斷為車牌候選區(qū)域,輸入至SVM模型中進行車牌判斷。
通過以上三種方法檢測得到的矩形圖塊先通過外接矩形的寬高比和外接矩形的大小進行初步篩選,篩選后的矩形進行歸一化處理,將預處理的矩形塊輸入到訓練好的SVM模型中,判斷是否為車牌,判斷為車牌的圖片則輸入到卷積神經(jīng)網(wǎng)絡中,判斷為非車牌的圖塊進行舍棄。圖2為包含有車牌的自然場景下的圖片,圖3為通過三種檢測方法定位的車牌圖片,圖4表示輸入到SVM模型中的車牌矩形塊。
圖2 車牌原圖
圖3 車牌定位圖片
圖4 候選的車牌矩形塊
本文提出的基于卷積神經(jīng)網(wǎng)絡的識別主要分為兩部分,第一部分將預處理過的訓練集輸入到神經(jīng)網(wǎng)絡中進行訓練,得到網(wǎng)絡模型;第二部分將測試集輸入到訓練好的模型中進行字符識別。
本文的樣本量來源于easypr訓練集[9]和網(wǎng)絡。在上一步驟中得到的樣本量不足,因此在網(wǎng)絡上找到20張背景圖片對樣本量進行擴充。擴充的樣本為模擬自然場景中的圖片,添加了高斯噪聲,樣本傾斜等處理。為方便卷積神經(jīng)網(wǎng)絡的處理,將圖片進行歸一化。基于車牌本身的特征,將圖片歸一化至72*272大小。
本文采用的CNN[10]模型結(jié)構(gòu)如圖5所示。2012年AlexNet[11]在ILSVRC2012競賽上摘冠以來,深度學習網(wǎng)絡在圖像處理領(lǐng)域應用越來越廣泛,本文采用端到端的車牌識別,車牌字符圖像包括34個漢字,21個字母和10個數(shù)字的65類圖像,但在終端輸出需要同時輸出7個車牌字符,本文改進了AlexNet網(wǎng)絡,為獲取更多的車牌字符特征,添加了一層卷積層,并添加切片層,使其得到7個分類輸出。
具體網(wǎng)絡結(jié)構(gòu)各層介紹如下:
LPR網(wǎng)絡底層是車牌圖像,其大小為72*272;C1層為卷積層,該層采用32個3*3的卷積核對圖像進行卷積,卷積步長為1,經(jīng)過卷積后得到32張大小為70*270的特征圖;C2層為卷積層,該層采用3*3的卷積核對C1層中32個70*270特征圖進行卷積并累加,卷積步長為1,使用32個卷積核進行該操作,從而得到32張大小為68*268的特征圖;P2層為池化層,本文采用的是2*2的池化窗口進行最大值池化,步長為2,減少待處理神經(jīng)元的數(shù)目,得到32張34*134的特征圖;C3層為卷積層,該層使用3*3的卷積核對P2層中32張?zhí)卣鲌D進行卷積并累加,卷積步長為1,從而得到32*132大小的特征圖,使用64個卷積核進行卷積,輸出為64*32*132個神經(jīng)元;C4層為卷積層,該層運用3*3的卷積核對C3層中64張?zhí)卣鲌D進行卷積并累加,卷積步長為1,得到30*130大小的特征圖,使用64個卷積核進行卷積,該層輸出為64張30*130的特征圖;P4層為池化層,該層運用2*2的池化窗口進行最大值池化,步長為2,從而得到64張15*65的特征圖;C5層為卷積層,該層利用3*3的卷積核對P4層得到的64張15*65的特征圖進行卷積并疊加,卷積步長為1,使用128個卷積核進行卷積,得到128張大小為13*63的特征圖;C6層為卷積層,該層采用的卷積核大小為3*3,卷積步長為1,使用128個卷積核進行卷積,得到128張大小為11*61的特征圖;P6層為池化層,采用2*2的池化窗口進行最大值池化,池化后神經(jīng)元數(shù)目減少至128*5*30;F6層為展平層,將128張5*30的特征圖轉(zhuǎn)換為(128*5*30)*1*1的簡單向量,向量包含有128*5*30即19 200個神經(jīng)元。在該層中,防止出現(xiàn)過擬合,添加D6層進行數(shù)據(jù)泛化,令部分隱含層節(jié)點不工作。F7層為全連接層,本文采用的車牌數(shù)據(jù)包含小車的黃牌和藍牌,該類型車牌字符包含有34個漢字,21個字母和10個數(shù)字,因此本層采用65個過濾器。同時,在數(shù)據(jù)層中,根據(jù)字符個數(shù)添加切片層,使其能識別7位數(shù)字,因此出現(xiàn)F7_1至F7_7全連接層,同時輸出1-7個數(shù)字。該層不同于AlexNet網(wǎng)絡。
圖5 端到端網(wǎng)絡結(jié)構(gòu)
由于本文采用的車牌圖片由生成器生成,避免網(wǎng)絡過快的收斂,以上的每一層卷積層都使用RELU函數(shù)進行激活。通過本文深度學習端到端的模型識別結(jié)果如圖6所示。圖7表示ANN模型車牌識別的結(jié)果,其中圖片表示文件名,(g)表示標定圖片,(d)表示識別結(jié)果。圖8表示AlexNet模型車牌識別結(jié)果。
本文采用EasyPR的數(shù)據(jù)集和網(wǎng)絡圖片進行實驗,在車牌定位階段,本文使用EasyPR數(shù)據(jù)集進行驗證,在256張包含有車牌的圖片中,標定297張車牌圖像,采用基于邊緣檢測和顏色檢測的方法結(jié)合檢測車牌,和使用文件檢測方法檢測車牌,以及本文采用的改進EasyPR車牌檢測方法進行檢測,結(jié)果表明,本文使用的方法中車牌檢測準確率到達96.3%,但時間較長(見表2)。本文采用的實驗硬件配置見表3。
表2 車牌定位
表3 軟硬件配置
除卻EasyPR數(shù)據(jù)集,本文還采用網(wǎng)絡上的部分車牌圖片以及自己收集的車牌圖片進行車牌圖片定位,得到車牌圖片3 956張,并從網(wǎng)絡上下載20張背景圖片進行樣本圖片擴充,將擴充后的圖片輸入到端到端的車牌網(wǎng)絡中進行車牌識別,得到的車牌識別準確率達到96.7%(見表4),且具有實時性。
表4 車牌字符識別
本文采用了基于端到端的車牌識別方法進行自然場景下的車牌識別,改進了端到端的深度學習網(wǎng)絡,提高了車牌識別的準確度,并省卻了車牌字符分割的步驟,避免車牌傾斜或部分粘連造成車牌字符識別不準確的情況,對車牌字符粘連、傾斜情況下的車牌識別準確率大大提高。通過EasyPR字符集的驗證結(jié)果得知,車牌定位的準確率達到96.3%,車牌字符識別準確率達到96.7%,但在樣本中存在許多擴充樣本,影響了模型訓練結(jié)果,同時系統(tǒng)整體車牌識別實時性不夠,這是本文算法需要改進的地方,也是今后研究的重點。
圖6 本文算法車牌識別結(jié)果
圖7 ANN模型車牌識別結(jié)果
圖8 AlexNet識別結(jié)果