王 昊,陳 黎
(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.武漢科技大學 湖北省智能信息處理與實時工業系統重點實驗室,湖北 武漢430065)
目前主流的車牌識別模型大多采用CNN+RNN+CTC模式,該方法雖然相比傳統字符分割與模板匹配的方式在識別精度上有很大的提升,但是仍有兩大問題未得到有效的解決。首先,由于識別系統部署環境的差異,采集到的車牌圖像受拍攝角度影響,車牌成像會發生旋轉和傾斜的情況。如圖1所示。當此類圖像的特征序列串行輸入RNN時,會從兩方面對識別結果造成影響:針對單個字符,原本是正常的字符特征發生了改變,加大了模型學習的難度;針對整個車牌圖像,輸入到RNN模型的特征序列在某一時刻會出現上下字符重疊情況,導致特征與標簽混亂,網絡無法正確學習單個字符特征,最終模型的識別精度降低。對此,有人采用矯正網絡,試圖對發生形變的文字進行矯正,然后識別矯正結果。利用該方法后識別精度確實有所提升,但模型最終的識別結果過于依賴矯正模塊的性能,且由于該模塊的加入,在推理階段模型整體的識別效率降低。

圖1 傾斜旋轉車牌示例
其次,在面臨掛車雙行車牌時,如圖2所示。當圖像的特征序列串行輸入到RNN模型中,在某一時刻輸入的特征向量會包含原圖中上下兩個字符的特征,模型根據整體車牌標簽無法判斷上下兩個字符特征對應的字符標簽。所以僅單純使用識別網絡很難正確識別此類車牌。針對該問題,傳統方法采用檢測加識別的模式:檢測模塊負責預測出車牌單行文本區域,將多行文本識別問題轉為單行文本識別問題,降低識別難度。雖然此方法能解決雙行車牌識別問題,但由于加入了檢測模型,降低了識別的推理速度,同時識別精度的高低十分依賴檢測模型的性能。

圖2 雙行車牌示例
早先車牌識別技術將識別過程分為字符分割與模板匹配兩個子任務,先將車牌字符與背景區域分離,然后計算單個字符與標準模板庫中字符的相似度,取相似度最大作為字符識別結果。常用的方法是采用水平投影算法分離出每一行的車牌區域,再使用垂直投影算法將每行的字符分割。例如Zhang等[1]利用形態學算法定位車牌區域,然后使用基于垂直投影法進行車牌字符分割。馬永杰等[2]利用自適應投影技術,分割雙行車牌的字符,但此類方式僅針對規則車牌。面對車牌旋轉傾斜情況,一般采用對檢測到的字符進行直線擬合,根據擬合線的傾斜度和位置進行矯正,到達識別旋轉車牌的效果。除了模式匹配,有學者利用機器學習對字符進行分類,例如利用最大穩定極值區域(maximally stable extrernal regions,MSER)或者特定字符的極值區域分割字符,再使用隱馬爾可夫模型(hidden Markov model,HMM)對字符進行識別。Khan等[3]結合圖像的梯度直方圖和幾何特征,使用支持向量機(support vector machines,SVM)對字符進行分類。然而基于分割的方式最后的識別結果在很大程度上依賴于分割效果的好壞,在面對噪聲較多的時候,分割效果不理想。
隨著深度學習技術的發展,基于神經網絡的無分割的車牌識別算法開始出現。Yang等[4]利用CNN學習字符特征,并結合極限學習機對字符進行分類。Sharma等引入空間轉換網絡(spatial transform network,STN),并結合CNN,對一串車牌字符序列進行識別。S Zherzdev等[5]提出LPRNet模型,首次使用純卷積操作對車牌識別。王昆等[6]利用YOLO變形空間理念,對車牌進行矯正,并使用OCR光學字符識別方法識別車牌,即使對發生了形變的車牌也能識別。Xu等[7]構建了深度卷積網絡,實現了對車牌檢測以及識別端到端的過程,同時公開了一份全面的中國車牌數據集CCPD。考慮到中國車牌序列之間的獨有特征,有人開始引入RNN網絡學習字符序列之間的特定聯系,降低識別出錯的概率。例如Liu等[8]引入RNN進行車牌識別,并規范了識別結果,提升識別精度。文獻[9,10]分別使用長短期記憶網絡(long short-term memory,LSTM),雙向循環神經網絡(bidirectional RNN,BRNN)學習車牌特征,加強相鄰字符之間的關系,避免由分割引起的誤差。
注意力機制的任務是從眾多信息中選擇與當前目標影響最大的信息,在NLP領域常用于機器翻譯[11],文本分類[12]、智能對話[13]等任務。近年來,注意力機制在圖像領域已取得較大的成果[14,15],Zhu等[16]結合CNN與注意力機制用于目標檢測,Liu等[17]提出移位窗口,將注意力計算限制在不重疊的局部窗口的同時,來降低計算量。Beyer等[18]則完全舍棄卷積操作,將NLP領域中的Transformer完整的引入到視覺領域。然而注意力機制需要對輸入特征并行計算,所需計算量十分龐大,不適于一般的圖像任務。車牌圖像分辨率較小,相比較其它圖像任務在并行計算相關性時所需計算資源少,因此引入注意力機制進行特殊車牌識別。
網絡結構如圖3所示,模型利用深度殘差網絡提取圖像深層特征,并使用特征金字塔網絡(feature pyramid networks,FPN)將深層特征與淺層特征進行融合,得到同時含有豐富位置信息與語義信息的融合特征。然后將多維的融合特征轉化為一維特征序列;同時初始化與特征序列同尺寸的字符特征位置信息,與圖像特征序列相加,將其結果作為多頭注意力模塊的輸入。利用多頭注意力機制解析圖像中字符之間的相關性,最后使用基于先驗概率的交叉熵函數計算損失,將該損失反向傳遞優化模型參數,減少相似字符的識別出錯的概率。

圖3 本文方法流程
模型的骨干網絡采用深度殘差網絡結構獲取車牌圖像的特征。該網絡通過殘差結構構造了深度網絡,有效解決梯度消失的問題。本文的主干網絡采用ResNet50,ResNet50從淺到深的提取圖像多尺度特征,經過多層卷積操作的深層特征含有更豐富的語義信息,但是同樣丟失淺層的位置特征,對細節感知能力變差,考慮到車牌圖像分辨率較小,僅利用深層特征識別精度不高。因此使用FPN網絡融合提取的多尺度特征。FPN采用自上而下與橫向連接的結構,融合淺層位置信息和深層語義信息,形成信息更豐富的特征圖。
但是在實際應用過程中,采集到車牌圖像的分辨率往往非常低,直接輸入骨干網絡提取特征后,對原圖進行32倍下采樣,最終得到特征圖所含信息十分有限,模型可學習的有效特征大大減少,從而影響最終的識別精度,因此,在本文中對殘差網絡采取了以下兩種優化方式。
(1)舍棄池化層。ResNet50中使用最大池化層(MaxPool),選取當前特征的全局顯著特征,加快模型訓練效率;在處理分辨率較大的圖像時,此類方式十分有效。但是考慮到車牌的原始分辨率偏低,可利用的特征信息有限,因此取消最大池化操作。
(2)優化殘差塊的卷積參數。由淺到深定義ResNet50中4塊殘差塊分別為Layer1,Layer2,Layer3,Layer4,經過各層殘差塊得到的特征分別為C1,C2,C3,C4。分別使用步長為(2,1),2,1,1對圖像進行下采樣,見表1。

表1 網絡參數優化

融合之后的統一通道數,在本文中,h為64,w為192,c0為3,融合后的通道數c1為768。

但是對于傾斜旋轉的車牌,提取到的特征向量中字符特征發生了形變,特別是對于雙行車牌,分析其某一列的特征圖向量,在該特征向量中不僅包含了原始車牌中第一行和第二行的某兩個字符,例如圖4中的‘鄂’與‘1’字符,同時由于車牌傾斜旋轉導致在某一列的特征向量中會混入其它字符的特征,而CRNN的輸入具有時序性,需要依靠特征序列輸入網絡的先后關系來判斷字符在原圖中的相對位置,從而確定與標簽對應的關系,因此在面對雙行車牌時,無法知曉在單個特征向量中上下兩個特征與原始字符對應的關系。

圖4 CRNN特征序列化


圖5 本文特征序列化
雖然RNN在訓練過程可以學習特征之間的聯系,但是無法突出圖中關鍵信息的重要性,并且因為其結構導致特征需串行輸入,這樣模型僅能學習到局部特征。而注意力機制通過模仿人類的學習方式,從眾多信息中選擇對當前任務更重要的信息,然后對該信息投入更多的注意力。引入注意力機制,同時利用全局特征的關聯信息可以有效彌補深度神經網絡獲取局部特征的不足,減少了對外部信息的依賴。而多頭注意力機制采用多組Q,K,V的權重矩陣,將輸入的特征嵌入映射到多組子空間中,更進一步細化了注意力層。
本實驗中采用自注意力層與注意力層雙層結構。定義模型最終輸出的字符長度為m,從標準正態分布N(0,1) 中隨機取值,生成m個字符的d維隸屬度向量構成的概率矩陣作為待識別字符序列,同時初始化等尺寸的矩陣作為位置編碼,與待識別字符序列作為第一層多頭自注意力層的輸入,計算待識別字符之間的相關性,其結果作為第二層多頭注意力機制的值向量V。由骨干網絡得到的特征序列f及其位置編碼p相加,作為第二層注意力層的查詢向量Q及鍵向量K,一起輸入,計算特征序列與待識別字符向量之間的相關性。
其中,多頭注意力計算過程如圖6所示,將Q、K和V矩陣分別乘以各自權重矩陣,如式(1)所示

圖6 多頭注意力機制
(1)

(2)

將z個并行頭的計算結果進行拼接,并將拼接的結果經過包含兩層全連接層的前饋網絡(feed forward network),對輸出與輸出殘差連接(Residual Shortcut),并進行層歸一化(layer normalization)得到最終的輸出,最終的輸出如式(3)所示
Output=flayernorm(flinear(St)+St)
(3)
其中,St代表多頭注意力將多個并行頭的輸出拼接結果,flinear()表示全連接操作,將原本特征的通道維度映射到更高維度,增加了模型參數量,加強了模型的表達能力。由于需要利用多層注意力循環計算,模型較深,為防止梯度消失,加入殘差結構。flayernorm()是為了防止梯度消失,加入層歸一化的目的是為了使得模型更容易訓練。其中
flinear(x)=(σ(x·W1+B1)·W2+B2)
(4)
此操作全連接層包含了兩次線性映射,W1,W2代表模型的可學習參數,σ代表非線性激活函數。
在LSTM、RNN等模型中,會有模型的輸出與標簽的長度不一致的情況,針對此類情況通常采用CTC Loss計算損失。
但是在本文的模型中,模型的輸出尺寸與標簽是等長的,所以損失函數采用交叉熵函數。此外,考慮到識別過程中,例如0與6、1與T等相近字符容易識別出錯,在為降低識別過程將相近字符識別出錯的概率,加大其權重,增加此類字符loss的比重,使模型增大對此類特征的注意力,具體的優化損失函數如式(5)所示
(5)
其中,βi代表第i個字符的權重,針對易識別出錯的字符,加大其權重,降低相似字符識別錯的概率。ti,yi分別代表模型識別車牌字符標簽,以及模型預測字符的概率,C為字符類別數。
本實驗模型訓練使用的硬件平臺為Intel(R)Core(TM)i3-10100CPU@3.60 GHZ,GeForceRTX3070 8 G GPU;軟件平臺使用Windows10操作系統,Python3.7編程語言開發,Pytorch1.9.0深度學習框架。
為了驗證模型的有效性,本文從以下兩個實驗進行驗證:
(1)與傳統分割-識別模型對比雙行車牌模型的識別精度。
(2)與現有的文字識別模型對比單行旋轉傾斜車牌場景下的識別精度。
對于實驗(1),采用仿真數據集TLP,該數據集由本文提出,且均為掛車車牌圖像。數據標簽包含了車牌單個字符的目標框、單行字符的目標框、車牌圖像對應的中文字符序列。其中訓練樣本10 000張,測試樣本1000張,部分樣本如圖7所示。

圖7 TLP數據集仿真圖片
對于實驗(2),采用CCPD公開數據集。選擇CCPD中的Base(正常車牌)、Blur(大面積模糊)、Challenge(難以識別車牌)、DB(車牌區域過于過明或過暗)、FN(拍攝過遠或過近)、Rotate(車牌發生輕微水平傾斜)、Tilt(車牌發生嚴重水平或垂直傾斜)、Weather(車牌被雨雪霧等天氣影響)8個子集。
訓練過程中,將每個子集中的圖片等量分為訓練集、驗證集。首先在Base的訓練集上進行預訓練,之后混合訓練其它訓練集。
在訓練參數方面圖片的輸入尺寸為192*64,batch size為32,初始學習率為0.0001。在模型結構方面,模型最大預測字符類別數為68,最大預測字符長度為10,多頭注意力模塊中的前饋網絡維度為768,多頭注意力層中 的head數為12,共12層。
此外,為增強模型的魯棒性,在訓練過程中使用了如下數據增強:圖像模糊,包括對車牌圖像使用中值模糊、高斯模糊以及對圖片添加高斯噪聲。仿射變換,其中包含隨機對輸入的車牌圖像進行水平旋轉10°至15°,隨機對圖像按原比例進行放縮。
為評價模型整體性能,本實驗測試指標采用準確率(Accuracy)其中準確率ACC公式如下
(6)
其中,Si表示第i個測試圖像的識別結果,S′i表示第i個測試圖像的真實標簽,判斷兩者是否相等,如果相等,結果為1,否則為0,其中N表示測試樣本的總數。
在本實驗中,首先采用CRNN模型進行訓練,在訓練過程,出現了loss無法收斂的情況,從而間接的驗證了傳統車牌識別模型無法識別雙行特殊車牌。
對此,本文設計了另一組對比實驗,該實驗采用檢測加識別模式。其中檢測模型采用了DBNet[19],該網絡利用分割的方法在像素層面對圖像進行預測,在面對水平、傾斜、彎曲文本時,也有很好的表現。在識別方面繼續沿用了CRNN模型。
實驗結果見表2,在TLP集上,本文方法相較于分割加識別模式的識別精度提升了6.37%。分析其原因,如圖8所示,在檢測模塊中,部分預測框無法完全包圍字符區域或者預測框丟失,出現了部分關鍵特征丟失的情況,所以在識別模塊無法準確識別。而本文的方法在識別此類車牌時,是一種端到端的無分割方法,在精度上,避免了檢測不準而導致特征丟失。在模型推理速度上,本文模型較DB+CRNN方式快至6.5倍,分析其原因,本文方法采用并行方式預測文字,即使單獨與CRNN模型串行預測結果對比(詳情請見3.4),在速度上也占有優勢。而對比實驗由于DB的后處理需要根據模型預測出的二值圖來分割出對應的預測框,耗時較大,再加上CRNN模型其結構特點,導致了該方式速度偏低。

表2 雙行車牌的對比實驗

圖8 雙行車牌識別對比
在本實驗中,對比模型除了采用CRNN外,另外加入了近年來表現優異的文字識別模型ASTER[20]、DAN[21]。其中ASTER采用了STN模塊,通過對原始圖片進行仿射變化,達到對形變的文字進行矯正的效果。
實驗結果見表3,與CRNN模型對比,本文方法在各個數據集的表現都優于該模型,特別是在特殊車牌Tilt、Rotate集上,分別高出32.89%、15.72%。DAN模型模型推理速度最快,這得益于其提出的深度無序模型,但是在精度上偏低。ASTER模型在各個數據集上本文方法與本文方法相近,但是在模型推理速度上偏低。這是由于STN結構的引入,在矯正圖片的同時降低了預測的時間。各個模型部分識別結果如圖9所示。從圖中可以看出使用CRNN模型識別單行車牌時,除了部分字符識別出錯的情況外,還有識別結果與標簽的長度不一致,此類情況是由于使用CTCLoss計算損失而引起的。在面對兩個相鄰同樣的字符、或者文本過長時,RNN網絡輸出了少部分的冗余信息,模型無法有效合并或者去除。而DAN、ASTER出錯的情況基本為模型預測錯誤。

表3 在CCPD數據集上各模型的ACC結果

圖9 各模型對比結果
在同樣的訓練環境下,本文設計了Exp1,Exp2兩個消融實驗,分別驗證特征提取網絡優化以及本文特征序列化對模型的影響。實驗結果見表4,其中,Exp1在各個數據集上的識別精度有明顯的下降,說明特征提取網絡的優化是有利于提取低分率車牌圖像的特征。Exp2在Tilt、Rotate、FN、DB、Challenge此類困難車牌上的表現較Baseline偏低,但是正常車牌的Base、Weather差別不大,甚至有所提高。分析認為主要是采用了平均池化的方式,字符特征之間的排列方式與原始輸入一致,與其位置向量是一一對應的關系,因此位置向量在模型訓練過程中影響降低,模型更好的將注意力放在了學習字符的特征,所以在面對普通車牌表現良好。而采用本文的序列化方式,輸入的特征的相對位置已經發生了變化,模型需要通過特征的位置向量確定字符在原圖中的相對位置,因此模型的注意力對字符特征降低,從而驗證了本文特征序列化的方法在面對此類圖片的影響。

表4 消融實驗
本文聚焦于特殊車牌識別,尤其是雙行掛車車牌以及車牌發生傾斜,旋轉場景,提出了一種基于深度殘差網絡與注意力機制的模型,該模型優化深度殘差網絡結構提取車牌特征,在面對低分辨率的車牌圖像時也能有效提取特征。同時并引入注意力機制進行文字識別,利用平均池化將多維圖像特征將其變為特征序列,并額外增加特征的位置信息,與特征序列相加并行輸入注意力模塊解碼。最后采用基于先驗概率的交叉熵函數計算損失,降低相近字符識別出錯的概率。對比現有車牌識別模型,直接端到端的識別雙行車牌,無需采用先檢測后識別的模式;且由于文本模型并行輸入的特點,在推理速度上大大提升,有效識別傾斜旋轉、雙行此類特殊車牌;對比傳統文字識別方法CRNN,以及近年優異的場景文字識別模型ASTER、DAN,在公開數據集上CCPD中取得了更好的表現,驗證了本文模型的有效性。
但是該模型需要并行計算特征間的相關性,所需計算資源十分龐大,所以目前僅適用于車牌此類分辨率小的文字圖像識別場景。未來的工作將嘗試使用該方法識別自然場景下的長文本,擴大模型的應用范圍。