鐘菊萍,高靜,李軍
(1.廣東技術(shù)師范學(xué)院計(jì)算機(jī)科學(xué)學(xué)院,廣州 510665;2.廣東恒電信息科技股份有限公司,廣州 510635)
圖像中的字符識(shí)別如掃描文檔和書籍已經(jīng)在過去的幾十年中被廣泛研究[1],手寫體識(shí)別也已被學(xué)術(shù)界和工業(yè)界廣泛應(yīng)用[2]。但從真實(shí)場(chǎng)景的圖片中讀取字符仍是一個(gè)困難的計(jì)算機(jī)視覺問題,因?yàn)樗幌駫呙栉臋n那樣背景干凈,識(shí)別起來方便,真實(shí)場(chǎng)景中的字符圖像本身極易受到自然環(huán)境的影響而出現(xiàn)細(xì)節(jié)模糊、視角變化、扭曲形變、背景摻雜、光照不均和類內(nèi)差異等困難,使得計(jì)算機(jī)對(duì)真實(shí)場(chǎng)景中的數(shù)字識(shí)別仍是一個(gè)巨大的挑戰(zhàn),然而這對(duì)于一系列真實(shí)世界的應(yīng)用來說卻又非常重要。自然場(chǎng)景中的街景已經(jīng)成為在線地圖中的一部分,定位到街道,從中讀取門牌號(hào),和所在的地理位置進(jìn)行比對(duì),是現(xiàn)代地圖制作的重要組成部分,建立更精準(zhǔn)的地圖,為智慧城市的智能交通、無人駕駛等提供精準(zhǔn)服務(wù)。
從自然場(chǎng)景圖像中分類字符的傳統(tǒng)方法通常是使用手動(dòng)特征提取[3]和模板匹配[4]。張帥等人[5]為了識(shí)別走廊環(huán)境的門牌號(hào)碼,利用Robert邊緣檢測(cè)與形態(tài)學(xué)運(yùn)算相結(jié)合的方法定位出門牌號(hào)圖像的位置,再經(jīng)過水平和垂直投影法、傾斜校正等操作分割門牌號(hào),最后運(yùn)用模式識(shí)別的方法識(shí)別出門牌號(hào)碼。馬立玲等人[6]利用正交判別的線性局部切空間排列算法(ODLLTSA)和支持向量機(jī)(SVM)方法相結(jié)合對(duì)門牌進(jìn)行識(shí)別,用提取的特征來訓(xùn)練SVM分類器,用SVM分類器對(duì)新的門牌進(jìn)行分類。
隨著計(jì)算能力的提升,實(shí)驗(yàn)數(shù)據(jù)量的擴(kuò)大,深度學(xué)習(xí)[7]的研究廣泛地應(yīng)用于圖像識(shí)別、目標(biāo)檢測(cè)、語音識(shí)別等領(lǐng)域,并取得了很好的效果[8,9]。卷積神經(jīng)網(wǎng)絡(luò)是一種比較流行的深度學(xué)習(xí)網(wǎng)絡(luò),與傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)不同,它包含有非常特殊的卷積層和降采樣層,其中卷積層和前一層采用局部連接和權(quán)值共享的方式進(jìn)行連接,從而大大降低了參數(shù)數(shù)量。降采樣層可以大幅降低輸入的維度,從而降低網(wǎng)絡(luò)的復(fù)雜度,使網(wǎng)絡(luò)具有更高的魯棒性,同時(shí)能夠有效地防止過擬合。卷積網(wǎng)絡(luò)主要用來識(shí)別縮放、位移以及其他形式扭曲不變的二維圖形,并且可以直接以原始圖片作為輸入,無需進(jìn)行復(fù)雜的預(yù)處理工作。與傳統(tǒng)機(jī)器學(xué)習(xí)算法最大的不同,卷積神經(jīng)網(wǎng)絡(luò)是自動(dòng)特征提取。
Yuval Netzer等人[10]提出使用K-means等無監(jiān)督學(xué)習(xí)模型自動(dòng)提取圖像中的特征,用于街景數(shù)字識(shí)別,其效果遠(yuǎn)大于手工提取特征的方法。韓鵬承等[11]在AlexNet網(wǎng)絡(luò)改進(jìn),馬苗等[12]在LeNet-5上改進(jìn),均在SVHN數(shù)據(jù)集進(jìn)行識(shí)別,對(duì)單數(shù)字門牌號(hào)碼的識(shí)別率獲得較高的識(shí)別率。
在多數(shù)字門牌號(hào)碼的識(shí)別方面,谷歌公司的Ian J.Goodfellow等人[13]用深度卷積神經(jīng)網(wǎng)絡(luò)在SVHN數(shù)據(jù)集上訓(xùn)練了六天,在特定的閾值操作下,精確度達(dá)到了96.03%。國(guó)內(nèi)的周成偉[14]利用Faster R-CNN框架實(shí)現(xiàn)對(duì)字符區(qū)域的定位,在獲取字符區(qū)域的準(zhǔn)確位置之后,利用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)對(duì)該區(qū)域包含的字符串進(jìn)行識(shí)別,并在SVHN數(shù)據(jù)集上進(jìn)行驗(yàn)證,但是其識(shí)別率并不高。
我們用端到端的方法,構(gòu)建單個(gè)數(shù)字識(shí)別網(wǎng)絡(luò),在不分割數(shù)據(jù)情況下,構(gòu)建另一深度神經(jīng)網(wǎng)絡(luò),同時(shí)識(shí)別多個(gè)數(shù)字,從而對(duì)自然場(chǎng)景中的門牌號(hào)碼進(jìn)行序列識(shí)別。在LeNet-5的基礎(chǔ)上對(duì)算法進(jìn)行改進(jìn),提高自然場(chǎng)景中門牌號(hào)碼的識(shí)別速度與識(shí)別率。
SVHN(Street View House Number)數(shù)據(jù)集來源于谷歌街景門牌號(hào)碼,是一個(gè)真實(shí)世界的圖像數(shù)據(jù)集,主要用于開發(fā)機(jī)器學(xué)習(xí)和圖象識(shí)別算法。SVHN數(shù)據(jù)集有兩種格式,分別包含訓(xùn)練集、額外集和測(cè)試集三個(gè)子集:
(1)裁剪后的數(shù)字,由600000多張32×32像素分辨率的圖像組成,是從原始數(shù)據(jù)集中裁剪出來的單個(gè)街景數(shù)字。
(2)原始數(shù)據(jù)集,包含33401張圖片用于訓(xùn)練,13068張圖片用于測(cè)試,另有一組額外的202353張圖片。
我們對(duì)兩種數(shù)據(jù)集分別構(gòu)建兩種不同的網(wǎng)絡(luò)結(jié)構(gòu),分別是單數(shù)字識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)和多數(shù)字識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)。
該模型是一個(gè)6層的網(wǎng)絡(luò)結(jié)構(gòu),包括2個(gè)卷積層、2個(gè)下采樣層、1個(gè)全連接層和1個(gè)輸出層。輸入圖像是32×32的門牌街景圖像,設(shè)置Padding為1,第一層的卷積層使用大小為5×5的卷積濾波器,卷積步幅為1,該層共有32個(gè)卷積濾波器,輸出32個(gè)32×32的特征圖。獲得第一層卷積層的輸出后,使用ReLU作為非線性激活函數(shù),最后連接一個(gè)窗口大小為2×2,步幅為2的Max pooling層,得到32個(gè)16×16的特征圖。第二層的卷積層使用大小為5×5的卷積濾波器,設(shè)置Padding為1,卷積步幅為1,該層使用64個(gè)卷積濾波器,輸出64個(gè)16×16的特征圖,隨后采用和第一層一樣的處理策略,得到64個(gè)8×8的特征圖。全連接層的參數(shù)為256,在進(jìn)行全連接時(shí),先對(duì)上一層輸出的參數(shù)加入Dropout,參數(shù)設(shè)置為0.6。最后用Softmax進(jìn)行分類。模型結(jié)構(gòu)如圖1所示。
圖1 單數(shù)字識(shí)別網(wǎng)絡(luò)結(jié)構(gòu)圖
對(duì)于多數(shù)字,我們識(shí)別的長(zhǎng)度是有限的,一般門牌號(hào)碼都不會(huì)超過5位數(shù)字,所以我們把長(zhǎng)度限定在5位。給定一個(gè)圖像X,任務(wù)是識(shí)別圖像中的數(shù)字,要識(shí)別的數(shù)字是一個(gè)多數(shù)字,S=s1,s2,s3,...,sn。我們要做的是訓(xùn)練每個(gè)數(shù)字的概率模型P,然后將它們組合成一個(gè)序列。并行用5個(gè)Softmax分類器進(jìn)行分類。在實(shí)驗(yàn)中,我們引用公式[13]:
該分類器接受從卷積神經(jīng)網(wǎng)絡(luò)X中輸出的特征。其中,S表示給定圖像X中的序列,si是序列中的第i位。每個(gè)數(shù)字變量si都有10個(gè)可能的值。并且每個(gè)元素si都要被正確預(yù)測(cè)才算識(shí)別正確,因?yàn)橹挥腥刻?hào)碼被正確識(shí)別,才能在地圖上找到精確的位置。每個(gè)字符的argmax是獨(dú)立計(jì)算的。
多數(shù)字模型是一個(gè)11層的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,包括5個(gè)卷積層,3個(gè)下采樣層,2個(gè)全連接層和1個(gè)輸出層。所有的卷積核大小都是5×5,步幅為1。第一個(gè)卷積層輸出32個(gè)32×32的特征面,第二第三個(gè)卷積層輸出64個(gè)16×16的特征面。第四第五個(gè)卷積層輸出128個(gè)8×8的特征面。所有的卷積層在輸入上都使用Padding為1的零填充,以保持大小不變。所有的最大池化窗口大小都是2×2,步幅為2。兩個(gè)完全連接層包含456個(gè)節(jié)點(diǎn)。第二個(gè)完全連接的層進(jìn)入并行的5個(gè)Softmax分類器,每個(gè)分類器有0-10這11個(gè)類別,其中0-9表示數(shù)字0到9,10表示當(dāng)前位置沒有數(shù)字。這之前還按照以下方法進(jìn)行數(shù)據(jù)預(yù)處理,首先在原始的SVHN圖像上找到包含單個(gè)字符邊界框的小矩形邊界框,通過最小和最大邊框坐標(biāo)將其合并成一個(gè)邊框,然后我們將這個(gè)框向四周擴(kuò)展30%,最后裁剪包含邊框的圖像,并將其調(diào)整為32×32像素。由于圖像中數(shù)字位數(shù)的不同,這就引入了一些比例變化。
卷積神經(jīng)網(wǎng)絡(luò)的工作原理是自動(dòng)提取分類器所需要的特征,因此本身不需要進(jìn)行太多的預(yù)處理工作來增強(qiáng)數(shù)據(jù)特征。單數(shù)字識(shí)別的預(yù)處理只是進(jìn)行了簡(jiǎn)單的去均值和灰度化處理,沒有對(duì)圖像進(jìn)行圖像增強(qiáng)或?qū)Ρ榷仍鰪?qiáng)等操作。灰度化公式如下:
其中Y′表示處理后的灰度圖像,a、b、c分別表示R、G、B分量的數(shù)值比重,因?yàn)镾VHN數(shù)據(jù)集中的背景偏藍(lán)色,所以為了抑制藍(lán)色背景信息會(huì)適當(dāng)降低B所占比重,實(shí)驗(yàn)中,我們?cè)O(shè)置a=0.299、b=0.587、c=0.114。
多數(shù)字進(jìn)行了同樣的去均值和灰度化處理,但在
本文實(shí)驗(yàn)的環(huán)境為Windows Server 2008 R2 Enter?prise 64位操作系統(tǒng),浪潮E5-2407CU,主頻2.4GHz,16GB內(nèi)存,使用TensorFlow開源庫(kù),Python編程語言。單數(shù)字識(shí)別我們構(gòu)建的是一個(gè)6層的神經(jīng)網(wǎng)絡(luò),2個(gè)卷積層,2個(gè)池化層,1個(gè)全連接層和輸出層的訓(xùn)練模型。多數(shù)字識(shí)別構(gòu)建的是11層的神經(jīng)網(wǎng)絡(luò),5個(gè)卷積層,3個(gè)池化層,2個(gè)全連接層和1個(gè)輸出層。實(shí)驗(yàn)總共迭代了50000次,單數(shù)字的訓(xùn)練時(shí)間3.5個(gè)小時(shí)左右,多數(shù)字的網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜,所以訓(xùn)練了27.5個(gè)小時(shí)左右。表1是調(diào)整單數(shù)字識(shí)別的一些參數(shù)和測(cè)試的準(zhǔn)確率。
在表1中,C1和C3分別表示第一層和第三層的卷積核大小,從表中可以可知,當(dāng)卷積核大小都為5×5的時(shí)候,Dropout=1.0也就是沒有加入隨機(jī)失活(Drop?out)這項(xiàng)超參數(shù)時(shí),準(zhǔn)確率是94.22%,比Dropout=0.6準(zhǔn)確率是95.72%時(shí)降低了1.5個(gè)百分點(diǎn),說明加入正則化后能夠適當(dāng)?shù)靥岣邷?zhǔn)確率。我們?cè)囍淖兙矸e核的大小或者是全連接層節(jié)點(diǎn)的大小,準(zhǔn)確率都會(huì)有所降低。我們與 HOG、K-means、LeNet5-SVM、PCA-CNN等方法的準(zhǔn)確率進(jìn)行對(duì)比,如表2所示。
我們用混淆矩陣來檢測(cè)單數(shù)字識(shí)別的各個(gè)類別精度,如圖3所示,橫坐標(biāo)的0-9表示實(shí)驗(yàn)預(yù)測(cè)分類,縱坐標(biāo)的0-9表示真實(shí)分類。
圖3 單個(gè)數(shù)字類別識(shí)別率
我們得到在單數(shù)字識(shí)別達(dá)到95.72%的識(shí)別率,多數(shù)字識(shí)別達(dá)到89.14%的識(shí)別率,多數(shù)字的識(shí)別如圖4所示,我們從測(cè)試集中隨機(jī)抽取10張圖片進(jìn)行測(cè)試,其中有9張能夠正確識(shí)別,1張錯(cuò)誤識(shí)別,發(fā)現(xiàn)圖片比較模糊,背景顏色和數(shù)字之間的對(duì)比特征不明顯,我們的模型難以正確識(shí)別。
圖4 隨機(jī)抽取10張測(cè)試圖片的真實(shí)分類和預(yù)測(cè)分類
本文提出了兩種卷積網(wǎng)絡(luò)模型,一種是單數(shù)字識(shí)別模型,訓(xùn)練3.5個(gè)小時(shí),識(shí)別率為95.72%,表明該模型具有較高的識(shí)別率。在構(gòu)建單個(gè)數(shù)字識(shí)別網(wǎng)絡(luò)的基礎(chǔ)上,構(gòu)建多數(shù)字識(shí)別的深度神經(jīng)網(wǎng)絡(luò)模型,同時(shí)識(shí)別多個(gè)數(shù)字,自然場(chǎng)景門牌號(hào)碼的多數(shù)字識(shí)別率達(dá)到89.14%,比單個(gè)數(shù)字識(shí)別低了6.58%,我們根據(jù)給定的邊界信息裁剪圖像,用數(shù)字邊界來刪除冗余信息,然后將它們規(guī)范化。我們?cè)O(shè)計(jì)的多數(shù)字識(shí)別模型限定了長(zhǎng)度,假定最長(zhǎng)只有5位數(shù)字,每個(gè)的數(shù)字分類器都需要自己的單獨(dú)的權(quán)重矩陣,如果加大長(zhǎng)度,會(huì)占用太多的內(nèi)存導(dǎo)致程序無法運(yùn)行。因此,在改進(jìn)模型和實(shí)現(xiàn)其他識(shí)別技術(shù)方面還有很大的改進(jìn)空間。