辛 莉,趙欽炎,許 茜,王 仲,施 巖,
(1.北自所(北京)科技發(fā)展股份有限公司,北京 100120;2.順豐科技(北京)有限公司,北京 100088)
隨著科技的進步和人們生活質(zhì)量的提高,車輛在日常生活中普及率越來越高,汽車成為交通出行必不可少的工具。車牌是車輛的唯一身份編碼,對車牌的高效識別,在交通管理、園區(qū)管理、車輛調(diào)度等方向有著廣泛的應用空間。通過使用計算機視覺的方式對其進行識別,能夠節(jié)省大量的人力物力,且能夠保持更高的準確率。
近年來人工智能的蓬勃發(fā)展得益于深度學習的不斷探索進步。自2012年Krizhevsky等[1]在ImageNet圖像分類比賽中使用卷積神經(jīng)網(wǎng)絡AlexNet力壓傳統(tǒng)圖像處理方法奪冠后,深度學習開始爆發(fā)式發(fā)展。2014年Karen等提出VGGNet[2],使用小卷積核替代大卷積核,加深了神經(jīng)網(wǎng)絡的深度,大大提高了網(wǎng)絡的抽象能力,與同年提出的GooGLeNet[3]分別獲取了ILSVRC2014競賽的第二名和第一名。ResNet[4]依靠高效的“殘差”概念解決了深層網(wǎng)絡梯度消失的問題,將神經(jīng)網(wǎng)絡擴展至一百多層,使網(wǎng)絡表達能力得到進一步提高。2017年DenseNet[5]從卷積特征層面分析,依靠密集連接使用更少的參數(shù)量得到了更優(yōu)的效果。
雖然現(xiàn)有的文字檢測與識別算法在學術數(shù)據(jù)集上取得的較好的精度,但是車牌識別作為文字識別的一個分支,由于其特有的場景原因?qū)е铝爽F(xiàn)有算法無法在復雜場景下做到魯棒的識別,其主要原因有:車輛運動模糊、車牌傾斜、車牌區(qū)域目標過小、遮擋、光線雨雪等環(huán)境因素影響,如圖1所示。針對于現(xiàn)有的技術基礎及上述的困難,本文提出一種基于計算機視覺的復雜場景車牌識別算法,考慮到車輛的卷積特征較為穩(wěn)定而車牌特征由于光照、文字、遮擋等影響難以回歸的原因,本文將傳統(tǒng)的OCR檢測識別框架擴展為車輛檢測、車牌檢測、車牌識別三個子步驟。此外,由于中文車牌數(shù)據(jù)集的匱乏,本文從數(shù)據(jù)增強方面做了多種嘗試,并提出一種生成式數(shù)據(jù)互增強方法;為解決車牌目標檢測困難的問題,本文引入基于分割的DBnet檢測方法作為基準算法,并針對車牌場景特性對算法網(wǎng)絡結構進行優(yōu)化。
圖1 復雜場景示意圖
本文創(chuàng)新點:
1)提出一種三階段車牌識別算法模型,針對復雜的真實場景有較高的遷移性和魯棒性。
2)提出一種針對中文車牌數(shù)據(jù)匱乏的數(shù)據(jù)增強方法,通過生成式數(shù)據(jù)增強能夠?qū)χ形氖∈锌s寫及藍、綠、黃等常見顏色車牌有高精度的識別結果。
3)針對車牌識別任務車牌目標小、易旋轉(zhuǎn)的特性,選取合適的檢測識別框架,對網(wǎng)絡結構進行改進。提高模型前向推理速度及模型識別精度。
目標檢測作為計算機視覺的重要研究方向,近年來也涌現(xiàn)出一系列優(yōu)秀的工作,F(xiàn)aster R-CNN[6]通過雙階段的候選框提取和分類,表現(xiàn)出了良好的檢測效果,但是速度受限于雙階段的復雜計算;SSD[7]使用不同尺度的特征圖和不同尺度的先驗框?qū)δ繕诉M行一階段檢測,算法效率得到極大提高;CenterNet[8]拋棄使用經(jīng)典的錨點(anchor)思想,根據(jù)檢測框的一對角點得到目標位置,對Anchorfree算法進行了探索。
Yolo[9]系列算法將目標檢測問題轉(zhuǎn)化為回歸問題,端到端的得到目標的類別和位置。本文使用Yolov4作為車輛檢測基準模型,使用COCO數(shù)據(jù)集訓練。Yolov4算法總結了近年來目標檢測算法的優(yōu)化改進手段,整合到當前Yolo框架中。使用CSPDaeknet53作為主干網(wǎng)絡,使用SPP策略增加特征感受野的同時使用PANet的路徑聚合模塊。在數(shù)據(jù)增強方面,除了使用傳統(tǒng)的圖像自增強方法,還使用了Mosaic和SAT策略來解決小目標和困難樣本的挖掘問題,同時引入一系列訓練技巧以提高算法精度,最終在COCO數(shù)據(jù)集上精度得到大幅提高且運算速度達到54FPS。
DBNet[10]是一種基于分割的目標檢測算法,能夠有效應對目標傾斜問題,直接得到分割區(qū)域的最小包圍框。DBNet首先通過一個分割網(wǎng)絡得到分割結果,同時設置閾值圖預測網(wǎng)絡,得到分割結果的同時得到相同尺度的閾值圖,兩圖相結合得到二值圖像即為所需檢測目標的掩模(mask),掩模的最小包圍區(qū)域就是目標所在的位置。在網(wǎng)絡結構中使用FPN結構構建特征金字塔強化特征表達能力,得益于其有效的自適應閾值預測策略,該方法在目標邊界回歸中能夠快速檢測到目標最小包圍區(qū)域。
光學字符識別(Optical Character Recognition,OCR)能夠?qū)F(xiàn)實世界字符翻譯成機器字符,通常做法是使用文字檢測結合文字識別的方法進行,RNN循環(huán)神經(jīng)網(wǎng)絡能夠關聯(lián)前后輸入的序列信息,通過信息傳遞的方式建立前后關系,并被廣泛的應用于文字識別;2016年提出的RARE算法[11]為應對彎曲不規(guī)則文本,提出一種通過STN網(wǎng)絡學習變換參數(shù)的方法,將二維圖像的變換端到端的融合到神經(jīng)網(wǎng)絡中,有效解決不規(guī)則分布文本難以識別的問題;Liao等人[12]在2019年提出在文字識別網(wǎng)絡中結合語義分割任務,拋棄難以訓練的RNN方法,通過分割圖像來獲得每個字符的相對位置,同時引入可形變卷積提取文字不同形式的特征,取得了較好的識別效果。
CRNN[13]使用BLSTM增加了序列特征的表達性,同時引入語音識別領域ctc-loss解決文字重復問題??紤]到車牌規(guī)則四方形的原因,無需進行復雜的分割識別,所以本文車牌識別中文字識別采用CRNN作為基準算法。CRNN采用CNN、RNN、CTC結合的形式,使用VGG作為CNN的主干網(wǎng)絡,調(diào)整第三和第四個maxpooling層使之能夠?qū)⑻卣鬏斎氲絉NN中,使輸入序列與輸出序列一一對應;RNN層使用雙向LSTM(BLSTM)作為網(wǎng)絡能夠有效獲得輸入序列前向和后向信息;CTC(Connectionist Temporal Classification)將輸入序列和輸出字符對齊,同時消除重復序列得到最終文字結果。在保證識別速度的同時也能有非常高的識別精度。
譚等[14]在2016年提出一種使用SVM和BP神經(jīng)網(wǎng)絡的車牌識別系統(tǒng),能夠結合深度特征,在國內(nèi)車牌檢測中取得較好的結果;2017年高等[15]提出一種使用局部HOG特征的模版匹配識別方法,有效解決了相似字符的誤識別問題;2018年alpr[16]提出一種階段式車牌識別方法,算法能夠在多種場景中取得較高的精度,為后續(xù)的工作提供了值得借鑒的車牌識別解決方法。
本文希望提出一種通用的車牌識別算法,能夠魯棒的應對各種復雜場景下的車輛管理任務。綜合考慮到真實道路、園區(qū)等環(huán)境的因素影響,通過實驗對比發(fā)現(xiàn)傳統(tǒng)檢測加識別兩段式OCR算法,不能應對復雜環(huán)境的車牌識別任務。影響其精度的主要步驟在車牌檢測任務,主要原因在于任務場景復雜導致車牌難以做到準確回歸檢測。同時考慮到中文車牌數(shù)據(jù)量較少,難以訓練出適應性強的車牌檢測模型,同時車輛數(shù)據(jù)獲取相對較為容易,同時車輛圖像具有更易區(qū)分的紋理特征及語義特征,所以結合上述因素,本文提出一種三階段式的基于計算機視覺的復雜場景車牌識別算法,如圖2所示。
圖2 網(wǎng)絡結構示意圖
其中三個階段的網(wǎng)絡參數(shù)均采用預訓練的方式,車輛檢測使用COCO訓練的Yolov4模型,僅保留“car”、“bus”、“truck”類別的輸出圖像輸入到車牌檢測網(wǎng)絡中。車牌檢測采用數(shù)據(jù)增強的自建數(shù)據(jù)集進行訓練,采用網(wǎng)絡結構優(yōu)化后的DBNet作為基準算法,在每個車輛圖像中回歸出車牌的左上、右上、右下、左下四個角點,此處考慮到車牌正四邊形的特性,在此對車牌進行仿射變換為矩形車牌圖像,灰度化后輸入到第三階段車牌識別網(wǎng)絡中。車牌識別使用crnn,訓練數(shù)據(jù)為數(shù)據(jù)增強生成的車牌文字數(shù)據(jù)。
中文車牌公開數(shù)據(jù)較少,CCPD2019[17]是其中最具代表性的數(shù)據(jù)集,但由于其采集區(qū)域限制,其車牌數(shù)據(jù)中“皖A”數(shù)據(jù)占據(jù)較大比例,不符合本文得到一種通用模型的初衷;且其中數(shù)據(jù)均為藍色車牌,導致模型無法檢測其他車牌。因此,本文提出一種中文車牌生成式的數(shù)據(jù)增強用于車牌檢測階段及車牌識別階段的訓練。
選擇CCPD2019部分數(shù)據(jù)及收集的少量數(shù)據(jù),標注后得到統(tǒng)一數(shù)據(jù)。得到中文車牌字體及背景圖像,提取數(shù)據(jù)集中標注車牌的內(nèi)容及位置,根據(jù)內(nèi)容文字和背景圖像及字體生成正視角度車牌圖像,根據(jù)生成圖像及真實圖像對訓練cyclegan,用于生成未知文字內(nèi)容的車牌數(shù)據(jù),具體如圖3所示。
圖3 cyclegan車牌風格轉(zhuǎn)換
在車牌檢測階段除了上述cyclegan數(shù)據(jù)生成,還使用顏色空間亮度、飽和度進行隨機擾動模仿真實場景的復雜環(huán)境。除了Mosaic、旋轉(zhuǎn)、翻轉(zhuǎn)、縮放、白平衡等自增強策略外,引入mixup及cutmix兩種互增強策略,將隨機的兩張樣本按比例混合,其檢測標簽按照比例混合,同時將一部分區(qū)域裁剪掉后,隨機填充訓練集中的其他數(shù)據(jù)的區(qū)域像素值,標簽結果按一定的比例分配,其損失函數(shù)為融合圖像損失函數(shù)乘以各自的比例,如式(1)所示:
在車牌識別階段僅使用cyclegan生成的數(shù)據(jù),僅做亮度、飽和度的隨機擾動及直方圖均衡化,而不進行互增強。
本文希望通過對DBNet的改進,使車牌檢測網(wǎng)絡具有更加魯棒的檢測能力,能夠應對各種場景中車牌難以檢測的問題。通過對網(wǎng)絡結構的分析,和對相關工作的調(diào)研,本文將從特征表征能力層面對DBNet進行改進。
首先DBNet的檢測骨干網(wǎng)絡使用了Resnet,其中使用了類似FPN的結構對特征進行增強,將四個卷積層的結果上采樣融合后拼接得到輸入圖像的整體特征表達。深層特征含有較多的目標語義信息有助于分類任務,淺層特征含有較多的目標紋理信息有助于檢測任務,特征融合策略可以使算法表達能力提高,但是FPN結構對小目標車牌檢測效果較差,本文提出強化FPN的結構來幫助分割和閾值回歸任務的精度提高,具體如圖4所示。
圖4 DBNet網(wǎng)絡改進示意圖
如圖4所示,本文首先將FPN(特征金字塔)下采樣結合上采樣結構進行優(yōu)化,在現(xiàn)有的基礎上,增加一個上采樣結構,增強特征的融合性。如圖所示經(jīng)過強化的雙FPN結構可以更好的增加特征間的信息交互,使之能夠應對復雜的現(xiàn)實場景,可以在無關背景中更有效的發(fā)掘出目標車牌位置。同時在特征拼接(concat)之后,本文又使用了一個ASPP結構,使用多采樣率的空洞卷積并行采樣,進一步融合多尺度信息,同時能夠發(fā)掘用例中小目標的區(qū)域,提高算法整體的魯棒性。
與此同時,由于數(shù)據(jù)增強策略的數(shù)據(jù)擴展,在訓練過程中使用GN(Group Normalization)策略替換BN(Batch Normalization)。
1)考慮到道路環(huán)境中監(jiān)控攝像頭拍攝到車輛容易發(fā)生遮擋,為減少目標遮擋帶來的負面影響,本文使用soft NMS替換NMS。其公式表示如下:
其中表示第i個檢測框的置信度,表示第i個檢測框和最高置信度檢測框的交并比。
2)考慮到車牌目標的規(guī)則四邊形性,在車牌檢測使用仿射變換將之映射為矩形,然后輸入到后續(xù)識別模塊中,這樣可以避免識別模塊的重復檢測,而做到整體識別速度的提升,轉(zhuǎn)換效果如圖5所示。圖像中仿射變換是一種線性變換加平移,其齊次坐標矩陣表示為:
圖5 仿射變換可視化圖
本文方法使用的硬件平臺為Intel(R) Xeon(R) CPUE5-26xx v4,48GB RAM,雙Tesla T4顯卡的服務器,軟件平臺為Ubuntu16.04.4操作系統(tǒng),cuda10.0,cudnn7.6,torch 1.8.1深度學習框架,使用docker進行部署。為驗證本文算法的有效性,本文使用兩個基準數(shù)據(jù)集CCPD2019與自建真實場景數(shù)據(jù)集。CCPD2019測試集包括141981張測試圖像,其中包括基準數(shù)據(jù)集(base)、光照挑戰(zhàn)(d b)、拍攝距離挑戰(zhàn)(f n)、旋轉(zhuǎn)挑戰(zhàn)(rotate)、傾斜挑戰(zhàn)(tilt)、天氣干擾(weather)、困難樣本(challenge)7個指標,其評價標準為精確度、平均精度(AP)和FPS,其中實驗過程中檢測實驗采取IOU閾值為0.7,識別實驗采取IOU閾值為0.6。自建數(shù)據(jù)集包括實際交通中四個攝像頭采集一天的視頻數(shù)據(jù),采集天氣為陰雨天,規(guī)定早晨7:00至下午17:00為普通環(huán)境(Normal),下午17:00至次日7:00為惡劣環(huán)境(Challenge),共計通過1195輛車,評價指標為精確度。
實驗部分分為兩組,一組是通過兩個數(shù)據(jù)集與相關算法對比得到的定量結果,另一組是通過圖像可視化的方式對本文方法進行定性分析。
1)CCPD2019
在CCPD2019數(shù)據(jù)集中對車牌檢測及車牌識別算法進行了對比,結果如表1和表2所示。
表1 CCPD2019車牌檢測結果對比
表2 CCPD2019車牌識別結果對比
通過表1目標檢測實驗的結果發(fā)現(xiàn)本文提出的算法能夠在保證實時運行的情況下得到最佳的精度。其中得益于生成式數(shù)據(jù)增強策略的提出,本文在基準數(shù)據(jù)(base)及旋轉(zhuǎn)(rotate)、傾斜(tilt)數(shù)據(jù)中取得了較好的結果。由于使用車輛、車牌聯(lián)檢測,速度相較于單階段的檢測方法不占優(yōu)勢,特別是針對于yolo等one-stage的檢測方法,處理速度還是處于落后位置。同時由于本文擴展了數(shù)據(jù),以及針對小目標對車牌檢測網(wǎng)絡進行了改進,在遠距離(fn)數(shù)據(jù)集中取得了最佳的效果。但是本文在天氣(wea)及光照(db)數(shù)據(jù)集中精度落后于其他算法,考慮可能因為本文沒有使用有效的光照平衡增強策略。
通過表2車牌識別結果可以看到,本文提出的算法能夠在數(shù)據(jù)集總體精度上取得最優(yōu)水平。識別算法的精度依賴于前一階段的目標檢測精度,所以本文算法在基準數(shù)據(jù)集、旋轉(zhuǎn)、傾斜數(shù)據(jù)集中均保持最優(yōu)水平。本文識別算法在距離數(shù)據(jù)集(fn)上表現(xiàn)不如SSD算法,且整體速度偏慢,只能勉強達到實時運行水平,相比之下端到端對RPNet算法在速度上保持絕對優(yōu)勢。
2)自建數(shù)據(jù)集
本文對所收集的真實環(huán)境數(shù)據(jù)集進行了對比實驗,以驗證本文在復雜場景下的效果。數(shù)據(jù)輸入為視頻,通過標注得到車輛總量為1195輛,其車牌識別結果如表3所示。
表3 真實數(shù)據(jù)集車牌識別結果對比
通過表3結果得到本文算法在4種真實場景中精度在93.72,其中場景包括監(jiān)控攝像頭下的停車場出口,道路天橋攝像頭,園區(qū)垛口場景,攝像頭型號不固定統(tǒng)一,天氣為陰雨天氣,有路燈但沒有專門補光燈,以上原因?qū)е略谝雇憝h(huán)境中數(shù)據(jù)集存在光照和運動模糊的極大挑戰(zhàn)。實驗結果表明本文提出的算法能夠通用的在真實場景中得到較為魯棒的結果,且能較好的應對真實環(huán)境中的各種困難場景的挑戰(zhàn)。
本實驗將以可視化的方式展示本文提出方法的性能。具體如圖6、圖7所示。
圖6 CCPD可視化效果圖
圖7 真實場景可視化效果圖
通過對上述圖6、圖7結果分析,本文提出的方法對正常車牌、綠色車牌及貨車車牌具有良好的識別精度,且能在多場景下識別遠距離車牌。但是有兩個突出問題需要進一步解決,1、光照問題,本方法對暗環(huán)境下的車牌識別效果不佳,不能有效檢測識別到其中車牌內(nèi)容,需要在后續(xù)工作中提高在光照環(huán)境下的魯棒性;2、車牌字體問題,例如新能源車牌中的“6”與小型車輛車牌中的“G”在識別中容易混淆,需要找到一種更具辨別力的分類方法。
本文通過分析車牌識別場景的特性,針對檢測車牌困難的問題,提出一種基于計算機視覺的復雜場景車牌識別算法。使用三階段對檢測方法,將車輛檢測、車牌檢測、車牌識別三個步驟級聯(lián)結合,提高了車牌識別在復雜場景中識別的魯棒性。提出生成式的數(shù)據(jù)增強方式,解決了中文車牌分布單一及數(shù)據(jù)匱乏的問題。優(yōu)化車牌檢測網(wǎng)絡結構,使之能夠應對旋轉(zhuǎn)及小目標等問題。同時使用多種后處理方法,優(yōu)化提高檢測識別效果。通過學術數(shù)據(jù)集及現(xiàn)實場景數(shù)據(jù)集實驗,驗證了本方法的效果,在旋轉(zhuǎn)、小目標等問題上的精確性。在真實場景的實驗中相較于基準算法,改進后的模型也有著較高的識別精度,綜合識別精確度達到了93.72%,且能在GPU環(huán)境下以27FPS的速度實時運行,基本能夠滿足復雜場景的實際應用。但是在實驗中發(fā)現(xiàn),本方法對光照和車牌間的字體差異不敏感,需要在后續(xù)的工作中嘗試使用帶有光照平衡的數(shù)據(jù)增強方式及更具判別力的分類模型。