關(guān)曉艷,李亞
(650031 云南省 昆明市 昆明理工大學(xué) 信息工程與自動化學(xué)院)
近年來,機動車數(shù)量激增給交通管理帶來了很大困難,甚至嚴(yán)重威脅到了城市的公共安全。在如此嚴(yán)峻的形勢下,傳統(tǒng)的人工交通管理所能解決的問題已極其有限,智能化交通的引入在短時間內(nèi)提高了交通管理效率[1]。其中,車牌識別技術(shù)是構(gòu)建智能化交通系統(tǒng)最為關(guān)鍵的一部分,該技術(shù)以檢測車輛并自動獲取車輛牌照信息進(jìn)行分析處理為目的。在完善智能化交通的過程中,研究車牌識別技術(shù)的準(zhǔn)確率以及識別速度具有實際價值。
Johnson[2]提出了車牌識別的一般流程為圖像數(shù)據(jù)采集、車牌定位、字符分割和字符識別。常見的車牌識別算法主要有特征匹配識別[3]、模板匹配識別[4]、支持向量機識別[5]、神經(jīng)網(wǎng)絡(luò)識別[6]等。其中,基于深度學(xué)習(xí)的車牌識別算法更能有效地提升車牌識別的準(zhǔn)確率。陶星珍[7]等提出一種LeNet-5-L的車牌識別網(wǎng)絡(luò),運用卷積神經(jīng)網(wǎng)絡(luò)(CNN)解決車牌字符識別的問題,降低了圖像特征提取難度,進(jìn)而提高車牌中各個字符的識別率和整個車牌的識別速度。李祥鵬[8]等提出一種增強的卷積神經(jīng)網(wǎng)絡(luò)端對端模型AlexNet-L,采用該模型避免了因無法正確分割車牌字符而對識別效率產(chǎn)生的影響。段賓[9]等采用深度可分離卷積相結(jié)合的輕量級車牌識別模型,通過增加生成對抗網(wǎng)絡(luò)生成車牌圖像來提高識別率的同時也有效解決了模糊車牌圖像樣本不足的問題。張亞飛[10]為了解決擴(kuò)大網(wǎng)絡(luò)規(guī)模會導(dǎo)致過擬合的問題提出了基于注意力機制的自適應(yīng)權(quán)重分配算法,該算法通過對神經(jīng)網(wǎng)絡(luò)各模塊進(jìn)行合理的權(quán)重分配來明確模塊的分工,從而提升網(wǎng)絡(luò)的性能。歐先鋒[11]等為了解決強噪聲污染的數(shù)字字符問題提出了基于Caffe 深度學(xué)習(xí)框架的字符識別算法,該算法主要訓(xùn)練網(wǎng)絡(luò)參數(shù)而獲取魯棒性強的網(wǎng)絡(luò)結(jié)構(gòu),在強噪聲污染的背景下,識別效果更具有優(yōu)越性。上述學(xué)者研究中用到的數(shù)據(jù)均是在車牌無遮擋的情況下,對于有遮擋的車牌(外物附著、字符斷裂)則識別率會明顯下降。
本文將針對一些車牌局部帶有遮擋物的車輛展開研究。車牌定位采用圖像邊緣檢測法,字符分割采用先驗的字符間距進(jìn)行分割,最后采用改進(jìn)后的ResNet 網(wǎng)絡(luò)進(jìn)行字符識別。通常在有遮擋識別的算法研究中,主要著力于將圖像進(jìn)行還原以便后續(xù)識別,往往每一類遮擋問題都需要獨立的算法進(jìn)行處理,這樣做不僅僅耗時長且浪費資源。因此,本文對國民車牌中常見的字符建立各種情況的不同程度的遮擋樣本庫,是一種基于數(shù)據(jù)驅(qū)動的識別方法,這對有遮擋車牌的識別更具針對性,進(jìn)一步提高智能化交通系統(tǒng)中車牌識別的實時性和可靠性。
在圖像分析中,識別算法的準(zhǔn)確率與效率很大程度上取決于圖像質(zhì)量,故在進(jìn)行圖像識別之前,需要在原圖基礎(chǔ)上做相應(yīng)處理,使圖像質(zhì)量對識別效率與準(zhǔn)確度的影響降到最小。在許多實際情況中,獲取的原始車牌圖像除車牌外還存在一些無關(guān)物體,如車體、周邊道路等,若不采取措施直接進(jìn)行定位,則噪聲干擾較為強烈,耗時長且定位效果較差,尤其對于有遮擋的車牌更是難以精確定位,因此需要將大部分非車牌區(qū)域去除,只留下車牌所在區(qū)域,以提高識別精度和效率。
彩色圖像有3 個色彩通道,包含的信息量巨大,不僅占用大量內(nèi)存,且識別起來需要的維度過高,導(dǎo)致識別效率大大降低,所以將原始車牌圖像進(jìn)行灰度化處理是很有必要的。圖1 所示為車牌原始圖像和灰度變換圖像。對圖像進(jìn)行增強處理的主要目的是改善圖像的清晰度、增強圖像特征。
圖1 原始圖像和灰度變換圖像Fig.1 Original image and gray transform image
本文采用去噪算法中的鄰域平均法(均值濾波)對圖像進(jìn)行增強,抑制和干擾圖像噪聲,以此提高圖像的質(zhì)量。采用不同權(quán)重的均值濾波對比效果、分析圖像發(fā)現(xiàn),1/3 鄰域平均處理得到的圖像效果最佳,后文將以此圖像為基礎(chǔ)。
由圖像預(yù)處理得到一個較好質(zhì)量的車牌圖像,但理想的狀態(tài)是得到一個只包含車牌的圖像,因此還需要對車牌進(jìn)行定位切割去除對實驗無作用的部分。具體的車牌定位流程圖如圖2 所示。
圖2 車牌定位流程圖Fig.2 License plate location flow chart
本文選擇在1/3 鄰域平均的圖像基礎(chǔ)上采用邊緣檢測法對車牌位置進(jìn)行提取。邊緣檢測法的原理是采集圖像像素灰度圖中灰度變化較大的像素群,再將這些像素群描繪出來,成功勾勒出物體的邊緣,隨后再利用邊緣對車牌進(jìn)行分割。目前邊緣檢測算法種類較多,主要在于對不同算子的選取,使用較多的算子包括Sobel 算子、Roberts 算子、Prewitt 算子以及Canny 算子[12]。不同的算子針對各種類型的邊緣具有不同的敏感度,會產(chǎn)生不同的效果,因此應(yīng)用不同的實驗環(huán)境,需選擇適當(dāng)?shù)乃阕舆M(jìn)行邊緣檢測。為了顯示哪種算子檢測效果更好,本文對常見的4 種算子進(jìn)行檢測對比實驗。圖3 所示為通過這4 種算子得到的實驗結(jié)果。
圖3 4 種算子仿真結(jié)果Fig.3 Simulation results of four operators
由圖3 可以看出,4 種算子僅有Canny 算子能有效地勾勒出車牌邊緣特征,其余3 種算子均由于遮擋問題不能有效地勾勒出車牌邊緣。因此,本文選擇效果最為理想的Canny 算子作為檢測算子對圖像采用邊緣檢測法提取車牌圖像,最終得到圖4(a)車牌定位后的灰色圖像。后續(xù),為了使得車牌字符能夠更加明顯,對圖4(a)進(jìn)行均值平滑處理、二值化、腐蝕和膨脹操作,分別得到圖4(b)、圖4(c)、圖4(d)??梢钥吹杰嚺七吘壖?xì)節(jié)逐步完善。
圖4 邊緣檢測圖像Fig.4 Edge detection image
定位得到車牌后對車牌進(jìn)行分割??紤]到本文研究的是有遮擋的車牌,圖像的信息不完整,故常用的投影法、平均分割法等字符分割方法在此使用效果不佳,因此采用基于先驗知識的切分方法,將車牌字符制作標(biāo)準(zhǔn)按其比例對車牌進(jìn)行切割。通過查閱GA 36-2018《中華人民共和國機動車號牌》可知[13],常見國民車牌具體標(biāo)準(zhǔn)如圖5 所示。
圖5 標(biāo)準(zhǔn)車牌樣例Fig.5 Standard license plate example
根據(jù)標(biāo)準(zhǔn),計算出各個字符在車牌中所占的比例對車牌進(jìn)行分割,得到的車牌在此時還不能直接識別,需對其進(jìn)行歸一化處理,使其與訓(xùn)練樣本的大小一樣尺寸,如圖6 所示。
圖6 車牌分割Fig.6 License plate segmentation
深度神經(jīng)網(wǎng)絡(luò)具有強大的非線性擬合能力,可以很輕易地逼近任何非線性連續(xù)函數(shù),并且還有很強大的特征提取能力。2015 年He[14]等提出了ResNet 網(wǎng)絡(luò),ResNet 網(wǎng)絡(luò)是一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的改良網(wǎng)絡(luò),因此它具有深度卷積神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu),包括輸入層、卷積層、池化層、全連接層等。但最為關(guān)鍵的是ResNet 在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上加入了一個捷徑連接(Short-cut connections)構(gòu)成了基本殘差學(xué)習(xí)的單元[15],以此擬合一個殘差映射。在傳統(tǒng)CNN 網(wǎng)絡(luò)中,當(dāng)層數(shù)到達(dá)一個界限時,繼續(xù)增加層數(shù)會引起梯度消失或爆炸的問題,而梯度消失或爆炸都會導(dǎo)致期望的映射產(chǎn)生巨大的偏差,因此為了使得梯度不會出現(xiàn)消失或爆炸,再加上一個恒等映射,使得讓原本擬合得到的映射R(x)=0 的情況下輸入x=H(x),有實際映射H(x)=R(x)+x,殘差映射R(x)=H(x)-x,形成了一個簡單的殘差學(xué)習(xí)單元,實際情況中還可以設(shè)計各種方式的捷徑連接。常見的殘差學(xué)習(xí)單元一般由卷積層、歸一化層和激活函數(shù)ReLU 構(gòu)成。He等人提出了瓶頸模塊(bottleneck)殘差學(xué)習(xí)單元。本文將在bottleneck 基礎(chǔ)上構(gòu)造殘差學(xué)習(xí)單元,以提高網(wǎng)絡(luò)訓(xùn)練以及識別效率。圖7 所示為本文所采用的殘差學(xué)習(xí)單元。
圖7 殘差學(xué)習(xí)單元Fig.7 Residual learning unit
本文所采用的概念深度殘差網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。卷積層設(shè)置4 個3×3 的卷積核,步長為1,填充為1,全連接層的輸出是一個67 維向量,對應(yīng)67 個車牌字符,最終由分類層輸出結(jié)果。由于本文需要進(jìn)行對比實驗,這里僅展示了抽象網(wǎng)絡(luò)結(jié)構(gòu),在后文的具體實驗時根據(jù)需求自適應(yīng)改變殘差學(xué)習(xí)單元的數(shù)量,構(gòu)造不同層數(shù)的殘差網(wǎng)絡(luò)結(jié)構(gòu)。殘差學(xué)習(xí)單元的數(shù)量越多,網(wǎng)絡(luò)層數(shù)越多,越能體現(xiàn)ResNet 在深層神經(jīng)網(wǎng)絡(luò)上的優(yōu)越性。
圖8 殘差網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.8 Residual network structure diagram
為了提升網(wǎng)絡(luò)效果,除了可以在網(wǎng)絡(luò)結(jié)構(gòu)方面改進(jìn)以外,還可以對損失函數(shù)進(jìn)行改進(jìn)。一般的卷積神經(jīng)網(wǎng)絡(luò)采用的損失函數(shù)為Softmax 函數(shù)結(jié)合交叉熵?fù)p失構(gòu)成的損失函數(shù),它定義了分類標(biāo)簽為yi的輸入圖像特征提取矩陣xi的損失函數(shù):
其中,D(θ)是一個單調(diào)遞減函數(shù),且D(π/m)=cos(mθ)。
在實驗過程中若要取得很好的精度,需要建立一個有遮擋車牌的樣本庫用以訓(xùn)練模型。按照上文圖像處理方法利用有遮擋的車牌數(shù)據(jù)庫,得到單個字符圖像數(shù)據(jù)集,然后對數(shù)據(jù)集中的字符進(jìn)行旋轉(zhuǎn)、膨脹、腐蝕等操作使其標(biāo)準(zhǔn)化,最終為每類字符建500 個以上的樣本,也就是33 500 個單字符圖像。此外,為了體現(xiàn)有遮擋車牌數(shù)據(jù)集在應(yīng)用中更能適應(yīng)復(fù)雜的實際情況,本文同時還建立了同樣數(shù)據(jù)規(guī)模的無遮擋的車牌數(shù)據(jù)集,同樣也是33 500個單字符圖像。
通過OpenCV 開源框架構(gòu)建的有遮擋車牌樣本庫分為漢字、字母和數(shù)字3 大類,其中每個字符通過不同形態(tài)、旋轉(zhuǎn)角度、遮擋情況等共構(gòu)造出500 個樣本,并取其中的80%作為訓(xùn)練集,剩余作為測試。本文在Python3.7 環(huán)境下采用訓(xùn)練框架Tensorflow2.5.0,此外將圖片數(shù)據(jù)集轉(zhuǎn)化為tfrecord類型以提高計算效率。由于數(shù)據(jù)量較大,實驗采取了小批量迭代訓(xùn)練樣本,這樣做的目的同樣是提高速率以及精準(zhǔn)率,設(shè)置迭代周期(epoch)為10,批量大小為256,網(wǎng)絡(luò)層數(shù)為50。最終,在第945 步(即epoch=9)左右時趨于穩(wěn)定,精度為97.44%。如圖9 所示為利用可視化觀測得到的訓(xùn)練損失率(train loss)、精準(zhǔn)率(train acc)和測試精準(zhǔn)率(test acc)可視化訓(xùn)練進(jìn)程圖。
圖9 可視化訓(xùn)練進(jìn)程Fig.9 Visualized training process
為了證明有遮擋車牌樣本庫在面對多樣性的情況時的優(yōu)越性,本文另外采用無遮擋車牌樣本庫運用相同的網(wǎng)絡(luò)結(jié)構(gòu)以及參數(shù)進(jìn)行對照實驗,得到有遮擋車牌樣本庫下測試識別混淆矩陣和無遮擋車牌樣本庫下測試識別混淆矩陣。由于車牌字符有67 個,數(shù)據(jù)量太大,因此本文只選取其中一部分具有代表性的數(shù)據(jù)。表1 所示為部分有遮擋車牌樣本庫下測試識別混淆矩陣,表2 為部分無遮擋車牌樣本庫下測試識別混淆矩陣。
表1 有遮擋車牌樣本庫下部分測試識別混淆矩陣(%)Tab.1 Confusion matrix of partial test recognition under sample database of concealed license plates (%)
表2 無遮擋車牌樣本庫下部分測試識別混淆矩陣(%)Tab.2 Confusion matrix of partial test recognition under sample database of non-shielding license plates (%)
由表1、表2 可知,采用有遮擋車牌樣本庫測試識別得到的識別準(zhǔn)確率相比于無遮擋車牌樣本庫測試識別得到的識別準(zhǔn)確率普遍要高,且從整體數(shù)據(jù)得知,有遮擋車牌樣本庫的總體準(zhǔn)確率可以達(dá)到97.44%,而無遮擋車牌樣本庫總體準(zhǔn)確率只能達(dá)到91.74%。本文選取的示例字符中,若字符“E”遮擋的部分是其右半邊,則“E”易被識別成與其左半邊形狀相似的“B”或“F”,因此導(dǎo)致識別結(jié)果的誤差增大,對于字符“3”和字符“8”等這類具有部分相似結(jié)構(gòu)的字符也同樣如此。遮擋問題會對原先的識別結(jié)果產(chǎn)生干擾,而本文采用有遮擋的車牌樣本庫訓(xùn)練模型。從二表對比結(jié)果可看出,采用有遮擋的車牌樣本庫訓(xùn)練出來的模型更具備魯棒性,能夠有效地提升有遮擋車牌的識別準(zhǔn)確率。
為了對比深度殘差網(wǎng)絡(luò)在深度增加的優(yōu)越性,本文采用同樣有遮擋的車牌數(shù)據(jù)庫,對比不同網(wǎng)絡(luò)深度下CNN 網(wǎng)絡(luò)與改進(jìn)的ResNet 網(wǎng)絡(luò)識別準(zhǔn)確率,結(jié)果如表3 所示。可以看出,隨著網(wǎng)絡(luò)層數(shù)的增加,CNN 網(wǎng)絡(luò)的識別準(zhǔn)確率出現(xiàn)了下滑,而改進(jìn)的ResNet 網(wǎng)絡(luò)的識別準(zhǔn)確率則是穩(wěn)步上升的,這正是由于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層數(shù)增加到達(dá)一個界限的時候,再增加網(wǎng)絡(luò)層數(shù)會出現(xiàn)梯度消失或爆炸等問題導(dǎo)致學(xué)習(xí)無法繼續(xù)進(jìn)行。因此實驗證明,對于識別準(zhǔn)確率要求較高、魯棒性要求更高的實際情況,ResNet 網(wǎng)絡(luò)更具有優(yōu)越性。
表3 不同網(wǎng)絡(luò)深度下CNN 與改進(jìn)的ResNet 識別準(zhǔn)確率對比(%)Tab.3 Comparison of recognition accuracy between CNN and improved ResNet at different network depths (%)
本文借鑒前人的研究成果,采用識別效率更好的ResNet 網(wǎng)絡(luò)對有遮擋的車牌進(jìn)行識別。文章從圖像預(yù)處理、定位、分割、識別這4 部分詳細(xì)描述了車牌的識別過程。圖像數(shù)據(jù)集利用視頻截幀的方式獲取,隨后利用灰度圖像采用邊緣檢測算子根據(jù)灰度差異確定車牌邊緣,再根據(jù)形態(tài)學(xué)相關(guān)內(nèi)容對圖像實現(xiàn)定位。由于本文研究對象為有遮擋車牌具有字符信息不完整的特點,無法采用正射投影等方法分割車牌字符,因此本文采用基于先驗知識的車牌分割法對車牌進(jìn)行分割。最后,為了提高識別的準(zhǔn)確性,本文運用改進(jìn)的損失函數(shù)構(gòu)造多層帶殘差學(xué)習(xí)單元的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對車牌進(jìn)行識別。為了驗證改進(jìn)的ResNet 網(wǎng)絡(luò)運用于有遮擋車牌數(shù)據(jù)集訓(xùn)練得到的模型在應(yīng)對復(fù)雜多變的車牌識別環(huán)境下的優(yōu)越性,本文進(jìn)行了對照實驗。實驗結(jié)果顯示,ResNet 網(wǎng)絡(luò)在運用有遮擋車牌庫訓(xùn)練得到的模型去識別車牌的準(zhǔn)確率更高,魯棒性更強。由于實驗所用到的數(shù)據(jù)只是所有車牌庫中的很小一部分,很難做到適用所有的情況,在后續(xù)的研究中將繼續(xù)優(yōu)化算法,以實現(xiàn)模型可以靈活應(yīng)對出現(xiàn)的各種情況。