李俊陽(yáng) 雷鑫 宋宇 賽琳偉
摘 要: 本文在GoogLeNet網(wǎng)絡(luò)基礎(chǔ)上搭建了一個(gè)適合手寫漢字識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)。研究建立了新的手寫漢字訓(xùn)練集,新訓(xùn)練集綜合了現(xiàn)有的訓(xùn)練集并剔除了其中的錯(cuò)誤,同時(shí)加入印刷體訓(xùn)練集,增加書寫風(fēng)格的多樣性。訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)采用隨機(jī)梯度下降算法,并加入動(dòng)量項(xiàng)加速網(wǎng)絡(luò)參數(shù)的收斂,使用正則項(xiàng)防止過度擬合,最終訓(xùn)練出的神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集上的正確率為99.56%,在驗(yàn)證集上的正確率達(dá)到96%,并具有很好的泛化能力。
關(guān)鍵詞: 手寫漢字識(shí)別;卷積神經(jīng)網(wǎng)絡(luò);深度學(xué)習(xí)
Abstract:This paper builds a Convolution Neural Network suitable for handwritten Chinese character recognition based on GoogLeNet network. The research has set up a new training set of handwritten Chinese characters. The new training set integrates the existing training set and removes the errors in them. At the same time the research has added a printed training set to increase the variety of handwriting styles. In the training of neural network a stochastic gradient descent algorithm is used and the momentum term is added to accelerate the convergence of the network parameters. The regular item is used to prevent overfitting. The final neural network reaches an accuracy rate of 99.56% on the training set and 96% on the validation set which has a good generalization.
Key words: handwritten Chinese character recognition;Convolution Neural Networks;deep learning
引言
漢字錄入是中文信息處理的首要條件,當(dāng)前,大量的中文文獻(xiàn)是以掃描件形式整理存放的,這給后續(xù)處理制造了困擾,因而亟需漢字識(shí)別軟件將其轉(zhuǎn)化成文本信息[1]。漢字識(shí)別分為印刷體識(shí)別和手寫體識(shí)別。早在上世紀(jì)60年代,即已開啟了漢字印刷體識(shí)別的研究。目前,對(duì)印刷體的識(shí)別研究已經(jīng)較為成熟[2]。相對(duì)來(lái)說,手寫漢字的隨意性大,比印刷體識(shí)別要困難許多。手寫漢字識(shí)別根據(jù)數(shù)據(jù)采集的方式又可分為聯(lián)機(jī)識(shí)別和脫機(jī)識(shí)別。具體地,在聯(lián)機(jī)識(shí)別中,計(jì)算機(jī)能獲得輸入字符的筆畫順序,因此比脫機(jī)識(shí)別獲得的信息更多,更容易做到辨識(shí)甄別[3]。再加上拍照或掃描的過程中,不同的光照、分辨率、紙張等都會(huì)帶來(lái)干擾。由此可知,脫機(jī)手寫漢字識(shí)別遠(yuǎn)比聯(lián)機(jī)識(shí)別要呈現(xiàn)出更多的限制要求。而時(shí)下的聯(lián)機(jī)識(shí)別已經(jīng)得到了有效解決[4]。手寫漢字文本的識(shí)別需要先將文本切分成單個(gè)的漢字,而后再進(jìn)行識(shí)別。本文將只是考慮研究單個(gè)手寫漢字的識(shí)別問題。
迄今為止,脫機(jī)手寫識(shí)別雖然可見到許多研究,但實(shí)際識(shí)別過程中,其精度卻很難達(dá)到研究提供的數(shù)值效果。當(dāng)遇到真實(shí)、無(wú)限制的手寫樣本時(shí),很多算法的識(shí)別率便會(huì)出現(xiàn)明顯的降低。究其原因即在于漢字的獨(dú)特性和手寫體漢字風(fēng)格的多樣性,這些因素給手寫體漢字識(shí)別增加了攻關(guān)難度。在實(shí)際應(yīng)用中將尤顯突出,且可重點(diǎn)表現(xiàn)如下方面:
(1)漢字?jǐn)?shù)量多。參照中國(guó)漢字基本集GB2312-80的標(biāo)準(zhǔn)可知,常用的第一級(jí)漢字類別有3 755個(gè),第二級(jí)漢字類別有3 008個(gè),總計(jì)為6 763個(gè)。因此,對(duì)于漢字識(shí)別系統(tǒng)來(lái)說,要能夠正確識(shí)別如此多種類的漢字將頗具現(xiàn)實(shí)挑戰(zhàn)性。
(2)結(jié)構(gòu)復(fù)雜。漢字有各種筆劃,筆劃又組成各種字根,字根按照一定規(guī)律分布在各個(gè)子空間中,形成不同的字形。可以看出,這種構(gòu)字方式相當(dāng)復(fù)雜,筆劃相互交錯(cuò),給漢字識(shí)別在一定程度上設(shè)定了研究阻礙。
(3)相似字多。漢字中有很多相似字,有的只差一“點(diǎn)”或一“捺”,這些相似字容易混淆,因此在漢字特征提取和分類器設(shè)計(jì)上,對(duì)這些相似字必須給予特別的注意。
(4)書寫風(fēng)格多變。每個(gè)人的書寫風(fēng)格千差萬(wàn)別,即便是同一個(gè)漢字,由不同的人書寫出來(lái),差異也是顯而易見的,要從成百上千種風(fēng)格中提取出本質(zhì)不變的特征則并非易事。此外,書寫紙張的好壞,字形的大小,掃描設(shè)備的優(yōu)劣,噪聲的干擾等,都會(huì)給漢字識(shí)別研究工作產(chǎn)生影響、帶來(lái)困難。因此手寫漢字識(shí)別仍是一個(gè)有待研發(fā)完善的熱點(diǎn)項(xiàng)目課題。
傳統(tǒng)的手寫漢字識(shí)別先提取漢字的特征,例如采用Gabor、Gradient和HoG濾波。而后再調(diào)用分類器進(jìn)行分類。常用的分類器有二次判別函數(shù)(MQDF)、支持向量機(jī)(SVM)、隱馬爾科夫模型(HMM)等。手寫漢字識(shí)別的一個(gè)新的研究熱潮源起于2006年,同時(shí)伴隨著一些新的手寫數(shù)據(jù)庫(kù)的發(fā)布,研究方向也逐漸從孤立的漢字識(shí)別過渡到更加真實(shí)、無(wú)限制的文本識(shí)別。同時(shí),由于深度學(xué)習(xí)技術(shù)的發(fā)展[5],深度神經(jīng)網(wǎng)絡(luò)則運(yùn)用到手寫漢字識(shí)別上,其良好的表達(dá)能力能夠包容漢字的復(fù)雜結(jié)構(gòu)和書寫風(fēng)格的多樣性,因此也取得了相當(dāng)不錯(cuò)的應(yīng)用效果。在最近幾年中,手寫體字符的識(shí)別率在逐漸提升。
在研究過程中,網(wǎng)羅搜集了各種手寫體漢字?jǐn)?shù)據(jù)庫(kù),調(diào)整數(shù)據(jù)庫(kù)中圖片亮度,剔除錯(cuò)誤標(biāo)簽和圖片,還自行生成了一個(gè)印刷體字庫(kù),然后設(shè)計(jì)合并了這些數(shù)據(jù)庫(kù),形成研究需要的訓(xùn)練集。接著,又搭建了卷積神經(jīng)網(wǎng)絡(luò)模型,使用訓(xùn)練集對(duì)其進(jìn)行訓(xùn)練,提高了單個(gè)手寫體漢字的識(shí)別正確率,并探討分析了卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別機(jī)理。
1 訓(xùn)練集
本項(xiàng)目的識(shí)別目標(biāo)是全部一級(jí)漢字,共3 755個(gè)。一級(jí)漢字約占全部漢字使用量的99%。訓(xùn)練集為一個(gè)n×64×64×1的圖像數(shù)組和一個(gè)n×1的標(biāo)簽數(shù)組,其中n=(300+300+138)份×3 755個(gè),為漢字個(gè)數(shù)。標(biāo)簽數(shù)組的取值范圍為[0,3 755]。具體來(lái)說,0表示非漢字,1~3 755與漢字的國(guó)標(biāo)碼順序?qū)?yīng)。
訓(xùn)練集的來(lái)源分為3部分。第一個(gè)來(lái)源是中科院自動(dòng)化所發(fā)布的HWDB1.1數(shù)據(jù)集,如圖1(a)所示。該數(shù)據(jù)集包含300份一級(jí)漢字。圖像為8位,書寫較為疏放偏草。該數(shù)據(jù)集字跡較暗,對(duì)其亮度進(jìn)行了調(diào)整。將每個(gè)像素開方,由于像素取值為[0,1],開方之后取值范圍不變,但數(shù)值卻有所增加。這就完成了數(shù)據(jù)集的變量操作。該訓(xùn)練集中還夾雜有一些錯(cuò)誤,將會(huì)對(duì)訓(xùn)練造成干擾,因此需要剔除。這些錯(cuò)誤約占1.5%,大部分為標(biāo)簽錯(cuò)誤,有少量的涂抹圖片。此外,剔除了一些根本無(wú)法識(shí)別的圖像。
第二部分是HCL2000數(shù)據(jù)集,如圖1(b)所示。該數(shù)據(jù)集由北京郵電大學(xué)模式識(shí)別實(shí)驗(yàn)室發(fā)布,包含1 000份一級(jí)漢字,是目前規(guī)模最大的脫機(jī)手寫漢字庫(kù)。數(shù)據(jù)為二值化模式,書寫較為工整。該數(shù)據(jù)集更加利于識(shí)別,為了突出不易識(shí)別的HWDB1.1訓(xùn)練集,增強(qiáng)模型識(shí)別能力,HCL2000只擷取了其中的300份。HCL2000數(shù)據(jù)集中的錯(cuò)誤主要為生成訓(xùn)練集時(shí)漢字的切割錯(cuò)誤造成的空白。
第三部分為網(wǎng)絡(luò)上收集的印刷體,來(lái)源網(wǎng)站為http://www.diyiziti.com/List,如圖1(c)所示。采集了138份字庫(kù)。有些字庫(kù)包含繁體字,對(duì)其進(jìn)行了過濾剔除。最后對(duì)這3個(gè)訓(xùn)練集合并展開研究訓(xùn)練。
1.1訓(xùn)練集 (b) HLC2000訓(xùn)練集 (c)印刷體訓(xùn)練集
2 卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練
本次研究中,將給出神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)如圖2所示。
3 手寫漢字識(shí)別
3.1 神經(jīng)網(wǎng)絡(luò)模型
研究中的神經(jīng)網(wǎng)絡(luò)由GoogLeNet改進(jìn)而來(lái),網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。網(wǎng)絡(luò)走向?yàn)閺纳贤?,每一層的輸入為上一層的輸出。輸入層大小?4×64×1。首先,使用64個(gè)7×7的卷積核對(duì)輸入圖像做卷積;然后做大小為5×5、步幅為3的池化,此時(shí)輸出數(shù)組大小為22×22×64;接下來(lái),是9個(gè)inception單元,每個(gè)單元后圖像的特征數(shù)逐漸增加,直至累加為1 440個(gè)3×3的圖像;最后,將3×3×1 440的圖像展開為一維,又續(xù)接一個(gè)大小為4 000的全連接層,再接一個(gè)大小為3 756的softmax層作為輸出層。
每個(gè)inception單元組合不同卷積核的卷積結(jié)果,并以此為基礎(chǔ)再做批規(guī)范化。第一個(gè)inception單元先接一個(gè)BatchNormalization層,將上一層的結(jié)果批規(guī)范化;然后BatchNormalization的輸出作為輸入,分別延伸出3個(gè)分支。第一個(gè)分支是32個(gè)1×1的卷積、第二個(gè)分支為48個(gè)1×1的卷積,又接96個(gè)3×3的卷積、最后一個(gè)分支是3×3的池化,又接16個(gè)1×1的卷積;最后將3個(gè)分支的輸出用concatenate層組合,由此得到的輸出數(shù)組大小為22×22×(32+96+16)=22×22×144。總地說來(lái),每個(gè)inception單元都是將數(shù)個(gè)大小不同的卷積結(jié)果和一個(gè)池化組合,每種卷積之前先接一個(gè)1×1的卷積,有一個(gè)單獨(dú)的1×1卷積,池化則是在后面續(xù)接一個(gè)1×1的卷積。
第二個(gè)inception單元先將上一個(gè)inception的輸出批規(guī)范化,然后分別引申出5個(gè)分支:包含48個(gè)1×1的卷積核,還包含3×3、3×9、9×3的卷積,都是先接數(shù)個(gè)1×1的卷積,卷積核數(shù)分別為120、4、4。此外,還包含一個(gè)池化層接16個(gè)1×1的卷積。這5個(gè)分支組合之后的特征數(shù)為48+120+4+4+16=192。
第三個(gè)inception單元有3個(gè)分支,前2個(gè)分支都是卷積。與前述不同的是,這2個(gè)卷積的步長(zhǎng)都為2,因此卷積之后的圖像大小變?yōu)?1×11,池化的步長(zhǎng)也隨即變換為2,最后3個(gè)分支得到的圖像大小相同,將其合并之后圖像大小縮變?yōu)?1×11。共有3個(gè)這樣的圖像大小改變的inception,3次縮小之后最終圖像大小為3×3。每個(gè)inception單元處理后,圖像的特征數(shù)逐漸增加,最終為1 440個(gè)。所以,經(jīng)過9個(gè)inception單元后,輸出數(shù)組大小為3×3×1 440;而后接一個(gè)概率為0.2的dropout層;再接一個(gè)大小為4 096的全連接層;此后,又接一個(gè)概率為0.5的dropout,最后接大小為3 756的softmax層作為輸出。輸出向量表示該漢字屬于每個(gè)類的概率。
3.2 訓(xùn)練
隨機(jī)初始化后,可得到網(wǎng)絡(luò)初始權(quán)重。訓(xùn)練采用隨機(jī)梯度下降算法,學(xué)習(xí)率為0.1,動(dòng)量項(xiàng)為0.9,正則項(xiàng)中權(quán)值衰減系數(shù)為10-6。為了驗(yàn)證識(shí)別正確率的真實(shí)性并且提高網(wǎng)絡(luò)模型的泛化能力,研究中將自行建立的漢字?jǐn)?shù)據(jù)庫(kù)劃分為訓(xùn)練集和驗(yàn)證集。
圖3為訓(xùn)練集和驗(yàn)證集的誤差結(jié)果曲線。由圖3可知,隨著迭代次數(shù)的增加,訓(xùn)練集誤差不斷減小,而驗(yàn)證集誤差也隨之減小;當(dāng)?shù)螖?shù)超過10次后,驗(yàn)證集的識(shí)別誤差小于4%,不再降低,至此便可以停止訓(xùn)練,網(wǎng)絡(luò)參數(shù)達(dá)到了最優(yōu)化。此時(shí)的訓(xùn)練集正確率為99.56%。
4 優(yōu)化和分析
網(wǎng)絡(luò)運(yùn)行最初采用了64個(gè)7×7的卷積。分析這64個(gè)卷積核發(fā)現(xiàn),這些并不是筆畫的局部特征,而是類似二維碼的圖像,如圖4所示。由此看來(lái),卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)即在試圖運(yùn)用這64個(gè)卷積核作為一組基,去線性組合局部圖像。而這一點(diǎn)也突顯了與人的思維在根本上的差異與不同。
5 結(jié)束語(yǔ)
本文基于GoogLeNet網(wǎng)絡(luò)設(shè)計(jì)提出了一個(gè)手寫漢字識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)。原始手寫體漢字?jǐn)?shù)據(jù)庫(kù)中存在較多錯(cuò)誤,這些錯(cuò)誤會(huì)導(dǎo)致各種漢字識(shí)別模型的正確率陷于瓶頸將難于提高,而剔除這些錯(cuò)誤形成新的訓(xùn)練集,再對(duì)模型進(jìn)行訓(xùn)練,對(duì)于識(shí)別正確率的提高具有良好積極作用。
卷積神經(jīng)網(wǎng)絡(luò)在手寫漢字識(shí)別領(lǐng)域具有較大優(yōu)勢(shì),就是利用不同于人的思維方式去提取漢字特征,通過層層抽象提取,得到類似于二維碼的更適合機(jī)器識(shí)別的圖像,由此來(lái)實(shí)現(xiàn)進(jìn)一步的有效漢字識(shí)別。
參考文獻(xiàn)
[1] 王正群. 手寫體漢字識(shí)別研究[D]. 南京:南京理工大學(xué),2001.
[2] 江波,史鳳波. 文字識(shí)別領(lǐng)域中模式識(shí)別技術(shù)的應(yīng)用[J]. 科技資訊,2015(27):6-7.
[3] 金連文. 手寫體漢字識(shí)別的研究[D]. 廣州:華南理工大學(xué),1996.
[4] 張輝. 大規(guī)模聯(lián)機(jī)手寫漢字識(shí)別數(shù)據(jù)庫(kù)整理、統(tǒng)計(jì)與實(shí)驗(yàn)分析[D]. 廣州:華南理工大學(xué),2012.
[5] 尹寶才,王文通,王立春. 深度學(xué)習(xí)研究綜述[J]. 北京工業(yè)大學(xué)學(xué)報(bào),2015,41(1):48-59.