趙力衡
(四川大學(xué)錦城學(xué)院,四川 成都 611731)
隨著近年來信息化技術(shù)的迅速發(fā)展,信息技術(shù)對社會各個行業(yè)的影響與日俱增,為人們的生產(chǎn)和生活帶來了極大的便利,同時也帶來了新的挑戰(zhàn)。現(xiàn)在,越來越多的行業(yè)在倡導(dǎo)“無紙化”和“信息化”的辦公和生活,把各種信息記錄在計算機系統(tǒng)中,這使得辦公和生活變得更加便捷也更加環(huán)保。其中一個重要的場景就是通過計算機系統(tǒng)準(zhǔn)確識別機器字庫數(shù)字和手寫數(shù)字,并將它們讀入到計數(shù)機系統(tǒng)中。這種需求在金融、教育、科學(xué)等多個領(lǐng)域都有很廣泛的應(yīng)用場景,非常有實用價值,那么如何準(zhǔn)確的識別這些數(shù)字就成了當(dāng)前國內(nèi)外相關(guān)研究的難點和熱點問題之一。
相對于手寫數(shù)字,機器字庫的數(shù)字具有明確的規(guī)范寫法,相對容易識別,而手寫數(shù)字因人的習(xí)慣不同和寫字的隨意性,更加難以準(zhǔn)確識別。比如同樣的數(shù)字“7”,就存在以下風(fēng)格迥異的多種寫法:
圖1 不同風(fēng)格的手寫數(shù)字“7”Fig.1 Handw ritten number“7”in different styles
從圖中可以看出,手寫數(shù)字風(fēng)格不但變化多端,規(guī)律很難識別,而且一個人的手寫數(shù)字可能會與另一個人手寫的其它數(shù)字非常相似,甚至一個手寫數(shù)字看起來更像其它數(shù)字。比如圖 1中左起第二個“7”,看起來更加接近數(shù)字“9”。這些特性顯然增加了對手寫數(shù)字識別的難度,因此提出方法主要研究對象就是如何精確快速的識別出這些風(fēng)格不同的手寫數(shù)字。
傳統(tǒng)的方法難以準(zhǔn)確的識別出手寫數(shù)字多變的風(fēng)格,因此識別準(zhǔn)確率較低。目前識別手寫數(shù)字的常見方法是采用TensorFlow等深度學(xué)習(xí)方法[1-3],這種方法識別精度高,但缺點在于計算量大,耗時較長,并對計算平臺的要求較高。為此,提出一種基于決策樹(Decision Tree)的方法進行手寫數(shù)字的識別。實驗結(jié)果表明,所提方法能在保持計算量較小的前提下精確、快速地識別出各種手寫數(shù)字,可作為手寫數(shù)字的有效識別手段。
1.1 數(shù)據(jù)選擇
采用的數(shù)據(jù)來源于 MNIST手寫數(shù)據(jù)集(The MNIST database of handwritten digits),其數(shù)據(jù)來自于美國國家標(biāo)準(zhǔn)與技術(shù)研究所(National Institute of Standards and Technology,簡稱NIST),由來自250名不同人的手寫數(shù)字構(gòu)成,能較全面的反映出各種手寫字體的風(fēng)格,也是目前國內(nèi)外手寫數(shù)字識別的一個典范數(shù)據(jù)源。從數(shù)據(jù)集中取出包含0-9共10個數(shù)字的10,000條記錄作為訓(xùn)練集樣本。數(shù)據(jù)分布如下表所示:
表1 樣本信息Tab.1 Sample information
從圖1中可以看出,識別圖片中的數(shù)字實質(zhì)上就是識別出圖片中不同位置的顏色值的變化,根據(jù)顏色值變化的特點來判斷圖片中的數(shù)字是多少。因此首先采用Optical Character Recognition (OCR)方法實現(xiàn)從圖像文件到文本文件的轉(zhuǎn)化,即根據(jù)圖片像素排列順序?qū)⑽募D(zhuǎn)化成顏色值矩陣。由于手寫數(shù)字的數(shù)值與顏色無關(guān),故提取MNIST樣本圖片中像素的灰度值作為數(shù)字特征。樣本圖片長寬都為28個像素,因此一個數(shù)字圖片可以轉(zhuǎn)換成一個 28*28的標(biāo)準(zhǔn)灰度值矩陣,如下圖所示:
圖2 手寫數(shù)字及其灰度值矩陣Fig.2 Handw ritten digit and gray value matrix
數(shù)字圖片的灰度值可以使用下面矩陣(1)表示:
其中aij表示第i行第j列像素的灰度值,其中0≤i, j 可以看出,上圖右側(cè)數(shù)字矩陣能夠詳細準(zhǔn)確地反映出對應(yīng)數(shù)字的特點,適合作為數(shù)字識別的重要依據(jù)。將樣本中的每個數(shù)字圖片作為一條記錄,存儲其灰度值矩陣作為決策樹模型的訓(xùn)練集。 統(tǒng)計訓(xùn)練集中從0~255級灰度值分別出現(xiàn)的頻率,如下圖所示: 圖3 灰度值出現(xiàn)頻率統(tǒng)計Fig.3 Frequency statistics of gray value 上圖左側(cè)顯示了訓(xùn)練集中出現(xiàn)頻率最高的9個灰度,可見其灰度值分布極不均勻。容易看出,表示空白的灰度值“0”出現(xiàn)頻率最高,然后是表示手寫痕跡的高亮度灰度,中間灰度相對較小??梢娛褂没叶戎底鳛樘卣髂芎芎玫貐^(qū)分出背景灰度和手寫數(shù)字痕跡灰度。 再進一步,從上圖右側(cè)的灰度頻率統(tǒng)計圖中還可以看出當(dāng)灰度值在[1,188]范圍內(nèi)時出現(xiàn)的頻率幾乎都在0-6000之間,顯得較為穩(wěn)定,并且灰度值越高時,出現(xiàn)頻率越偏向于6000;灰度值越低時,出現(xiàn)頻率更低。這一現(xiàn)象也符合手寫數(shù)字特征。當(dāng)使用中性筆、鉛筆等工具落筆于紙張等載體時,通常會出現(xiàn)筆畫中間壓力大、痕跡深,而筆畫兩側(cè)壓力小、痕跡淺的現(xiàn)象,并且由于紙張的浸潤,會有較少的淺色痕跡在筆跡邊緣出現(xiàn)。但需要注意的是,大于0值的灰度并不是都意味著表示手寫數(shù)字痕跡,也可能是紙面污漬、墨點或連筆等,如圖1右起第一、二個數(shù)字。訓(xùn)練集中的灰度值較為完整的反映了這一現(xiàn)象,可見灰度值還能很好地反映出手寫字體的細節(jié)特征。 總的來看,數(shù)字圖片的灰度值矩陣非常適合于作為手寫數(shù)字的分析依據(jù)。 訓(xùn)練集中已知數(shù)字的灰度矩陣特征和數(shù)字的值。當(dāng)數(shù)字的值為已知條件時,可以根據(jù)相同數(shù)字在灰度值矩陣對應(yīng)位置 aij的值的關(guān)聯(lián)變化來分析同一手寫數(shù)字的相似特征,以及不同數(shù)字之間的差異。這是一個根據(jù)已知條件不斷細分的過程,和決策樹思路相似[4]。決策樹是在已知不同情況發(fā)生的概率基礎(chǔ)上,根據(jù)條件不斷細分來分析期望值概率的方法,因此,決策樹模型很適合用于對手寫數(shù)字進行分析。決策樹C5.0由于有在面對輸入字段很多時非常穩(wěn)健、并支持多次多個子組的分割的特點,故方案中選取決策樹C5.0進行建模[5]。設(shè)置模型主要方法和參數(shù)如表2所示。 模型執(zhí)行結(jié)果在Web圖中詳細結(jié)果數(shù)據(jù)如圖4所示。 表2 決策樹模型所用主要方法/參數(shù)Tab.2 Main methods and parameters in decision tree model 圖4 W eb圖結(jié)果顯示Fig.4 W eb diagram results 從圖中可以看出,實驗?zāi)P湍芫_地識別出訓(xùn)練集中10,000個樣本中9,998個樣本的實際數(shù)值,僅有2個樣本未能正確識別,可以證明該決策樹模型在分析手寫數(shù)字時是成功的。 分析未能正確識別的樣本被錯誤分類的原因,以被誤分的樣本數(shù)字“6”為例,該樣本被錯誤分到數(shù)字“0”所在類別,樣本圖片如圖5所示。 可見該樣本的寫法確實很接近于數(shù)字“0”,再檢查數(shù)字“0”的樣本,發(fā)現(xiàn)樣本中存在多個寫法與該錯誤分類的數(shù)字相似的數(shù)字“0”,如圖6所示。 圖5 被錯誤分類的樣本數(shù)字“6”Fig.5 M isclassified sample“6” 圖6 數(shù)字“0”的部分樣本Fig.6 Partial samples of the number“0” 可見被誤分的數(shù)字“6”與數(shù)字“0”中存在多個樣本有相似筆跡是該樣本被錯誤歸類的主要原因。這種筆跡不規(guī)范的特征由于手寫數(shù)字的隨意性而難以避免,因此也成為手寫數(shù)字難以被正確識別的主要原因之一。 從MNIST數(shù)據(jù)集中隨機讀取包含了0-9共10個數(shù)字的100個樣本作為測試集,將圖片數(shù)字與執(zhí)行模型分析得到的數(shù)字進行對比,如圖7所示。 圖7 手寫數(shù)字識別結(jié)果Fig.7 Recognition of handwritten digits 圖中number_count表示測試集中各個數(shù)字的真實樣本個數(shù),$C-number_count表示模型識別出的各個數(shù)字的個數(shù),縱軸表示個數(shù)統(tǒng)計。從圖中可以看出,測試集各個數(shù)字的機器識別個數(shù)與數(shù)字的實際個數(shù)是一致的。實際上,在實驗中的17次測試中,全部數(shù)字均能正確識別。 通過上面分析,可以發(fā)現(xiàn)在分析手寫數(shù)字時,用于描述數(shù)字痕跡的特征并不一定需要256級灰度來表示,僅需“0”和“1”兩個值就能滿足對數(shù)字軌跡的描述:沒有手寫數(shù)字痕跡的像素點使用“0”值表示,有手寫數(shù)字痕跡的像素點使用“1”值表示。合理選擇閾值的二值化處理可以簡化圖片特征信息,但也會使圖片丟失部分信息,比如手寫筆畫痕跡中間深、兩側(cè)淺等特征將無法體現(xiàn)。分別以灰度值27、127和220為閾值,將訓(xùn)練集二值化,模型執(zhí)行結(jié)果如圖8所示。 可見二值化的特征雖然簡化了運算,但也因為丟失了部分信息而導(dǎo)致計算精度有所降低。同時在實驗中發(fā)現(xiàn),二值化后的模型計算時間相較采用真實灰度值的模型的計算時間并沒有明顯的減少。因此在提出方法中,依然采用真實灰度值作為訓(xùn)練集進行計算。 圖8 分別以27(左)、127(中)和220(右)為閾值的二值化模型運行結(jié)果Fig.8 Results of binary models with threshold of 27 (left) 127 (middle) and 220 (right) 針對手寫數(shù)字的識別,提出使用機器學(xué)習(xí)中決策樹型模型分析數(shù)字圖片集中像素的灰度值的方法。該方法能在準(zhǔn)確識別出不同的手寫數(shù)字的同時,保持計算量相對較小、計算較快的特點,能在配置較低的系統(tǒng)上較好的完成對手寫數(shù)字的識別,這使其能在大多數(shù)平臺上運行,便于推廣。從實驗結(jié)果可以看出,該方法識別訓(xùn)練集手寫數(shù)字的精度已超過人工識別的精度,達到了99.98%,能正確識別出多數(shù)肉眼難以辨別的手寫數(shù)字,已達到很多商用項目的要求,具有較強的商用價值。 [1] 李福衛(wèi), 李玉惠. 基于卷積神經(jīng)網(wǎng)絡(luò)的圖像清晰度識別方法[J]. 軟件, 2017, 38(7): 6-9.LI F W, LI Y H. CNN Image Segmentation Recognition Method Based on Deep Learning[J]. Software, 2017, 38(7):6-9. (in Chinese) [2] 章敏敏, 徐和平, 王曉潔, 等. 谷歌TensorFlow機器學(xué)習(xí)框架及應(yīng)用[J]. 微型機與應(yīng)用, 2017, (10): 58-60.ZHANG M M, XU H P, WANG X J, et al. Application of Google TensorFlow machine learning framework[J]. Microcomputer & Its Applications, 2017, (10): 58-60. (in Chinese) [3] 張俊, 李鑫. TensorFlow平臺下的手寫字符識別[J]. 電腦知識與技術(shù), 2016, (16): 199-201 ZHANG J, LI X. Handwritten Character Recognition Based On TensorFlow Platform[J]. Computer Knowledge and Technology,2016, (16): 199-201. (in Chinese) [4] IBM SPSS Modeler. 決策樹之銀行行銷預(yù)測應(yīng)用分析.[EB/OL]. https://www.ibm.com/developerworks/cn/data/library/ba/ba-1412spssmodelerbank.IBM SPSS Modeler. Application Analysis of Bank Marketing Prediction Based on Decision Tree. [EB/OL]. https://www.ibm.com/developerworks/cn/data/library/ba/ba-1412spssmod elerbank. (in Chinese) [5] 陳英, 馬仲兵, 黃敏. 優(yōu)化的C4.5決策樹算法[J]. 軟件,2013, 34(2): 61-64.CHEN Y, MA Z B, HUANG M . Improved A lgorithm off C4.5 Decision Tree[J]. Software, 2013, 34(2): 61-64. (in Chinese)1.2 數(shù)據(jù)分析
2 數(shù)據(jù)建模
2.1 模型設(shè)定
2.2 模型驗證
2.3 數(shù)據(jù)預(yù)測
2.4 二值化分析
3 結(jié)論