張振威 王紅成
(1.東莞理工學(xué)院 電信工程與智能化學(xué)院,廣東東莞 523808;2.東莞理工學(xué)院 計算機(jī)科學(xué)與技術(shù)學(xué)院,廣東東莞 523808)
在特定的約束場景,如充足均勻的光照、簡單的背景、固定的拍攝角度等情況下,現(xiàn)有的車牌識別系統(tǒng)(ALPR)能取得較高的車牌識別準(zhǔn)確率,但在光照不均、大角度偏轉(zhuǎn)、雨雪天氣等非約束場景下該系統(tǒng)存在較大的局限性。趙[1]等人分別從不同的城市調(diào)研了5套商業(yè)的自動車牌識別系統(tǒng),發(fā)現(xiàn)這些系統(tǒng)在他們的數(shù)據(jù)集上測試的平均識別準(zhǔn)確率均從聲稱的99%下降到了75%~92%。由此可知,在非約束條件下的自動車牌識別技術(shù)仍是一項很有挑戰(zhàn)且有價值的研究課題。本文對非約束場景下的車牌識別問題進(jìn)行研究,旨在得到一種識別精度高、實時性強(qiáng)以魯棒性良好的車牌識別算法模型。
近年來的車牌識別方法大概分為車牌檢測以及車牌識別兩個部分。傳統(tǒng)的車牌檢測技術(shù)主要基于圖像處理方法[2],根據(jù)車牌顏色、紋理[3]等信息檢測車牌位置。隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,人們通過設(shè)計神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),獲得了一系列效果良好的目標(biāo)檢測算法,比如Faster R-CNN[4]、YOLO[5]系列、SSD[6]等。Laroca[7]等人以YOLO為基礎(chǔ),設(shè)計出了一種名為Fast-YOLO的車牌檢測器。該檢測方法先粗略定位到車牌所在區(qū)域的大致位置,然后將粗略定位的車牌圖像再次輸入到網(wǎng)絡(luò)中進(jìn)行精確定位。然而此檢測方法受限于第一個階段,若粗略定位過程中未檢測到包含車牌圖像的區(qū)域,則無法保證此方法車牌識別準(zhǔn)確率。另外,還有通過神經(jīng)網(wǎng)絡(luò)直接在圖片中定位車牌位置的車牌檢測方法,Henry[8]等提出了使用tiny YOLOv3網(wǎng)絡(luò)檢測車牌的位置,并在訓(xùn)練車牌的過程中在數(shù)據(jù)集中加入負(fù)樣本的方法。
車牌字符識別是自動車牌識別技術(shù)的重要環(huán)節(jié),是自動車牌識別技術(shù)的重點內(nèi)容。字符識別過程可以大概分為有分割的字符識別和無分割的字符識別。有分割的車牌字符識別是指車牌中的每個字符進(jìn)行分割,再逐個對每個獨立的字符進(jìn)行光學(xué)字符分類。Goel[9]等人使用模板匹配算法,將分割得到的字符與預(yù)先存儲的大量關(guān)于車牌字符的圖片進(jìn)行匹配比較,得到每一個字符的匹配結(jié)果。近年來,深度學(xué)習(xí)網(wǎng)絡(luò)也被用來解決分割字符的識別問題,如Rayson[10]等通過YOLO網(wǎng)絡(luò)對車牌每個字符進(jìn)行分類識別,而Selmi[11]通過Mask RCNN在定位到的車牌區(qū)域檢測并識別每個字符,Bjorklund[12]等人則利用兩個卷積神經(jīng)網(wǎng)絡(luò)模型,分別進(jìn)行車輛的定位以及車牌字符的分割檢測?;谟蟹指畹能嚺谱址R別方法的效果在一定程度上取決于字符分割程度的優(yōu)劣。
無分割的車牌字符識別是指將車牌字符看作是一個序列,將車牌字符的識別任務(wù)轉(zhuǎn)化為序列標(biāo)記問題?;谏窠?jīng)網(wǎng)絡(luò)[13-14]的無分割車牌識別方法可以減少車牌字符識別過程中的誤差累積。而Zhang[15]等人通過引入siamese網(wǎng)絡(luò)設(shè)計出基于質(zhì)量感知的視頻車牌流的算法,并通過壓縮質(zhì)量意識網(wǎng)絡(luò)使算法更為輕便,在各種場景中均取得良好的表現(xiàn)。對于基于級聯(lián)結(jié)構(gòu)的ALPR模型,Laroca[16]選擇Fast-YOLOv2網(wǎng)絡(luò)來檢測車牌的位置并對車牌布局進(jìn)行分類,最后通過YOLO網(wǎng)絡(luò)的前面11層結(jié)構(gòu)及若干卷積層組成的CR-NET網(wǎng)絡(luò)對車牌字符進(jìn)行識別,該模型能夠很好地處理不同區(qū)域國家的車牌識別場景,但論文中在結(jié)果比較時僅對比了中文車牌的數(shù)字和字母部分,沒有對車牌中的漢字進(jìn)行比較。而Wang[17]等人提出的級聯(lián)框架則同時給出了考慮中文漢字字符和不考慮中文漢字字符識別的實驗結(jié)果,它首先在低分辨率輸入圖像中定位車牌,再使用集成塊BI來提取車牌空間特征并矯正車牌為正面視圖,最后采用一種基于權(quán)重共享的分類器來平衡訓(xùn)練樣本,解決了小規(guī)模數(shù)據(jù)集問題。
現(xiàn)有的大多研究方法均是對不同場景下的單車牌識別問題進(jìn)行研究,在實際的非約束場景中,經(jīng)常會出現(xiàn)畫面中包含多個不同類型車牌的情況。為解決此類問題,本文提出一種能適應(yīng)于多車牌識別場景的級聯(lián)算法模型,該模型能夠識別非約束場景中的單個以及多個車牌并展現(xiàn)出良好的實時性能。
本文創(chuàng)新點如下:針對非約束場景下的多車牌識別問題,為篩選出輸入圖像中的有效車牌,提出基于車輛檢測的后處理策略,同時對車牌檢測矯正網(wǎng)絡(luò)設(shè)計了并行的對象檢測概率推斷結(jié)構(gòu)與仿射系數(shù)回歸功能結(jié)構(gòu),有效地提高了整體模型的實時性能。
提出的車牌識別模型工作流程大致分為車輛檢測、車牌檢測與矯正、車牌字符識別三個階段。如圖1所示,對于任意一張包含一個或多個車輛的輸入圖像,模型首先通過車輛檢測模塊定位出圖像中車輛的位置,隨后車牌檢測與矯正模塊在每個檢測到的車輛范圍內(nèi)檢測并矯正車牌,得到圖1中每輛車的車牌的正面視角圖,最后通過車牌字符識別網(wǎng)絡(luò)識別車牌字符并將識別出的字符序列作為輸出結(jié)果。
圖1 多車牌識別模型工作流程
1.2.1 基于YOLOv5l的車輛檢測
采用的車輛檢測算法模型為YOLOv5l,該模型的尺寸較小,部署花費代價較小,可以很好地權(quán)衡檢測速度和檢測精度等問題。模型在COCO數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,然后將所有的汽車類合為一個檢測類別并忽略其他檢測類的結(jié)果。除此之外,通過車輛檢測后處理方法保證了模型能夠檢測到完整的車牌,避免圖像中的車牌字符被遮擋或圖像中只有部分車牌的情況。
由于車牌是車輛中較小的部分,所以當(dāng)圖像中車輛面積過小時,車牌會變得更加微小而難以識別。因此,對檢測到的車輛的面積進(jìn)行統(tǒng)計計算,當(dāng)車輛面積與整個圖像的面積比小于0.03時,則舍去。另外一個考慮因素是,圖像中檢測到的車輛必須包含牌照。為只保留包含車牌信息的車輛目標(biāo),收集統(tǒng)計了常見車輛的尺寸信息,如表1所示。經(jīng)過反復(fù)測試分析,最終確定錨框?qū)捀弑乳撝?.31,即當(dāng)車輛錨框?qū)捀弑刃∮谠撻撝档臅r候,則認(rèn)為該檢測到的車輛目標(biāo)包含了車牌信息。
表1 常見車輛尺寸信息統(tǒng)計
1.2.2 基于并行分支結(jié)構(gòu)的車牌檢測與矯正
為使模型能夠成功檢測并矯正車牌,擁有較好的實時性能,將車牌檢測矯正網(wǎng)絡(luò)設(shè)計為并行的對象檢測概率推斷功能結(jié)構(gòu)與仿射系數(shù)回歸功能結(jié)構(gòu),共同訓(xùn)練模型參數(shù)。該部分網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 基于并行分支結(jié)構(gòu)的車牌檢測與矯正網(wǎng)絡(luò)
由圖3可知,對于一個W×H的輸入圖像,網(wǎng)絡(luò)的步幅設(shè)置為24,網(wǎng)絡(luò)的特征輸出圖為M×N×7,每個特征圖中的點單元格共需要確定7個值,一個值用來估計對象或者非對象的概率,六個值用來構(gòu)建局部仿射變換Tmn,變換公式如下:
圖3 CRNN圖像文本識別
(1)
其中,q是以單位長度正方形中心為坐標(biāo)原點的頂點,v2-7表示每個特征圖點單元格中除去對象估計點的剩余六個點,v2和v5使用最大值函數(shù)是為了保證坐標(biāo)為正值以避免過度旋轉(zhuǎn)。
為調(diào)整網(wǎng)絡(luò)特征圖的輸出分辨率,需要通過歸一化函數(shù)對車牌的頂點坐標(biāo)進(jìn)行縮放并重新居中。使用的歸一化函數(shù)定義為
(2)
其中,p為車牌頂點的坐標(biāo),Ns為網(wǎng)絡(luò)的步幅,(m,n)為特征圖中的點坐標(biāo),α為在檢測車牌周圍構(gòu)建的正方形的比例系數(shù),根據(jù)訓(xùn)練數(shù)據(jù)中最大最小車牌維度與網(wǎng)絡(luò)步長,設(shè)置為α= 7.75。
對于整個網(wǎng)絡(luò)中的損失函數(shù),需要考慮兩部分損失。第一部分是在檢測車牌周圍虛構(gòu)的標(biāo)準(zhǔn)正方形在擬合歸一化車牌之間的誤差,該部分誤差造成的損失可表示為
(3)
第二部分損失應(yīng)該考慮在特定單元點上是否有對象而引起的誤差,該部分誤差可表示為兩個對數(shù)損失的總和,其定義公式為
fprobs(m,n)=
logloss(Lobj,v1)+logloss(1-Lobj,v2) ,
(4)
式(4)中,v1和v2為特征圖中要確定值的兩個對象估計點。Lobj用來表示該點單元格中是否含有對象,其函數(shù)值可以表示為
(5)
因此,對網(wǎng)絡(luò)特征圖中的每個點單元格,需要綜合考慮該點單元格是否存在對象的損失以及虛擬正方形的仿射變換損失,由于本網(wǎng)絡(luò)采用了并行分支的結(jié)構(gòu),最終確定的損失函數(shù)可表示為
(6)
1.2.3 車牌識別
車牌識別是指將檢測到的車牌中的字符進(jìn)行識別輸出。常見的車牌識別方法大致分為基于切割的車牌識別和免分割的車牌識別。對于免分割的車牌識別方法工作過程大致如下:對給定的車牌圖片,車牌識別模型首先提取圖像的特征,然后對提取到的特征進(jìn)行序列建模,最后將預(yù)測序列作為識別到的車牌字符。
用于圖像文本識別的卷積循環(huán)神經(jīng)網(wǎng)絡(luò)(CRNN)的結(jié)構(gòu)如圖3所示。該網(wǎng)絡(luò)包含卷積神經(jīng)網(wǎng)絡(luò)CNN和循環(huán)神經(jīng)網(wǎng)絡(luò)RNN,能夠?qū)D像文本識別問題轉(zhuǎn)換為時序依賴序列問題。CRNN通過卷積層來提取圖像中的特征,然后將特征圖的特征向量序列傳遞給后面的循環(huán)神經(jīng)網(wǎng)絡(luò),最后是CTC轉(zhuǎn)錄層,采用CTC損失,將上一層的預(yù)測標(biāo)簽分布轉(zhuǎn)換為最終的預(yù)測序列。以卷積循環(huán)神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),衍生了大量的圖像文本識別算法。
本文采用的車牌識別模型借鑒了CRNN的結(jié)構(gòu),使用ResNet18提取車牌圖像的特征,使用雙向長短期記憶網(wǎng)絡(luò)BLSTM對特征序列進(jìn)行建模并保留網(wǎng)絡(luò)結(jié)構(gòu)中的CTC損失從而更好地識別圖像文本。
在提取圖像特征的時候,卷積神經(jīng)網(wǎng)絡(luò)的層數(shù)和特征提取的效果息息相關(guān)。隨著卷積神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,模型的性能也會不斷提升。而當(dāng)網(wǎng)絡(luò)的層數(shù)增加到一定程度后,模型的性能會由于梯度消失的問題開始下降。本文采用ResNet18來對車牌的特征進(jìn)行提取。RestNet18殘差神經(jīng)網(wǎng)絡(luò)打破了深度學(xué)習(xí)網(wǎng)絡(luò)層數(shù)的限制,其網(wǎng)絡(luò)層某一層的輸出可以直接跨過若干層傳遞到后面的網(wǎng)絡(luò)層。該設(shè)計結(jié)構(gòu)可以在保證模型訓(xùn)練誤差的基礎(chǔ)上加深卷積神經(jīng)網(wǎng)絡(luò)的深度,從而使模型獲得更好的性能。
對于循環(huán)層的長短期記憶網(wǎng)絡(luò)LSTM,能獲取圖像文本的長距離信息,具有單向性。然而在圖像文本的序列識別中,兩個方向的信息是可以疊加在一起形成雙向的長短期記憶網(wǎng)絡(luò)。本文采用雙向的長短期記憶網(wǎng)絡(luò)BLSTM替換原來的單向長短期記憶網(wǎng)絡(luò),使模型能夠捕捉到更多的上下文特征信息,減少上下文信息的損失,提高車牌在復(fù)雜場景下的車牌識別準(zhǔn)確率。
為使模型有很好的魯棒性,能夠在復(fù)雜多變的實際場景中展現(xiàn)出良好的性能。在訓(xùn)練過程中使用了數(shù)據(jù)增強(qiáng)(data augmentation)策略,對訓(xùn)練數(shù)據(jù)采用拉伸縱橫比、中心隨機(jī)角度旋轉(zhuǎn)、平移等方法增強(qiáng)數(shù)據(jù)的物理空間特征。同時為了增強(qiáng)模型對復(fù)雜環(huán)境下圖像的適應(yīng)性,在訓(xùn)練模型過程中會對圖像添加隨機(jī)的高斯噪聲并調(diào)整圖像的HSV顏色空間,這種數(shù)據(jù)增強(qiáng)方法提高了模型在噪聲環(huán)境和低光照場景下的性能,可使模型取得更好的魯棒性。
CCPD(Chinese City Parking Dataset)數(shù)據(jù)集是中科大團(tuán)隊Xu[18]等于2018年提出的關(guān)于中國車牌的數(shù)據(jù)集,共包含25萬多張在不同場景下的車牌圖片,是目前已知的關(guān)于中國車牌的數(shù)量最大的數(shù)據(jù)集。表2描述了CCPD數(shù)據(jù)集每個子數(shù)據(jù)集的詳細(xì)信息。在每個子數(shù)據(jù)中隨機(jī)挑選2 000張圖片作為訓(xùn)練集,100張圖片作為驗證集,2 000張圖片作為測試集。
表2 CCPD數(shù)據(jù)集各子數(shù)據(jù)集信息
AOLP數(shù)據(jù)集(Application Oriented License Plate)中共包含三個子數(shù)據(jù)集,分別為AC、LE、RP。AC子數(shù)據(jù)集是在比較簡單理想的場景下收集的,比如收費站。共包含圖片681張。LE子數(shù)據(jù)集采集的是違法車輛,攝像機(jī)在車輛附近,共包含圖像757張。RP子數(shù)據(jù)集采集的是交警在巡邏時拍攝的車輛照片,由于車輛處于運動當(dāng)中,拍攝的車輛圖像距離可能會過遠(yuǎn)或過近,并且照片視角有任意的變化,共611張,RP子數(shù)據(jù)集是三個子數(shù)據(jù)中最難的一個。在三個子數(shù)據(jù)集中,本文均以2∶1∶2的比例劃分訓(xùn)練集、驗證集和測試集。
最后一個數(shù)據(jù)集為網(wǎng)絡(luò)搜集的數(shù)據(jù)集。由于本文所提出的模型能夠檢測圖像中的多個車牌,且現(xiàn)有已知的數(shù)據(jù)集中并沒有專門的多車牌數(shù)據(jù)集。為了驗證本文提出模型在多車牌識別任務(wù)中的有效性。筆者在網(wǎng)絡(luò)上收集了不同場景的47張包含多車輛的圖像作為測試數(shù)據(jù),在此類場景下,所提出的模型能夠在完成大部分車牌的識別任務(wù)。
為了驗證所提模型的有效性,在實驗平臺上進(jìn)行了相關(guān)實驗,實驗平臺參數(shù)如下,平臺CPU采用Gold 61系列(72vCPU)v5@2.5 GHz,320 GB內(nèi)存,GPU采用NVIDIA Tesla V100 SXM2,顯存大小為8*32 GB。平臺通信采用NVLink雙向通信,速度為300 GB/s,操作系統(tǒng)為CentOS7.8版本。
本文提出一種適用于非約束條件下的多車牌自動識別模型。模型訓(xùn)練過程使用的數(shù)據(jù)來源于CCPD數(shù)據(jù)集與人工生成的車牌數(shù)據(jù)集。為驗證模型性能,選取了CCPD數(shù)據(jù)集與AOLP數(shù)據(jù)集以及網(wǎng)絡(luò)搜集的多車輛數(shù)據(jù)集,并在這些數(shù)據(jù)集上與其他的模型進(jìn)行對比實驗。表2和表3分別展示了本文模型在CCPD數(shù)據(jù)集上的檢測性能和識別性能。
表3 CCPD數(shù)據(jù)集上檢測精度比較
由表3可得,相較于其他方法,本文提出的車牌檢測方法能更準(zhǔn)確地檢測車牌位置,在CCPD的各子數(shù)據(jù)集上平均檢測精度達(dá)到95.74%,比其它方法至少高出了2.15個百分點。由表4可知,本模型在CCPD各子數(shù)據(jù)集上都展現(xiàn)出卓越的識別性能,且在每個子數(shù)據(jù)集上都能達(dá)到超過92%的識別準(zhǔn)確率,在各子數(shù)據(jù)集上的平均識別率達(dá)到了95.7%的精度,比其它方法提高了至少1.1個百分點。從識別速度方面分析,本文所提出的模型相對于Faster-rcnn快了約1.7倍,相較于其它方法,本模型以犧牲少許的速度為代價,取得了更高的識別性能。在原有訓(xùn)練模型的基礎(chǔ)上,采用數(shù)據(jù)增強(qiáng)的方式進(jìn)一步訓(xùn)練模型,使模型的識別準(zhǔn)確率平均提高了1.1個百分點。
表4 CCPD數(shù)據(jù)集上識別精度比較
AOLP數(shù)據(jù)集上的實驗結(jié)果如表5和表6所示。對于車牌檢測性能,本文模型在AOLP三個子數(shù)據(jù)集上都至少達(dá)到了99.5%的檢測精度。對于車牌字符識別性能,在AC子數(shù)據(jù)集上,本模型比表5中的其它方法的識別精度至少高出0.85個百分點。在RP子數(shù)據(jù)集上,本模型比表中其它方法的識別精度至少高出0.49個百分點。同時,模型的FPS值達(dá)到了47.2,充分說明了提出模型在復(fù)雜場景下的準(zhǔn)確性、魯棒性及實時性。在原有訓(xùn)練模型的基礎(chǔ)上,采用數(shù)據(jù)增強(qiáng)的方式進(jìn)一步訓(xùn)練模型,使模型的識別準(zhǔn)確率平均提高了1.9個百分點。
表5 AOLP數(shù)據(jù)集上檢測精度比較
表6 AOLP數(shù)據(jù)集上識別精度比較
在網(wǎng)絡(luò)收集的多車牌數(shù)據(jù)集中,本文提出的模型能很好地識別出多個車輛以及對應(yīng)車牌,并能有效地剔除無車牌或僅有部分車牌的的目標(biāo)車輛。本部分測試用例為網(wǎng)絡(luò)搜集且考慮了多車輛場景下的無效檢測目標(biāo)過濾問題,這是其它大多方法不具備的。在網(wǎng)絡(luò)搜集的多車牌數(shù)據(jù)集中,本文模型能夠很好地檢測到圖像中的多個車牌,并在該多車牌數(shù)據(jù)集中達(dá)到了98%的車牌識別精度。
本節(jié)展示了通過python語言實現(xiàn)的html客戶端界面效果,界面包含檢測到的車輛、矯正后的車牌以及車牌字符識別結(jié)構(gòu)和置信率。所提供的展示樣本包含了不同類型車牌、不同偏轉(zhuǎn)視角、低質(zhì)量模糊圖片、單車牌圖像以及多車牌圖像等不同的場景,充分展示了本文所提出模型的準(zhǔn)確性與魯棒性。
圖4展示了模型對新能源車以及大卡車的車牌識別結(jié)果,由結(jié)果可知,模型均成功檢測到了車輛并準(zhǔn)確識別了車牌字符。本模型在多車牌場景中同樣展現(xiàn)出了良好的性能,圖5展示了數(shù)據(jù)集中部分多車牌圖片的車牌識別結(jié)果,對與輸入圖像中的三個車輛目標(biāo),本模型均能正確地識別出車牌字符。圖4、圖5中,輸入圖像中的偏轉(zhuǎn)視角車牌,本模型能夠?qū)⑵涑C正為正面視角并在頁面中呈現(xiàn)出來,為后續(xù)的車牌字符識別模塊提供了有利條件,充分說明了模型車牌檢測與矯正模塊的有效性。圖5中不包含車牌信息的小目標(biāo),模型能夠?qū)ζ溆行У奶蕹苊庑畔⑷哂?結(jié)果頁面中只顯現(xiàn)了包含完整車牌信息的車輛以及對應(yīng)的車牌識別結(jié)果,充分說明了本文模型對小目標(biāo)后處理的合理性與有效性。
圖4 不同類型車牌展示結(jié)果(左:大卡車,右:新能源車)
圖5 三車牌識別結(jié)果
對非約束場景下的車牌識別進(jìn)行研究,提出了能夠在復(fù)雜環(huán)境中表現(xiàn)出較高性能的多車牌識別算法模型。該模型首先檢測圖像中的所有車輛目標(biāo)并進(jìn)行后處理從而篩選出包含完整車牌信息的有效車輛目標(biāo),這是模型能夠?qū)崿F(xiàn)多車牌識別的基礎(chǔ);其次,對車牌檢測矯正網(wǎng)絡(luò)中的檢測對象概率推斷功能結(jié)構(gòu)以及仿射系數(shù)回歸功能結(jié)構(gòu)設(shè)置并行分支,為防止模型在訓(xùn)練的過程中互相干擾而在其前面分別設(shè)置獨立的網(wǎng)絡(luò)層,提高了模型的檢測精度和檢測速度;最后,車牌識別部分根據(jù)圖像文本識別的原理設(shè)計了基于ResNet18的特征提取網(wǎng)絡(luò),采用雙向長短期記憶BLSTM特征序列建模網(wǎng)絡(luò)以及能夠識別不同長度車牌字符序列的CTC損失,并采用了數(shù)據(jù)增強(qiáng)的方式提高了模型的識別精度以及魯棒性。實驗結(jié)果表明,在多個測試數(shù)據(jù)集環(huán)境下,本文提出的模型無論在識別精度還是在識別速度方面均取得了比其它模型更加優(yōu)良的效果。對于綠牌新能源車、大卡車、普通轎車等不同類型車牌場景以及多車輛場景,本文提出的模型均能夠準(zhǔn)確的識別車牌字符,展現(xiàn)出了良好的魯棒性。