李慧瑩,胡西川
(上海海事大學(xué)信息工程學(xué)院,上海201306)
在模式識(shí)別領(lǐng)域中,印刷體字符識(shí)別已經(jīng)取得了令人滿意的效果,但是對(duì)于手寫體字符的識(shí)別效果仍然不是很理想。由于手寫體字符的樣本由不同人所寫時(shí),筆跡往往存在巨大差異,造成樣本類別繁多,特征提取困難,導(dǎo)致識(shí)別效果無法令人滿意。
脫機(jī)識(shí)別相較于聯(lián)機(jī)識(shí)別,由于存在噪聲與字符分割的問題,并且無法獲知筆劃順序,會(huì)導(dǎo)致識(shí)別率大幅降低。對(duì)于數(shù)字字符識(shí)別而言,雖然只有10個(gè)類別,但是阿拉伯?dāng)?shù)字具有世界通用性,不同國家和地域的人在書寫數(shù)字時(shí)存在很大筆跡上的差異,并且脫機(jī)手寫體數(shù)字識(shí)別多數(shù)應(yīng)用在銀行票據(jù)、郵政編碼等準(zhǔn)確率要求非常高的領(lǐng)域[1],所以對(duì)于脫機(jī)手寫體數(shù)字識(shí)別仍然需要不斷加快識(shí)別速度和提高識(shí)別準(zhǔn)確率。
近年來,脫機(jī)手寫體數(shù)字識(shí)別領(lǐng)域提出了多種不同的分類方法,其中卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別上取得了巨大的進(jìn)步。另外還有部分學(xué)者提出的不同改進(jìn)方法,有陳軍勝提出的基于組合結(jié)構(gòu)特征的方法[2]、任美麗等提出的基于原型生成技術(shù)的方法[3]、方向等提出的基于概率測(cè)度支持向量機(jī)的方法[4]等。
本文重點(diǎn)闡述手寫體數(shù)字識(shí)別領(lǐng)域中,應(yīng)用于結(jié)構(gòu)特征提取階段的一種改進(jìn)方法,利用脫機(jī)手寫體數(shù)字識(shí)別的識(shí)別率作為評(píng)價(jià)指標(biāo),與傳統(tǒng)結(jié)構(gòu)特征提取方法進(jìn)行數(shù)據(jù)上的對(duì)比,來衡量改進(jìn)程度。
MNIST數(shù)據(jù)庫是一個(gè)公認(rèn)的手寫數(shù)字?jǐn)?shù)據(jù)庫[5],由來自柯朗研究所的Yann LeCun、谷歌實(shí)驗(yàn)室的Corin?na Cortes以及微軟研究所的Christopher J.C.Burges共同建立。其中包含60000個(gè)訓(xùn)練樣本和10000個(gè)測(cè)試樣本,由大約250名作家書寫,并且保證訓(xùn)練集和測(cè)試集是來自不同的作家。MNIST手寫數(shù)據(jù)庫被公認(rèn)的一個(gè)原因是該數(shù)據(jù)庫中的數(shù)字形態(tài)復(fù)雜多樣,有些甚至連人眼也很難識(shí)別,因此,該數(shù)據(jù)庫幾乎可以涵蓋每一種手寫情況,使訓(xùn)練和測(cè)試更為可信。該數(shù)據(jù)庫中每個(gè)數(shù)字的維度為28×28像素,部分訓(xùn)練樣本和測(cè)試樣本如圖1所示。
本文采用的對(duì)比對(duì)象是由宋昌統(tǒng)等所發(fā)表的《基于概率神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別[6]》論文中提出的結(jié)構(gòu)特征提取算法。由于MNIST數(shù)據(jù)庫中的數(shù)字已經(jīng)完成了字符分割等前期預(yù)處理工作,所以本文只從二值化開始討論。本文在對(duì)MNIST數(shù)據(jù)庫中的樣本進(jìn)行二值化時(shí),選取的閾值統(tǒng)一為0.4×255。在二值化結(jié)束之后,MNIST數(shù)據(jù)庫中的數(shù)字字符并沒有對(duì)齊邊緣,上下左右皆留有黑色空余位置,所以在二值化之后必須要進(jìn)行字符的填充放大,使字符上下或者左右對(duì)齊邊緣?!痘诟怕噬窠?jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別》[6]中給出的方案是使字符在保持縱橫比的前提下,進(jìn)行字符放大,使上下或者左右對(duì)齊邊緣,如圖2所示。
圖1 部分訓(xùn)練樣本和測(cè)試樣本數(shù)字
圖2 字符放大示意
該論文的特征值由8個(gè)結(jié)構(gòu)特征值和6個(gè)統(tǒng)計(jì)特征值組成。8個(gè)結(jié)構(gòu)特征分別由3個(gè)縱向特征、3個(gè)橫向特征和2個(gè)對(duì)角線特征組成,其中3個(gè)縱向特征值分別選取豎直1/4處、1/2處和3/4處白像素個(gè)數(shù)總和,3個(gè)橫向特征值分別選取水平1/3處、1/2處和2/3處白像素個(gè)數(shù)總和,2個(gè)對(duì)角線特征值分別為主對(duì)角線和次對(duì)角線白像素個(gè)數(shù)總和,位置示意如圖3所示。
圖3 結(jié)構(gòu)特征取值位置示意
6個(gè)統(tǒng)計(jì)特征選取區(qū)域分別是4個(gè)14×14像素區(qū)域、1個(gè)9×28像素區(qū)域和1個(gè)28×9像素區(qū)域,4個(gè)14×14像素區(qū)域分別位于左上、右上、左下和右下四個(gè)角,9×28像素區(qū)域位于水平方向1/3到2/3的位置,28×9像素區(qū)域位于垂直方向1/3到2/3的位置,分別統(tǒng)計(jì)這些區(qū)域內(nèi)白像素個(gè)數(shù)之和的0.1倍作為特征值,統(tǒng)計(jì)特征選取位置示意如圖4所示。
圖4 統(tǒng)計(jì)特征位置選取示意
本文對(duì)結(jié)構(gòu)特征的提取方法進(jìn)行了改進(jìn),并相應(yīng)地對(duì)字符放大過程進(jìn)行了調(diào)整,先介紹調(diào)整后的字符放大方法。
傳統(tǒng)的字符放大方式如1.2節(jié)中所描述,其前提在于保持縱橫比不變,將字符統(tǒng)一到一致的尺寸上。顯然,這種方法對(duì)于“高瘦”的字符,會(huì)將上下邊緣對(duì)齊,如圖2所示;而對(duì)于“矮胖”的字符,會(huì)將左右邊緣對(duì)齊,如圖5所示。
圖5 “矮胖”字符放大示意
本文所提出的字符放大方法的區(qū)別在于始終保持字符的寬度不變,單方向地對(duì)字符進(jìn)行縱向拉伸,不論寬度是怎樣的字符都一律只使上下邊緣進(jìn)行對(duì)齊,左右方向不做調(diào)整。這種調(diào)整方式一方面是配合了改進(jìn)的結(jié)構(gòu)特征提取方法,另一方面又可在一定程度上抵消字符由于“高矮”所產(chǎn)生的差異。調(diào)整過后的方法對(duì)于“矮胖”字符處理示意圖如圖6所示,算法的MAT?LAB代碼描述如下:
[x,y]=find(data==1)
data=data(min(x):max(x),:)
data=imresize(data,[28 28])
圖6 調(diào)整過后的“矮胖”字符放大示意
在結(jié)構(gòu)特征提取階段,本文將傳統(tǒng)的統(tǒng)計(jì)白像素個(gè)數(shù)總量的方法調(diào)整為統(tǒng)計(jì)在這一列或這一行中白線條出現(xiàn)的次數(shù),即不區(qū)分白線條的粗細(xì),在傳統(tǒng)方法中如果白線條在一列或一行中由多個(gè)像素構(gòu)成時(shí),會(huì)累加這每一個(gè)像素的值,而改進(jìn)的方法不論線條的粗細(xì),每出現(xiàn)1次都是視為1,從而規(guī)避了線條粗細(xì)的影響。如圖7所示,使用改進(jìn)后的方法提取圖中線條所在列的特征值為4,而傳統(tǒng)的方法提取的特征值為7。
圖7 改進(jìn)的結(jié)構(gòu)特征取值示意
由于二值化圖像邊緣有時(shí)會(huì)出現(xiàn)“凹口”,在使用改進(jìn)的提取方法時(shí)會(huì)出現(xiàn)不必要的計(jì)算值,為了避免這種情況,在計(jì)算時(shí),如果出現(xiàn)白線條被一個(gè)黑像素阻斷的情況,處理方法是特征值不進(jìn)行加1,而是繼續(xù)保持原值,示意圖如圖8所示,圖中線條所在列的特征值記為3,而不是4。本文提出的結(jié)構(gòu)特征提取方法不進(jìn)行對(duì)角線的特征提取,經(jīng)部分測(cè)試,提取了對(duì)角線特征之后,識(shí)別率反而降低。改進(jìn)的結(jié)構(gòu)特征提取方法的MATLAB代碼描述如下:
圖8 被阻斷的線條處理方式示意圖
number=14
f(1:number)=0
MNIST數(shù)據(jù)庫包含60000個(gè)訓(xùn)練樣本和10000個(gè)測(cè)試樣本,數(shù)據(jù)量龐大,為了加快測(cè)試速度,分別只選取其中1/10的樣本量做測(cè)試,所得識(shí)別率僅作測(cè)試階段的對(duì)比使用,而在最后的數(shù)據(jù)對(duì)比中使用的是全樣本數(shù)據(jù)。
在字符放大方法中分為“保持縱橫比放大法”和“單方面縱向拉伸法”,結(jié)構(gòu)特征提取方法分為“傳統(tǒng)特征提取法”和“改進(jìn)特征提取法”[8],經(jīng)排列組合,共有4種不同的提取方案。在保持其他條件均相同的情況下,對(duì)比這4種不同的提取方案。在識(shí)別階段使用概率神經(jīng)網(wǎng)絡(luò)[7]作為分類方法,分別對(duì)每一種方案尋找各自最佳的擴(kuò)散速度,記錄4種不同方案的識(shí)別率,對(duì)比得出最佳方案。實(shí)驗(yàn)數(shù)據(jù)如表1所示。
表1 4種提取方案識(shí)別率對(duì)比
由表1數(shù)據(jù)可以看出,在使用“傳統(tǒng)特征提取法”時(shí),改變字符放大方法不能顯著使識(shí)別率得到提升;對(duì)于“改進(jìn)特征提取法”,無論使用哪種字符放大方法,其識(shí)別率都比“傳統(tǒng)特征提取法”有較明顯提升;另外還可看出,在使用“改進(jìn)特征提取法”時(shí),配合單方面縱向拉伸的字符放大法,可以使識(shí)別率得到較明顯的提升。
在使用“單方面縱向拉伸法”和“改進(jìn)特征提取法”的方案中,為了進(jìn)一步測(cè)試得到更優(yōu)的特征值數(shù)量和選取位置,本節(jié)使用MNIST數(shù)據(jù)庫中1/10的樣本數(shù)量,不斷調(diào)整結(jié)構(gòu)特征和統(tǒng)計(jì)特征的數(shù)量和選取位置,另外再將統(tǒng)計(jì)特征從計(jì)算區(qū)域內(nèi)白像素個(gè)數(shù)之和的0.1倍調(diào)整為0.05倍,分別計(jì)算出每種不同選取方案下的最佳擴(kuò)散速度和識(shí)別率,本節(jié)實(shí)驗(yàn)數(shù)據(jù)如表2所示。
表2 不同特征值數(shù)量和位置選取識(shí)別率對(duì)比
由表2數(shù)據(jù)可知,針對(duì)于MNIST數(shù)據(jù)庫的前1/10樣本,橫向結(jié)構(gòu)特征位置選取[4 7 10 13 16 19 22 25]行較佳,縱向結(jié)構(gòu)特征位置選取[5 8 11 14 17 20 23]列較佳,共15個(gè)結(jié)構(gòu)特征值。第一類統(tǒng)計(jì)特征選取4*4個(gè),每個(gè)大小為7×7像素,依次鋪滿整個(gè)28×28像素區(qū)域,每個(gè)7×7的小區(qū)域都不重疊。第二類統(tǒng)計(jì)特征選取3+3個(gè),前3個(gè)大小為9×28像素,平均分布在第4到25行中,后三個(gè)大小為28×9像素,平均分布在第5到23列中,此6個(gè)統(tǒng)計(jì)特征選取位置互相有重疊。以上選取位置的示意圖如圖9所示。
由于上述所有實(shí)驗(yàn)均是使用MNIST數(shù)據(jù)庫的1/10樣本,對(duì)于概率神經(jīng)網(wǎng)絡(luò)的訓(xùn)練并沒有達(dá)到最佳效果,為了得到更為可靠的識(shí)別率,本節(jié)使用MNIST數(shù)據(jù)庫中的全部樣本來做訓(xùn)練與測(cè)試,并記錄總體識(shí)別率和針對(duì)于每個(gè)數(shù)字的識(shí)別率[9]。共進(jìn)行3次實(shí)驗(yàn),分別是使用“保持縱橫比放大法”和“傳統(tǒng)特征提取法”,提取8個(gè)結(jié)構(gòu)特征值和6個(gè)統(tǒng)計(jì)特征值,記為“方法一”;使用“單方面縱向拉伸法”和“改進(jìn)特征提取法”,提取6個(gè)結(jié)構(gòu)特征值和6個(gè)統(tǒng)計(jì)特征值,記為“方法二”;使用“單方面縱向拉伸法”和“改進(jìn)特征提取法”,并且采用2.2節(jié)中得到的特征值數(shù)量和選取位置,提取15個(gè)結(jié)構(gòu)特征值和22個(gè)統(tǒng)計(jì)特征值,記為“方法三”。分別計(jì)算出三種方法的最佳擴(kuò)散速度,比較三種方法的識(shí)別率,如表3所示。
圖9 特征選取位置示意
表3 全樣本識(shí)別率對(duì)比
由于“方法三”的識(shí)別率在三種方法中最高,故只詳細(xì)記錄“方法三”的單個(gè)數(shù)字識(shí)別率,并標(biāo)出MNIST數(shù)據(jù)庫中該字符在測(cè)試集中的數(shù)量,如表4所示。
由表4數(shù)據(jù)可以看出,對(duì)于字符“5”和字符“3”的識(shí)別率較低,原因之一是在MNIST數(shù)據(jù)庫中這兩個(gè)字符由不同人所書寫時(shí)差異很大,有些甚至連人眼也無法識(shí)別,而由于字符“1”的結(jié)構(gòu)特征較明顯,所以對(duì)該字符的識(shí)別率最高。
表4 單個(gè)字符識(shí)別率
本文所提出的結(jié)構(gòu)特征改進(jìn)算法,相較于傳統(tǒng)算法可以使識(shí)別率得到提升,而單方向縱向拉伸的字符放大法僅在搭配本文提供的改進(jìn)方法時(shí)才可起到明顯作用。該算法思想還可推廣使用到英文字母等其他字符識(shí)別的結(jié)構(gòu)特征提取環(huán)節(jié)中,相較于傳統(tǒng)結(jié)構(gòu)特征提取方法來說具有一定優(yōu)勢(shì)。
對(duì)該提取方案分別添加椒鹽噪聲和高斯噪聲進(jìn)行噪聲測(cè)試[10],經(jīng)實(shí)驗(yàn),得出數(shù)據(jù),表明不論添加哪種噪聲,都會(huì)使識(shí)別率有所降低,說明該方法對(duì)噪聲的規(guī)避能力稍有不足。所以如果圖像有噪聲干擾,需在預(yù)處理階段提前對(duì)噪聲進(jìn)行有效清除,才能更好地利用該特征提取方案。
[1]王亞威.手寫體數(shù)字識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].河北科技大學(xué),2015.
[2]陳軍勝.組合結(jié)構(gòu)特征的自由手寫體數(shù)字識(shí)別算法研究[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(5):179-184.
[3]任美麗,孟亮.基于原型生成技術(shù)的手寫體數(shù)字識(shí)別[J].計(jì)算機(jī)工程與設(shè)計(jì),2015(8):2211-2216.
[4]方向,陳思佳,賈穎.基于概率測(cè)度支持向量機(jī)的靜態(tài)手寫數(shù)字識(shí)別方法[J].微電子學(xué)與計(jì)算機(jī),2015(4):107-110.
[5]陳明.MATLAB神經(jīng)網(wǎng)絡(luò)原理與實(shí)例精解[M].北京:清華大學(xué)出版社,2013.
[6]宋昌統(tǒng),黃力明,王輝.基于概率神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別[J].微型電腦應(yīng)用,2016,32(10):14-15.
[7]Parberry I.Probabilistic Neural Networks[J].Neural Networks,1994,3(1):109-118.
[8]C Dan,U Meier.Multi-Column Deep Neural Networks for Offline Handwritten Chinese Character Classification[J].International Joint Conference on Neural Networks,2015:1-6.
[9]XY Zhang,Y Bengio,CL Liu.Online and Offline Handwritten Chinese Character Recognition:A Comprehensive Study and New Benchmark[J].Pattern Recognition,2016,61(61):348-360.
[10]Wang Liang,Leckie C,KotagiriR,eta1.Approximate Pair-wise Clustering for Large Data Sets Via Sampling Plus Extension[J].Pattern Recognition,2011,44(2):222-235 .