莫少雄,趙 波
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院,上海201620)
車牌檢測(cè)與識(shí)別是智能交通系統(tǒng)的重要組成部分,具有從安全到交通控制等多重應(yīng)用,近年來受到了人們的廣泛關(guān)注。然而,現(xiàn)有的算法大多只能在特定的條件下才能很好地工作,在復(fù)雜環(huán)境下準(zhǔn)確讀取車牌仍然是一項(xiàng)具有挑戰(zhàn)性的任務(wù)[1]。復(fù)雜的背景,車牌存在很大以及隨機(jī)的拍攝條件(如光照、失真、遮擋或模糊),都會(huì)加大檢測(cè)難度。因此如何在復(fù)雜環(huán)境下提高車牌檢測(cè)精度和識(shí)別率具有重要的研究意義[2];復(fù)雜的環(huán)境因素,在很大程度上制約了車牌檢測(cè)與識(shí)別的準(zhǔn)確性和可靠性。為了提高復(fù)雜環(huán)境下車牌圖像檢測(cè)與識(shí)別的速度和精度,需要針對(duì)一個(gè)或多個(gè)因素對(duì)相關(guān)算法進(jìn)行研究和改進(jìn),對(duì)車牌檢測(cè)與識(shí)別技術(shù)的改進(jìn)和優(yōu)化具有重要意義[3]。
車牌檢測(cè)是定位車牌位置,獲得車牌四角的坐標(biāo),是車牌識(shí)別過程中的一個(gè)重要步驟,定位不成功或不完整將直接導(dǎo)致最終識(shí)別失敗[4]。本文是先通過對(duì)車輛進(jìn)行檢測(cè),縮小車牌搜索的范圍,降低計(jì)算成本,同時(shí)提高了車牌識(shí)別的準(zhǔn)確率,然后在檢測(cè)出的車輛圖像中對(duì)車牌進(jìn)行定位。
汽車在許多經(jīng)典目標(biāo)檢測(cè)算法中都是數(shù)據(jù)集底層的對(duì)象之一,在選擇目標(biāo)檢測(cè)算法時(shí),考慮了以下幾個(gè)問題:首先,車輛檢測(cè)算法要求較高的準(zhǔn)確率。因?yàn)槿魏温z車輛都會(huì)直接導(dǎo)致車牌漏檢;其次,算法要求計(jì)算速率快。如果沒有達(dá)到較高的計(jì)算速率,影響實(shí)時(shí)檢測(cè);最后,計(jì)算成本低,這樣才具有廣泛的應(yīng)用價(jià)值[5]。經(jīng)過以上的綜合分析,決定使用EfficientDet作為的車輛檢測(cè)網(wǎng)絡(luò),因?yàn)樵摼W(wǎng)絡(luò)檢測(cè)速度和檢測(cè)精確度在ImageNet數(shù)據(jù)集上都有很好的表現(xiàn)[6]。
考慮到現(xiàn)實(shí)環(huán)境中車牌不同的成像角度,提出了一種失真校正的車牌檢測(cè)網(wǎng)絡(luò)。用于畸變校正的車牌檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)如圖1(a)所示,其中Resent block(N)的網(wǎng)絡(luò)結(jié)構(gòu)細(xì)節(jié)如圖1(b)所示。該網(wǎng)絡(luò)可以在自然場(chǎng)景中檢測(cè)不同程度失真的車牌,并將失真的車牌修正為類似于前視圖的矩形形狀。為了更準(zhǔn)確地定位車牌,設(shè)計(jì)了一種基于殘差塊的網(wǎng)絡(luò)來提取車牌特征,并且將網(wǎng)絡(luò)中的卷積層大小都設(shè)定為3×3。為了防止車牌特征信息在池化后消失,只使用了4個(gè)步長為2×2的最大池化層,將輸入維數(shù)降低了16倍。最后,檢測(cè)模塊如圖1(c),有2個(gè)平行的卷積層:(1)一個(gè)用于嵌入概率,函數(shù)激活為softmax;(2)另一個(gè)用于回歸仿射參數(shù)。如圖1(c)所示。

圖1 車牌檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of license plate detection
利用失真校正網(wǎng)絡(luò)提取車牌的過程如圖2所示。首先,網(wǎng)絡(luò)生成對(duì)象或非對(duì)象概率(2通道)和仿射變換參數(shù)(6通道)共8個(gè)通道的特征圖。為了提取變形車牌上的特征,首先考慮一個(gè)假設(shè)的正方形,其尺寸固定在車牌中心(x,y)。如果單元的目標(biāo)概率大于給定的檢測(cè)閾值,則利用回歸參數(shù)建立仿射矩陣,將虛擬正方形轉(zhuǎn)換為車牌區(qū)域[7]。因此,可以很容易地將車牌擴(kuò)展到水平和垂直對(duì)齊的對(duì)象。

圖2 車牌糾正過程Fig.2 License plate correction process
用mi=[xi,yi]T(其中i=1,2,3,4)表示帶注釋車牌的4個(gè)角,從左上角開始順時(shí)針方向標(biāo)注;用[0.5,0.5]T,n4=[-0.5,0.5]T表示以原點(diǎn)為中心的標(biāo)準(zhǔn)單位的對(duì)應(yīng)頂點(diǎn)。通過Ns=24(4個(gè)最大池化層)給出輸入圖像的高H、寬W、網(wǎng)絡(luò)步幅,網(wǎng)絡(luò)輸出特征圖由P×Q×8個(gè)卷組成,其中P=H/Ns,Q=W/Ns。對(duì)于特征圖中的每個(gè)點(diǎn)單元,有8個(gè)值需要估計(jì):前2個(gè)值(v1-v2)是物體/非物體的概率,后6個(gè)值(v3-v8)用于建立局部仿射變換Txy,通過式(1)得出:

Txy(n)利用所學(xué)的參數(shù)對(duì)代表預(yù)測(cè)車牌位置的包圍盒進(jìn)行仿射變換。使用了最大函數(shù)v3和v6,用來確保對(duì)角線為正(避免不必要的鏡像或過量的旋轉(zhuǎn))。為了匹配網(wǎng)絡(luò)的輸出分辨率,將mx點(diǎn)按網(wǎng)絡(luò)步幅的倒數(shù)重新縮放,并根據(jù)在特征圖中每個(gè)(x,y)重新定心。通過使用標(biāo)準(zhǔn)化函數(shù)(2)來實(shí)現(xiàn):

其中,β是一個(gè)縮放常數(shù),表示虛擬方塊的邊。設(shè)置β=8.15,是被網(wǎng)絡(luò)步幅分割的增廣訓(xùn)練數(shù)據(jù)中候選車牌的最大和最小維數(shù)之間的均值點(diǎn)[8]。為了在精度和處理時(shí)間之間保持良好的折衷,根據(jù)實(shí)驗(yàn),本文選擇了最大維數(shù)508和最小維數(shù)128。假設(shè)有一個(gè)對(duì)象(車牌)在點(diǎn)(x,y),損失函數(shù)的第一部分考慮了一個(gè)扭曲版本的正則平方和車牌的標(biāo)準(zhǔn)化標(biāo)注點(diǎn)之間的誤差[9],由(3)式給出:

損失函數(shù)的第二部分是處理在(x,y)處有無對(duì)象的概率。損失是2個(gè)對(duì)數(shù)損失函數(shù)的總和,式(4):

其中,fprob(x,y)是對(duì)象指示函數(shù),如果在點(diǎn)(x,y)存在對(duì)象,返回1,否則返回0。最終損失函數(shù)由等式(3)和(4)中定義的項(xiàng)組合給出,式(5):

存在傾斜、甚至畸變的車牌都被失真校正網(wǎng)絡(luò)校正為正視的車牌,輸出的車牌被作為車牌識(shí)別的輸入。這樣經(jīng)過校正后的車牌,讓車牌識(shí)別變得異常的輕松,不用再考慮角度,畸變或者光照等外界的影響,提高了車牌識(shí)別的速度和準(zhǔn)確性。
由于傳統(tǒng)的車牌識(shí)別框架分割后的車牌識(shí)別精度不高。因此,本文采用卷積遞歸神經(jīng)網(wǎng)絡(luò)(CRNN)和聯(lián)接主義時(shí)間分類(CTC)結(jié)構(gòu),將端到端算法應(yīng)用于車牌識(shí)別,直接輸出車牌字符。
整個(gè)網(wǎng)絡(luò)可分為3個(gè)部分,如圖3所示。底部的卷積層自動(dòng)從每張輸入圖像中提取特征圖;在卷積網(wǎng)絡(luò)之上,構(gòu)造一個(gè)遞歸網(wǎng)絡(luò),對(duì)特征序列的每一幀進(jìn)行預(yù)測(cè);最后,通過轉(zhuǎn)譯層將每幀預(yù)測(cè)轉(zhuǎn)化為預(yù)測(cè)序列,車牌識(shí)別網(wǎng)路的結(jié)構(gòu)參數(shù)見表1。

圖3 車牌識(shí)別架構(gòu)圖Fig.3 Schematic diagram of license plate recognition

表1 車牌識(shí)別網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)表Tab.1 Structure of license plate recognition Network
卷積層:利用卷積層和最大池化層構(gòu)建卷積層,提取輸入圖像的特征圖。將所有輸入圖像調(diào)整到相同的尺度,然后從特征圖中提取出特征序列,作為遞歸層的輸入。
循環(huán)層:是一個(gè)深度雙向長期內(nèi)存(LSTM)網(wǎng)絡(luò),位于卷積層之上。基于卷積特征序列,連續(xù)提取文本序列。LSTM是一種特殊的遞歸神經(jīng)網(wǎng)絡(luò)(RNN),主要用于解決長序列訓(xùn)練中的梯度消失和梯度爆炸問題,具有比普通RNN網(wǎng)絡(luò)更好的性能[10]。使用循環(huán)層有3個(gè)主要優(yōu)點(diǎn):一個(gè)是LSTM具有捕獲序列上下文信息的強(qiáng)大能力。在基于圖像的序列識(shí)別中,使用上下文比單獨(dú)處理每個(gè)符號(hào)更穩(wěn)定、更有幫助[11];其次,LSTM可以將損失誤差傳播回其輸入,并允許在一個(gè)網(wǎng)絡(luò)中一起訓(xùn)練循環(huán)層和卷積層;第三,LSTM可以處理任意長度的序列。
轉(zhuǎn)譯層:使用一種名為聯(lián)接主義時(shí)態(tài)分類(CTC)的時(shí)態(tài)分類算法,將每一幀的每幀預(yù)測(cè)轉(zhuǎn)化為最終的字符序列,CTC專注于解決給定標(biāo)簽和輸出數(shù)據(jù)的對(duì)齊問題。傳統(tǒng)的方法需要將輸入數(shù)據(jù)與給定的標(biāo)簽及時(shí)對(duì)齊,以逐幀計(jì)算交叉熵?fù)p失,而CTC算法可以在不進(jìn)行標(biāo)簽對(duì)齊的情況下進(jìn)行訓(xùn)練[12]。該分類算法只需關(guān)注輸出是否真實(shí)、標(biāo)簽整體一致,從而減少了手工標(biāo)注的繁瑣工作。
該識(shí)別算法可以在車牌識(shí)別中完成端到端訓(xùn)練,不需要進(jìn)行字符分割和水平縮放操作,可以識(shí)別任意長度的車牌字符。
所有網(wǎng)絡(luò)都是在Pytorch深度學(xué)習(xí)框架下實(shí)現(xiàn)的,實(shí)驗(yàn)平臺(tái)為NVIDIA GeForce GTX 2080 GPU,i7 9700 CPU,GPU內(nèi)存為12 GB。
CCPD數(shù)據(jù)集是目前中國最大的公開標(biāo)簽車牌數(shù)據(jù)集,圖片數(shù)量約30萬張,其中獨(dú)立車牌圖像約25萬張,不同背景,不同拍攝角度,不同時(shí)間,不同光照水平。特別是其中模糊車牌和大角度水平傾角車牌,對(duì)于本文提出的檢測(cè)模型是很好訓(xùn)練和測(cè)試數(shù)據(jù)。
3.2.1 車牌定位結(jié)果
將CCPD數(shù)據(jù)集分為兩部分,一部分作為訓(xùn)練數(shù)據(jù),另一部分作為測(cè)試數(shù)據(jù)集。目前最先進(jìn)的幾種車牌檢測(cè)算法的檢測(cè)精度,包括Faster-RCNN、YOLO和SSD等,見表2。當(dāng)檢測(cè)區(qū)域與目標(biāo)真實(shí)值重疊度超過70%時(shí)(IoU>0.7),認(rèn)為檢測(cè)結(jié)果正確。YOLOV3的整體檢測(cè)精度較高,但對(duì)大傾角車牌的檢測(cè)精度較低。本文方法在檢測(cè)和識(shí)別算法上都進(jìn)行了優(yōu)化,在性能上比RPNet和YOLO-V3更快、更魯棒。

表2 模型對(duì)比Tab.2 Comparison of models
為了更直觀地看到車牌檢測(cè)模塊的失真校正網(wǎng)絡(luò)的能力,為了進(jìn)行相應(yīng)的特殊測(cè)試,測(cè)試所用的大角度車牌照片測(cè)試集是在幾種特定條件(夜晚,強(qiáng)光和正常光照等)下自行拍攝的,實(shí)驗(yàn)結(jié)果如圖4所示。可以看出在攝像機(jī)角度嚴(yán)重傾斜甚至車牌存在變形的情況下,本文的方法仍然可以將傾斜和變形的車牌圖像轉(zhuǎn)換為幾乎正面視角下的矩形圖像,且在夜間也能準(zhǔn)確地定位,驗(yàn)證了該方法的高性能。

圖4 車牌糾正結(jié)果圖Fig.4 Result of license plate correction
3.2.2 車牌識(shí)別結(jié)果
與其它模型的檢測(cè)和識(shí)別結(jié)果進(jìn)行了比較。最終的識(shí)別結(jié)果既考慮了車牌識(shí)別速率,又考慮了識(shí)別精度。只有當(dāng)IoU大于0.6,且圖像中車牌的所有字符都被正確識(shí)別時(shí),才認(rèn)為車牌識(shí)別正確,識(shí)別結(jié)果見表3。

表3 車牌識(shí)別精度Tab.3 License plate recognition accuracy
除了MTLPR、TE2E和RPNet之外,同時(shí)還為的其它目標(biāo)檢測(cè)模型添加了一個(gè)高性能車牌識(shí)別模型HC,HC代表深度監(jiān)督的方法在多尺度下嵌入空間信息的Holistic-CNN。這些組合模型可以達(dá)到較高的識(shí)別速度和精度,但與其它模型相比,本文提出的方法仍然具有更高的性能。車牌檢測(cè)識(shí)別結(jié)果如圖5所示。

圖5 不同條件下的車牌識(shí)別結(jié)果Fig.5 License plate recognition results under different conditions
本文提出了一種實(shí)時(shí)、魯棒的自然場(chǎng)景的車牌識(shí)別方法。將車牌檢測(cè)和車牌識(shí)別分為兩個(gè)模塊,先用失真校正的車牌檢測(cè)網(wǎng)絡(luò)對(duì)車牌進(jìn)行校正和定位,通過卷積遞歸神經(jīng)網(wǎng)絡(luò)(CRNN)和聯(lián)接主義時(shí)間分類(CTC)結(jié)構(gòu),實(shí)現(xiàn)端到端車牌識(shí)別。實(shí)驗(yàn)結(jié)果表明,該方法能對(duì)傾斜或者存在畸變的車牌進(jìn)行準(zhǔn)確、快速的檢測(cè)和識(shí)別。同時(shí)該車牌識(shí)別方法在性能上遠(yuǎn)遠(yuǎn)優(yōu)于現(xiàn)有的車牌識(shí)別方法。與傳統(tǒng)的檢測(cè)算法相比,車牌識(shí)別采用CRNN和CTC模型,實(shí)現(xiàn)了高精度的端到端目標(biāo)識(shí)別算法。與其它神經(jīng)網(wǎng)絡(luò)算法相比,該方法在CCPD數(shù)據(jù)集上具有更高的識(shí)別精度。