郝達慧,王池社,陳敏
(1.安徽理工大學,計算機科學與工程學院,淮南232001;2.金陵科技學院,網絡與通信工程學院,南京211000;3.江蘇省人工智能交通創新應用工程研究中心,南京211000)
隨著社會經濟的飛速發展,汽車的數量也在大幅度增長。汽車在給人們帶來便利的同時,也帶來了很多安全隱患,如交通事故頻發、車輛違規等問題。車牌定位與識別是計算機視覺與模式識別技術在智能交通領域應用的重要研究課題之一[1],在車輛管理方面有著較為廣泛的應用,如出入控制、違章監控、違法車輛跟蹤等[2]。早期的車牌識別算法大多都是基于機器學習算法進行研究,使用手工選取的特征對車牌進行定位與識別。近年來,隨著大數據時代的到來和計算機算力的提升,深度學習在車牌識別方向取得了重大突破,Faster R-CNN[3]、YOLO[4]等深度學習算法的提出使得車牌的定位與識別得到了新的發展。現有的車牌識別技術主要應用于特定的環境,如收費停車場出入口、高速公路ETC通道等。在這種檢測區域固定、光照良好的環境下,車牌識別技術的準確率可以達到很高,但是在復雜的場景下識別效果較差。本文針對光照不均、天氣異常等場景下的車牌識別,提出了基于無分割的車牌識別算法,基于YOLOv5對車牌進行定位并設計了端到端的字符識別網絡(LP?CRNet)對車牌字符進行識別。
車牌識別算法可以分為車牌檢測和字符識別兩個部分,車牌檢測是為了定位車牌在圖片中的具體位置,字符識別用于對檢測出來的車牌區域的字符進行識別,最終得出圖片中的車牌號。
車牌檢測算法分兩種,一種是基于手工選取的特征進行檢測,另一種是基于深度學習方法進行檢測。Yuan等[5]提出使用線密度濾波方法提取車牌候選區域,最后基于線性SVM的級聯分類器從候選區域中提出車牌位置。Tian等[6]提出了一種基于邊界聚類的檢測方法,通過Canny算子獲取邊界圖,然后基于密度的聚類方法將邊界劃分為不同的聚類,最后使用線性支持向量機對邊界定位準確的水平候選區域進行分類。Zhang等[7]設計了一種由卷積神經網絡和遞歸神經網絡組成的深層網絡,專門針對污損、遮擋等特殊車牌的定位問題。Wang等[8]提出了一種精度更高、計算成本更低的多任務卷積神經網絡車牌檢測與識別系統(MTLPR),在實際復雜的場景中具有較好的魯棒性。
車牌字符識別方法分為兩階段和一階段方法,兩階段方法首先對車牌區域進行字符分割,接著對分割出來的單個字符進行識別。一階段方法采用端到端的深度學習算法直接對車牌區域進行字符識別。余承波[9]使用垂直投影分割算法進行字符分割,提出了一種融合字符的統計特征和結構特征并結合SVM的字符識別方法。Kessentini等[10]分別兩個YOLO模型對車牌進行識別,一個用于對車牌區域進行定位,另一個模型對車牌區域的字符進行識別。Li等[11]在車牌檢測的池化層后直接接入基于RNN的識別網絡,省去了中間字符分割的處理,整個網絡采用聯合損失。
車牌檢測是車牌字符識別的基礎步驟,檢測結果直接影響后續字符識別的準確率。本文的檢測模塊基于YOLOv5對圖像中的車牌進行定位,由于只需要檢測車牌一個類別,選用YOLOv5中深度最淺的YOLOv5s網絡結構。
傳統的車牌字符識別大都是基于字符分割的識別方法,識別效果受字符分割的影響很大,當存在車牌圖像傾斜角度過大、光照昏暗等干擾時,字符分割效果并不理想。本文的識別模塊基于CRNN網絡[12]設計了一個端到端識別車牌字符的LPCRNet網絡。
檢測模塊使用CSPDarkNet作為主干特征提取網絡,從輸入車輛圖像中獲取豐富的特征信息,有效緩解了大型卷積神經網絡的梯度消失問題。Neck部分選用PANET(FPN+PAN),用于生成特征金字塔,會增強模型對于不同尺度的車牌的檢測。檢測模塊的網絡結構如圖1所示。
Bounding box損失函數采用的是GIoU_Loss,GIoU的計算公式如下:

其中I表示預測框與目標框的相交面積,U為預測框的面積Ap與目標框的面積Ag之和減去I,Ac為預測框與目標框的最小外接矩形的面積。
CRNN網絡由卷積層、循環層、轉錄層3部分組成,本文基于CRNN網絡設計了LPCRNet。由于車牌圖像的特征較為簡單,LPCRNet的卷積層采用網絡較淺的ResNet18中的卷積層來提取車牌圖像的特征;循環層采用BiLSTM(即雙向LSTM),BiLSTM對車牌的上下文信息有較好的表示能力,合并正向LSTM和反向LSTM的序列信息完成對序列標簽的預測;最后的轉錄層使用CTC方法對BiLSTM輸出的預測序列進行對齊映射,輸出預測的車牌號碼。識別模塊結構如圖2所示。

圖1檢測模塊網絡結構

圖2識別模塊網絡結構
循環層通過疊加兩個BiLSTM網絡將輸入的序列特征進行解碼,第二層LSTM的處理過程可以用以下公式表示:
識別模塊的訓練過程中,目標是通過循環層的輸出序列找到概率最大的近似最優路徑。
(1)數據集。實驗數據集來源于中科大的研究人員構建的CCPD數據集[13],包含25萬多張圖片,其中包括9種不同的場景:模糊、異常天氣、傾斜等。具體內容如表1所示。

表1 CCPD數據集內容
實驗隨機選取除無車牌外的其他8種場景下的10000張圖作為車牌檢測的數據集,根據圖片中車牌的坐標截取出的10000張車牌圖像作為識別模塊的數據集,其中8500張作為訓練集,1500張作為測試集。
(2)評價指標。檢測模塊使用目標檢測中較常使用的準確率(Precision)和召回率(Recall)進行評估性能。車牌字符識別有兩種常用評價方法,一種是整體評價,另一種是字符級評價。整體評價是指車牌所有字符都識別正確的數量在測試集總數中所占的比例,公式如下:

其中,Cp表示字符全部識別正確的車牌數量,Np表示測試集的樣本總數。還有較為常見的5字識別率和6字識別率,分別表示車牌中正確識別5個字符和6個字符的數量與測試集總數的比例。
字符級評價指的是測試集中識別正確的字符數占所有字符的比例,公式如下:

其中,Cc表示所有識別正確的字符數,Nc是指測試集中所有字符數。
本文基于以上兩種評價方法對識別模塊進行評估。
各場景下車牌檢測效果如圖3所示,由檢測結果可知,檢測模塊對于多種復雜場景下車牌定位具有較好的效果。

圖3車牌檢測實例
本文檢測模塊與其他目標檢測算法在CCPD數據集上的實驗對比結果如表2所示,由對比結果可知,本文方法的準確率和召回率明顯高于SSD算法,且速度都較快于其他算法。

表2不同車牌檢測算法的檢測結果對比
識別模塊與其他字符識別算法的對比結果如表3所示,結果表明LPCRNet在識別率和速度上都優于對比算法。

表3不同車牌識別算法的識別結果對比
由于車牌識別在光照過亮或過暗、車牌傾斜、異常天氣等場景下的識別效果不盡如人意,本文提出了基于深度學習的車牌識別算法,檢測模塊基于YO?LOv5網絡結構定位出圖像中的車牌位置,識別模塊設計無分割的字符識別算法(LPCRNet),首先將圖片輸入卷積層對車牌圖像進行特征提取,接著將車牌的序列特征送入雙層的BiLSTM網絡對序列標簽進行預測,最后使用CTC對預測標簽轉錄得到最終的預測車牌號。本文提出的算法在CCPD數據集中各復雜場景下的車牌檢測準確率達到了98.6%,字符識別的準確率達到了88.9%,實驗結果表明,本文提出的算法對于復雜場景下車牌的檢測和識別都有較好的魯棒性。