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