許江華,解 妍,陳德裕
(南通大學(xué)信息科學(xué)技術(shù)學(xué)院,江蘇南通 226019)
智能交通系統(tǒng)將先進的數(shù)據(jù)通信傳輸技術(shù)、傳感器技術(shù)、電子控制技術(shù)和計算機技術(shù)相結(jié)合,是交通系統(tǒng)的未來發(fā)展趨勢[1-3],車牌識別技術(shù)作為智能交通系統(tǒng)的重要組成部分受到廣泛關(guān)注。隨著國家的高速發(fā)展,高速公路、城市道路、停車場建設(shè)越來越多,對交通控制、安全管理的要求也日益提高,車牌識別技術(shù)不可或缺[4]。
傳統(tǒng)的車牌識別技術(shù)通過車牌字符分割然后再進行單個車牌字符識別[5-6],存在效率低、可靠性差的問題。單個車牌字符識別方法有模板匹配方法[7-8]、反向傳播神經(jīng)網(wǎng)絡(luò)算法[9-10]和特征匹配方法[11-13]。近年來卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)在圖像識別領(lǐng)域顯示出巨大潛力,得到廣泛應(yīng)用[14]。文獻[15]提出一種基于CNN 的低成本車牌字符識別算法,通過使用離焦模糊、局部動作模糊、池化等失真方法對低牌照樣本集進行仿真,然后將樣本集放入Le-Net5 網(wǎng)絡(luò)進行訓(xùn)練,但改進后的算法與傳統(tǒng)算法相比未有顯著改進。為進一步提高車牌識別準確率,增強車牌識別方法的魯棒性,本文對典型的卷積神經(jīng)網(wǎng)絡(luò)模型AlexNet[16]進行改進,提出一種基于改進AlexNet 的車牌識別方法,實驗結(jié)果表明這一方法可以有效提高車牌識別的準確率和效率。
卷積神經(jīng)網(wǎng)絡(luò)是一種多層非全連接的神經(jīng)網(wǎng)絡(luò)[17],主要包括卷積層和采樣層。對AlexNet、VGG、GoogleNet、ResNet[18-19]等幾大經(jīng)典模型綜合分析,考慮在計算能力有限的設(shè)備上深度過深的網(wǎng)絡(luò)不能實現(xiàn)實時的車牌識別問題。同時,本文所涉及的數(shù)據(jù)任務(wù)相對簡單,不需要VGG、GoogleNet 等深層網(wǎng)絡(luò)模型,因此選擇AlexNet 網(wǎng)絡(luò)模型作為本文車牌識別算法的基礎(chǔ)結(jié)構(gòu)。
AlexNet 開始是用來做圖像分類的,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。該網(wǎng)絡(luò)包含8 層帶權(quán)重的層,前5 個是卷積層,在每個卷積層中都包含激活函數(shù)Relu 和局部響應(yīng)歸一化(LRN)過程,其余3 個完全連接。最后一個完全連接層的輸出被饋送到1 000 路Softmax,后者在1 000 類標簽上分布。本網(wǎng)絡(luò)的最終優(yōu)化目標是使平均多項式邏輯回歸最大化,這等效于在預(yù)測分布下最大化正確標簽對數(shù)概率的訓(xùn)練案例平均值。AlexNet網(wǎng)絡(luò)操作流程如下:
(1)輸入圖像(尺寸:224×224×3),它實際上被預(yù)處理為227×227×3。
(2)特征提取,96 個濾鏡(或稱為卷積核)的大小為11×11。第一個卷積層對224×224×3 輸入圖像進行過濾,其中96個核的大小為11×11×3,步長為4像素(這是內(nèi)核圖中相鄰神經(jīng)元的感受范圍中心之間的距離)。
(3)使用Relu激活函數(shù)以確保特征圖的值在合理范圍內(nèi)。
(4)Overlapping Pooling,提取代表性特征,減少冗余信息。
(5)使用Local Response Normalization(LRN)局部響應(yīng)歸一化,模型的卷積核大小為3×3,這意味著處理3×3 的區(qū)域。通過池化獲得96 個大小為3×3 的特征圖,然后將這些特征圖作為第二次卷積的輸入數(shù)據(jù)。
(6)其余卷積層的操作過程與第一個卷積層相似。第二個卷積層將第一個卷積層的輸出(經(jīng)響應(yīng)歸一化和合并處理)作為輸入,并使用大小為5×5×48 的256 個卷積核對其進行過濾。第三、第四和第五個卷積層彼此連接而沒有任何中間的池化或規(guī)范化層。第三卷積層具有384 個大小為3×3×256 的卷積核,這些卷積核與第二卷積層的(標準化,合并的)輸出連接。第四卷積層具有384 個3×3×192大小的卷積核,第五卷積層具有256 個3×3×192 大小的卷積核。完全連接的層各有4 096個神經(jīng)元。

Fig.1 AlexNet neural network structure圖1 AlexNet神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
基于CNN 的車牌識別方法由兩部分構(gòu)成:①輸入訓(xùn)練圖像集訓(xùn)練CNN 模型;②將待識別的車牌圖像輸入訓(xùn)練好的模型進行識別,流程如圖2所示。

Fig.2 CNN-based license plate recognition process圖2 基于CNN的車牌識別流程
本文選擇AlexNet 網(wǎng)絡(luò)模型作為基礎(chǔ)結(jié)構(gòu),對其層次、參數(shù)等進行改進。原Aelxnet 模型的圖片輸入的尺寸為227×227×3,考慮到車牌的實際規(guī)格大小,決定將輸入圖片的規(guī)格更改為36×136×3。
卷積是CNN 中最重要的運算。將二維圖像的卷積計算映射到連續(xù)滑動卷積窗口,得到相應(yīng)的卷積值。在CNN中,每個特征圖由多個輸入特征圖進行卷積。對于第i個卷積層的輸入x計算如下:

其中,*表示卷積運算,Wi表示該層的卷積核,f表示激活函數(shù)。,K是該層卷積核的個數(shù)。每個卷積核是一個M×M×N的權(quán)矩陣,M是窗口大小,N是輸入通道數(shù)目。本文采用3×3 的卷積核替換Alexnet 模型中第一層卷積層中11×11 的卷積核以及第二層卷積層中5×5 的卷積核,一方面可以大大減少網(wǎng)絡(luò)參數(shù)的個數(shù),另一方面可以引入更多的非線性,增強模型的表達能力。
常用激活函數(shù)分為飽和非線性函數(shù)和不飽和非線性函數(shù)。飽和非線性函數(shù),如Sigmoid 和Tanh,在訓(xùn)練網(wǎng)絡(luò)時的性能比不飽和非線性函數(shù)差。Relu 激活函數(shù)是一種不飽和非線性函數(shù),本質(zhì)上是一種分段線性模型,可以模擬腦神經(jīng)元接收信號,函數(shù)圖形如圖3所示。
2.1.7 重復(fù)性試驗 取同一批KC粉末(批號F31008),按照“2.1.3”項下方法制備6份試品溶液,按照“2.1.1”項下色譜條件進樣測定,金絲桃苷、朝藿定B、朝藿定A、朝藿定C、淫羊藿苷、木犀草素、槲皮素、川陳皮素、山柰酚、寶藿苷I的平均質(zhì)量分數(shù)分別為6.22、4.12、35.07、32.62、47.32、0.213、0.402、0.380、0.336、2.86 mg/g,RSD分別為1.90%、0.78%、1.04%、0.70%、0.68%、2.61%、1.92%、1.45%、2.92%、0.84%,表明該方法重復(fù)性較好。

Fig.3 Relu activation function圖3 Relu激活函數(shù)
Relu 激活函數(shù)可以自適應(yīng)地學(xué)習(xí)整流器參數(shù),在不增加額外成本的情況下提高精度。本文在模型中加入Relu激活函數(shù),以防止加速網(wǎng)絡(luò)訓(xùn)練時出現(xiàn)梯度分散問題,提高識別精度。對于輸入x,Relu 激活函數(shù)定義為:

為防止AlexNet 模型過擬合,增強泛化能力,在第一層卷積層和第二層卷積層的激活函數(shù)后面引入局部響應(yīng)歸一化層(Local Response Normalization,LRN)。在本文模型中LRN 層并沒有什么實際效果,因此不采用LRN 層。Batch Normalization(Batch-Norm)是一種通過穩(wěn)定層輸入分布來提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練的技術(shù)。Batch-Norm 層最初設(shè)計是為緩解內(nèi)部協(xié)變量移位的問題——這是訓(xùn)練一個非常深入的神經(jīng)網(wǎng)絡(luò)時常見的問題。首先對小批量中的每個特性進行標準化,然后學(xué)習(xí)每個小批量的公共斜率和偏差。給定BN 層X∈Rn×p的輸入,其中n表示批大小,p為特征維數(shù),BN 層對特征j∈{1,…,p}的轉(zhuǎn)換公式為:

其中,xj和yj是數(shù)據(jù)樣本中一個神經(jīng)元響應(yīng)的輸入/輸出標量;X.j表示輸入數(shù)據(jù)的第j列;γj和βj參數(shù)是習(xí)得的,這種轉(zhuǎn)換保證了每一層的輸入分布在不同的小批之間保持不變。對于隨機梯度下降(SGD)優(yōu)化,一個穩(wěn)定的輸入分布可以極大地促進模型收斂,從而大大提高CNN 的訓(xùn)練速度。此外,如果在每個階段對訓(xùn)練數(shù)據(jù)進行變換,那么相同的訓(xùn)練樣本將被應(yīng)用于不同的轉(zhuǎn)換,換句話說,就是在整個訓(xùn)練過程中更全面地擴展。
在Relu 激活函數(shù)后加入Batch-Norm 層可以顯著減少收斂的迭代次數(shù),使優(yōu)化過程變得更加平滑,這種平滑性使得梯度運動具有更強的預(yù)測性和穩(wěn)定性,從而實現(xiàn)更快、更有效的訓(xùn)練,提高模型最終性能。
隨著卷積層數(shù)的增加,網(wǎng)絡(luò)的參數(shù)將呈指數(shù)增長,池化操作可以有效減少網(wǎng)絡(luò)參數(shù)的數(shù)量。為了減少所有區(qū)域的參數(shù),通過計算一個區(qū)域的統(tǒng)計特征來進行池化操作,以表示整個區(qū)域特征。AlexNet 模型為了減輕過擬合采用Overlapping Pooling(重疊池化),步長小于池化窗口大小,相鄰的池化窗口之間有重疊區(qū)域,Overlapping Pooling只能“稍微”減輕過擬合。因此,本文模型選擇采用普通池化中的Max Pooling(最大值池化),即選擇圖像區(qū)域的最大值作為該區(qū)域池化后的值,池化窗口設(shè)為2×2,步長設(shè)為2。
全連接層(fully connected layers)在整個卷積神經(jīng)網(wǎng)絡(luò)中扮演“分類器”角色。經(jīng)計算AlexNet 的3 個全連接層分別包含37 752 832、16 781 312、4 097 000個參數(shù),而整個模型的參數(shù)量為60 965 128,全連接層包含了模型約96.2%的網(wǎng)絡(luò)參數(shù)。巨大的網(wǎng)絡(luò)參數(shù)要求極高的訓(xùn)練數(shù)據(jù)量,原始AlexNet 使用擁有百萬級別數(shù)據(jù)量的ImageNet,而本文車牌識別收集到的數(shù)據(jù)量只有數(shù)萬級,相對少很多,因此本文通過去掉AlexNet 網(wǎng)絡(luò)模型3 個全連接層中的前兩個全連接層來減少整個模型的網(wǎng)絡(luò)參數(shù)。
Flatten 層即展平層,由于全連接層要求輸入一維數(shù)據(jù),因此在進入全連接層之前必須將輸入數(shù)據(jù)“展平”為一維。dropout 操作可以通過阻止某些特征的協(xié)同作用來緩解神經(jīng)網(wǎng)絡(luò)中訓(xùn)練樣本較少的情況。每個輸入樣本對應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)是不同的,但是所有這些不同的網(wǎng)絡(luò)結(jié)構(gòu)同時共享隱藏節(jié)點的權(quán)值,使不同的樣本對應(yīng)不同的模型。簡單來說,dropout 操作是通過隨機抑制一定數(shù)量的神經(jīng)元來實現(xiàn)的,被抑制的神經(jīng)元暫時不參與網(wǎng)絡(luò)的正向通訊。為了防止過擬合,提高模型的泛化程度,在本文模型中加入dropout操作,dropout操作的概率值選擇為0.5。
損失函數(shù)衡量的是預(yù)測結(jié)果與輸入標簽之間的差異,定義為:

本文使用一種隨機梯度下降(SGD)算法,其中W 迭代更新如下:

其中,α 是學(xué)習(xí)速率,是一個非常重要的參數(shù),它決定了學(xué)習(xí)的步長。K是類的指標。
AlexNet 模型的輸出層具有1 000 個分類數(shù)目,本文將輸出的Softmax 分類層改為7 類,對應(yīng)車牌的7 個字符。我國車牌字符包括31 省、市的簡稱即31 個中文字符、24 個英文字母(除去O 和I)以及10 個阿拉伯?dāng)?shù)字。車牌識別問題可以看作是包含65個標簽的多標簽分類問題,如圖4所示。

Fig.4 Softmax classification layer圖4 Softmax分類層
圖4 中,每一行的概率之和為1,最后依次輸出每一行中最大概率值相對應(yīng)的字符,即獲得7位車牌號碼。
改進后的AlexNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。

Fig.5 Improved AlexNet convolutional neural network structure圖5 改進的AlexNet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
對本文車牌識別方法的有效性進行實驗,實驗環(huán)境和參數(shù)如下:Inter Core i7-6700,3.40GHz CPU,16GB 內(nèi)存,Windows 10操作系統(tǒng),TensorFLow 深度學(xué)習(xí)框架。
網(wǎng)絡(luò)模型實驗參數(shù)設(shè)置如下:最大迭代次數(shù)為300 000次,初始學(xué)習(xí)率為0.000 1。為防止過擬合,設(shè)置dropout參數(shù)keep_prob為0.5。每迭代10 000次,保存一次模型。
由于樣本量的問題,采用車牌生成器對車牌樣本進行擴充,共得到30 760 張車牌數(shù)據(jù),其中包含自收集的車牌圖片顏色定位、Sobel 邊緣檢測結(jié)合SVM 的車牌定位方法提取到的3 793 張車牌數(shù)據(jù),將車牌按10:1 分為訓(xùn)練集和測試集。
將基于車牌字符分割結(jié)合ANN 車牌識別方法、基于車牌字符分割結(jié)合SVM 車牌識別方法與本文基于改進AlexNet 車牌識別方法進行對比實驗,將這3 種算法分別在自收集的測試集和EasyPR 數(shù)據(jù)集上進行實驗,選取其中5張車牌的對比實驗結(jié)果,如表1 所示。截取部分實驗結(jié)果圖片如圖6-圖8所示。

Table 1 Part of the license plate recognition results表1 部分車牌識別結(jié)果
對比實驗結(jié)果如表2 和表3 所示。車牌識別準確率表示車牌內(nèi)所有字符均被正確識別的結(jié)果(準確率=正確個數(shù)/測試個數(shù)),車牌識別時間表示每個車牌識別的平均時間。
從表2 和表3 可以看出,本文車牌識別方法在自收集數(shù)據(jù)集上識別準確率高達97.31%,在公共EasyPR 數(shù)據(jù)集上識別準確率高達98.03%,不僅在識別準確率方面均優(yōu)于其他對比方法,識別速度也具有優(yōu)勢,在車牌識別領(lǐng)域具有一定的優(yōu)越性。

Fig.6 Character segmentation combined with ANN recognition results圖6 字符分割結(jié)合ANN識別結(jié)果

Fig.7 Character segmentation combined with SVM recognition result圖7 字符分割結(jié)合SVM識別結(jié)果

Fig.8 License plate recognition results in this article圖8 本文車牌識別結(jié)果

Table 2 Recognition results of different license plate recognition methods on self-collected data sets表2 不同車牌識別方法在自收集數(shù)據(jù)集的識別結(jié)果

Table 3 Recognition results of different license plate recognition methods in EasyPR dataset表3 不同車牌識別方法在EasyPR數(shù)據(jù)集的識別結(jié)果
本文選擇AlexNet 網(wǎng)絡(luò)模型作為基礎(chǔ)結(jié)構(gòu),對其層次、參數(shù)等進行改進和重構(gòu),提出一種新的適用于車牌識別的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。實驗結(jié)果表明,采用基于改進AlexNet 的車牌識別方法進行自然場景下的車牌識別,避免了車牌字符分割對識別結(jié)果的影響,降低了復(fù)雜背景環(huán)境對車牌識別的影響,具有較高的識別率和可靠性。但由于樣本量問題,在訓(xùn)練模型過程中采用了許多擴充樣本,影響了模型訓(xùn)練結(jié)果,后期將針對這一問題進行改進,同時將嘗試采用不同的神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,以進一步提高車牌識別準確率。