劉孟瑩,呂小納
(1.商丘市質(zhì)量技術(shù)監(jiān)督檢驗測試中心, 河南 商丘 476100;2鄭州商學(xué)院, 河南 鄭州 451200)
隨著我國國民生活水平的日益提高,汽車的保有量也在急劇上升,車輛管理問題也越來越突出.對于車牌號碼的快速準(zhǔn)確識別,特別是在特殊環(huán)境下的準(zhǔn)確識別,已成為車輛管理入口信息的重要一環(huán).
車牌號碼的識別屬于2D圖像識別[1]的一種.本文主要研究的是基于卷積神經(jīng)網(wǎng)絡(luò)的數(shù)字圖像識別技術(shù).圖像識別的原理是將已有信息與當(dāng)前所輸入圖像的關(guān)鍵信息進行比對,根據(jù)比對的結(jié)果將輸入的圖像識別為已有信息的一種.已有信息的維度決定了圖像識別的復(fù)雜度.例如,對英文字母的識別與對漢字的識別復(fù)雜度就不一樣,英文字母只需識別出26個字母的大小寫,而漢字的個數(shù)遠(yuǎn)遠(yuǎn)大于英文字母數(shù),所以二者識別的復(fù)雜度就不一樣.相同像素點的英文字母和漢字的識別在準(zhǔn)確率上,英文字母就會高于漢字;同理,要獲得同樣的準(zhǔn)確率,漢字的像素點就必須要多于英文字母的像素點.
大多數(shù)機器識別的方法,一般是通過兩個步驟完成對的圖像識別[2],分別為特征值的提取和識別分類.特征值的提取就是將圖像中的關(guān)鍵信息提取出來,這些關(guān)鍵信息是可以用來區(qū)分不同的圖像.同時,特征值提取的效果會直接影響識別效率.識別分類步驟在特征值提取的基礎(chǔ)之上將圖像識別為具體的某一種.如果特征值的維度小于分類的維度,一定會出現(xiàn)分類錯誤的情況,所以一般情形下特征值的維度要大于分類的維度.
機器學(xué)習(xí)方法有一定的局限性,需要人為的預(yù)先設(shè)定特征.預(yù)先設(shè)定的圖像特征往往以數(shù)據(jù)的方式存在,而輸入的需要識別的圖像由于光線、角度、對比度等自然因素的影響,所提取的特征值和預(yù)先設(shè)定的特征值往往有一定的偏差.在最終的識別分類過程中允許一定范圍的容錯,容錯的閾值是分類階段需要考慮的因素.機器學(xué)習(xí)方法還有一個缺點就是計算量比較大,實時性很難完成.如圖1所示.
圖1 人工神經(jīng)網(wǎng)絡(luò)中識別方法流程
基于上述的缺點,深度學(xué)習(xí)[3]以其不用預(yù)先設(shè)定特征,只用根據(jù)被識別圖像的自身學(xué)習(xí)特征優(yōu)勢,越來越被研究人員所重視.
相對機器學(xué)習(xí)而言,深度學(xué)習(xí)最大的區(qū)別在于特征值的提取上,機器學(xué)習(xí)依賴于預(yù)先設(shè)定的特征值,而深度學(xué)習(xí)的特征值依賴于自身算法的自動處理.深度學(xué)習(xí)需要多層網(wǎng)絡(luò),每層網(wǎng)絡(luò)向上層傳遞特征值,上層網(wǎng)絡(luò)根據(jù)傳遞過來的數(shù)值進行語義抽象,再次提取特征值,然后再向上層傳遞.其整個過程不需要人工預(yù)先設(shè)定,特征值提取和分類識別由深度學(xué)習(xí)算法自動完成.相比于需要預(yù)先設(shè)定特征值的機器學(xué)習(xí),深度學(xué)習(xí)可以節(jié)省下特征值設(shè)計的成本,具體如圖2所示.
圖2 機器學(xué)習(xí)與深度學(xué)習(xí)流程對比
本文通過基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法,將特征值的提取與識別分類整合到一起,實現(xiàn)圖像的直接識別.卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中,往往需要輸入標(biāo)記過的樣本作為訓(xùn)練數(shù)據(jù).樣本數(shù)越多,識別的準(zhǔn)確度就會越高.但在樣本數(shù)有限的情況,如何構(gòu)造網(wǎng)絡(luò)模型以提高識別準(zhǔn)確度是本文研究的重點.
20世紀(jì)50年代,神經(jīng)網(wǎng)絡(luò)被首次提出,由于當(dāng)時計算機的能力有限,相關(guān)技術(shù)一直被擱置.電子技術(shù)的發(fā)展,特別是高速計算機技術(shù)的發(fā)展,使得大量數(shù)據(jù)的存儲和運算得以實現(xiàn).到20世紀(jì)80年代,神經(jīng)網(wǎng)絡(luò)研究再一次成為熱點.早期的神經(jīng)網(wǎng)絡(luò)主要是用在分類場景下,通過輸入值和目標(biāo)值之間的關(guān)系,調(diào)整神經(jīng)元的參數(shù)和偏移量,以及神經(jīng)元之間的參數(shù),來進行輸入值和目標(biāo)值之間的學(xué)習(xí)過程.
為了實現(xiàn)更精確的細(xì)分,神經(jīng)網(wǎng)絡(luò)可以使用多層結(jié)構(gòu).其相鄰兩層可直接連接,非相鄰層之間不能連接.且層與層之間以及層與端口之間的連接方式根據(jù)神經(jīng)網(wǎng)絡(luò)模型的不同而不同.同時,相鄰兩層之間一般使用全連接形式.
神經(jīng)網(wǎng)絡(luò)類似于人的神經(jīng)組織,由很多個神經(jīng)單元組成,神經(jīng)元結(jié)構(gòu)如圖3所示.
圖3 神經(jīng)元結(jié)構(gòu)
神經(jīng)元的計算公式為:
(1)
一般的神經(jīng)網(wǎng)絡(luò)會由多個層構(gòu)成,每個層往往又由多個神經(jīng)單元組成,相鄰的層與層之間通過神經(jīng)單元進行連接.神經(jīng)網(wǎng)絡(luò)就是包含一個隱藏層的網(wǎng)絡(luò),如圖4所示.
圖4 一般神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
神經(jīng)網(wǎng)絡(luò)根據(jù)實際需求可以擁有多個隱藏層.神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法與單個神經(jīng)元的訓(xùn)練方法類似.其區(qū)別在于神經(jīng)網(wǎng)絡(luò)一般包含多個層,且神經(jīng)元的個數(shù)以及神經(jīng)元之間的連接非常多,其訓(xùn)練過程需要遵循一定的規(guī)則,最常用的求導(dǎo)法則有鏈?zhǔn)角髮?dǎo)和梯度下降法則.
人工神經(jīng)網(wǎng)絡(luò)中,相鄰層之間的神經(jīng)元是全連接形式,每一個連接在計算過程中要賦一個權(quán)重值.假設(shè)每一層是n個神經(jīng)元,每增加一層,就需要增加n2個權(quán)重值.所以,隨著層數(shù)的增多,相關(guān)參數(shù)所占用的內(nèi)存空間也急劇增多.
當(dāng)識別目標(biāo)后的分類較多時,就會需要較多的神經(jīng)元和更多的網(wǎng)絡(luò)層數(shù).這樣需要的內(nèi)存空間就會比較多,同時運算的成本也會比較高.除此之外,神經(jīng)網(wǎng)絡(luò)的容量(記憶能力)比較大,如果輸入的樣本沒達到一定的限度(網(wǎng)絡(luò)容量)時,網(wǎng)絡(luò)會記憶下所給的樣本,這就是所謂的過擬合問題.過擬合會使網(wǎng)絡(luò)對新數(shù)據(jù)不準(zhǔn)確識別.出現(xiàn)上述問題主要是由于權(quán)重數(shù)過多,如果直接減少權(quán)重數(shù),又會帶來學(xué)習(xí)能力[4]的下降.為了改善這些情況,后來就出現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò).卷積神經(jīng)網(wǎng)絡(luò)可以在保證相同學(xué)習(xí)能力的情況下,減少權(quán)重的個數(shù)和神經(jīng)元的個數(shù).
現(xiàn)如今卷積神經(jīng)網(wǎng)絡(luò)已得到廣泛的應(yīng)用.由于其減少了神經(jīng)元之間的參數(shù),所以其在數(shù)據(jù)存儲、運算要求和過擬合問題上都有較好的表現(xiàn).因為是基于人工神經(jīng)網(wǎng)絡(luò)的改進,所以其結(jié)構(gòu)依然是層級結(jié)構(gòu).其特點有如下幾點:局部感知、權(quán)值共享、多卷積核、Down-pooling、多層卷積等.
用卷積神經(jīng)網(wǎng)絡(luò)來識別數(shù)字圖像,其識別準(zhǔn)確度比較高.卷積神經(jīng)網(wǎng)絡(luò)經(jīng)過多年的發(fā)展,現(xiàn)有很多種模型,其中,LeNet-5[5]是卷積神經(jīng)網(wǎng)絡(luò)中一種典型模型.該模型網(wǎng)絡(luò)結(jié)構(gòu)分層合理,學(xué)習(xí)和匹配過程中有較好的性能,而且其運行的效率也比較高.
LeNet-5基本思想是用一個卷積核對二維圖形進行局部的特征值提取,使用卷積核對整張圖進行遍歷取值,這樣就可以得到整張圖的特征值.由于卷積核較小,就可以使用較少的參數(shù)來完成對整張圖特征值的提取.由于要遍歷整張圖,所以其運算速度比較慢.
當(dāng)前使用的LeNet-5網(wǎng)絡(luò)一般包含的層有:輸入層(Input)、卷積層(Convolution layer)、池化層(Pooling)、全連接層(FC)、輸出層(Output)等.本文使用的LeNet-5結(jié)構(gòu), 如圖5所示.
圖5 卷積神經(jīng)網(wǎng)絡(luò)LeNet-5結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)依然是層級結(jié)構(gòu).不同類型的層有著不同的作用,不同的運算關(guān)系.常用的層類型及作用如下述.
1.3.1 輸入層
輸入層的目的是既要保證圖像數(shù)據(jù)的完整性,又要使圖像數(shù)據(jù)干凈(減少噪聲).所以,輸入層一般會對數(shù)據(jù)做一些處理,一般有去均值(去除直流分量)、歸一化、白化(去除各維度之間的相關(guān)性)等處理方法.
1.3.2 卷積計算層
卷積計算層就是用來做卷積計算的.對于彩色圖片,每個像素點都含有RGB三個色道,三種顏色的數(shù)值是相互對立.直接卷積會損失掉某些顏色,往往要對三個顏色分別做卷積.如果放在同一層做,每個像素點就需要三維向量,這樣需要的權(quán)重數(shù)就比較多.為了簡化算法,可以使用三層卷積計算層,每一層只負(fù)責(zé)一種顏色的計算,這樣就可以大幅度減少數(shù)據(jù)存儲量和計算的復(fù)雜度.
1.3.3 激勵層
在卷積層向下一層進行數(shù)據(jù)傳遞時,有些場合需要做非線性處理,這時就要在卷積計算層與下一層之間加入激勵層,用來實現(xiàn)非線性映射.
1.3.4 池化層
池化層的目的是為了減少權(quán)重數(shù).具體的操作過程是將上一層的結(jié)果進行抽樣,減少權(quán)重數(shù),同時也減少過擬合的問題.池化的方法有很多種,最常用的是最大池化和平均池化.在圖像識別中,平均池化用得比較多.如圖6所示.
圖6 平均池化示意圖
1.3.5 全連接層
全連接層主要的目的是加大學(xué)習(xí)力度.全連接層的前后兩層與全連接層的所有神經(jīng)元都有對應(yīng)的權(quán)重連接.本層通常放在神經(jīng)網(wǎng)絡(luò)的后面.
相比于人工神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢在于不同類型的網(wǎng)絡(luò)層完成不同的功能,每次需要完成的功能單一,便于進行算法的優(yōu)化.下面主要介紹卷積層的算法優(yōu)化.
圖像可以看作二維數(shù)據(jù)組,卷積層在計算卷積時是二維卷積.假設(shè)兩個函數(shù)f(x,y)和 g(x,y),卷積后的函數(shù)可以通過式(1)得到:
(2)
式(2)是二維卷積的一般公式.每得到一個卷積函數(shù)值都需要從負(fù)無窮到正無窮求遍歷加權(quán)和.實際的圖像是有限的,所以卷積函數(shù)的積分限是圖像的長和寬.卷積過程其實是一種加權(quán)過程,卷積核函數(shù)就相當(dāng)于加權(quán)值.對于具體一幅圖像的卷積公式為:
(3)
卷積神經(jīng)網(wǎng)絡(luò)是由前到后的單向傳播網(wǎng)絡(luò),所以每經(jīng)過一次訓(xùn)練就會遍歷整個神經(jīng)網(wǎng)絡(luò).每次訓(xùn)練后就將輸出的數(shù)據(jù)與預(yù)設(shè)數(shù)據(jù)比較,根據(jù)誤差(或者均方誤差)來調(diào)整權(quán)重,直到誤差最小,此時網(wǎng)絡(luò)訓(xùn)練完成.
車牌識別主要分為兩步,第一步是拍照,第二步是拍照后的圖像識別.圖像的質(zhì)量直接影響最終的識別效果.在拍照環(huán)節(jié)中,環(huán)境光、背景色、車牌角度、相關(guān)遮擋等都會影響圖像的質(zhì)量.未知場景下對車牌的識別有很多的困難.比如拍照的觸發(fā)時刻,觸發(fā)時刻選擇不好直接影響圖像中有用信息量.如果觸發(fā)時刻較早,圖像中車牌占比太小,如果觸發(fā)時刻較晚,整幅圖像不能全部包含車牌,會造成車牌信息丟失.除此之外,車牌上字符空間的大小、單個字符的大小(圖像分辨率)、相似字符之間的相似度等情況都會對車牌的識別帶來困難.
我國的車牌只有65個字符.這65個字符包含京、滬、津、渝等31個漢字字符,24個大寫英文字母字符(除去I和O)和10個阿拉伯?dāng)?shù)字字符.
本次實驗選取了多組數(shù)據(jù)集,每組數(shù)據(jù)集包含500幅圖像.按照訓(xùn)練測試比為41來劃分.每組500幅圖像分為400幅用來訓(xùn)練網(wǎng)絡(luò)參數(shù),另100幅圖像用來測試網(wǎng)絡(luò).
為了評估神經(jīng)網(wǎng)絡(luò)的優(yōu)劣勢,這里用識別準(zhǔn)確率和過擬合率作為神經(jīng)網(wǎng)絡(luò)優(yōu)劣的評判依據(jù).
識別準(zhǔn)確率定義為:識別準(zhǔn)確率=識別正確的圖像數(shù)量/總識別圖像.
與其對應(yīng)的平均準(zhǔn)確率為:平均準(zhǔn)確率=各組識別率之和/總組數(shù).
過擬合率定義為:過擬合率=訓(xùn)練準(zhǔn)確率/識別準(zhǔn)確率.
訓(xùn)練準(zhǔn)確率=正確分類的圖像數(shù)量/訓(xùn)練集圖像總數(shù).
為了驗證卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)劣,這里使用BP神經(jīng)網(wǎng)絡(luò)[6]和LeNet-5卷積網(wǎng)絡(luò)[7]兩種方法進行對比.其結(jié)果如表1所示.
表1 兩種算法在數(shù)據(jù)集上的實驗結(jié)果對比表
表1中的BP神經(jīng)網(wǎng)絡(luò)采用3層網(wǎng)絡(luò)結(jié)構(gòu),每次處理選取圖像中的32*32=1024點,所以其輸入層神經(jīng)元個數(shù)為1024個,中間隱含層節(jié)點選擇260個,因為字符總數(shù)為65,所以輸出層節(jié)點數(shù)選擇為65,激活函數(shù)公式為:
(4)
損失函數(shù)公式為:
(5)
因為輸入節(jié)點數(shù)為1024,所以輸入之前將圖像數(shù)據(jù)集歸一化為 32×32 的矩陣.
LeNet-5網(wǎng)絡(luò)由于其網(wǎng)絡(luò)各層功能確定,所以使用原始結(jié)構(gòu),只需將輸出層改為65,而且LeNet-5網(wǎng)絡(luò)不需要對預(yù)先數(shù)據(jù)進行歸一化處理,使用原始數(shù)據(jù)集即可.
根據(jù)實驗結(jié)果可以得出如下結(jié)論:BP神經(jīng)網(wǎng)絡(luò)由于其結(jié)構(gòu)單一,各層之間功能相近,使得圖像特征值的準(zhǔn)確率不夠,過擬合率相對較高;除此之外,BP神經(jīng)網(wǎng)絡(luò)對輸入數(shù)據(jù)需要做歸一化處理,自身識別性也會受限,訓(xùn)練網(wǎng)絡(luò)需要的時間也較長.LeNet-5網(wǎng)絡(luò)通過多層結(jié)構(gòu),在特征值提取方面有一定的提升.最終的效果是LeNet-5網(wǎng)絡(luò)在識別準(zhǔn)確率、過擬合率和網(wǎng)絡(luò)訓(xùn)練時間上都優(yōu)于BP神經(jīng)網(wǎng)絡(luò).
本文詳細(xì)介紹了神經(jīng)網(wǎng)絡(luò)的基本原理和卷積神經(jīng)網(wǎng)絡(luò)LeNet-5結(jié)構(gòu)和原理.通過實驗結(jié)果可得,LeNet-5網(wǎng)絡(luò)在識別準(zhǔn)確率、過擬合率和網(wǎng)絡(luò)訓(xùn)練時間上都優(yōu)于BP神經(jīng)網(wǎng)絡(luò).同時,也可以看到卷積神經(jīng)網(wǎng)絡(luò)的識別能力受制于反饋式的訓(xùn)練過程和大量的數(shù)據(jù)樣本.如果樣本增加或者輸出量增加時,要想保證識別準(zhǔn)確率,就必須增加網(wǎng)絡(luò)層和訓(xùn)練參數(shù),這必然會影響識別時間和網(wǎng)絡(luò)性能.要想突破這些瓶頸,就需要從圖像的語義層面上識別,對特定的場景,使用更專業(yè)化的神經(jīng)網(wǎng)絡(luò),會得到更好的效果.
商丘職業(yè)技術(shù)學(xué)院學(xué)報2020年2期