鄭祥盤, 王兆權, 宋國進
(1. 閩江學院福建省先進運動控制重點實驗室, 福建 福州 350108;2. 福州大學機械工程及自動化學院, 福建 福州 350108)
隨著經濟的發展, 汽車逐漸普及到人們的日常工作生活當中. 根據公安部統計, 截至2019年全國汽車保有量約為2.6億輛, 且呈現逐年劇增的趨勢. 人們在享受車輛帶來的交通出行便利時, 也面臨著諸如車輛違法停放、 交通肇事逃逸、 車輛追蹤等問題, 而這些都離不開對車牌字符的識別.
國內外學者對車牌識別技術進行了大量的研究. 文獻[1]對低分辨率車牌圖像提出應用模板匹配和光學字符識別方法, 通過掃描車牌區域檢測出最大穩定極值區域來分割車牌中的字符區域, 實現96.2%的正確識別. 文獻[2]為了減少光照的影響, 把RGB空間上的場景圖像轉化成HSV空間的3個分量值, 通過色彩空間變換等手段分別獲得車牌區域和去除偽車牌區域, 定位成功率達到97.58%; 文獻[3]提出基于深度定位和故障識別的無分割無標注車牌識別方法, 并通過實驗解決重影、 非均勻光照等帶噪聲車牌圖像識別問題. 文獻[4]提出在HSV空間中使用最大類間方差算法來對車牌圖像進行二值化, 然后結合特殊間隔位置和投影法來精確分割字符, 應用卷積神經網絡算法實現對車牌字符識別率達97.8%, 解決低清晰度車牌字符的分割和識別問題; 針對遠距離、 變光照的復雜應用場景, 文獻[5]提出基于最大極值穩定區域和筆畫寬度變換的車牌檢測識別方法, 定位準確率達94. 86%, 識別準確率達96. 14%; 文獻[6]提出深度卷積神經網絡提取圖像特征的方法解決傳統人工提取特征難的問題, 自學習提取出目標對象的深層特征和可區分性特征, 加快目標檢測的精度和效率.
近年來, 深度學習在計算機視覺、 語音處理以及醫療等領域得到廣泛應用, 已成為計算機模式識別領域研究的熱門, 利用深度學習算法可提升車牌識別的識別率, 對提升車牌識別系統的魯棒性和效率具有重要的意義[7]. 為此, 在前人研究車牌識別方法基礎上, 提出采用Haar級聯檢測結合深度學習算法的卷積神經網絡(convolutional neural network, CNN)車牌字符識別方法, 即使在角度傾斜、 光照變化等環境條件下, 也能提高識別車牌字符的穩定性和準確性.

圖1 車牌識別流程圖Fig.1 Flow chart of license plate detection
應用Haar級聯檢測結合深度學習方法對車牌的識別方法流程如圖1所示. 首先通過Jaar級聯分類器鎖定并提取出車牌的位置, 將車牌圖像依次進行重新定義大小、 灰度化、 閾值化等預處理; 再經過腐蝕膨脹操作后, 通過輪廓分析提取車牌中的七個字符圖像; 最后將獲取到的字符信息傳入經過大量數據訓練后的CNN卷積網絡中, 得到車牌字符檢測的結果.
利用車牌本身所具有矩形特性, 對待檢圖像中的子區域進行篩選, 提取出所要的車牌圖像區域. Haar特征主要分為: 邊緣特征、 線性特征、 中心特征和對角線特征. 在通過大量的數據集訓練出的Haar模型中, 通過級聯多類不同的基礎特征, 能夠很好地篩選出圖像的目標區域[8]. 為此, 通過級聯多個弱分類器能夠極大地提升車牌邊框區域的檢索精度. 本研究通過收集2 000張只包含車牌區域的圖像, 以及6 000張不包含車牌的圖像建立Haar級聯分類器的訓練集. 將訓練集中的車牌圖像長寬重新定義為3∶1的比例大小, 以及定義檢測窗口的最小長寬尺寸為8, 24 px. 經過16輪迭代, 生成Haar級聯分類器模型. Haar級聯分類器模型所尋找出的車牌位置效果如圖2所示.

(a) 車牌圖像一

(b) 車牌圖像二

(c) 車牌圖像三

(d) 車牌圖像四
車牌圖像預處理是提高車牌識別系統后續環節運算效率和識別精度的關鍵, 特別是對車牌字符定位和提取非常重要. 合理的圖像預處理方法不僅能夠提高圖像對比度、 清除噪聲, 還有助于去除多余干擾、 背景等信息[7-8]. 為了更便捷、 準確地提取車牌字符信息, 首先對車牌圖像進行灰度處理操作, 以此降低像素差異及浮點運算對處理效率的影響; 接著利用圖像中物體與背景之間的灰度差異, 對圖像進行閾值化處理, 從圖像中分割出所需要部分. 應用均值自適應的二值分割法對圖像做閾值處理, 以此解決因光線問題所造成的圖像亮度不均問題. 取邊長為15矩形像素的平均像素值塊作為圖像的局部閾值, 通過遍歷方式依次沿長寬方向對圖像進行局部閾值化處理, 閾值化處理后的車牌圖像如圖3所示. 圖中只有黑與白兩種顏色像素, 方便后續的圖像處理.

(a) 車牌一圖像二值化

(b) 車牌二圖像二值化

(c) 車牌三圖像二值化

(d) 車牌四圖像二值化
為了減少一些無關像素點對字符提取的干擾, 通過圖像腐蝕去除車牌圖像的外圍邊框. 通過卷積方式讓卷積核在目標圖像上進行滑移操作, 計算卷積核所覆蓋的圖像像素最小值, 并把這個最小值給指定的中心像素點, 車牌外圍的邊框區域在二值圖像中顯示為白色, 見圖4中所示外圍的一圈虛線, 為此定義一個寬度為1、 長度為3的卷積核. 應用下式及上述定義的卷積核可對圖像進行卷積計算.

(1)
其中: (i,j)為原圖像第i行、 第j列的像素.當卷積核中心點位于(i,j)位置時, 計算卷積核覆蓋下圖像像素的乘積及對應第i列j-1行、j+1行、j行三個像素的乘積.
由于虛線寬度在二值圖像中所占的像素寬度很小, 而字符區域在二值圖像中所對應的長度和寬度遠大于車牌邊框的寬度, 所以二值圖像在經過一次腐蝕操作后可將車牌邊框的白色區域去除, 去除車牌邊框后的圖像如圖4所示.

(a) 車牌二值腐蝕圖像一

(b) 車牌二值腐蝕圖像二

(c) 車牌二值腐蝕圖像三

(d) 車牌二值腐蝕圖像四
經過腐蝕后的二值圖像難免會丟失一些原有的像素信息. 為此, 在腐蝕操作后加上膨脹處理以便后期更好地找到字符圖像信息. 此時, 定義一個長度為3、 寬度為3的卷積核, 令其在二值圖像滑移的過程中, 計算卷積核所覆蓋下像素的圖像像素最大值, 并將其最大值賦值給中心像素點, 從而擴大二值圖像中白色區域的大小. 應用下式計算出(i,j)像素及周圍8個像素的和bi, j, 當bi, j大于0, 則bi, j等于255; 若bi, j等于0, 則bi, j等于0.

(2)
進一步通過指定輪廓面積、 輪廓弧長, 篩除干擾信息像素點, 將車牌字符用外接矩形框出, 處理結果如圖5所示.

(a) 車牌一字符提取圖像

(b) 車牌二字符提取圖像

(c) 車牌三字符提取圖像

(d) 車牌四字符提取圖像
由于神經網絡訓練的樣本預留了較大的背景信息, 為了保證后續輸入圖片格式的一致性, 在此約定字符外接矩形的長度應大于矩形寬度. 由于數字“1”外接矩形的高度要遠大于寬度, 因此將“1”的外接矩形沿x軸向左移動高度的一半距離, 重新調整矩形寬度為高度的大小. 最后, 把7個字符信息大小定義為CNN卷積神經網絡所要求的維度24 px×24 px.
數據集的數量與質量決定了后續建立的神經網絡模型預測準確性. 為此, 在初始階段數據集的準備顯得尤為重要. 根據檢測需求, 數據集包含了大陸31個省級行政區域的簡稱數據、 0到9的數字數據以及包含A到Z的字母數據. 每個獨立字符視為一個樣本, 每份樣本都含有1 000張訓練集圖片. 將31個省級行政區域的字符數據集單獨訓練出一個神經網絡模型用來測試車牌中的省級行政區域字符; 將10個數字和24字母一起訓練成另一個神經網絡模型, 用來測試車牌中的后6個字符. 把每份訓練集的圖片重新定義大小, 在省級行政區域神經網絡中通過分別訪問31個文件夾讀取每張字符圖片, 將訓練圖片轉換成TFrecord格式, 在讀取每張圖片的同時, 將其對應的文件夾位置信息寫入TFrecord格式的label列表中, 制作label信息.
圖6為所搭建的CNN神經網絡模型. 從圖中可以看出, CNN網絡包含2個卷積層C1與C2、 2個池化層P1與P2、 1個扁平層、 4個全連接層. 卷積層中包含多個濾波器, 卷積后采用relu激活函數增加卷積神經網絡的非線性, 使模型能夠更好地擬合數據, 可以更好地解決較為復雜的問題. 在池化層采用max-pooling操作來減小圖像的特征維度. 通過扁平化操作, 將圖像樣本化為一維向量, 連接4個全連接層, 最后通過Softmax函數輸出.

圖6 CNN網絡結構圖Fig.6 Structure chart of CNN neural network
1) 卷積核. 相比傳統的神經網絡, CNN卷積神經網絡通過在傳統神經網絡的基礎上增加卷積核來對圖像進行特征提取, 以便達到更好的圖像識別效果. 為此本研究采用指定大小的卷積核, 通過滑移指定步長的方式在原圖進行卷積操作[9].

(3)
上式為卷積后圖像維度的變化信息, 其中Ilength為輸入圖像的長寬大小,Olength為輸出的圖像大小,F為卷積核的大小,S為滑移的步長.
在C1層中, 采用3×3大小的單通道的卷積核, 滑移步長為1個大小的距離, 使用32個卷積核在24 px×24 px大小的圖像上進行卷積, 得到的輸出圖像的維度信息為24 px×24 px×32 px. 在C2層中, 增加卷積核的數量到64個, 經過C2層后圖像的輸出維度變成12 px×12 px×64 px.
2) 激活函數. 在神經網絡中, 激活函數的作用是能夠給神經網絡加入一些非線性因素, 使得神經網絡可以更好地解決較為復雜的問題[10]. 常用的激活函數有sigmoid和relu兩種, 兩者比較, relu激活函數能夠大幅提高運算效率; 另一方面在輸入信號較強時, 仍然能夠保留信號之間的差別. relu激活函數的表達式為:
f(x)=max{x,0}
(4)
其中:x為上層神經節點的輸出, 保留卷積輸出后大于0的值這樣就造成網絡的稀疏性, 并且減少參數的相互依存關系, 可緩解過擬合問題的發生. 將卷積后的值代入relu函數得到以下公式:
f(xw+b)=max{xw+b,0}
(5)
其中:w為卷積核的權重參數,b為偏置參數.
3) 池化層. 指定N×N滑移窗口, 通過滑移的方式求出該窗口在原圖區域的平均值或最大值, 用來提取卷積后的特征值, 并降低數據的特征維度信息. 采用max-pooling的方式進行池化操作用來減小特征圖像維度[11], 在經過P1、 P2層池化后, 圖像維度大小變為12 px×12 px×32 px.
4) 全連接層操作.下式為全連接層的表達式, 其中yi為第i層神經網絡的輸出,wi, j為第i層第j個節點的權重參數,bi為偏置參數.

(6)
在神經網絡結構圖F1為全連接層, 其節點數為4 096個; F2、 F3、 F4層采用與F1層相同的激活函數, F2的節點數為4 096個; F3的節點數位2 068個; F4的節點數為31個, 表示省級行政區域字符數量. 在檢測字母和數字字符卷積網絡中輸出節點的數量大小亦為31個.
5) Softmax函數輸出. 把神經網絡的輸出變成概率分布, 從而可通過交叉熵來計算預測概率分布與真實類別概率分布之間的距離[12]. 但在此之前需要對數據進行歸一化, 采用下式Softmax函數進行歸一化.

(7)

將Softmax函數輸出規劃成概率分布式:

(8)

通過Window10平臺, 借助Opencv庫提取出車牌字符圖片進行Python編程, 訓練兩個不同的神經網絡來分別識別31個省級行政區域的車牌字符信息及字母、 數字信息. 將TFrecord數據集分批傳入訓練網絡, 通過設置訓練次數為1 000輪. 對每訓練50輪所得到的網絡參數進行測試, 保留測試準確率達到0.97的神經網絡參數. 在所得到的多個神經網絡模型中進行對比, 選取效果較好的模型做為車牌的檢測模型.
把車牌圖片輸入到CNN網絡模型中, 在不同的傾斜角度環境下得到對應的檢測結果見圖7所示. 系統成功識別了所輸入的不同省級行政區域車牌圖像, 在訓練集中模型的識別準確率達到99%; 接著通過連續測試200張不同環境下的車輛圖像, 其中能夠被完全識別包括角度傾斜環境中的字符圖像具有197張, 正確識別率達98.5%以上, 滿足交通道路管理中的車輛違法停放等車牌識別的實際需求.
車輛行駛移動過程中, 車牌字符識別容易受到光照變化、 雨霧天氣等影響. 為了驗證上述算法在復雜環境下的檢測效果, 設置60~90 lx光度環境變化的車牌識別結果, 見圖8所示. 雨霧天氣中分別為高度模糊、 中度模糊、 輕度模糊環境下的車牌識別, 結果見圖9所示.
從圖8~9的實驗結果可看出, 與傳統的識別方法如模板匹配、 圖像直方圖等比較[3-7], 本研究采用改進深度學習算法的識別方法能夠解決數據預處理及字符提取階段提取字符精度不夠等問題, 具有更加有效的容錯性和魯棒性. 傳統識別方法遇到車牌歪曲的情況, 其檢測精度往往會大幅度降低, 為此在識別前需要進行矯正處理導致檢測效率降低[5-8]. 在角度傾斜、 光照變化、 雨霧天氣等復雜環境下的車牌識別實驗中(圖7~9), CNN神經網絡算法只要在訓練階段數據的歪曲或模糊字符足夠豐富, 即便在字符歪曲、 模糊等復雜條件下也能夠被很好地迅速識別.
上述實驗結果表明, 本研究的CNN神經網絡算法能夠降低目標漏檢率, 該算法在不同的測試集上準確率和實時性都較高, 能夠提高檢測目標的精確率, 使得訓練出來的模型對目標大小具有一定的魯棒性; 該方法識別車牌字符正確率較高, 在光照變化和雨霧天氣等復雜條件下的準確性和穩定性較好, 能夠有效降低車標識別的錯誤率.

圖7 角度傾斜環境的車牌測試結果Fig.7 License plate test results by angle tilt environment

圖8 光線不足環境的車牌識別結果Fig.8 License plate test results by low light environment

圖9 雨霧天氣環境的車牌識別結果Fig.9 License plate test results by rainy and foggy weather
針對傳統車牌字符檢測方法效率低、 準確性不夠等問題, 提出一種基于改進深度學習的車牌字符圖像識別方法. 采用Haar級聯分類器提取圖片中車牌的位置, 并應用圖像預處理提取出車牌字符圖像, 所提方法能有效地將車牌字符提取出來; 再通過收集字符數據, 對CNN神經網絡進行訓練, 使用訓練后得到的模型對角度傾斜、 光照變化和雨霧天氣等噪聲污染車牌字符圖片進行識別. 經過測試, 驗證了該方法能夠在角度傾斜、 光照變化等環境條件下有效降低車牌識別的錯誤率, 提高識別車牌字符的穩定性和魯棒性.