史建偉,章 韻
(南京郵電大學 計算機學院,江蘇 南京 210023)
近年來,車牌識別LPR(license plate recognition)技術受到了廣泛的關注和研究。商業化方案中,部分車牌識別公司都具有較好的商業化版本,應用也較為廣泛,包括成都火眼臻視、北京精英智通科技等。現階段的一些車牌識別技術,將檢測、分割和識別三者進行結合,該方案過程流程較為復雜,對于圖像模糊粘連處理有一定難度,另外,車牌識別還容易受天氣、顏色、光線等因素的影響。
本文的主要貢獻如下:
(1)所提出的輕量級網絡模型可以通過一次前向傳播過程基本完成車牌端到端的檢測與識別的任務,無需對車牌字符預先進行分割,由深度神經網絡自身進行學習,并進行精細化的自動提取操作,節約了車牌識別的時間,提升了系統的識別效率,相比于其它模型,訓練時間短,收斂速度快。
(2)本文改進YOLOv3網絡,擴展多尺度檢測的功能,細化定位精度,提升車牌定位效率。
(3)本文利用BGRU+CTC改進識別網絡完成對已定位車牌的無字符分割的識別任務,明顯縮短訓練時間,提升了網絡的收斂速度和識別準確率。
車牌定位的目的主要是在圖像中獲取車牌的位置,常用的做法是利用邊界框bounding box在圖像中標出車牌位置,傳統的定位算法主要有4個方向[1]:邊緣特征、顏色特征、字符特征和紋理特征,一般來說,顏色和邊緣特征的應用范圍較廣,因為車牌的形狀較為固定,其邊緣的密度相較其它圖像更高,故而邊緣特征在車牌檢測中的使用率也較高。Chen J利用組合顏色特征和邊緣信息來提取牌照[2]。在基于顏色分割的定位中,HSV顏色空間模型作用于車牌顏色閾值分割。在去除二進制圖像中的噪聲之后,使用形態學操作來填充某些斷開區域的間隙。然后,利用基于輪廓形狀比和滿足車牌特征的輪廓區域的尺寸來提取目標區域。然而,傳統定位方法的精度和速度有待提高。最近幾年,目標檢測算法取得了很大的突破,算法主要有兩類,一類以區域建議為基礎,再進行分類和回歸的目標檢測算法,如RCNN[3]、Mask RCNN[4],一類是基于回歸的端到端的檢測算法,如SSD[5]、YOLO[6]等,前者首先產生目標候選框,然后再對候選框進行分類與回歸的處理,擁有較高的精度,后者采用回歸的方式進行端到端的定位,速度較快,但精度略低。
車牌識別階段,傳統識別技術傾向于先對車牌字符采取分割的操作,然后使用光學字符識別(OCR)技術識別每個被分割的字符。Chen J實現了利用支持向量機(SVM)來識別中國車牌字符[2]。通過在兩種類型的字符之間設計SVM,使用可以識別多個字符的多類分類器。結果表明,該方法在字母數字特征上表現良好,但對于漢字識別并不理想。Zherzdev S等提出了LPR-Net的概念[7],它是由輕量級卷積神經網絡組成,因此可以端到端的方式進行訓練并且不需要預先的字符分割,實驗結果表明,該模型的識別準確率可達95%。
然而,大多數現有算法僅在受限條件下或使用復雜的圖像捕獲系統才能很好地工作。在相對復雜的環境中進行車牌識別的難度依然較大。相關挑戰諸光線照明不夠、扭曲、遮擋或模糊。傳統的車牌定位和識別的方法通常將上述兩個模塊視為兩個獨立的任務,并分別通過不同的方法來解決它們。然而,二者其實是高度相關的。因此,本文提出了端到端的車牌定位和識別的方案,優化了車牌識別系統,提高了識別速度和準確。
系統的網絡模型圖1所示,由車牌定位,車牌識別兩個部分組成。首先利用改進的YOLOv3檢測網絡對車牌做定位,獲取車牌的角點坐標后,進行裁剪,并送入識別網絡,再對車牌做特征提取,采用BGRU進行序列標注和譯碼的操作,最后利用CTC Loss優化目標函數在各個數據點的損失函數值,從而輸出識別的車牌結果。

圖1 系統模型框架
YOLO可以獲取到圖像的整體信息,使用單個網絡完成整個檢測的方法,大大提升了同類目標檢測算法的速度;YOLOv2[8]引入了anchor。同時使用了K-means方法,對anchor數量進行了討論,在精度和速度之間做出折中。并且修改了網絡結構,去掉了全連接層,改成了全卷積結構。在YOLOv2的基礎上,YOLOv3[9]改進了不少,比如多標簽分類,多尺度檢測等,該變化使得檢測速度大大加快,同時,在檢測精度上也有很大的提升,該模型使用了很多表現良好的3*3和1*1的卷積方案,該網絡對于小物體的檢測效果也有一定的提升,隨著輸出的特征圖的數量和尺度的變積層,另外,在后續進行多尺度檢測時也采用了一些殘差網絡模塊,正是由于采用了多尺度的檢化,先驗框的尺寸也需要相應的調整。YOLOv2已經開始采用K-means聚類得到先驗框的尺寸,YOLOv3引入了Faster R-CNN采用bounding box[10]的思想,為每種下采樣尺度設定3種先驗框,總共聚類出9種尺寸的先驗框,針對COCO數據集和VOC數據集都采用了3個尺度的進行目標檢測,尺度小的物體用大的先驗框,反之,尺度大的物體則用小的先驗框。
相比于YOLOv2使用Softmax預測錨點框中包含物體的概率,YOLOv3則將其替換為了邏輯回歸(Logistic Regression),當預測的目標類別很復雜的時候,邏輯回歸進行分類則顯得更為有效。
YOLOv3在訓練的過程中,采用Logistic Regression和交叉熵Cross Entropy對類別進行預測,該方案讓YOLOv3能夠對單個目標采用多標簽分類的策略。
YOLOv3中,引入了FPN[11]網絡,與此同時,采用高層的細粒度特征和高語義信息和低層的粗粒度特征,再結合上采樣的技術,將不同層次的特征進行融合,從而對目標物體進行3個不同尺度特征層次的檢測。
然而,在目標檢測物的在圖像中占比較小時,也會存在如下問題:
(1)其所對應的檢測區域的像素所呈現的信息量則是受限的,故而導致了一些較為通用的目標檢測算法在某些小物體檢測的場景下效果不佳,相比專門為了檢測小物體而設計的算法,更易受到本身場景的限制,應用范圍有限的,通用性有待提高。
(2)在訓練階段,對于小物體的標注容易存在偏差,在目標物體較小的情況下,標記的誤差會對檢測效果產生較大的影響。
本文對YOLOv3的原有檢測網絡進行優化,將其檢測深度擴展為4個尺度,該方案使其對較小車牌的檢測更為精細,錨點框的選取更為準確,同時,也使得網絡本身更好地利用低層和高層的不同級別的細粒度特征實現多尺度檢測。
改進算法YOLOv3-LPR的網絡結構如圖2所示,其中的DBL即為Conv(卷積)+BN(批歸一化)+Leaky Relu(帶泄露修正線性單元)的組合,BN和Leaky Relu不可分,是網絡中的最小組件,resn(n位數字)是殘差結構,表示res_block(殘差塊)中有多少個res_unit(殘差單元),其為網絡的最大組件,concat則代表張量拼接,其會將中層以及后層的上采樣進行拼接,該操作與殘差層的add含義不同,拼接操作會增加張量的維度,而殘差層的add是直接相加并不會帶來張量數量的擴充。

圖2 改進的多尺度檢測框架YOLOv3-LPR結構
整個網絡主要利用上采樣的方式來實現多尺度的feature map(特征層),圖中concat連接的是兩個尺度一樣的張量,將52×52尺度與104×104尺度通過(2,2)上采樣進行拼接,擴展為網絡的第4個尺度,進而擴充張量的維度,增加檢測的細粒度,提升對于小物體的檢測效果。
在傳統的LPR框架中,如文獻[7]所述,字符分割對車牌識別的成功有很大的影響。如果分割不合適,則牌照將被錯誤識別,即使我們有一個高性能的識別器,可以處理各種大小,字體和旋轉的字符。然而,字符分割過程較為復雜,其分割效果對識別影響很大,且易受到噪聲和不良照明的影響。傳統的識別方案中通常采用了許多預處理,分割和識別的方法,但未能取得較好的效果。故而,在這一部分中,我們使用一種新的識別技術,將車牌中的字符視為未分段的序列,并從序列標記的角度來解決問題。
2.4.1 LSTM+CTC識別模型的改進
相比傳統的車牌識別算法,如模板匹配,SVM,ANN等,普遍存在速度慢,精度不高的問題,尤其在中文車牌的識別上,此類算法對于漢字的識別效果并不理想,近年來,LSTM+CTC的方案成為了端到端車牌識別算法的主流,但本文所采用的BGRU+CTC的識別算法相較于LSTM+CTC在網絡訓練時間,收斂速度,識別精度上都有所提升。
基于序列標記的車牌識別的整個過程如圖3所示。它主要由3個子部分組成。首先,將牌照邊界框轉換成一系列特征向量, 然后使用Adam和BP算法訓練具有GRU(gated recurrent unit)的RNN模型以標記序列特征。最后將CTC(connectionist temporal classification)應用于RNN(recurrent neural network)的輸出層,分析RNN的標記結果并生成最終識別結果。
圖4則為BGRU序列識別過程對應的參數模型,該方法允許在沒有字符級別分割和識別的情況下重新識別整個車牌,明顯改善了傳統識別模式依賴先分割后識別的方案,減少了識別過程所需的時間。GRU可以幫助捕獲序列中的特征之間的相互依賴性,利用待標語素左側和右側上下文的信息,通過門限機制實現對長距離依賴的建模,并且在處理低質量圖像時依然可以取得不錯的效果。因此,本文模型采用BGRU級聯的構造結構,很好地利用了GRU本身的特性,同時也增強了其序列識別的性能。另外,精密的CNN模型所學習到的高級特征對于這種方法的成功也至關重要。

圖3 序列識別模型
2.4.2 序列特征生成
CNN具有從圖像中學習信息表示的強大能力。這里應用預訓練的7層CNN模型從裁剪的車牌圖像中提取順序特征表示。受He P等[12]工作的啟發,我們用滑動窗口的方式在整個圖像中提取相應的特征。首先,對圖像做一定的預處理,將每一個檢測到的車牌轉為灰度圖像,然后將車牌的大小調整為164*48,其高度與CNN模型的輸入高度相同,中文車牌是由7個字符組成,其中包含1位省份漢字簡稱和6位字母和數字的混合體,另外中國車牌共有31個省份,混合體中包含10個阿拉伯數字和24個英文字母(O和I不計算在內),故而全連接層共有65個類,而最終根據所需的位數,利用Softmax層做分類。經過序列識別網絡的處理,全連接層輸出了18*66維(含1位空格符)的特征向量,候選車牌圖像上的特征也被從左到右被依次提取,本文中該特征圖從左往右依次和7個字符信息網絡層相對應,并利用Dropout進行隨機(rate=0.25)刪除一些隱藏神經元,分類層輸出的7位結果對應網絡的識別結果。這不僅保存了序列信息,同時還獲取了有效的RNN的上下文信息,其特征向量之間的相互關系對字符識別有很大幫助。

圖4 BRGU序列識別模型
2.4.3 序列標注
RNN較為特殊,該網絡具有對過去的上下文信息進行預測的能力。且相比對每個特征進行單獨的處理,該機制使得序列識別操作更加的穩定??紤]到RNN在訓練期間容易產生梯度爆炸的可能,我們采用了LSTM(long short-term memory)的變體GRU。它包含一個存儲器單元和更新,重置兩個乘法門,比LSTM少了一個門函數,在參數規模上也比LSTM少了1/4,所以整體上GRU的訓練和網絡收斂速度要快于LSTM,可以長時間存儲上下文,并獲取序列特征之間的長程依賴關系。
序列標識即對特征序列中的每一層特征都用GRU遞歸處理,每一次都會用一個非線性狀態的函數g(·)來對狀態ht進行更新,該函數會進一步將當前特征xt和處于鄰接狀態的ht-1或ht+1作為輸入
隨后是Softmax層,其將GRU的狀態轉換為7個類的概率分布

整個特征序列被最終轉換為概率估計序列p={p1,p2,…pL},其長度與輸入序列相等。
2.4.4 序列譯碼
最后,本文的網絡將概率估計P的序列轉換為字符串,其中,CTC專門設計用于序列標記任務,可以解決輸入特征和輸出標簽之間對齊關系不確定的時間序列問題,也無需數據預分割。它能夠直接將預讀序列解碼為輸出標簽。故而,本文中選擇具有反向傳播的梯度下降算法Adam算法來訓練網絡,將它直接連接到GRU的輸出,CTC的輸入恰好是GRU的輸出激活,另外,采取序列譯碼的策略是為了利用GRU的輸出序列進一步獲取具有最大概率的近似路徑的最優解。
為了驗證本文車牌定位算法和識別算法的有效性進行了相應的仿真實驗,實驗平臺為Intel(R) Xeon(R) CPU E5-2643 v4 @ 3.40 GHz,8 GB RAM,NVIDIA GeForce GTX 1080 Ti,采用CUDA8.0 加速,車牌定位,識別的模型的實驗數據來源停車場,收費站,CCPD[13]開源數據集和廣東省智能交通系統重點實驗室的開源數據集Open-ITS,共計14 484張,其中識別部分的數據需先對原圖進行車牌檢測并裁剪,示例數據如圖5所示,此前有采用過利用OPENCV和車牌字體生成的數據,效果并不理想,故而本文采用的數據均為真實數據。

圖5 識別模型訓練數據樣例
在車牌定位模型中改進了YOLOv3模型,擴展了多尺度檢測的功能,融合了多級細粒度的特征[14],訓練時為了避免產生過擬合的現象,同時也為了提升模型訓練速度,選用動量常數為0.9,學習率為動態衰減,初始值為0.001,衰減步長為40 000,衰減率為0.0005,批大小為64,最大迭代50 200次,框架為DarkNet。車牌定位的目的主要是為了獲得車牌所在的區域,為后續的車牌識別做準備,由于車牌定位的精度直接影響了車牌識別的效果,故而,采用反應定位坐標準確度的平均IOU(intersection over union)指標來衡量車牌定位的有效性,該指標值越大,則定位越準確,效果越好,相關網絡訓練參數變化散點圖如圖6所示。

圖6 網絡訓練參數收斂散點圖
如表1所示,因檢測尺度的深化,改進算法YOLOv3-LPR復雜度有所增加,在檢測速度上,盡管比原有算法低了4.4 fps,但是mAP值卻提高0.6,綜合性能有所提升。

表1 多尺度檢測算法效果比較
端到端的車牌識別模型訓練共使用了14 484張圖片,采用分步策略,批大小為128,訓練周期為25,每個訓練周期數據迭代800次。同時利用Adam算法優化梯度下降,學習率為動態衰減,框架為Keras; 在保證其它參數不變的情況下,與現階段比較流行,且效果很好的車牌識別方法BLSTM+CTC在訓練時間Batch/Time,CTC Loss和識別準確率Accuracy這3個方面進行比較,驗證本文識別算法的有效性,結果如圖7,圖8,圖9所示。相較于一些比較傳統的算法,如模板匹配,HOG+SVM,BP神經網絡等,其本身與BLSTM+CTC和BGRU+CTC的效果有較大差距,故識別模型驗證階段并未做比較。

圖7 BLSTM+CTC和BGRU+CTC的訓練時間對比

圖8 BLSTM+CTC和BGRU+CTC的CTC Loss對比

圖9 BLSTM+CTC和BGRU+CTC的識別準確率對比
從圖7可以看出,在相同周期內,BLSTM+CTC的訓練時間明顯高于BGRU+CTC的訓練時間,這是因為GRU網絡本身包含一個存儲器單元和更新,重置兩個乘法門,比LSTM少了一個門函數,從而,在矩陣乘法的數量上有所下降,參數規模也比LSTM少了1/4,所以整體上BGRU+CTC的訓練和網絡收斂速度要快于BLSTM+CTC,在數據量比較大的情況下,BGRU+CTC可以節省很多的訓練時間。
為了更完整的顯示CTC Loss變化的細節,故將圖8中的Epoch=1狀態時BLSTM+CTC和BGRU+CTC的值略去了,其分別為6.6563和5.2852,從圖上可以清晰地發現,盡管從第5個Epoch開始,兩者的CTC Loss值趨近一致,但在訓練的初始階段,BGRU的CTC Loss值下降速度更快,與此同時,CTC Loss的變化速度也直接影響了識別準確率Accuracy的大小。
如圖9所示,BGRU+CTC的結構在更短的時間內獲得了相對較高的準確率,在Epoch=3時就達到了96.33%,相較之下,BLSTM+CTC卻只有94.75%,低了約1.5%;另外,從整個周期來看,BGRU+CTC取得最高準確率為Epoch=18時的98.42%,但BLSTM+CTC取得的最高準確率則為Epoch=21時的97.92%,與前者相比,略低了0.5%,從平均值看,BGRU+CTC準確率為97.08%,BLSTM+CTC為96.28%;故而,綜上比較,BGRU+CTC識別模型的效果更好。
如表2所示,本文改進算法YOLOv3-LPR+BGRU+CTC相較其它算法,識別準確率最高,盡管提高了模型復雜度,在時間上有所增加,但是綜合性能還是最優的。
從上述實驗數據的對比中,不難發現,在定位方法一致時,識別模塊采用BGRU+CTC,其車牌的識別的準確率有一定的提升,且由于BGRU的結構相較于BLSTM更加的簡潔,故而在識別速度方面也具有一定的優勢;另外,在定位模塊進行多尺度改進的算法,相較于原算法,其模型復雜度有所提升,故而,識別速度有所減慢,識別時間增加了3.71 ms,但對系統整體性能的影響不大,然而,改進后的模型的識別準確度卻提升了0.35%;其次,對比改進后的YOLOv3-LPR和OPENCV兩個定位模塊,實驗結果表明識別速度有顯著提升,其識別時間大約減少了39%,綜合考慮各項指標,本文模型YOLOv3-LPR+BGRU+CTC表現出的效果最優。

表2 定位+識別算法效果比較(OpenITS)
針對傳統車牌識別方法準確率不高,速度慢的問題,本文提出了定位-識別一體化模型,簡化了識別流程,實現了車牌的端到端的定位和識別,在定位模型中,改進YOLOv3的多尺度檢測,使其對于車牌有更好的定位性能,在識別模型中,改進傳統的BLSTM+CTC識別模型的架構,優化識別效果,通過實例驗證,本文改進的模型整體效果良好,其在識別率和可靠性方面具有一定的優勢。