徐渡 李思穎 金佳凝 徐旖屏



關鍵詞:深度學習;YOLOv5s;神經網絡;車牌識別;CRNN
0 引言
隨著社會經濟的飛速發展,我國各地城市汽車保有量不斷增長。汽車在給人們帶來便利的同時,也帶來了管理上的問題,如道路交通監控、車輛違規記錄、停車場車位智能管理[1]等問題。車牌識別技術在城市智能交通和城市智慧停車中具有不可或缺的作用,對于管理車輛信息和規劃車輛位置都十分重要。近年來,車牌定位與識別技術獲得了較豐碩的研究成果,在車輛管理方面有著較為廣泛的應用,但仍具有一定局限性。在現實場景中,大多數車牌識別系統定位算法都存在亮度敏感、執行時間長和精度低等問題,并且當車牌存在損壞和傾斜等情況下,識別效果較差。此外,中國車牌的類型和樣式不同于國外,漢字縮寫和字符組合的方式也多種多樣,識別起來更加復雜,往往需要付出時間的代價。所以,仍需要對車牌識別系統中定位與識別的方法進行設計,以提高系統的準確率和高效性。本文利用深度學習方法,將YOLOv5s 和CRNN進行結合,實現不同場景下車牌的識別,以提高車牌的識別效率和準確率。
1 相關研究
車牌識別技術從誕生發展到現在已有數十年,已是現代智能車位管理中最重要的組成部分。車牌識別系統主要包含車牌定位檢測與車牌識別兩大部分。隨著深度學習的發展[2],基于深度學習的車牌定位算法和基于卷積神經網絡的車牌識別算法成為主流。傳統的車牌定位算法根據車牌的直觀特征可以分為基于字符檢測、基于顏色檢測、基于文本檢測、基于邊緣檢測和基于連接部件檢測五類。這些直觀的特征容易受到環境的影響,而深度學習可以通過像素信息提取出更深層的特征,以降低外部因素對車牌識別的影響。基于深度學習的車牌定位檢測算法又分為單階段檢測和雙階段檢測兩類;單階段檢測如YOLO系列的算法在獲取車牌圖像候選框時會同時獲取其分類信息與位置信息,相較于雙階段檢測算法如SSD[3]、Faster-RCNN[4]相比,具有結構簡單、計算高效、訓練速度更快的優點。Laroca等人[5]通過評估和優化不同的YOLO模型,在每個階段實現最佳速度/精度權衡。在車牌檢測階段,考慮到車牌在圖像中可能只占很小的部分,并且交通標志等其他文本塊可能與車牌混淆,檢測過程采用先檢測車輛,然后在車輛圖像中檢測各自的車牌。在8 個不同數據集上的平均準確率為98.37%,平均召回率為99.92%。
在傳統的車牌識別過程中,字符分割對車牌識別的精度有很大影響。即使有一個強大的識別器可以處理各種縮放、不同字體和各種旋轉,如果車牌沒有正確分割也會被錯誤識別。隨著循環神經網絡的提出與發展,其在語音與文本領域中的出色識別性能,使得基于無分割的車牌識別算法成為當前車牌識別的主流算法[6]。Li等人[7]使用LSTM訓練遞歸神經網絡(RNN),以識別通過CNN從整個車牌提取的序列特征。每個檢測到的車牌都被轉換為灰度圖像,并調整大小為24×94像素。再以步長為1的24×24像素子窗口,進行滑動窗口方式分割填充圖像。每個分割的圖像塊被送入36類CNN分類器以提取序列特征。將第四卷積層和第一完全連接層連接在一起,形成一個長度為5 096的特征向量。然后使用PCA將特征維數降低到256維,并進行特征歸一化。最后,CTC被設計為將預測的概率序列直接解碼為輸出標簽,平均識別率約為92.47%。
綜上,本文選擇YOLOv5作為檢測模塊對圖像進行定位,采用其中復雜度最小、深度最淺的YOLOv5s 模塊作為車牌定位的檢測框架,以此來降低模型運行速度對檢測程序的影響。由于字符分割對傳統的基于字符分割的車牌識別方法影響較大,而且字符分割效果在車牌圖像傾斜、光照昏暗等條件干擾時效果并不理想。為了避免車牌分割造成識別中對字符的錯分、漏分,影響最終識別結果,本文選用基于RNN改進的CRNN算法進行實現無分割車牌字符的識別[8-9]。
2 算法模型
整個車牌識別的流程框架如圖1所示,其中YO?LOv5s網絡和CRNN網絡為主要組成部分。識別流程首先由YOLOv5s網絡定位檢測出車牌的有效區域,再檢測出車牌區域送入CRNN進行無分割的車牌識別,最終輸出識別結果。
2.1 YOLOv5s 車牌檢測網絡
YOLOv5s主要由Backbone、Neck、Head等部分組成,其網絡結構如圖2所示。Backbone作為基準網絡來進行特征提取,融合了包括Focus結構與CSP結構在內的檢測算法結構思路。通過Focus來進行切片操作,從而擴大通道數量。再采用卷積實現下采樣,在保留更多圖像信息的情況下又不提高模型的計算量。Neck結構由PAN路徑聚合和FPN特征金字塔結構組成,作為在Back Bone層與Head層之間的網絡,PAN 由下而上傳遞圖像的位置信息,FPN由上而下傳遞語義信息,從而促進主干網絡中不同尺寸網絡信息的融合。Head輸出層的錨框機制相較于YOLOv4而言,主要改進的是訓練過程中的損失函數GIOU_Loss,其公式如(1)所示。
其中,IoU 為預測框(PB)與真實框(GT)的交并比,Ac 為能夠將預測框和真實框同時包含在內的最小矩形,U表示預測框和真實框的并集。GIoU 是從PB和GT之間重合的面積來考慮,可以改善IoU 在PB和GT 不相交時梯度不能傳遞的情況[10]。
2.2 CRNN 車牌識別網絡
CRNN 相較于CNN 而言,其模型參數量更加輕量。CRNN網絡框架主要由卷積層、循環層、轉錄層三部分組成,網絡模型結構如圖3所示。第一層卷積層負責提取車牌字符特征的CNN卷積神經網絡,經過車牌定位的含有車牌圖像信息的圖像被輸入到CRNN 網絡中,將這些圖像縮放到指定大小,經過CNN特征序列映射層進行特征提取操作,得到車牌的圖像特征序列,并將其輸入到網絡的循環層。第二層循環層負責標簽序列預測的RNN循環神經網絡層。對于卷積層輸入過來的圖像特征序列,利用長短時記憶網絡(LSTM)內部的記憶模塊,實現對特征標簽的預測,形成特征向量的標簽分布。最后,由第三層CTC轉錄層負責解碼,把循環層的預測標簽分布情況轉化為序列標簽,并輸出識別出的文本信息。
3 實驗結果與分析
3.1實驗數據集
本文實驗測試采用由中國科學技術大學研究人員構建的公開數據集CCPD數據集進行,其中包含了25萬多張車牌圖片,圖片格式為720×1 160×3,包含了模糊、異常天氣、傾斜和光線變化在內的9種不同場景下的車牌圖片,具體內容如表1所示。
在實驗中,本文車牌檢測數據集為隨機選取的除CCPD_Np場景外的其他8種場景下的20 000張圖片,之后再根據圖片中的車牌坐標截取出20 000張圖片來用作識別模塊的數據集,其中10 000張用作訓練集,另外10 000張用作測試集。
3.2 實驗環境
本文測試的實驗環境是在Windows 64位操作系統下搭建進行的,電腦運行內存為16GB,顯卡采用NVIDIA GeForce RTX 3060 Laptop GPU 14GB,處理器采用AMD Ryzen 7 5800H with Radeon Graphics 3.20GHz,在Python3.9 + pytorch torch 1.10 + cuda11.1平臺下實現模型的搭建和訓練工作。
3.3結果與分析
不同場景下車牌檢測效果如圖4和表2所示。在測試數據集上,識別準確率達到98.6%、召回率達到91.7%,處理時間為21毫秒。由檢測結果可知,在多種復雜場景下,定位檢測模塊對于車牌定位表現出較好的定位效果與性能。
本文車牌字符訓練參根據數據集的劃分,設置初始學習率為0.001、初始動量為0.9、epoch設置為100、BatchSize為12,分別對6字符車牌、7字符車牌進行識別,識別測試結果如表3所示。
由表4可知,識別模型在6字符車牌的識別準確率能達到97.6%,在7字符車牌識別率能達到93.7%,處理時間達到81毫秒,識別結果較好。在訓練好識別模型后,通過人為拍攝白天與夜晚的不同傾斜角度照片來驗證模型的性能,如表4所示。在白天標準拍攝角度下的車牌,拍攝角度為正前方拍攝,光線較亮,7 位字符識別全部正確,置信度為0.97。在白天俯角拍攝的車牌,拍攝角度為車輛正前方10°~30°,光線環境較亮,7位字符識別全部正確,置信度為0.98。在白天傾斜拍攝車牌,拍攝角度為車輛左側10°~30°,光線較暗,7位字符識別全部正確,置信度為0.97。在夜間傾斜拍攝車牌,拍攝角度為車輛斜上方10°~30°,光線較差,7位字符識別全部正確,置信度為0.97。
4 結論
針對已有項目在車牌識別部分使用傳統的車牌識別方法達不到現有需求的問題,本文使用YOLOv5 中的輕量級網絡YOLOv5s來提高車牌定位效率和準確率,使用CRNN端到端識別網絡進行無分割識別,不再從分割字符的角度來進行車牌識別,減少由于分割誤差帶來的精度影響,一定程度提高識別效率和準確率。實驗結果表明:采用基于深度學習的YOLOv5s 和CRNN相結合的識別方法,車牌定位檢測模型準確率達到98.6%、召回率達到91.7%,處理時間為21毫秒;識別模型在6 字符車牌的識別準確率能達到97.6%,在7字符車牌識別率能達到93.7%,處理時間達到81毫秒,得到了較好的結果。