李 非
(東北石油大學(xué)電子科學(xué)學(xué)院 大慶 163000)
隨著我國(guó)經(jīng)濟(jì)日益發(fā)展,國(guó)民經(jīng)濟(jì)水平大幅度提高,交通工具越來越普遍化,交通壓力增大的同時(shí),給交通管制帶來了巨大的挑戰(zhàn),交通管理中的一個(gè)重要步驟是車牌識(shí)別,因此對(duì)車牌識(shí)別提出了越來越高的要求,車牌識(shí)別系統(tǒng)要具有識(shí)別時(shí)間短、識(shí)別準(zhǔn)確率高的特點(diǎn)。
近年來人們對(duì)人工智能的研究日益深入,人工智能與機(jī)器視覺的結(jié)合為車牌識(shí)別帶來了新的機(jī)遇,機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)走入人們的視野中。我國(guó)廣大工作者一直在致力提高車牌識(shí)別的效率,目前較成熟的神經(jīng)網(wǎng)絡(luò)有卷積神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)等。由于卷積神經(jīng)網(wǎng)絡(luò)較為復(fù)雜,所以BP網(wǎng)絡(luò)的優(yōu)勢(shì)就凸顯出來了。人們對(duì)BP網(wǎng)絡(luò)[1]的優(yōu)化也一直在進(jìn)行中,主要優(yōu)化是在尋找網(wǎng)絡(luò)最優(yōu)誤差的算法、優(yōu)化網(wǎng)絡(luò)的輸入、優(yōu)化網(wǎng)絡(luò)參數(shù)等。尋找網(wǎng)絡(luò)最優(yōu)誤差的方法有粒子群優(yōu)化(PSO)算法[2]、遺傳算法[3]、壓縮映射遺傳[4]等來尋找全局最優(yōu)解。優(yōu)化網(wǎng)絡(luò)的輸入就是在數(shù)據(jù)特征提?。?~6]方面進(jìn)行,如主成分分析(PCA)法[7]、十三點(diǎn)特征提取算法[8~9]、四角特征提取法[10]等。優(yōu)化網(wǎng)絡(luò)參數(shù)有誤
差動(dòng)量項(xiàng)的添加[11~13]、使用自適應(yīng)學(xué)習(xí)率[14~15]、運(yùn)用可調(diào)激活函數(shù)[16~18]等。本文使用主成分分析法進(jìn)行字符的特征提取,使用SCG優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌字符識(shí)別,兩者結(jié)合使用的結(jié)果與傳統(tǒng)BP網(wǎng)絡(luò)相比,識(shí)別速度與準(zhǔn)確率有大幅度提高。
經(jīng)過攝像頭等硬件設(shè)備采集到車牌圖像后,圖像存在噪聲、傾斜、除車牌外包含多余圖像等諸多問題,這就需要進(jìn)行處理,解決以上問題得到統(tǒng)一規(guī)整的車牌圖像,有利于神經(jīng)網(wǎng)絡(luò)進(jìn)行字符識(shí)別,從而提神經(jīng)高網(wǎng)絡(luò)識(shí)別準(zhǔn)確率和速度。
圖1 車牌識(shí)別流程
具體方法:
1)圖像預(yù)處理:對(duì)車牌圖像進(jìn)行直方圖均衡化,中值濾波或均值濾波等處理。
2)車牌定位:利用車牌的顏色、紋理和形態(tài)等特征進(jìn)行車牌提取,用邊緣檢測(cè)等獲得車牌準(zhǔn)確位置。
3)字符分割:對(duì)二值化后的車牌使用垂直投影的方法獲得單個(gè)字符所在區(qū)域,尋找連續(xù)有文字的塊,若長(zhǎng)度大于設(shè)定的閾值則切割,進(jìn)而實(shí)現(xiàn)字符的分割[19]。
4)字符識(shí)別:使用成比例共軛梯度下降法優(yōu)化的神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌字符識(shí)別。
對(duì)車牌圖像進(jìn)行處理后的結(jié)果如圖2所示。
圖2 車牌圖像進(jìn)行處理
經(jīng)過字符分割后,得到了大小統(tǒng)一的單個(gè)字符,有利于之后的SCG-BP神經(jīng)網(wǎng)絡(luò)對(duì)其識(shí)別。也有利于提高網(wǎng)絡(luò)的收斂速度,提高BP網(wǎng)絡(luò)對(duì)車牌字符的識(shí)別效率。
經(jīng)過字符分割,實(shí)現(xiàn)了車牌圖像到單個(gè)字符的轉(zhuǎn)換,接下來要進(jìn)行字符特征提取。由于選擇BP網(wǎng)絡(luò)作為最終的分類器,BP網(wǎng)絡(luò)對(duì)輸入樣本有一定的要求,當(dāng)數(shù)據(jù)過于冗雜時(shí),網(wǎng)絡(luò)容易陷入局部最小值,并且網(wǎng)絡(luò)的收斂速度會(huì)大大增長(zhǎng)。這就影響了網(wǎng)絡(luò)的識(shí)別效率。BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果會(huì)不盡人意,即使訓(xùn)練效果可以,但在測(cè)試集上的效果也不一定可以達(dá)到預(yù)期結(jié)果。所以一定要對(duì)訓(xùn)練集做預(yù)處理,相應(yīng)的測(cè)試集也要經(jīng)過一定的處理。采用BP網(wǎng)絡(luò)對(duì)車牌字符進(jìn)行識(shí)別前需要對(duì)BP網(wǎng)絡(luò)進(jìn)行訓(xùn)練,但是存在訓(xùn)練集太大的問題,考慮以上問題所以本文采用主成分分析法(PCA)來解決這些問題。
主成分分析法是一種降低數(shù)據(jù)維數(shù)的方法,在保留盡可能多的有用“信息”時(shí),將高維的樣本數(shù)據(jù)轉(zhuǎn)換到低維的樣本數(shù)據(jù),從而減小BP網(wǎng)絡(luò)的計(jì)算量。樣本數(shù)據(jù)的“信息量”是樣本數(shù)據(jù)在特征方向上投影的方差。
PCA的本質(zhì)就是找一些投影方向,使得數(shù)據(jù)在這些投影方向上的方差最大,而且這些投影方向是相互正交的。就是找新的正交基的過程,計(jì)算原始數(shù)據(jù)在這些正交基上投影的方差,方差大,說明在對(duì)應(yīng)正交基上包括較多的信息[20]。原始數(shù)據(jù)協(xié)方差矩陣的特征值大,對(duì)應(yīng)的方差大,在對(duì)應(yīng)的特征向量上投影的信息量就多。相反,特征值小,則信息量小,可以將其對(duì)應(yīng)的數(shù)據(jù)刪除,從而保留了大部分重要的信息,這樣樣本數(shù)據(jù)得到了降維。
實(shí)現(xiàn)步驟:
1)輸入原始數(shù)據(jù),大小為(m,n),構(gòu)建n維特征的協(xié)方差矩陣。
2)對(duì)協(xié)方差矩陣分解,得到特征值和特征向量。
3)對(duì)特征值的絕對(duì)值進(jìn)行從大到小排序,決定降維后的特征數(shù)量:k。
4)選擇前k個(gè)特征值,就會(huì)得到一個(gè)n×k的特征向量組合成的矩陣。
5)將數(shù)據(jù)映射到新空間中,得到降維后的樣本數(shù)據(jù)如式(1):
式中:A是原始數(shù)據(jù)矩陣;B是主成分特征向量矩陣;C是新數(shù)據(jù)矩陣。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種具有連續(xù)傳遞函數(shù)的多層前饋反向傳播的網(wǎng)絡(luò),是一種結(jié)構(gòu)簡(jiǎn)單被廣泛使用的非線性不確定性數(shù)學(xué)模型。常用的訓(xùn)練方式是誤差反向傳播算法(BP算法),并以誤差最小化為目標(biāo)不斷修改網(wǎng)絡(luò)的權(quán)值和閾值,是一種有監(jiān)督的學(xué)習(xí)方法。BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是正向傳播和反向傳播兩個(gè)不斷進(jìn)行的過程。反向傳播算法是一種最有效的多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法,其主要特點(diǎn)是信號(hào)前向傳遞,而誤差后向傳播,通過不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)值,使得網(wǎng)絡(luò)的輸出與期望輸出盡可能接近,最終完成訓(xùn)練。如圖3所示。整體BP網(wǎng)絡(luò)分為三層輸入層、隱藏層、輸出層;net為神經(jīng)元的輸入存在于輸入層、隱藏層、輸出層;out為神經(jīng)元的輸出相應(yīng)的也存在于輸入層、隱藏層、輸出層;每個(gè)神經(jīng)元的內(nèi)部有激活函數(shù)函數(shù)A;神經(jīng)元之間的是連接權(quán)重wi。
圖3 傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)
在正向傳播中,樣本信息從輸入層輸入,經(jīng)過非線性變換到達(dá)隱含層并傳到輸出層。
若在輸出層沒有得到期望的輸出,則通過計(jì)算輸出層輸出的誤差:
式中:E1為輸出層第一個(gè)神經(jīng)元的誤差;out(i+1,1)是輸出層第一個(gè)神經(jīng)元的實(shí)際輸出;ans1是輸出層第一個(gè)神經(jīng)元的期望輸出。
然后進(jìn)行反向傳播,通過網(wǎng)絡(luò)將誤差信號(hào)
式中:E2為輸出層第二個(gè)神經(jīng)元的誤差;δi是修改wi的誤差因子;A是激活函數(shù)。
沿原來的通路回饋回來,修改各層神經(jīng)元權(quán)值和閾值,直至輸出層達(dá)到期望值。
式中:η為學(xué)習(xí)速率;out(i,j-1)是Wi連接的兩個(gè)神經(jīng)元的前一個(gè)神經(jīng)元的輸出。
以此類推,BP神經(jīng)網(wǎng)絡(luò)不斷輸入新的樣本數(shù)據(jù)進(jìn)行信號(hào)正向傳播,同時(shí)網(wǎng)絡(luò)不斷反向傳播并修改權(quán)值和閾值,最終得到在允許誤差以內(nèi)的各個(gè)神經(jīng)元連接的權(quán)重值,在大量訓(xùn)練樣本的輸入下,神經(jīng)網(wǎng)絡(luò)訓(xùn)練的可以滿足大量數(shù)據(jù)的輸出都在可接受誤差范圍內(nèi),至此完成BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。之后便可以輸入測(cè)試樣本進(jìn)行測(cè)試來評(píng)估訓(xùn)練完成的網(wǎng)絡(luò)模型的精確度或者輸入待預(yù)測(cè)量使用神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)。
最速下降法是現(xiàn)在最常用的訓(xùn)練方法,也就是按照梯度下降的方向修正各個(gè)權(quán)值。本文采用成比例共軛梯度下降法(Scaled Conjugate Gradient,SCG)是最速下降法的改進(jìn),將模值信賴域算法與共軛梯度算法結(jié)合起來,縮短BP網(wǎng)絡(luò)誤差優(yōu)化的時(shí)間[21]。
共軛梯度算法是存在于梯度下降法和牛頓法之間的一個(gè)方法,它不但解決了梯度下降法收斂慢的問題,而且解決了牛頓法計(jì)算過程中大量的二階導(dǎo)數(shù)的計(jì)算的問題。模值信賴域算法是一種尋找最優(yōu)解的方法,在每次迭代計(jì)算時(shí),選定一個(gè)可信賴的區(qū)域,然后選擇迭代點(diǎn)的近似模型,再計(jì)算最優(yōu)步長(zhǎng),如果步長(zhǎng)不合適,可以對(duì)區(qū)域進(jìn)行縮放。成比例共軛梯度下降法的優(yōu)點(diǎn)是所需存儲(chǔ)量小,穩(wěn)定性高,而且不需要任何外來參數(shù)。本算法的實(shí)現(xiàn)只是對(duì)其中的一些變量做了如下調(diào)整:
其中αk的步長(zhǎng)如下:
式中:λk為算法的尺度因子,sk是與λk相關(guān)的函數(shù)。
由于本文選擇不同網(wǎng)絡(luò)分別對(duì)漢字、數(shù)字、字母進(jìn)行識(shí)別,這里介紹數(shù)字識(shí)別的BP神經(jīng)網(wǎng)絡(luò)構(gòu)建過程。通過主成分分析法對(duì)待識(shí)別字符進(jìn)行特征提取,最終選取一定的主要特征作為BP神經(jīng)網(wǎng)絡(luò)的輸入。出于加快網(wǎng)絡(luò)收斂時(shí)間,提高識(shí)別效率考慮,本文最終選擇經(jīng)典的三層BP神經(jīng)網(wǎng)絡(luò)即包含一個(gè)隱藏層。通過公式:
式中:m為輸入層節(jié)點(diǎn)數(shù),n為輸出層節(jié)點(diǎn)數(shù),p為訓(xùn)練樣本數(shù)。初步確定隱含節(jié)點(diǎn)數(shù)定為100。通過對(duì)不同節(jié)點(diǎn)下識(shí)別率的統(tǒng)計(jì)如表1。
表1 不同神經(jīng)元個(gè)數(shù)SCG-BP網(wǎng)絡(luò)準(zhǔn)確率
發(fā)現(xiàn)節(jié)點(diǎn)數(shù)為110時(shí)識(shí)別正確率最好,所以最終確定隱含節(jié)點(diǎn)數(shù)為110。待識(shí)別的是0~9十個(gè)字符,所以選擇輸出節(jié)點(diǎn)為10,對(duì)應(yīng)十個(gè)字符。通過以上預(yù)設(shè)參數(shù)和對(duì)BP網(wǎng)絡(luò)改進(jìn)完成后,車牌字符識(shí)別的具體流程如圖4所示。
本文的測(cè)試硬件平臺(tái)是惠普OMEN,其配置是英特Core i5-7300HQ、四核、Nvidia GeForce GTX 1050 Ti獨(dú)立顯卡、8 GB DDR4內(nèi)存、1TB+128G存儲(chǔ),使用的軟件仿真平臺(tái)是Matlab R2016a。
圖4 算法流程圖
本文選用700個(gè)分辨率為40×32的單個(gè)字符,其中數(shù)字樣本包含0~9的數(shù)字、字母樣本包含A~Z的24個(gè)英文字母樣本、漢字樣本包括“滬”、“京”、“閩”、“蘇”、“粵”、“浙”漢字。部分訓(xùn)練集和測(cè)試集樣本如圖5所示。
圖5 部分訓(xùn)練樣本測(cè)試樣本
應(yīng)用SCG-BP網(wǎng)絡(luò)和傳統(tǒng)BP網(wǎng)絡(luò)分別對(duì)漢字、字母、數(shù)字進(jìn)行識(shí)別率統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果見表2。
表2 識(shí)別統(tǒng)計(jì)結(jié)果
試驗(yàn)結(jié)果表明,本文提出的SCG-BP神經(jīng)網(wǎng)絡(luò)有著很好的實(shí)用性,無論是在文字、數(shù)字、漢字的識(shí)別率最低都高于傳統(tǒng)BP網(wǎng)絡(luò)兩個(gè)百分點(diǎn)以上,證明了算法的優(yōu)勢(shì)性。
本文使用主成分分析法(PCA)進(jìn)行字符的特征提取和SCG-BP神經(jīng)網(wǎng)絡(luò)進(jìn)行字符識(shí)別,可以對(duì)車牌進(jìn)行快速識(shí)別,準(zhǔn)確率較高。由于漢字?jǐn)?shù)目有限,所以本文中SCG-BP網(wǎng)絡(luò)識(shí)別率可以達(dá)到100%。SCG-BP網(wǎng)絡(luò)中的不同參數(shù)的組合對(duì)識(shí)別結(jié)果有較大的影響,所以對(duì)網(wǎng)絡(luò)中的一些參數(shù)進(jìn)行改變可以進(jìn)一步提高網(wǎng)絡(luò)識(shí)別率。在車牌字符識(shí)別方面,選擇110個(gè)隱藏神經(jīng)元SCG-BP網(wǎng)絡(luò)的車牌識(shí)別可以得到較好的效果。