張華美,張皎潔
(南京郵電大學電子與光學工程學院、微電子學院,江蘇南京 210023)
在光學字符識別領域中,手寫數(shù)字識別是一個必不可少的組成部分[1],它是在光學字符識別基礎上,采用計算機等處理器對手寫阿拉伯數(shù)字進行識別的一種技術。該技術在財務報表、郵政分揀、成績統(tǒng)計、銀行票據(jù)等場合應用廣泛。依據(jù)字體分類,數(shù)字識別可分為印刷體識別和手寫體識別兩類,而手寫體識別遵從識別時間分類,又可分為聯(lián)機手寫體識別與脫機手寫體識別兩種模式。目前印刷體和聯(lián)機手寫體數(shù)字識別系統(tǒng)的使用非常成熟[2],而脫機手寫體數(shù)字識別因其寫法不同難以做到兼顧各種寫法的實用性數(shù)字識別系統(tǒng)。近年來,眾多學者在機器學習領域、深度學習領域、機器學習與深度學習相結合的領域對脫機手寫數(shù)字識別進行研究,取得了不錯的成果。但目前仍無法滿足社會的迫切需求,因此研究高性能的脫機手寫數(shù)字識別技術非常有必要。
機器學習不僅能從海量數(shù)據(jù)中挖掘并找到其中隱含的規(guī)律,還能應用于某些未知數(shù)據(jù)的預測,因此可以將機器學習的方法運用到手寫數(shù)字識別中。圖1是運用機器學習的方法進行手寫數(shù)字識別的流程圖,主要包括數(shù)據(jù)集、預處理、特征提取、分類器等。
圖1 手寫數(shù)字識別流程圖
機器學習中手寫數(shù)字常用的數(shù)據(jù)集有3個:(1)美國標準技術研究所手寫數(shù)字數(shù)據(jù)集(MNIST),其中訓練集樣本為6萬張,測試集樣本為1萬張,每張手寫數(shù)字圖像的灰度值統(tǒng)一被歸一化,圖像像素為28?28。(2)美國郵政手寫體數(shù)字數(shù)據(jù)集(USPS),數(shù)據(jù)集所有圖像均為16像素?16像素的灰度圖像,其中訓練集數(shù)據(jù)樣本為7 291張,測試集數(shù)據(jù)樣本為2 007張。(3)美國加州大學歐文分校提出的手寫數(shù)據(jù)集(UCI),數(shù)據(jù)集包含了3 832個訓練數(shù)據(jù)和1 797個測試數(shù)據(jù),全部為16像素?16像素的灰度圖像。
圖像的獲取容易受到外界環(huán)境的干擾和影響,得到的圖像需要進行預處理操作。常用的預處理措施有二值化、細化、歸一化、去噪等,在盡可能保存原始圖像信息的前提下,去除圖像受到的干擾,使圖像可以適用不同模型的需求。
手寫數(shù)字識別中采用特征提取的方法主要分為三大類:第一類圖像像素降維法包括主成分分析獨立成分分析法[3]等;第二類結構特征法包括輪廓特征[4]、首個黑點位置特征[4]、矩特征[5]等;第三類統(tǒng)計特征法包括粗網(wǎng)格特征、筆劃密度特征[6]、投影特征[6]、傅里葉系數(shù)特征[7]、13 點網(wǎng)格特征提取法[8]等。
在手寫數(shù)字識別研究過程中,支持向量機(SVM)、K?近鄰(KNN)、隨機森林(RF)、決策樹(DT)、貝葉斯網(wǎng)絡(BN)等傳統(tǒng)分類器對手寫數(shù)字識別產(chǎn)生了一定的影響力。由Cortes等[9]于1995年提出的基于統(tǒng)計學理論的SVM,成功通過核函數(shù)的思想把低維空間非線性分類問題轉變?yōu)楦呔S空間線性分類問題,常用的有線性核函數(shù)、多項式核函數(shù)、徑向基核函數(shù)、Sigmoid核函數(shù)[10]等。SVM是著名的二分類器,在二分類方面表現(xiàn)突出,而通過對多個SVM組合構造算法,可以用來實現(xiàn)多分類問題。目前SVM解決多分類問題的主要方法有一對一算法(OVO)[11]、一對多算法(OVA)[12]、有向無環(huán)圖算法(DAG)[13]。 李雅琴等[14]分別使用 OVO,OVA,DAG算法對USPS手寫數(shù)字數(shù)據(jù)集進行統(tǒng)一測試,實驗選用徑向基核函數(shù)(RBF),c參數(shù)設為32,測試結果如表1所示。
表1 三種算法實驗結果
在SVM解決多分類問題時,還可以對核函數(shù)中c、g參數(shù)進行優(yōu)化,常用的優(yōu)化算法有網(wǎng)格尋優(yōu)算法(GS)[15]、遺傳尋優(yōu)算法(GA)[16]、粒子群尋優(yōu)算法(PSO)[16]。 石會芳[17]隨機選取 MNIST 數(shù)據(jù)集1 050個訓練樣本和1 520個測試樣本,分別采用GS算法、GA算法、PSO算法對核函數(shù)中c、g參數(shù)進行尋優(yōu),根據(jù)實驗結果可知,該三類算法的分類準確率分別為92.181%、93.381%和94.4211%。 Tuba等[18]分別使用x軸、y軸,y=x和 y=-x投影直方圖對MNIST數(shù)據(jù)集進行特征提取,選擇SVM進行分類。實驗結果表明y軸投影直方圖的識別效果最佳,識別率為 94.68%。 Abbas等[19]使用前景特征(FF)、背景特征(BF)、幾何特征(GF)、均勻網(wǎng)格特征(UGF)以及組合特征(BF、FF)、(BF、FF、GF)和(UGF、BF、FF、GF)對 MNIST 數(shù)據(jù)集進行特征提取,通過并行組合兩個SVM分類器的輸出來提高手寫數(shù)字識別性能。對于不同的特征方法使用SVM分類的平均錯誤率如表2所示??傮w來說,SVM適合處理小規(guī)模樣本,分類準確率較高,當SVM處理大量樣本時,核函數(shù)映射維度高,計算繁重,運轉效率低,導致分類效果較差[20]。
表2 SVM分類的平均錯誤率
貝葉斯網(wǎng)絡(BN)是1988年由Pearl提出的基于統(tǒng)計信息論,不確定性推理和數(shù)據(jù)分析的理論,結合Campos[21]提出的需要確定隨機變量間拓撲關系和構造條件概率表的一種網(wǎng)絡。該網(wǎng)絡常用的算法有評分算法即K2算法[22]和爬山算法。張艷芳[23]利用關聯(lián)規(guī)則可以挖掘數(shù)據(jù)的優(yōu)勢,提出了一種基于關聯(lián)規(guī)則和爬山算法的貝葉斯網(wǎng)絡,取得了91.1% 的識別率。Liu[24]對BN模型連接權重和學習參數(shù)進行改進,提出了一種新的BN分類器建立手寫數(shù)字識別模型,結果顯示新的BN分類器在手寫數(shù)字識別中可以達到92.7%的識別率??傊珺N分類器原理簡單,可以高效處理多分類問題,然而對于殘缺數(shù)據(jù)卻不太靈敏[25]。 卜凡軍[26]改進了 Cover等人在1968年提出的一種創(chuàng)新算法,通過測量不同特征值之間的最短距離,計算K值進行分類,最終得到92.3%的識別率。Tiwari等[27]首先對 MNIST數(shù)據(jù)集進行平滑降噪處理,然后提取結構和統(tǒng)計特征,最后使用KNN進行分類達到了96.3%的識別率。張翠軍等[28]提出了一種基于多目標粒子群優(yōu)化(BPSO)的特征選擇算法,使用KNN對UCI手寫數(shù)字數(shù)據(jù)集進行分類,識別性能和特征子集個數(shù)作為評價特征子集優(yōu)劣的標準,結果表明該算法挑選的特征子集具備良好的識別指標,分類錯誤率可以降低至7.4%??傊?,KNN計算簡單,識別精度高,但對內存要求較高,對不相關的功能和數(shù)據(jù)規(guī)模敏感[29]。 決策樹(DT)是一種帶有判決準則的樹[30],根據(jù)樹中的判決準則對未知樣本的類別和值進行預測。決策樹訓練常用的算法有貪心算法(ID3)、貪心算法的改進版算法(C4.5)和分類回歸樹算法(CART)[31]。 陳軍勝[32]提取手寫數(shù)字結構特征,利用ID3算法構造DT分類器對手寫數(shù)字進行分類,可以達到86.7%的識別率。姜文理等[33]使用CART算法構造DT分類器對在線用戶手寫數(shù)字進行識別,實驗結果顯示,參加測試的所有用戶手寫數(shù)字的平均識別率高于93%,具有很好的用戶適用性。當決策樹作為分類器時,計算速度快,對缺失的中間值不敏感,處理不相關的特征數(shù)據(jù)可能會產(chǎn)生過擬合現(xiàn)象[34]。
從20世紀40年代起,人們相繼提出了許多種類的神經(jīng)網(wǎng)絡模型,按照模型結構可以劃分為前饋型網(wǎng)絡和反饋型網(wǎng)絡[35]。BP神經(jīng)網(wǎng)絡是前饋神經(jīng)網(wǎng)絡的代表之一,它是由Rumelhart等[36]于1986年提出的一種誤差反向傳播訓練的多層前饋神經(jīng)網(wǎng)絡。BP神經(jīng)網(wǎng)絡從結構上講由輸入層、隱含層和輸出層組成,可從本質上講,它是以網(wǎng)絡誤差的平方為目標函數(shù),利用梯度下降法達到計算目標函數(shù)最小值。不少國內外學者把BP神經(jīng)網(wǎng)絡應用到了手寫數(shù)字識別。鐘樂海等[37]運用13點網(wǎng)格特征的方法對MNIST數(shù)據(jù)集進行特征提取,BP神經(jīng)網(wǎng)絡作為分類器,得到79.5%的分類準確率。Cun等[38]改進BP神經(jīng)網(wǎng)絡結構和權重約束,對USPS手寫數(shù)字數(shù)據(jù)集進行測試,識別率可以達到81.6%。Wellner等[39]在Matlab中實現(xiàn)了基于反向傳播訓練的多層BP神經(jīng)網(wǎng)絡,該網(wǎng)絡識別率為91.6%。董慧[40]運用傅里葉系數(shù)特征、筆劃密度特征、輪廓特征等方法對USPS手寫數(shù)字數(shù)據(jù)集進行特征提取,BP神經(jīng)網(wǎng)絡作為分類器,得到測試集正確率為94.15%。由于BP神經(jīng)網(wǎng)絡通常需要逆向調整權重和閾值,耗時長,運算大[41],且網(wǎng)絡結構與參數(shù)大多數(shù)靠經(jīng)驗和實驗驗證得出。Huang等[42]基于對逆向傳播算法的改進,提出了一種前饋神經(jīng)網(wǎng)絡快速學習算法——極限學習機(ELM)。該算法對輸入層與隱含層之間的權重是可以隨機設置的,關于隱含層神經(jīng)元的偏置,在訓練過程中也無需調整,唯一要學習的參數(shù)是隱含層和輸出層之間的權重[43],對于標準的ELM算法可以通過優(yōu)化算法來提高其泛化能力,常用的有正則算法優(yōu)化的極限學習機(R?ELM)和粒子群算法優(yōu)化的極限學習機(PSO?ELM)。郄小美[44]利用R?ELM對手寫體數(shù)字進行仿真實驗,實驗結果表明,當隱含層節(jié)點個數(shù)設置為200時,測試集識別率為84.20%,測試時間只需0.007 9 s。畢浩洋[45]利用標準 ELM 和 PSO?ELM 分別對 MNIST手寫數(shù)據(jù)集進行實驗,結果表明:當ELM隱含層節(jié)點數(shù)目為140時,訓練集準確率為98.10%,測試集準確率為 91.33%,訓練時間為0.843 8s;當 PSO?ELM迭代次數(shù)為5,隱含層節(jié)點數(shù)目為50時,訓練集準確率為98.89%,測試集準確率為98.40%,訓練時間為40.352 8 s。總之相對其他神經(jīng)網(wǎng)絡而言,ELM具有識別速度快、分類精度高、泛化性能好等優(yōu)點,然而ELM只適應于單隱層神經(jīng)網(wǎng)絡,且不使用反向傳播,處理過于復雜的問題時效果不佳[46]。
目前,卷積神經(jīng)網(wǎng)絡(CNN)是一個具有可學習權重和偏置的神經(jīng)元組成的前饋神經(jīng)網(wǎng)絡。它在深度學習算法中占據(jù)了重要的地位,伴隨深度學習理論的深入和計算設備的改進,CNN得到了迅速發(fā)展,在計算機視覺、人臉識別、自然語言處理等領域得到了廣泛運用[47]。CNN的網(wǎng)絡架構由輸入層、卷積層、池化層、全連接層、輸出層5個基本部分構成[48]。其中卷積層由兩個組件搭配而成,第一個組件是濾波器,第二個組件是卷積核。卷積層的目標是為了提取輸入樣本中不同的特征,而多次利用卷積層提取更復雜和更全面的特征[48]。池化層是CNN模型中控制過度填充的一個好方法,池化實質上是一種向下采樣的方式,有3種類型:最大池化、最小池化、平均池化,目的是實現(xiàn)特征的不變性,同時起到了一定的降維作用[49]。卷積層和池化層提取的所有特征都將傳遞給全連接層,與普通神經(jīng)網(wǎng)絡連接方式相同,全連接層一般都在網(wǎng)絡的最后幾層執(zhí)行分類的任務。圖2為計算機科學家Yann等[50]在1998年提出的LeNet網(wǎng)絡模型,它作為卷積神經(jīng)網(wǎng)絡的“開篇之作”,由兩層卷積、兩層池化、三層全連接組成。在CNN快速發(fā)展的歷程中,除了經(jīng)典的LeNet模型,還提出了一些優(yōu)秀的深度卷積神經(jīng)網(wǎng)絡(DCNN)模型。按照時間順序以及網(wǎng)絡層數(shù)的依次遞加,相繼推出了AlexNet模型、VGGNet模型、GoogLeNet模型等,極大地促進了手寫數(shù)字識別領域的發(fā)展。圖3為Alex等在2012年ImageNet圖像分類競賽中所采用的AlexNet網(wǎng)絡模型,將1 000類圖像的Top?5分類錯誤率從最初的26.172%降低到 15.315%,該模型獲得了競賽的冠軍。Krizhevskya等[51]提到過當年的 GPU運算能力不高,Alex等構造兩個GPU一起訓練AlexNet網(wǎng)絡,該網(wǎng)絡由5層卷積、3層池化、3層全連接組成。
圖2 LeNet網(wǎng)絡模型結構
圖3 AlexNet網(wǎng)絡體系結構
圖4是由牛津大學Visual Geometry Group實驗組研究員們提出的一個VGGNet模型,該模型共有16層網(wǎng)絡結構,獲得了2014年的ImageNet圖像分類競賽亞軍。該模型是在AlexNet模型的基礎上使用多個3?3的卷積核來增加網(wǎng)絡深度,從而提高圖像的分類精度[52]。 圖 5是由 Christian Szegedy在2014年提出的一種全新的深度學習GoogLeNet模型的基本單元,采取了多尺寸卷積再聚合的方式拓寬網(wǎng)絡結構,通過1?1的卷積運算來減小參數(shù)量。GoogLeNet模型有22層網(wǎng)絡結構,與AlexNet模型和VGGNet模型通過卷積層縱向堆疊的方式相比,Xie等[53]提供了深度卷積神經(jīng)網(wǎng)絡構建的另一種思路。由于卷積神經(jīng)網(wǎng)絡設計的目的是為了減少網(wǎng)絡的權值參數(shù)并適應不同尺度,因此很多學者在這些經(jīng)典模型的基礎上改進網(wǎng)絡結構來提高手寫數(shù)字的識別率。劉辰雨[54]提出用Dropout技術構造網(wǎng)絡結構,挑選Relu函數(shù)作為激活函數(shù),搭建出一個性能更優(yōu)的LeNet+網(wǎng)絡模型,把識別率提高到98.8%。黃獻通[55]通過預設隨機小參數(shù)對LeNet模型網(wǎng)絡參數(shù)進行更新,應用在試卷分數(shù)復核統(tǒng)計上,實驗結果表明,在試卷分數(shù)復核應用中數(shù)字識別的平均正確率達到94%以上。由于AlexNet模型用到的數(shù)據(jù)庫是ImageNet大型計算機視覺數(shù)據(jù)集,圖像中含有更多的無關噪聲,分類任務多,識別難度高,因此,AlexNet模型在分類任務不多的手寫數(shù)字識別中可以發(fā)揮出更好的性能。Beohar等[56]調整網(wǎng)絡層數(shù),改進AlexNet模型,將卷積層和池化層都設置為4層,全連接層設置為5層,將改進后的模型采用MNIST數(shù)據(jù)集進行驗證,使用人工網(wǎng)絡的平均誤差為1.31%,而使用該模型的平均誤差僅為0.91%。Wen等[57]設計了一種直線網(wǎng)絡的深度卷積神經(jīng)網(wǎng)絡模型,該模型主體框架基于AlexNet模型,其中特征提取部分設置了卷積層和池化層,全部采用2?2的卷積核,分類部分則由舍棄層、線性層和激活層組成。這一模型在MNIST數(shù)據(jù)集中進行測試,通過10次迭代,測試集準確率高達99%。Ghosh等[58]借鑒了共享卷積核的思想,改變AlexNet模型網(wǎng)絡參數(shù),分別從精度、性能、測試時間3個方面對改進的AlexNet模型以及BP神經(jīng)網(wǎng)絡進行了對比,實驗結果表明,改進的AlexNet模型在精度、性能、測試時間方面都明顯優(yōu)于BP神經(jīng)網(wǎng)絡。近年來標準化形式的手寫數(shù)字集已普遍應用于CNN中,取得了不錯的成績。越來越多的學者開始將其他形式的手寫數(shù)字集也應用到CNN中,例如孟加拉文手寫數(shù)字集NumtaDB[59](由 2 700 多名貢獻者手寫的超過85 000個樣本)、包含了17 768個高分辨率的西藏手寫數(shù)字圖像集TibetanMNIST[60]、計算機視覺手寫數(shù)字集CVL[61](由10個類別組成,每個類有3 578張不同風格的數(shù)字圖像)等。Zunair等[62]調整VGGNet模型中網(wǎng)絡層數(shù)和網(wǎng)絡參數(shù),使用改進版VGGNet模型對NumtaDB數(shù)據(jù)集進行分類,獲得了97.09%的準確率。Saha等[63]提出了一種數(shù)據(jù)增強的GoogLeNet模型對NumtaDB數(shù)據(jù)集進行測試,結果顯示原GoogLeNet模型在測試集中分類準確率為93%,而經(jīng)過數(shù)據(jù)增強后GoogLeNet模型在測試集中分類準確率為98.51%。Bendib等[64]對CNN模型進行改進,設置了3層卷積層、3層池化層、2層全連接層的網(wǎng)絡結構,并對CVL數(shù)字集進行測試研究,研究結果表明該模型達到了96.63%的分類精度。Zhang[65]提出了一個新的CNN模型,在訓練過程中增加了數(shù)據(jù)增強和學習率衰減這兩部分。利用數(shù)據(jù)增強技術增加輸入的多樣性,通過監(jiān)測訓練中的學習率衰減,使參數(shù)更新變小。這一模型在TibetanMNIST數(shù)據(jù)集中得到了應用,結果顯示訓練集準確率為99.98%,測試集準確率為99.21%。雖然基于深度學習的手寫數(shù)字識別精度高,學習能力強,但是深度學習訓練時間長,計算量大,硬件需求高,參數(shù)選取缺乏強有力的理論支撐是個無法回避的問題[66]。
圖4 VGGNet網(wǎng)絡體系結構
圖5 GoogLeNet網(wǎng)絡基本單元
針對深度學習中卷積神經(jīng)網(wǎng)絡Softmax函數(shù)容易產(chǎn)生計算溢出以及較高的計算機硬件需求,且機器學習中分類算法常常依托人工手動提取特征等問題[67],出現(xiàn)了機器學習與深度學習相結合的思想。近年來國內外學者將這種思想運用于手寫數(shù)字分類,不僅解決了人工手動提取特征的繁瑣步驟和過度依靠先驗知識的慣性思維,還可以借助傳統(tǒng)分類器除去大多數(shù)冗余和無關數(shù)據(jù),提升手寫數(shù)字的分類準確率和預測時間。Peres等[68]使用 MNIST數(shù)據(jù)集中60 000張訓練圖像和由11名不同學生手寫的3 415幅數(shù)字圖像組成的專有數(shù)據(jù)集作為本次實驗的數(shù)據(jù)集,分別采用CNN+SVM、方向梯度直方圖(HOG)+SVM、CNN等3種模型對數(shù)據(jù)集進行仿真測試,實驗結果如表3所示。
表3 3種模型識別率對比
Aly等[69]通過余弦平移和彈性畸變等模式畸變對MNIST數(shù)據(jù)集中所有樣本進行數(shù)據(jù)增強,在特征提取環(huán)節(jié)中采用CNN的AlexNet模型,分類器使用SVM,原CNN+SVM模型測試錯誤率為1.03%,然而通過數(shù)據(jù)增強的CNN+SVM模型卻可以實現(xiàn)0.93%的錯誤率,由此可知,經(jīng)過數(shù)據(jù)增強的CNN+SVM模型分類精度有一定的提升。Shima等[70]提出了一種基于主成分分析的卷積神經(jīng)網(wǎng)絡和SVM相結合的算法,其中主成分分析的卷積神經(jīng)網(wǎng)絡提取訓練圖像中低層次和高層次的特征,SVM替代Softmax函數(shù)作為分類器,識別率能夠達到96.12%。楊剛等[71]基于CNN和粒子群優(yōu)化SVM 的手寫數(shù)字算法對UCI手寫數(shù)字數(shù)據(jù)集進行實驗評估,發(fā)現(xiàn)CNN+SVM(PSO)模型識別率達到 99.11%,而 CNN+SVM模型識別率為95.97%,表明CNN+SVM(PSO)模型達到了很好的識別效果。余圣新等[72]使用深度可分離的卷積層去改進 GoogLe?Net結構,通過MNIST數(shù)據(jù)集進行實驗驗證得到99.45%的識別率。為了進一步提高網(wǎng)絡識別率,在分類層上使用SVM代替CNN中的Softmax層,經(jīng)交叉驗證得到99.78%的識別率。 Rajalakshmi等[73]使用 CNN+SVM(RBF)混合模型對MNIST數(shù)據(jù)集進行實驗,該模型錯誤率為5.6%。為了進一步降低錯誤率,對數(shù)據(jù)集中的所有圖像進行旋轉、尺度縮放等增強處理,增加樣本總數(shù)量,使得該模型達到良好的識別效果,錯誤率降低至 0.19%。林仁耀等[74]隨機選取MNIST數(shù)據(jù)集4 000個訓練樣本和1 000個測試樣本,分別采用 CNN+RF、CNN+KNN、CNN+SVM(linear)模型對數(shù)據(jù)集進行仿真測試,測試結果如表4所示。由表4可知,CNN+SVM(linear)模型識別率最高且收斂速度較快。總之,機器學習與深度學習相結合的思想在手寫數(shù)字的識別中發(fā)揮了重大作用,深度學習中基于CNN模型的改進能夠獲得更大的網(wǎng)絡寬度,達到更好提取特征的目的,同時機器學習中分類器的分類能力也很強,兩者結合獲得更高的識別率,有深入研究的價值。
表4 3種模型測試結果
本文對基于人工智能的脫機手寫數(shù)字識別的研究進行了梳理和總結?,F(xiàn)有的技術已能對脫機手寫數(shù)字有較好的識別效果,但在實際應用中還沒達到抗干擾、系統(tǒng)穩(wěn)定、適應性強等高效系統(tǒng)水平。因此,針對手寫數(shù)字識別的研究現(xiàn)狀提出未來的發(fā)展方向:(1)優(yōu)化識別算法。機器學習與深度學習結合的思想在手寫數(shù)字的識別中具有突出優(yōu)勢,因此可以根據(jù)算法本身特點,融合不同的算法進一步節(jié)省訓練時間,提升訓練效率。(2)擴充數(shù)據(jù)庫。在圖像采集這一部分,可以嘗試在不同場景下建立自己的手寫數(shù)據(jù)庫,加大實際應用。(3)推廣應用。將手寫數(shù)字的智能化識別方法推廣到其他識別問題中,如對英文字母、拼音、漢字的識別,從而實現(xiàn)對所有字符的智能化識別。