侯 杰,倪建成
(曲阜師范大學(xué) 軟件學(xué)院,山東 曲阜 273165)
脫機(jī)手寫(xiě)體漢字識(shí)別已有近50年的研究歷史,因?yàn)闈h字類(lèi)別數(shù)較大(參照GB2312-80 標(biāo)準(zhǔn),常用漢字有6763 個(gè)類(lèi)別)、易混淆的相似字形多以及書(shū)寫(xiě)風(fēng)格的多樣性使其一直是模式識(shí)別領(lǐng)域的研究難點(diǎn)。傳統(tǒng)的手寫(xiě)體漢字識(shí)別分為三個(gè)步驟:圖像預(yù)處理、特征提取與分類(lèi)。預(yù)處理一般通過(guò)模糊化、灰度化、二值化以及歸一化等方法來(lái)實(shí)現(xiàn),目的是加強(qiáng)圖像的有用特征、去除其他無(wú)關(guān)的噪聲,從而使得特征提取更加方便[1]。特征提取是從原始輸入中提取能表達(dá)特定漢字本身而又區(qū)別于其他漢字的無(wú)冗余性低維圖像特征,目前效果較好的是一些統(tǒng)計(jì)特征,如Gabor 特征、Gradient 特征、HOG特征[2-3]。傳統(tǒng)方法中常用的分類(lèi)器有SVM[4]、線性判別分析(LDA)[5]和修正二次判別函數(shù)(MQDF)[6]。近年來(lái)基于修正二次判別函數(shù)的方法依然是研究熱點(diǎn),然而作為效果最優(yōu)的傳統(tǒng)識(shí)別方法,修正二次判別函數(shù)在典型手寫(xiě)體漢字?jǐn)?shù)據(jù)集CASIA-HWDB 和ICDAR2013 上的識(shí)別準(zhǔn)確率都還沒(méi)有達(dá)到93%[6-8]。
隨著計(jì)算資源性能的提高和大量標(biāo)注數(shù)據(jù)集的出現(xiàn),基于深度學(xué)習(xí)特別是卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法在計(jì)算機(jī)視覺(jué)和模式識(shí)別領(lǐng)域取得了巨大的成功[9~11],對(duì)手寫(xiě)體漢字的識(shí)別也逐漸由傳統(tǒng)方法轉(zhuǎn)變?yōu)榛谏窠?jīng)網(wǎng)絡(luò)的方法。多列深度神經(jīng)網(wǎng)絡(luò)(MCDNN)[12]被認(rèn)為是第一個(gè)將CNN 成功應(yīng)用到手寫(xiě)體漢字識(shí)別的模型,在ICDAR2013 數(shù)據(jù)集上取得了95.78%的準(zhǔn)確率,其使用不同的數(shù)據(jù)集訓(xùn)練了八個(gè)網(wǎng)絡(luò),每個(gè)網(wǎng)絡(luò)都含有四個(gè)卷積層和兩個(gè)全連接層。Wu 等人[13]采用基于CNN 的模型在ICDAR 數(shù)據(jù)集上實(shí)現(xiàn)了94.77%的準(zhǔn)確率,獲得了2013 年ICDAR 脫機(jī)手寫(xiě)體識(shí)別競(jìng)賽的第一名,第二年他們通過(guò)采用4 種交替訓(xùn)練松弛卷積神經(jīng)網(wǎng)絡(luò)(ATR-CNN)的集成模式[14]來(lái)改進(jìn)模型,達(dá)到了96.06%的準(zhǔn)確率。2015 年Zhong 等人將傳統(tǒng)的Gabor 特征提取與CNN 結(jié)合提出了HCCR-Gabor-GoogLeNet[15],在ICDAR2013 數(shù)據(jù)集上的識(shí)別準(zhǔn)確率為96.35%,是在該數(shù)據(jù)集上第一個(gè)超越人類(lèi)表現(xiàn)的模型。2017 年Zhang 等人[16]將傳統(tǒng)的歸一化Gradient 特征映射與CNN 結(jié)合,并采用一個(gè)適配層后在ICDAR2013 數(shù)據(jù)集上取得了97.37%的準(zhǔn)確率。
以上模型雖然取得了不錯(cuò)的識(shí)別效果,但大都存在調(diào)優(yōu)參數(shù)多、網(wǎng)絡(luò)收斂慢、存儲(chǔ)模型空間大等問(wèn)題。由此,本文設(shè)計(jì)了一個(gè)基于GoogLeNet 的卷積神經(jīng)網(wǎng)絡(luò)HCCR-IncBN,該模型利用了Inception模塊稀疏連接的優(yōu)點(diǎn),對(duì)同一輸入特征映射進(jìn)行多個(gè)尺度上的卷積操作,并多次使用1x1 卷積核來(lái)壓縮數(shù)據(jù),在增加網(wǎng)絡(luò)深度的同時(shí)能夠保證對(duì)計(jì)算資源的高效利用;為了加快模型收斂,在整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中充分應(yīng)用了BN 算法。在實(shí)驗(yàn)階段,以數(shù)據(jù)集CASIA-HWDB1.1 為訓(xùn)練集來(lái)識(shí)別3755 個(gè)常用簡(jiǎn)體漢字,在ICDAR2013 數(shù)據(jù)集上取得了95.94%的準(zhǔn)確率;另外,以數(shù)據(jù)集MNIST 作為實(shí)驗(yàn)數(shù)據(jù),在測(cè)試集上取得了99.37%的識(shí)別準(zhǔn)確率。
提高深度神經(jīng)網(wǎng)絡(luò)表現(xiàn)的最直接方式就是增加網(wǎng)絡(luò)的深度和寬度,經(jīng)典的AlexNet 和VGG 網(wǎng)絡(luò)正是以此設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)達(dá)到了更好的效果,但這會(huì)使得計(jì)算參數(shù)過(guò)多,消耗大量計(jì)算資源甚至造成過(guò)擬合問(wèn)題。文獻(xiàn)[10]提出的GoogLeNet 通過(guò)向網(wǎng)絡(luò)中引入稀疏性可以在很大程度上解決上述問(wèn)題,組成GoogLeNet 的基本模塊為Inception,它把相關(guān)性強(qiáng)的特征先聚集到一起,每一種尺寸的卷積輸出都作為總特征的一部分。
圖1(a)和圖1(b)分別展示了Inception-v1和Inception-v2 的 模 塊 結(jié) 構(gòu)。Inception-v1 模 塊采用的卷積核大小分別為1x1、3x3 和5x5。與Inception-v1 相比,Inception-v2 模塊將5x5 的卷積操作分成了兩個(gè)3x3 的卷積操作,使得計(jì)算效率進(jìn)一步提升,本文采用的是Inception-v2 模塊。模塊中1x1 卷積操作的主要作用是壓縮輸入數(shù)據(jù)的通道數(shù)從而減少參數(shù)計(jì)算量,該操作可以使得卷積參數(shù)降低到原來(lái)的三分之一。為了保證Inception 模塊中三個(gè)尺寸的卷積操作和最大池化操作的輸出可以進(jìn)行維度上的連接,需要將卷積操作的步長(zhǎng)設(shè)置為1、Padding 方式設(shè)置為‘SAME’,將池化操作的步長(zhǎng)也設(shè)置為1。
圖1 Inception 模塊結(jié)構(gòu)圖
圖2 展示了HCCR-IncBN 模型的結(jié)構(gòu)以及每層輸出特征映射的維度。該模型一共有15 層(只計(jì)算卷積層和全連接層),包括3 個(gè)卷積層、5 個(gè)Inception 模塊和2 個(gè)全連接層。原始輸入為64x64大小的灰度圖像。模型開(kāi)始是兩組“卷積+最大池化”操作,卷積核大小為3x3,步長(zhǎng)為1,最大池化操作的池化窗口為2x2,步長(zhǎng)為2,整個(gè)模型中的四次卷積操作都采用此參數(shù)配置。第二個(gè)池化操作后是5 個(gè)Inception 模塊,其中在Inception2和Inception4 后設(shè)置了最大池化層,在最后一個(gè)Inception 模塊后設(shè)置了1x1 的卷積操作,該操作將4x4x608 的特征映射壓縮為4x4x256。1x1 卷積操作完成后需要將特征映射扁平化為4096 維的向量,之后開(kāi)始全連接層的操作,第一個(gè)全連接層包含1024個(gè)神經(jīng)元,輸出層神經(jīng)元的具體個(gè)數(shù)根據(jù)不同的數(shù)據(jù)集來(lái)設(shè)置(HWDB 數(shù)據(jù)集設(shè)置為3755)。在HCCRIncBN 模型中,所有卷積層(包括Inception 模塊中的卷積層)和全連接層后面都連接了一個(gè)BN 層,即在ReLu 激活函數(shù)之前先執(zhí)行BN 算法。HCCR-IncBN 模型涉及的計(jì)算參數(shù)數(shù)量為6849035,按照存儲(chǔ)一個(gè)浮點(diǎn)數(shù)需要4 個(gè)字節(jié)計(jì)算,存儲(chǔ)模型所需的存儲(chǔ)空間約為26.12MB。表1 列出了5 個(gè)Inception 模塊中各卷積操作濾波器個(gè)數(shù)的具體設(shè)置。
表1 Inception 模塊各卷積操作的濾波器個(gè)數(shù)
圖2 HCCR-IncBN 手寫(xiě)體漢字識(shí)別模型
批量標(biāo)準(zhǔn)化(Batch Normalization, BN)[17]方法用來(lái)解決神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中出現(xiàn)的內(nèi)部協(xié)變量轉(zhuǎn)移問(wèn)題(Internal Covariate Shift),由于在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過(guò)程中前一層參數(shù)一直更新,導(dǎo)致后一層輸入不斷變化。如果神經(jīng)網(wǎng)絡(luò)在每次迭代中都要重新學(xué)習(xí)不同的數(shù)據(jù)分布,網(wǎng)絡(luò)就會(huì)很難收斂,深層網(wǎng)絡(luò)的訓(xùn)練困難就在于此。針對(duì)此問(wèn)題,在每一層的輸出后面增加一個(gè)BN 層,將網(wǎng)絡(luò)下一層的輸入都標(biāo)準(zhǔn)化為均值為0、方差為1 的分布,從而可以達(dá)到固定數(shù)據(jù)分布、降低內(nèi)部協(xié)變量轉(zhuǎn)移的目的。對(duì)于神經(jīng)網(wǎng)絡(luò)的某一層,假設(shè)輸入為d維的數(shù)據(jù):x=(x1,…,xd),對(duì)每個(gè)維度進(jìn)行歸一化的公式為:
式中y(k)代表最終標(biāo)準(zhǔn)化后的數(shù)據(jù),參數(shù)γ(k)和β(k)分別代表縮放參數(shù)和偏移參數(shù),x^(k)是基于整個(gè)訓(xùn)練集的直接標(biāo)準(zhǔn)化結(jié)果,其計(jì)算細(xì)節(jié)如下:
在實(shí)際訓(xùn)練過(guò)程中,難以讓每一個(gè)訓(xùn)練步驟都使用整個(gè)訓(xùn)練集,在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中優(yōu)化損失函數(shù)一般都采用最小批次梯度下降法,對(duì)于BN 算法,只要每一個(gè)批次都取樣于相同的分布,那么也可以使用一個(gè)批次數(shù)據(jù)的均值和方差來(lái)完成BN 標(biāo)準(zhǔn)化過(guò)程??紤]樣本數(shù)為m的最小批次B:B={x1…m},整個(gè)BN 算法過(guò)程描述如下。
算法1 BN 算法
輸入:最小批次的樣本數(shù)據(jù):B={x1…m}以及要被學(xué)習(xí)的參數(shù)γ,β輸出:{yi=BNγ,β(xi)}
本文使用TensorFlow 深度學(xué)習(xí)平臺(tái)來(lái)實(shí)現(xiàn)HCCR-IncBN 模型,初始學(xué)習(xí)率設(shè)為0.001,按照指數(shù)衰減的方式更新學(xué)習(xí)率,使用Adam 梯度下降算法最小化損失函數(shù),最小批次設(shè)置為128。為了避免過(guò)擬合,在全連接層后面使用了dropout 機(jī)制以及對(duì)權(quán)重參數(shù)添加了L2 范數(shù)約束,dropout 數(shù)值設(shè)置為0.6,權(quán)重衰減率設(shè)置為10-4,另外也使用了‘早?!瘷C(jī)制來(lái)控制訓(xùn)練過(guò)程。實(shí)驗(yàn)的硬件條件為Intel(R) Xeon(R) Gold 6130、NVIDIA Tesla P100;操作系統(tǒng)為Ubuntu 16.04,系統(tǒng)內(nèi)存為256G,基礎(chǔ)配置為CUDA9.0,python3.7,TensorFlow1.14。
實(shí)驗(yàn)使用包含3755 個(gè)類(lèi)別的大規(guī)模數(shù)據(jù)集CASIA-HWDB1.1 來(lái)訓(xùn)練模型,該數(shù)據(jù)集由300 人書(shū)寫(xiě),共有1 121 749 個(gè)樣本。測(cè)試數(shù)據(jù)為數(shù)據(jù)集ICDAR2013,由60 人書(shū)寫(xiě),共有224 419 個(gè)樣本。輸入圖片大小為64x64,設(shè)置訓(xùn)練周期為6 個(gè)epoch(一個(gè)epoch 含有8 763 次迭代),訓(xùn)練時(shí)間僅為3個(gè)小時(shí)。
圖3(a)和(b)顯示了數(shù)據(jù)集HWDB1.1 訓(xùn)練過(guò)程中準(zhǔn)確率和損失函數(shù)的變化,可以看出模型在訓(xùn)練迭代到3000 次左右時(shí)損失函數(shù)就降到了1.0以下,第20 000 次迭代后測(cè)試準(zhǔn)確率普遍保持在95%以上,對(duì)數(shù)據(jù)集ICDAR2013 的最終識(shí)別準(zhǔn)確率如表2 所示。
圖3 數(shù)據(jù)集HWDB1.1 訓(xùn)練過(guò)程中準(zhǔn)確率和損失函數(shù)變化
表2 ICDAR2013 數(shù)據(jù)集識(shí)別結(jié)果
表3 展示了基于ICDAR2013 數(shù)據(jù)集的不同識(shí)別方法的比較??梢钥闯觯c表中的方法1、2 相比,HCCR-IncBN 模型在識(shí)別準(zhǔn)確率和模型參數(shù)的數(shù)量方面都具有較大的優(yōu)勢(shì)。方法1 是2013 年ICDAR 手寫(xiě)體識(shí)別比賽的冠軍,其輸入表示很小,但是模型存儲(chǔ)量高達(dá)2460MB。隨著算法的改進(jìn)和網(wǎng)絡(luò)的優(yōu)化,近幾年一些成功的模型涉及的計(jì)算參數(shù)數(shù)量逐步降低。方法2 是ATR-CNN 的單一模型,其輸入是1x48x48 的二值化圖像,但是模型存儲(chǔ)量約是我們的兩倍。方法3 也是基于GoogLeNet,在識(shí)別準(zhǔn)確率方面HCCR-IncBN 比其低了0.41%,但是在模型存儲(chǔ)方面我們更優(yōu)一些,具體來(lái)說(shuō),HCCR-Gabor-GoogLeNet 使 用 的 是Inception-v1 模 塊且提取了原圖像的Gabor 特征,其輸入表示大小為9x120x120,而HCCR-IncBN 模型是基于Inception-v2模塊,輸入表示大小為1x64x64,且訓(xùn)練集只使用了HWDB1.1。方法4 致力于設(shè)計(jì)一個(gè)緊湊型的CNN 網(wǎng)絡(luò)來(lái)提高手寫(xiě)體識(shí)別的效率,在模型存儲(chǔ)方面具有很大的優(yōu)越性,與之相比,HCCR-IncBN模型的輸入表示較小,且方法4 的模型在訓(xùn)練過(guò)程中要不斷的進(jìn)行卷積層的低秩分解和修剪權(quán)重的操作,模型訓(xùn)練期間會(huì)耗費(fèi)大量的時(shí)間和計(jì)算資源。
表3 各手寫(xiě)體漢字識(shí)別方法的比較
為進(jìn)一步評(píng)估模型的識(shí)別能力,使用MNIST數(shù)據(jù)集進(jìn)行了手寫(xiě)體數(shù)字的識(shí)別實(shí)驗(yàn)。HCCRIncBN 模型輸入設(shè)置為28x28,由于MNIST 數(shù)據(jù)集較小,為增強(qiáng)泛化能力,將dropout 數(shù)值修改為0.5。共訓(xùn)練了14040 次,在測(cè)試集上的識(shí)別準(zhǔn)確率為99.37%。表4 展示了在MNIST 數(shù)據(jù)集上不同識(shí)別方法的比較,可以看出HCCR-IncBN 模型具有最高的識(shí)別準(zhǔn)確率。
表4 不同識(shí)別模型的比較
本文設(shè)計(jì)了一個(gè)15 層的深度卷積神經(jīng)網(wǎng)絡(luò)模型HCCR-IncBN 用于漢字的手寫(xiě)體識(shí)別。該模型充分利用了Inception 模塊稀疏連接的優(yōu)點(diǎn),保存整個(gè)模型僅需26MB 的存儲(chǔ)空間,在獲得較優(yōu)識(shí)別準(zhǔn)確率的同時(shí)能夠較快的收斂(使用HWDB1.1 數(shù)據(jù)集訓(xùn)練模型僅需3 個(gè)小時(shí))。HCCR-IncBN 模型在ICDAR2013 和MNIST 數(shù)據(jù)集上分別取得了95.94%和99.37%的識(shí)別準(zhǔn)確率,優(yōu)于當(dāng)下大部分識(shí)別模型。在今后的工作中,我們會(huì)嘗試設(shè)計(jì)更緊湊的CNN 模型來(lái)提高模型的識(shí)別效率,另外,將模型與手寫(xiě)體漢字的特定領(lǐng)域知識(shí)(如字符形狀歸一化、傳統(tǒng)Gradient 特征與Gabor 特征提取等)相結(jié)合來(lái)進(jìn)一步探索提高模型的識(shí)別準(zhǔn)確率。