何穎剛,鄭新旺,阮佳坤
車牌檢測和識(shí)別是指從自然背景下的車輛圖像中檢測并定位出含有車牌的區(qū)域,并對(duì)車牌區(qū)域進(jìn)行字符分割和識(shí)別,最終獲得車牌號(hào)碼信息的過程,在停車場管理、交通道路監(jiān)控等場合具有廣泛地應(yīng)用.車牌檢測和識(shí)別包括三方面關(guān)鍵技術(shù):車牌定位與提取、車牌傾斜校正與字符分割、字符識(shí)別,其中車牌定位與字符識(shí)別的速度和精度是核心[1].
目前,國內(nèi)外學(xué)者對(duì)車牌檢測識(shí)別已經(jīng)有眾多研究成果.針對(duì)車牌檢測任務(wù),主要方法有紋理特征法、顏色特征法、邊緣檢測法、多種特征混合方法等.文獻(xiàn)[2]提出了一種基于邊緣檢測并二值化的方法,從背景中分割出車牌;文獻(xiàn)[3]采用特征顏色邊緣檢測方法進(jìn)行車牌定位;文獻(xiàn)[4]使用Sobel垂直算子對(duì)圖像邊緣進(jìn)行檢測,獲得車輛牌照的區(qū)域;文獻(xiàn)[5]利用漢字字符筆畫中的角點(diǎn),提出了一種改進(jìn)Harris算法的車牌定位方法,該算法較好地解決了車牌變形、光照變化的干擾,但是需要使用較高分辨率的圖像進(jìn)行檢測.上述車牌檢測方法算法復(fù)雜度較高,精度和速度存在一定的提升空間.
針對(duì)車牌字符識(shí)別任務(wù),目前主要的方法有基于模板匹配的字符識(shí)別方法、特征信息方法和基于神經(jīng)網(wǎng)絡(luò)的字符識(shí)別方法.相對(duì)于英文車輛牌照,中國車輛牌照字符包括漢字、英文字母和阿拉伯?dāng)?shù)字,因此識(shí)別難度較大.文獻(xiàn)[6]通過設(shè)計(jì)字符模板,使用重合度和差別函數(shù)度量車牌字符和字符模板之間的相似度,從中選擇最佳的模板匹配結(jié)果.該方法的缺點(diǎn)是受光照變化、分辨率大小、污漬和變形影響較大;文獻(xiàn)[7]提出了一種模板匹配法,結(jié)合局部HOG特征的車牌識(shí)別算法,提高了識(shí)別的準(zhǔn)確率和速度.文獻(xiàn)[8]采用粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌號(hào)碼識(shí)別.這些方法均需要人工設(shè)計(jì)特征模板,并對(duì)車牌中的字符進(jìn)行分割,算法對(duì)數(shù)字和英文字符識(shí)別較好,對(duì)漢字識(shí)別效果尚需提高.
傳統(tǒng)的車牌檢測識(shí)別技術(shù)方案流程較為復(fù)雜.在特定的應(yīng)用場景下具有良好的效果.但在復(fù)雜的自然環(huán)境場景下,受到光照、異物、背景干擾等因素影響,檢測識(shí)別率降低,難以取得令人滿意的效果.隨著深度學(xué)習(xí)技術(shù)的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測和圖像識(shí)別技術(shù)獲得了重大突破,其中以卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的AlexNet在2012年的ILSVRC(ImageNet Large Scale Visual Recognition Challenge)大賽上獲得圖像分類冠軍,之后涌現(xiàn)了諸如Faster R-CNN、ResNet、SSD、YOLO等優(yōu)秀的圖像分類/檢測算法.為了提升各類自然場景下的車牌檢測率和識(shí)別率,本文提出了采用兩種深度神經(jīng)網(wǎng)絡(luò)MobileNet-SSD+Bi-GRU的車牌檢測識(shí)別方案,通過MobileNet-SSD實(shí)現(xiàn)車牌檢測和定位,利用Bi-GRU對(duì)檢測區(qū)域進(jìn)行車牌字符識(shí)別.實(shí)驗(yàn)結(jié)果表明,本文所設(shè)計(jì)的方案能夠滿足實(shí)時(shí)檢測和識(shí)別的需求,并達(dá)到了較高的識(shí)別精度.
本文設(shè)計(jì)的車牌檢測識(shí)別系統(tǒng)主要由視頻采集、車牌檢測定位、車牌識(shí)別組成.首先由攝像機(jī)實(shí)時(shí)采集視頻并傳入計(jì)算機(jī)形成數(shù)字圖像.然后將圖像輸入訓(xùn)練好的MobileNet-SSD網(wǎng)絡(luò)模型,進(jìn)行車牌檢測定位;在確定車牌區(qū)域后,從圖像中將車牌區(qū)域剪裁出來,輸入到Bi-GRU字符識(shí)別網(wǎng)絡(luò)模型中,并輸出車牌號(hào)碼信息.系統(tǒng)整體架構(gòu)如圖1所示.

圖1 車牌檢測識(shí)別系統(tǒng)
車牌檢測識(shí)別首先需要獲取圖像信息,檢測圖片中是否存在車牌并定位.近年來計(jì)算機(jī)視覺領(lǐng)域涌現(xiàn)出許多基于深度學(xué)習(xí)的目標(biāo)檢測算法.其中,以SSD、YOLO為代表的一階段目標(biāo)檢測算法因速度快、準(zhǔn)確率較高,成為研究的熱點(diǎn).
①SSD算 法.SSD[9](Single Shot MultiBox Detector)目標(biāo)檢測算法是由LIU W等人提出的一階段目標(biāo)檢測方法.相比于RCNN、SPPNet等兩階段目標(biāo)檢測方法,一階段檢測方法不需要生成候選區(qū)域(Region Proposal)后再進(jìn)行目標(biāo)分類,而是直接采用端到端的方式進(jìn)行目標(biāo)類別預(yù)測和邊界回歸,結(jié)構(gòu)簡單,效率更高,僅有小幅度的精度損失.SSD網(wǎng)絡(luò)模型結(jié)構(gòu)如圖2所示.

圖2 SSD模型結(jié)構(gòu)圖
SSD模型輸入尺寸為300×300×3的圖像,檢測框架由特征提取網(wǎng)絡(luò)和多尺度檢測網(wǎng)絡(luò)兩部分組成.前端特征提取網(wǎng)絡(luò)結(jié)構(gòu)為VGG16,在VGG16后附加多個(gè)卷積層用于不同尺度特征提取.為了同時(shí)實(shí)現(xiàn)目標(biāo)類別識(shí)別和位置檢測任務(wù),模型從網(wǎng)絡(luò)結(jié)構(gòu)的多個(gè)卷積層中選取了六個(gè)不同尺度的特征圖用于檢測不同大小的目標(biāo)物體.輸入圖像經(jīng)過VGG16和其后的卷積層,生成大小為38×38×512、19×19×1 024、10×10×512、5×5×256、3×3×256、1×1×256六 個(gè)特征圖.然后,在六個(gè)特征圖中使用不同尺寸和多種長寬比來生成先驗(yàn)框,進(jìn)而在這些先驗(yàn)框中預(yù)測包含目標(biāo)的概率.先驗(yàn)框的尺寸使用公式(1)生成.

其中:m為特征圖個(gè)數(shù),sk為候選框尺寸相對(duì)于輸入圖像尺寸的比例,smax和smin為比例的最大值和最小值.先驗(yàn)框的長寬比從{1,2,3,1/2,1/3}中進(jìn)行選取.SSD先驗(yàn)框總數(shù)為38×38×4+19×19×6+10×10×6+5×5×6+3×4×4+1×1×4=8 732.在實(shí)際訓(xùn)練中,可根據(jù)車牌形狀特征,調(diào)整先驗(yàn)框的長寬比選項(xiàng).
之后,在先驗(yàn)框上進(jìn)行位置回歸和softmax分類,并通過非極大值抑制方法產(chǎn)生最終的檢測結(jié)果.SSD網(wǎng)絡(luò)損失函數(shù)由位置損失函數(shù)和置信度損失函數(shù)兩部分加權(quán)組成,如公式(2)所示.

其中:N為先驗(yàn)框的正樣本數(shù)量,c為類別置信度預(yù)測值,l為預(yù)測框位置預(yù)測值,g為真實(shí)框的位置參數(shù),α為權(quán)重因子,Lconf(x,c)為分類損失函數(shù),Lloc(x,l,g)為位置損失函數(shù),x為預(yù)標(biāo)注框與先驗(yàn)框匹配值,x∈[1,0].
②MobileNet卷積神經(jīng)網(wǎng)絡(luò).2017年,谷歌公司HOWARD A G等人在文獻(xiàn)[10]中提出了MobileNet卷積神經(jīng)網(wǎng)絡(luò)模型.MobileNet是一種輕量化的卷積神經(jīng)網(wǎng)絡(luò)模型,原理是通過深度可分離卷積設(shè)計(jì)(圖3)提高卷積網(wǎng)絡(luò)的計(jì)算效率,大幅減少網(wǎng)絡(luò)參數(shù)數(shù)量.從而使網(wǎng)絡(luò)計(jì)算速度得到提升,減少內(nèi)存占用量.
A3、A4、B2、B3、C1(無人死亡時(shí))、C2(無人員死亡時(shí))、D1(無人員死亡時(shí))區(qū)域?yàn)橐话泔L(fēng)險(xiǎn)區(qū)域. 風(fēng)險(xiǎn)水平在一定有條件下可接受,需要進(jìn)一步采取措施予以預(yù)防. 其中C1、C2和D1區(qū)域發(fā)生人員死亡時(shí)升級(jí)為較大風(fēng)險(xiǎn)區(qū)域;
定義輸入圖像的尺寸為DF×DF,圖3(a)中DK為卷積核大?。礊槠溟L和寬),M為輸入圖像的通道數(shù),N為卷積核的個(gè)數(shù).傳統(tǒng)標(biāo)準(zhǔn)卷積的計(jì)算量為:

MobileNet通過將圖3(a)所示標(biāo)準(zhǔn)卷積分解為圖3(b)所示深度卷積和圖3(c)所示1×1逐點(diǎn)卷積,總計(jì)算量為:

圖3 深度可分離卷積

相比于標(biāo)準(zhǔn)卷積,MobileNet計(jì)算量減少為:

通過公式(3)、公式(4)和公式(5),可以看出MobileNet采用的深度可分離卷積設(shè)計(jì)改進(jìn)了傳統(tǒng)卷積網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)冗余問題,優(yōu)化了整個(gè)網(wǎng)絡(luò)的結(jié)構(gòu).在ImageNet數(shù)據(jù)集上MobileNet準(zhǔn)確率較AlexNet提高了3%,模型參數(shù)僅有AlexNet的1/50,計(jì)算量為AlexNet的1/10.
③MobileNet-SSD車牌檢測定位算法.針對(duì)SSD模型參數(shù)多、計(jì)算量大,不適合計(jì)算資源有限嵌入式平臺(tái)的應(yīng)用.文獻(xiàn)[11]提出MobileNet-SSD,改善了SSD模型的性能.作為SSD模型輕量化的解決方案,MobileNet-SSD模型使用MobileNet網(wǎng)絡(luò)替代原有VGG16網(wǎng)絡(luò)作為SSD模型的基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu).在保持原有SSD網(wǎng)絡(luò)結(jié)構(gòu)的同時(shí),減少了原有冗余參數(shù),使得計(jì)算量和內(nèi)存資源消耗降低,加快了網(wǎng)絡(luò)模型收斂速度,改善了算法的性能.
MobileNet V2是MobileNet網(wǎng)絡(luò)的第二個(gè)改進(jìn)版本.相比于MobileNet V1,MobileNet V2在網(wǎng)絡(luò)中加入了殘差結(jié)構(gòu),去掉部分ReLu,從而保留特征多樣性,更加充分利用了特征信息,提高了準(zhǔn)確率.本文選用MobileNet V2作為MobileNet-SSD基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu).
循環(huán)門單元(Gated Recurrent Unit,GRU)是由CHO K等人在文獻(xiàn)[13]中提出的.GRU是長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)的變體,屬于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種.相比于LSTM輸入門、遺忘門和輸出門的三門結(jié)構(gòu),GRU只有重置門(Reset gate)和更新門(Update gate)兩個(gè)門,參數(shù)更少,更容易收斂.
傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)中,信息傳播是單向的.為了使得網(wǎng)絡(luò)模型可以同時(shí)學(xué)習(xí)輸入序列的正向信息和反向信息,可以在原有循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,增加一層相反方向的循環(huán)神經(jīng)網(wǎng)絡(luò),通過兩層分別處理相反方向的輸入序列,學(xué)習(xí)到更多的信息.雙向GRU神經(jīng)網(wǎng)絡(luò)(Bi-directional Gated Recurrent Unit neural network,Bi-GRU)是將GRU作為雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的循環(huán)神經(jīng)元,圖4為Bi-GRU網(wǎng)絡(luò)結(jié)構(gòu)圖.通過前向GRU層和后向GRU層,以兩層相反方向處理數(shù)據(jù)來獲得上下文特征信息,能夠從序列數(shù)據(jù)中更加充分提取有用的特征信息.

圖4 Bi-GRU結(jié)構(gòu)
基于卷積神經(jīng)網(wǎng)絡(luò)和Bi-GRU的車牌識(shí)別模型結(jié)構(gòu)如圖5所示.首先輸入MobileNet-SSD檢測出的車牌區(qū)域,通過兩層CNN進(jìn)行特征提取并轉(zhuǎn)換為序列化特征向量;然后輸入兩層Bi-GRU層進(jìn)行處理;最后輸出車牌字符識(shí)別的結(jié)果.車牌識(shí)別模型損失函數(shù)采用CTC(Connectionist temporal classification)損 失函數(shù).

圖5 基于卷積神經(jīng)網(wǎng)絡(luò)和Bi-GRU的車牌識(shí)別模型結(jié)構(gòu)
實(shí)驗(yàn)數(shù)據(jù)集采用了中科大開源數(shù)據(jù)集CCPD[14],另外加入了自行收集的中文車牌圖像樣本庫,從中選取10 000張圖片進(jìn)行模型訓(xùn)練和驗(yàn)證.其中,隨機(jī)選取7 000張圖片作為訓(xùn)練集,2 000張圖片作為測試集,1 000張圖片作為驗(yàn)證集.自建數(shù)據(jù)集中的圖像采用labelImg工具進(jìn)行圖像標(biāo)注,并生成對(duì)應(yīng)的xml文件.數(shù)據(jù)集同時(shí)應(yīng)用于車牌檢測定位網(wǎng)絡(luò)模型訓(xùn)練和車牌字符識(shí)別網(wǎng)絡(luò)模型訓(xùn)練.
實(shí)驗(yàn)環(huán)境為Windows 10操作系統(tǒng),16 GB RAM,Nvidia GeForce 1660 Ultra6G顯卡,CUDA10加速,使用基于Tensorflow機(jī)器學(xué)習(xí)框架的Keras深度學(xué)習(xí)庫和OpenCV計(jì)算機(jī)視覺庫進(jìn)行開發(fā)和實(shí)現(xiàn).Keras提供了構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型的高級(jí)API,具有用戶友好、模塊化、易于擴(kuò)展等優(yōu)點(diǎn),是研究人員和開發(fā)人員實(shí)現(xiàn)快速原型設(shè)計(jì)、研究和驗(yàn)證的高效工具.OpenCV是一個(gè)開源的計(jì)算機(jī)視覺庫,提供了豐富的圖形圖像處理函數(shù),功能非常強(qiáng)大.實(shí)驗(yàn)采用GPU進(jìn)行網(wǎng)絡(luò)模型的訓(xùn)練.模型訓(xùn)練完成后模型結(jié)構(gòu)保存為model文件,權(quán)重參數(shù)保存為.h5文件,方便在生產(chǎn)環(huán)境中快速部署和使用.
本文設(shè)計(jì)的車牌檢測識(shí)別系統(tǒng)由視頻采集模塊、圖像識(shí)別模塊組成.攝像頭采集實(shí)時(shí)視頻并傳入計(jì)算機(jī)形成數(shù)字圖像,然后利用Keras加載網(wǎng)絡(luò)結(jié)構(gòu)模型和權(quán)重?cái)?shù)據(jù)文件,對(duì)輸入的圖像進(jìn)行檢測和識(shí)別,最后輸出車牌的位置和車牌字符.系統(tǒng)流程圖如圖6所示.

圖6 系統(tǒng)流程圖
系統(tǒng)通過USB接口攝像頭完成圖像采集,使用OpenCV-python庫實(shí)現(xiàn)攝像頭調(diào)用和視頻數(shù)據(jù)的捕獲.對(duì)攝像頭編程使用了Video-Capture(0)、read()、release()等函數(shù).
程序的具體步驟如下:
①使用cap=cv2.VideoCapture(0)獲取攝像頭,其中參數(shù)0表示第一個(gè)攝像頭.通過capture.set(CV_CAP_PROP_FPS,2)設(shè)置攝像頭幀率為每秒2幀.
②在while循環(huán)語句中,利用攝像頭對(duì)象cap的read()函數(shù)循環(huán)讀取視頻幀,語句ret,img=cap.read()將read()函數(shù)的返回值保存到img對(duì)象中.
③將img對(duì)象輸入到加載訓(xùn)練權(quán)重參數(shù)的MobileNet-SSD網(wǎng)絡(luò)模型進(jìn)行檢測,輸出結(jié)果為包含車牌概率和車牌位置的List.
④選擇概率大于80%的先驗(yàn)框,以紅色框標(biāo)注出位置,并剪裁出對(duì)應(yīng)的車牌圖片,輸入到字符識(shí)別模塊中,進(jìn)而獲得識(shí)別結(jié)果車牌號(hào)碼.保存圖像為磁盤文件,并將文件名以識(shí)別的車牌號(hào)碼進(jìn)行命名.
⑤回到步驟②,繼續(xù)讀取下一幀的圖像數(shù)據(jù),重復(fù)整個(gè)檢測識(shí)別步驟.圖7為車牌檢測定位模塊輸出結(jié)果.

圖7 車牌檢測定位效果
分別從CCPD數(shù)據(jù)集中額外挑選100張圖片,輸入到上述系統(tǒng)進(jìn)行車牌檢測和識(shí)別測試,其中正確檢測并定位車牌的有92張,未能檢測到的有8張,檢測率為92%.車牌字符正確識(shí)別有95張.圖8為部分靜態(tài)圖像的車牌檢測識(shí)別結(jié)果.

圖8 靜態(tài)圖像檢測識(shí)別效果
在停車場出入口設(shè)置攝像頭,連接到筆記本電腦,在電腦上運(yùn)行本系統(tǒng),采集進(jìn)出車輛圖像數(shù)據(jù)測試系統(tǒng),對(duì)進(jìn)場車輛都能檢測并標(biāo)記的視為實(shí)驗(yàn)成功.測試期間選定不同時(shí)間段進(jìn)出車輛50輛,檢測成功次數(shù)47次,成功率為94%.測試結(jié)果表明,系統(tǒng)可以較好地進(jìn)行車牌檢測和識(shí)別.但是也存在著不足,例如在光照較暗、較亮或車輛行駛速度較快的情況下,會(huì)降低檢測成功率.
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于MobileNet-SSD和Bi-GRU的車牌檢測識(shí)別系統(tǒng).從車牌的檢測定位、車牌字符的識(shí)別等方面闡述了系統(tǒng)的設(shè)計(jì)思路,并對(duì)系統(tǒng)進(jìn)行測試,達(dá)到了預(yù)期目標(biāo).相較于工業(yè)級(jí)應(yīng)用目標(biāo),本文提出的方案在檢測速度、檢測準(zhǔn)確率、識(shí)別準(zhǔn)確率等方面還有待提高.未來將研究通過改進(jìn)模型結(jié)構(gòu)和圖像預(yù)處理方法來提高算法的準(zhǔn)確度.
通化師范學(xué)院學(xué)報(bào)2021年8期