蔡先治,王 棟,魯旭葆,苗澤宇
(山東科技大學測繪與空間信息學院,山東 青島 266590)
車牌識別系統(tǒng)是智能交通和智慧停車不可或缺的重要一環(huán),在萬物互聯(lián)的時代對于車輛信息的管理和車輛位置的規(guī)劃都起著非常重要的作用。車牌識別算法按照流程可分為對圖像中車牌邊框進行定位,對定位的車牌進行字符識別兩部分。
車牌定位算法,即通過車牌的某些特征來獲取車牌的位置信息。傳統(tǒng)定位的方法有利用顏色信息[1]、形態(tài)學特征[2]、邊緣檢測[3]等方法,對車牌進行定位?;陬伾畔⒌能嚺贫ㄎ?,利用車牌和字符的顏色特征實現(xiàn)定位,該方法易受到光照和背景顏色的影響。基于邊緣檢測的定位,主要利用車牌的輪廓特征進行車牌定位,對于傾角較大的車牌圖像定位效果不佳。傳統(tǒng)的車牌定位方法,步驟繁瑣、定位的精度低,需要利用新技術(shù)改進和提升。
近些年隨著深度學習的發(fā)展,基于深度學習的車牌定位算法成為當下的主流。車牌定位算法可分為單階段和雙階段兩類。單階段如Yolo系列,該類算法在獲取候選框的時候同時得到位置信息和分類信息,該類算法具有速度快準確率高的特點。雙階段的算法,出現(xiàn)了像SSD[4]、Faster-Rcnn[5]這類算法,這類算法分兩個步驟,先獲取車牌的候選框,并不斷對候選框的位置進行修正,再對物體分類,雙階段算法相比于單階段算法準確率更高,可時間成本更大。
車牌識別算法可分為字符分割和無分割兩種類型,傳統(tǒng)的車牌識別方法多采用字符分割算法,再利用光學字符識別(Optical Character Recognition)對字符識別,常用算法有模模板匹配算法[6]、支持向量機[7]、ANN[8]等對字符進行識別,可這類方法步驟較多,容易逐步積累誤差,造成識別準確率下降。隨著循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的提出和發(fā)展,其對語音和文本的較好的識別能力,使得無分割車牌識別算法成為當前的主流算法,文獻[9]利用BGRU 序列識別模型實現(xiàn)無分割的字符進行識別,文獻[10]提出LPRNet 網(wǎng)絡(luò)利用輕量化的卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)無分割車牌識別,識別準確率達到95%,可該算法中文數(shù)據(jù)集不均衡對中文識別能力較弱。
基于車牌識別在檢測速度、模型的大小、可靠性等問題,本文以Yolov5 的端--端車牌識別方法為框架,通過在主干網(wǎng)絡(luò)中加入EPSA 注意力模塊、引入損失函數(shù)α-CIoU、增加檢測尺度,再利用CRNN 字符識別模型實現(xiàn)端--端的車牌識別。同時采取車牌模擬的方法以應(yīng)對中文數(shù)據(jù)集不足的特點,均衡各個省份車牌的數(shù)據(jù)集,達到數(shù)據(jù)增強的目的,提高中文字符識別能力。
Yolo 系列的算法,其特點是將目標檢測算法轉(zhuǎn)換成回歸問題,可以快速的識別目標。目前已經(jīng)推出了多個版本,如Yolov3、Yolov4。UitralyticsLLC 公司為了進一步這類算法提高檢測精度和速度,推出了Yolov5 目標檢測網(wǎng)絡(luò),相比于之前的算法無論是檢測速度、精度、模型大小都有著不同程度提高。Yolov5按照網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜度可分為Yolov5s、Yolov5m、Yolov5l 等版本,大小依次遞增,本文考慮了模型的運行速度對程序的影響,以復(fù)雜度最小的Yolov5s 作為車牌定位的框架。
Yolov5s網(wǎng)絡(luò)結(jié)構(gòu)如圖1,主要由BackBone、Neck、Head 等部分組成。Backbone 是特征提取網(wǎng)絡(luò),由Focus、csp 等結(jié)構(gòu)組成。Focus 即為切片操作,通過擴大通道數(shù)量,再進行卷積實現(xiàn)下采樣,在不提高模型計算量的前提下,保留更多圖像信息。Yolov5s 將csp結(jié)構(gòu)應(yīng)用在Backbone 中,csp1 對信息進行提取,csp2負責信息的特征融合。Neck 結(jié)構(gòu)是由FPN[11]特征金字塔和PAN 路徑聚合結(jié)構(gòu)所組成,F(xiàn)PN 是由上而下傳遞語義信息,PAN 是由下而上傳遞圖像的位置信息,Neck 結(jié)構(gòu)整合了上述兩種結(jié)構(gòu),促進了主干網(wǎng)絡(luò)中不同尺寸網(wǎng)絡(luò)信息的融合。Head 即目標檢測部分,主要用來檢測不同尺寸圖像,不同大小的Head頭部負責檢測大、中、小不同尺寸的物體。可由于Yolov5s 的設(shè)計主要是在中、大尺寸物體的檢測,小尺寸物體由于分辨率低、圖像信息不豐富,因此識別率較低,Yolov5 在這方面有著一定的改進空間。
圖1 Yolov5結(jié)構(gòu)圖
Yolov5s 對于小尺寸物體的識別能力不能滿足實際應(yīng)用的需要,而在深度學習領(lǐng)域,通過加入注意力機制可以有效提高深度卷積網(wǎng)絡(luò)的性能??紤]到EPSANet[12]結(jié)構(gòu)可以有效的獲取多尺度的圖像信息,能夠凸顯小目標物體的權(quán)重信息,提高小尺寸物體的檢測準確率,并且模型的參數(shù)小,輕量化。這里將在Yolov5s 主干網(wǎng)絡(luò)中加入EPSANet 注意力模塊,以提取更細粒度信息,提高多尺度信息的表達能力,抑制圖像中無關(guān)信息的影響,強調(diào)車牌特征的表達,達到對車牌精確定位的目的。
EPSANet 模塊具體可以分為以下幾個流程,如圖2所示,將輸入的特征圖送入到SPC模塊中去,然后將其送入到SE[13]權(quán)重模塊中,得到每個部分相應(yīng)的權(quán)重,利用Softmax 對權(quán)重值進行歸一化處理,使權(quán)重值映射到[0,1]區(qū)間。再將所得到的參數(shù)和分割的部分進行點乘運算,輸出得到特征圖再將各個特征圖將其拼接起來。
圖2 EPSA結(jié)構(gòu)圖
Yolov5s 目標檢測網(wǎng)絡(luò)采用8×8、16×16、32×32倍下采樣來檢測不同大小的物體,對于以608×608大小的車牌為例,若車牌的寬度小于8 的像素點。網(wǎng)絡(luò)很難學習到特征信息。另外小尺寸的物體分辨率低,信息量少,若對其進行復(fù)雜的卷積、下采樣運算,容易造成信息的丟失,小尺寸目標更依賴淺層的圖像信息。綜合以上幾點,本文將在原有的三個檢測尺寸的基礎(chǔ)上,將在淺層附近再增加一個檢測尺寸,在主干網(wǎng)絡(luò)淺層部分整合更多高分辨率的圖像信息,以提高Yolov5s對小尺寸車牌的檢測能力。
Yolov5s原本的檢測框損失函數(shù),使用的是GIoU[14],其公式為:
其中,IoU 為預(yù)測框(PB)與真實框(GT)的交并比,Ac為能夠?qū)㈩A(yù)測框和真實框同時包含在內(nèi)的最小的矩形,U 表示預(yù)測框和真實框的并集。GIoU 是從PB 和GT之間重合的面積來考慮,可以改善IoU 在PB 和GT 不相交時,梯度不能傳遞的情況。當PB 和GT 之間的相互包含的時候,由公式⑴、⑵可知GIoU 退化成IoU,會弱化實驗結(jié)果。
本文在CIoU 的基礎(chǔ)上結(jié)合結(jié)合α-IoU的特點,提出可調(diào)節(jié)邊框檢測損失函數(shù)α-CIoU。α-CIoU的定義如下:
其中b、bgt表示預(yù)測框和真實框的中心點,ρ 表示采用歐式距離計算兩點之間距離。C表示同時包含預(yù)測框和真實框的最小矩形的對角線長,β 為權(quán)重參數(shù),ν是用來衡量長寬比的相似性。α為該函數(shù)的調(diào)節(jié)參數(shù),α可以取不同的值,實現(xiàn)不同的邊框檢測效果,該改進可以進一步挖掘原來目標檢測框的能力,并且針對不同的數(shù)據(jù)集,找出其相對最優(yōu)的α值,使其目標檢測的效果達到最佳。
為了避免車牌分割造成字符被錯分漏分,影響最后的識別結(jié)果,本文利用RNN 的改進方法CRNN[15]算法實現(xiàn)無分割車牌字符識別。
對于語音識別和文字識別,通常采用RNN,可RNN 在訓練過程容易出現(xiàn)這梯度消失的問題,容易導(dǎo)致訓練中斷無法繼續(xù)學習更深層等內(nèi)容,只對相鄰的序列有較好記憶功能,因此難以滿足對于較長文本的序列識別。BLSTM[16,17](Bi-directional Long Shortterm memory)是RNN 的一種改進版本,能夠?qū)W習到文本中較長的依賴信息,可以在一定程度上解決RNN梯度消失的問題,BLSTM主要通過門的結(jié)構(gòu)選擇性的讓信息通過,過濾掉不重要的信息,實現(xiàn)信息的添加和移除,同時BLSTM 采用雙向結(jié)構(gòu),即可同時利用序列的前向信息、后向信息能夠更有助于序列的預(yù)測,得到更準確的結(jié)果。
其原理如圖3 所示,首先利用車牌定位將車牌分割出來,再將分割的車牌送入到CRNN 網(wǎng)絡(luò)中。具體流程圖如下,利用卷積和池化層提取圖像的特征圖,將特征圖按照寬度劃分成26個小特征圖,再利用雙層BLSTM對這些小特征圖的結(jié)果逐一預(yù)測,每一部分的特征圖都對應(yīng)圖像的對應(yīng)分割序列的感受野。再利用中文名CTC(Connectionist Temporal Classification)對BLSTM 的輸出結(jié)果進行解碼,得到每個車牌的字符,獲取車牌的識別結(jié)果。
圖3 車牌識別網(wǎng)絡(luò)
本文的數(shù)據(jù)集采用了網(wǎng)絡(luò)上公開的CCPD 數(shù)據(jù)集,部分停車場數(shù)據(jù)集和自采車牌圖片,共收集到10628 張車牌圖像。在實際的識別過程中,車牌邊框在圖像中分布的位置、所占的整個圖像的比例,影響著最后的識別結(jié)果。如圖4(a)為目標框的中心點在圖中的分布概率,圖4(b)為樣本邊框與圖片的長、寬比。由目標的空間、大小分布看,目標框由頂部至中間部分,依次增大,底部數(shù)據(jù)量較少,且小目標車牌的數(shù)據(jù)量較大。
圖4 車牌目標框的分布信息
訓練車牌識別網(wǎng)絡(luò),若以一萬張的車牌數(shù)據(jù)集為例子,由于字母和數(shù)字可以在一張車牌中重復(fù)出現(xiàn),可在CRNN 網(wǎng)絡(luò)中多次訓練,而每張車牌只有一個中文字符,因此對于一萬張樣本的車牌數(shù)據(jù)集平均每個字符只有300 多個中文數(shù)據(jù)樣本,這對于中文字符復(fù)雜的結(jié)構(gòu)來說,較少數(shù)據(jù)量無法滿足復(fù)雜的應(yīng)用場景,這也造成了中文字符無法被有效的識別出來,無法滿足實際訓練的需要。另外,有些偏遠的省份,車牌圖像的收集難度較大,因此難以做到中文數(shù)據(jù)集均衡的狀況。因此,本文將采用車牌圖像仿真的方法,通過模擬在多霧、傾斜、灰度變化等情況下的車牌,達到數(shù)據(jù)集增強效果,其模擬的效果接近真實車牌,圖5為部分仿真車牌圖片。
圖5 模擬車牌
4.2.1 實驗平臺搭建及其準備
本文的所有實驗環(huán)境是Window64 位操作系統(tǒng)系統(tǒng)下搭建的,電腦的16GB 運行內(nèi)存,顯卡采用NVIDIA GeForce RTX 3060 Laptop GPU,6GB,在pytorch torch 1.8.1+cuda11.1 平臺下實現(xiàn)模型的搭建和訓練工作。
訓練信息如下,輸入圖像為640×640,對數(shù)據(jù)集按照9:1 的比例劃分出訓練集和測試集,學習率設(shè)置為0.001,批次大小設(shè)置為12,迭代次數(shù)設(shè)置為120次。
本文通過查看每個迭代下的平均檢測精度(Average precision)的變化來比較模型的優(yōu)劣,通過FPS(每一秒鐘檢測的圖片的數(shù)量)來衡量模型的檢測效率。
4.2.2 消融實驗及對比
為了比較做出改進的每一部分對于車牌定位的具體影響,本文采用消融實驗,分析每一部分對于車牌實際效果的貢獻率,通過AP、FPS 的值,分析出模型的效果。通過對比的每一部分若使用該部分內(nèi)容則用“?”,若是未采用則用“?”符號來表示。具體結(jié)構(gòu)見表1。
表1 Yolov5消融實驗
由表1的消融實驗可知,EPSA 對檢測結(jié)果的提升較為明顯,AP值有著一定程度的提高,EPSA注意力機制可以有效地抑制背景加強目標信息的表達,使其對小目標特征提取能力得到提升,由于增加了網(wǎng)絡(luò)的復(fù)雜度,相應(yīng)的降低了識別速度;通過加入多尺度,能夠有效提高網(wǎng)絡(luò)的檢測性能,相比之前的網(wǎng)絡(luò)準確率提高了2.4%,使得之前在網(wǎng)絡(luò)中被篩掉的小目標車牌,被檢測出來。而改進的邊框損失函數(shù)α-CIoU可以在一定程度上改善網(wǎng)絡(luò)的性能,提高網(wǎng)絡(luò)的定位精度,提高了0.6%的定位精度。由上述對比實驗可知的結(jié)果可知,使用本文的改進后的方法可以有效的改善車牌的識別能力,抑制背景特征。
4.2.3 不同模型識別性能的對比
本文利用經(jīng)典的網(wǎng)絡(luò)模型如SSD、Faster-Rcnn、Yolov3、Yolov4、Yolov5做對比實驗。
由表2的信息可知,本文方法的檢測查準率、查全率都有著一定的提升,另外相比其他目標檢測模型,本文的檢測速度并不遜色。從權(quán)重模型的大小上看,本文的權(quán)重模型的大小是Yolov4 的1/3,是Faster-Rcnn 模型的1/22,權(quán)重模型占用內(nèi)存空間較小,對移動端友好,降低了設(shè)備的運算量,提高了效率,可以方便的部署到移動端。改進后的方法與Yolov5相比,精度提高了4.6%,盡管檢測速度卻有所下降,可改進后的方法仍優(yōu)于其他目標檢測模型,能夠滿足實際應(yīng)用的需要。
表2 主流檢測網(wǎng)絡(luò)性能對比
本文對車牌識別模型中共使用了18628 張車牌圖片,其中采集的車牌10628 張,仿真的車牌8000 張,仿真的車牌主要是為了彌補數(shù)據(jù)集對于一些偏遠省份數(shù)據(jù)量過小的影響。訓練的批次大小設(shè)為12,設(shè)置為30 個訓練周期,學習率設(shè)置為0.001,訓練的框架為pytorch。本文從loss 和識別的準確率(accuracy)兩個方面來衡量模型的效果。
由圖6的訓練的結(jié)果可知使用CRNN 模型的收斂速度較快,精度較高,識別準確率為96.5%,實際訓練的模型的大小為7.1MB,對移動端友好。另外從圖7的實際車牌檢測效果看,本文的車牌識別算法對于車牌在遮擋、模糊、傾斜、灰暗條件下的車牌圖像均有著較為好的識別效果,能夠滿足在各種天氣、角度、昏暗條件的實際車牌識別需要。
圖6 字符訓練結(jié)果
圖7 改進算法后的車牌識別結(jié)果
本文研究以Yolov5s 為框架端——端的車牌識別方法,通過加入EPSA 注意力機制,增加多尺度檢測框可以有效的提高小尺寸車牌的檢測能力,增強車牌在復(fù)雜背景的識別能力,另外引入的α-CIoU 檢測框損失函數(shù),提高其預(yù)測框結(jié)的精度。在車牌識別階段,利用CRNN實現(xiàn)無分割的車牌識別也能達到較高的準確率,并通過車牌模擬的方法,實現(xiàn)中文數(shù)據(jù)增強,提高中文字符識別的準確率。實驗表明本文的車牌定位準確率達到98.8%,識別準確率達到96.5%,且能夠適應(yīng)復(fù)雜條件下的車牌識別的要求。