陳鵬飛,應(yīng)自爐,朱健菲,商麗娟
(五邑大學(xué) 信息工程學(xué)院,廣東 江門 529020)
脫機手寫漢字識別(Offline Handwritten Chinese Character Recognition, HCCR)被廣泛應(yīng)用于歷史文檔識別、簽名識別和手寫文檔轉(zhuǎn)錄等領(lǐng)域。由于漢字種類繁多,不同的人有不同的書寫風(fēng)格,而且相似漢字極易被混淆等,造成了脫機手寫漢字識別難度較大。傳統(tǒng)的脫機手寫漢字識別方法主要包括數(shù)據(jù)歸一化、特征提取和分類器識別3個部分。其中,較為有效的特征主要有Gabor特征和Gradient特征[1],常用的分類器有二次判別函數(shù)(Modified Quadratic Discriminant Function, MQDF)[2]、支持向量機(Support Vector Machine, SVM)[3]等。傳統(tǒng)方法中,文獻(xiàn)[4]采用鑒別特征提取(Discriminative Feature Extraction, DFE)和鑒別學(xué)習(xí)二次判別函數(shù)(Discriminative Learning Quadratic Discriminant Function, DLQDF)方法取得了傳統(tǒng)方法中最高的識別準(zhǔn)確率,但其性能并未超過人類平均水平[5]。近幾年,深度學(xué)習(xí)技術(shù)在計算機視覺、語音識別、自然語言處理等領(lǐng)域取得了顯著成功[6]。采用深度學(xué)習(xí)的脫機手寫漢字識別方法取得了很大突破[7]。2013年,富士通團(tuán)隊采用多列深度卷積神經(jīng)網(wǎng)絡(luò)(Multi Column Deep Convolutional Neural Network, MCDNN)獲得了ICDAR(International Conference on Document Analysis and Recognition)脫機手寫漢字識別比賽第一名,識別率為94.77%[5]。Zhong等[8]提出HCCR-GoogleNet,采用領(lǐng)域方向特征和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)方法,將識別率提高到96.74%。最近,Zhang等[9]提出基于directMap和convNet的方法,進(jìn)一步將識別率提高到97.37%?;谏疃葘W(xué)習(xí)技術(shù)的脫機手寫漢字識別方法研究已經(jīng)取得了較多成果,但是因擁有較高的計算復(fù)雜度和較大的模型容量,制約了其將模型部署到移動端等計算資源和存儲容量有限的設(shè)備。
降低卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)計算復(fù)雜度和模型容量的研究主要有改進(jìn)CNN模型本身結(jié)構(gòu)和優(yōu)化現(xiàn)有預(yù)訓(xùn)練模型。在改進(jìn)CNN模型中,文獻(xiàn)[10]提出Fire結(jié)構(gòu)的SqueezeNet網(wǎng)絡(luò)大大降低了模型容量;針對移動設(shè)備設(shè)計基于深度可分離卷積的MobileNet網(wǎng)絡(luò),減少了模型的計算復(fù)雜度[11]。在優(yōu)化現(xiàn)有模型的方法中,低秩擴展方法通過分解卷積層降低計算復(fù)雜度[12];Guo等[13]提出網(wǎng)絡(luò)剪枝方法用以壓縮CNN模型。目前,針對大規(guī)模脫機手寫漢字識別模型加速和壓縮的研究相對較少。Xiao等[14]提出基于全局監(jiān)督低秩擴展(Global Supervised Low-rank Expansion, GSLRE)與自適應(yīng)去權(quán)重(Adaptive Drop-weight, ADW)的方法計算復(fù)雜度和模型容量問題,該方法首先通過GSLRE進(jìn)行逐層訓(xùn)練,然后利用ADW方法對預(yù)先訓(xùn)練的模型進(jìn)行權(quán)重裁剪,在降低計算復(fù)雜度和模型容量方面效果較為明顯,但是模型訓(xùn)練較為復(fù)雜。受MobileNet網(wǎng)絡(luò)結(jié)構(gòu)啟發(fā),本文提出一種基于深度可分離卷積的殘差卷積神經(jīng)網(wǎng)絡(luò)模型,降低計算復(fù)雜度和模型容量。通過深度可分離卷積改進(jìn)殘差卷積神經(jīng)網(wǎng)絡(luò),可以訓(xùn)練更深層的網(wǎng)絡(luò)模型,在保證模型識別準(zhǔn)確率的同時,實現(xiàn)較小的模型容量和計算復(fù)雜度。本文方法主要通過改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)減小模型容量和計算復(fù)雜度,降低網(wǎng)絡(luò)模型訓(xùn)練難度。
目前,基于深度學(xué)習(xí)的脫機手寫漢字識別方法都通過softmax 損失函數(shù)進(jìn)行監(jiān)督訓(xùn)練,softmax 損失函數(shù)能夠優(yōu)化類別間差異,但是忽略了類內(nèi)緊湊性,通常導(dǎo)致分類性能降低。為了解決這一問題,引入一種在人臉識別中較為有效的中心損失函數(shù)[15],通過聯(lián)合softmax損失函數(shù)與中心損失函數(shù)監(jiān)督訓(xùn)練CNN網(wǎng)絡(luò)模型,優(yōu)化類別間差異和類內(nèi)緊湊性,從而提高模型識別準(zhǔn)確率。
深度可分離卷積是指將標(biāo)準(zhǔn)卷積分解為一個逐深度的卷積和一個1×1標(biāo)準(zhǔn)卷積(逐點卷積)。逐深度卷積對應(yīng)著每一個輸入特征圖的通道,1×1逐點卷積負(fù)責(zé)將逐深度卷積提取的特征進(jìn)行融合。通過特征提取與特征融合分離可以有效地降低計算復(fù)雜度和模型容量。圖1顯示了標(biāo)準(zhǔn)卷積和深度可分離卷積的結(jié)構(gòu)。
假設(shè)一個標(biāo)準(zhǔn)卷積層的輸入特征圖為X,大小為M×H×W,其中M是輸入特征圖通道數(shù),H和W是輸入特征圖的高和寬;輸出特征圖為Y,大小為N×H′×W′,其中N是輸出特征圖通道數(shù),H′和W′是輸出特征圖的高和寬;卷積核為F,大小為C×K×K×N,其中,K是卷積核的大小。卷積步長和補邊為1,由卷積的定義可知:
(1)
其參數(shù)量和計算復(fù)雜度分別為:
C×K×K×N
(2)
C×K×K×N×H′×W′
(3)
圖1(a)顯示了標(biāo)準(zhǔn)卷積的詳細(xì)結(jié)構(gòu)。
深度可分離卷積中,每個卷積核對應(yīng)一個輸入特征圖,所以根據(jù)深度可分離卷積的定義,有以下公式:
(4)
圖1 標(biāo)準(zhǔn)卷積與深度可分離卷積結(jié)構(gòu)
為了保證有相同的輸出特征圖,在深度可分離卷積后面加入一個輸出特征圖為N的1×1標(biāo)準(zhǔn)卷積,其參數(shù)量和計算復(fù)雜度分別為:
C×K×K+C×1×1×N
(5)
C×K×K×H′×W′+C×H′×W′×N
(6)
圖1(b)、圖1(c)分別是深度可分離卷積的逐深度卷積和逐點卷積的詳細(xì)結(jié)構(gòu)。
使用深度可分離卷積,相比標(biāo)準(zhǔn)卷積,其計算復(fù)雜度和參數(shù)量都減少相同倍數(shù)。由式(2)和式(5)可知:
(7)
由式(3)和式(6)可知:
(8)
所以,當(dāng)深度可分離卷積核K的大小為3時,相比標(biāo)準(zhǔn)卷積,其參數(shù)量和計算復(fù)雜度減少8~9倍。
受ResNet[16]的殘差結(jié)構(gòu)啟發(fā),本文設(shè)計了基于深度可分離卷積的殘差結(jié)構(gòu)單元。圖2描述了兩種主要的分支結(jié)構(gòu)。在分支結(jié)構(gòu)中,第一層1×1卷積主要用來降低深度可分離卷積的輸入通道數(shù);第二層使用3×3深度可分離卷積代替,以減少參數(shù)和計算量;最后一層1×1卷積用于匹配快捷路徑分支的通道數(shù)。其中,圖2(a)的深度可分離卷積分支結(jié)構(gòu)步長為1,通道融合采用逐通道相加操作;圖2(b)深度可分離卷積分支結(jié)構(gòu)步長為2,將快捷路徑分支使用平均池化代替,在通道融合方面,采用通道串接的方式增加通道數(shù)。在每個卷積層中,使用批量歸一化層(BatchNorm, BN)[17],BN層能夠加速網(wǎng)絡(luò)模型收斂。
圖2 深度可分離卷積殘差結(jié)構(gòu)
本文提出一個使用深度可分離卷積殘差結(jié)構(gòu)單元構(gòu)成的CNN網(wǎng)絡(luò)結(jié)構(gòu),詳細(xì)網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。在構(gòu)建的網(wǎng)絡(luò)結(jié)構(gòu)中,第一層Conv1使用標(biāo)準(zhǔn)的卷積濾波器;網(wǎng)絡(luò)結(jié)構(gòu)主要集中在3個階段(Stage2-4),每個階段的輸入通道數(shù)會增2倍,期間通道維數(shù)保持不變;隨后使用全局池化得到一個1 024維的深度特征,使用標(biāo)準(zhǔn)卷積濾波器Conv5層降低輸出通道的維數(shù)為256,最后輸出3 755個類別。模型復(fù)雜度計算的是浮點乘加操作次數(shù),模型容量是網(wǎng)絡(luò)結(jié)構(gòu)所有參數(shù)的總和。
脫機手寫漢字識別使用softmax損失函數(shù)作為網(wǎng)絡(luò)模型訓(xùn)練時的優(yōu)化目標(biāo),softmax損失函數(shù)會優(yōu)化類別間差異,但是忽略了類內(nèi)緊湊性,從而使得分類誤差較大。為解決該問題,引入中心損失函數(shù)優(yōu)化類內(nèi)緊湊性。中心損失函數(shù)也常用于人臉識別、驗證等任務(wù)中,用來減少類內(nèi)變化。聯(lián)合softmax損失函數(shù)和中心損失函數(shù)訓(xùn)練網(wǎng)絡(luò)模型,可以同時增加類別間差異和減小類內(nèi)變化,使模型學(xué)習(xí)到具有判別性的深度特征。softmax損失函數(shù)公式如下:
表1 CNN模型結(jié)構(gòu)
(9)
在式(9)中:xi∈Rd表示屬于yi類別的第i個深度特征,d表示特征的維度;W∈Rd×n表示最后一個全連接層的權(quán)重,b∈Rn是偏置項;m和n分別表示批處理數(shù)量和類別數(shù)量。
中心損失函數(shù)會學(xué)習(xí)到每個分類類別的中心,其公式表示如下:
(10)
在式(10)中,cyi∈Rd表示第yi類別的深度特征中心。
聯(lián)合softmax損失函數(shù)和中心損失函數(shù)訓(xùn)練網(wǎng)絡(luò)模型,能夠有效增加類別間差異和減小類內(nèi)變化,使得模型具有更高的魯棒性和識別準(zhǔn)確率。聯(lián)合損失函數(shù)公式表示如下:
L=LS+λLC
(11)
在式(11)中:損失函數(shù)L可以通過隨機梯度下降法(Stochastic gradient descent, SGD)進(jìn)行訓(xùn)練;參數(shù)λ是用來平衡兩個損失函數(shù)的參數(shù),當(dāng)λ=0時,只有softmax損失函數(shù)作為監(jiān)督訓(xùn)練的損失函數(shù)。圖3詳細(xì)描述了采用中心損失函數(shù)和softmax損失函數(shù)聯(lián)合訓(xùn)練的網(wǎng)絡(luò)結(jié)構(gòu)。輸入圖像是經(jīng)過歸一化處理的圖像數(shù)據(jù),網(wǎng)絡(luò)結(jié)構(gòu)使用表1描述的結(jié)構(gòu),最后將網(wǎng)絡(luò)結(jié)構(gòu)的輸出結(jié)果作為損失函數(shù)輸入。其中,中心損失函數(shù)使用Conv5層的輸出特征,維度是256;softmax損失函數(shù)使用FC層的輸出特征,維度是3 755。帶有權(quán)重參數(shù)λ的中心損失函數(shù)結(jié)果與softmax損失函數(shù)結(jié)果作為聯(lián)合損失函數(shù)結(jié)果輸出,使用隨機梯度下降方法對整個網(wǎng)絡(luò)的權(quán)重進(jìn)行學(xué)習(xí)和更新。
圖3 聯(lián)合softmax損失函數(shù)與中心損失函數(shù)的網(wǎng)絡(luò)結(jié)構(gòu)
實驗數(shù)據(jù)采用CASIA-HWDB(Institute of Automation of Chinese Academy of Sciences Offline Chinese Handwriting Databases)數(shù)據(jù)庫作為脫機手寫漢字識別的實驗數(shù)據(jù)。該數(shù)據(jù)庫含有中科院自動化研究所采集來自1 020名不同書寫者的超過300多萬個手寫漢字樣本,漢字類別包含GB2312-80一級常用漢字3 755個類別[18]。CASIA-HWDB1.0數(shù)據(jù)庫包含來自420名書寫者的1 609 136個手寫漢字樣本,漢字類別為3 866類(包括GB2312-80GB2312-80一級常用漢字中的3 740類)。CASIA-HWDB1.1數(shù)據(jù)庫包含來自300名書寫者的1 121 749個手寫漢字樣本,漢字類別為3 755類。CASIA-HWDB-Competition數(shù)據(jù)庫包含60名書寫者的224 419個手寫漢字樣本,漢字類別為3 755類。本文實驗采用GB2312-80的3 755類漢字,將CASIA-HWDB1.0和CASIA-HWDB1.1作為訓(xùn)練集數(shù)據(jù),CASIA-HWDB-Competition作為測試集數(shù)據(jù)。數(shù)據(jù)庫參數(shù)見表2。
表2 脫機手寫漢字?jǐn)?shù)據(jù)集
CASIA-HWDB數(shù)據(jù)樣本均被歸一化到32×32大小,尺寸小的樣本圖像可以進(jìn)一步減小網(wǎng)絡(luò)模型的計算復(fù)雜度。CASIA-HWDB數(shù)據(jù)樣本提供了以白色(灰度值為255)為背景的灰度圖像數(shù)據(jù)。為了減少背景值的計算,將原圖像數(shù)據(jù)背景和前景灰度值反轉(zhuǎn),即將白色背景變?yōu)楹谏尘?灰度值為0),前景部分的灰度值范圍為[1,255]。圖4是數(shù)據(jù)預(yù)處理的詳細(xì)示意圖。
圖4 數(shù)據(jù)預(yù)處理
本文采用深度學(xué)習(xí)框架tensorflow進(jìn)行實驗驗證。實驗采用帶動量(momentum)的隨機梯度下降法進(jìn)行參數(shù)更新,權(quán)重參數(shù)W使用損失函數(shù)的負(fù)梯度▽L(W)和先前的權(quán)重更新值vt學(xué)習(xí)。網(wǎng)絡(luò)模型權(quán)重更新表達(dá)式如下:
vt+1=μvt-α▽L(W)
(12)
Wt+1=Wt+vt+1
(13)
其中,μ是動量,α是學(xué)習(xí)率;t+1和t分別表示兩個不同時刻,vt+1表示更新值。
表3 訓(xùn)練參數(shù)設(shè)置
為了比較單損失函數(shù)和聯(lián)合損失函數(shù)對網(wǎng)絡(luò)模型的優(yōu)化結(jié)果,設(shè)置兩組不同的實驗。第一組網(wǎng)絡(luò)模型A(Model A)只采用softmax損失函數(shù)作為監(jiān)督訓(xùn)練損失函數(shù),第二組網(wǎng)絡(luò)模型B(Model B)采用聯(lián)合的softmax損失函數(shù)和中心損失函數(shù)作為監(jiān)督訓(xùn)練損失函數(shù)。模型A采用上文中的訓(xùn)練參數(shù)設(shè)置進(jìn)行模型訓(xùn)練,圖5是模型A在訓(xùn)練過程中、在驗證集數(shù)據(jù)上的準(zhǔn)確率結(jié)果。
為了加速訓(xùn)練過程,采用遷移學(xué)習(xí)[19]方法,在模型A訓(xùn)練結(jié)果基礎(chǔ)上對模型B進(jìn)行微調(diào)訓(xùn)練。進(jìn)行微調(diào)訓(xùn)練時,需要對上文一些訓(xùn)練參數(shù)進(jìn)行修改,以適應(yīng)新的訓(xùn)練過程。針對模型B的訓(xùn)練,基本學(xué)習(xí)率降低到0.000 01,使模型迭代變化較慢。訓(xùn)練的最大迭代次數(shù)設(shè)置為100 000,在迭代50 000次時,基本學(xué)習(xí)率降低10倍,其余訓(xùn)練參數(shù)與模型A的訓(xùn)練參數(shù)保持一致。
參數(shù)λ是中心損失函數(shù)在聯(lián)合損失函數(shù)中的權(quán)重,設(shè)置參數(shù)λ的范圍為0.000 1~1,訓(xùn)練13組不同參數(shù)λ的模型B,測試不同參數(shù)λ下模型B的識別率,結(jié)果如圖5所示。其中,當(dāng)參數(shù)λ=0時,表示未使用中心損失函數(shù),只有softmax損失函數(shù)作為監(jiān)督信號。結(jié)果表明,聯(lián)合的損失函數(shù)測試準(zhǔn)確率都高于只使用softmax損失函數(shù)的結(jié)果。
圖5 不同參數(shù)λ下模型測試準(zhǔn)確率
模型計算復(fù)雜度主要來自卷積運算操作,模型容量是可學(xué)習(xí)的權(quán)重參數(shù)總和。根據(jù)式(2)和式(3)可以計算標(biāo)準(zhǔn)卷積層的參數(shù)量和計算復(fù)雜度,根據(jù)式(5)和式(6)可以計算出深度可分離卷積層的參數(shù)量和計算復(fù)雜度。每一種方法的計算復(fù)雜度主要統(tǒng)計卷積層和全連接層的浮點乘加運算;模型容量統(tǒng)計卷積層和全連接層的權(quán)重參數(shù),每個權(quán)重參數(shù)默認(rèn)使用4個字節(jié)單精度浮點數(shù)表示。
表4詳細(xì)介紹了幾種不同的脫機手寫漢字識別方法。在ICDAR-2013脫機手寫漢字識別比賽中,來自Fujitsu的團(tuán)隊獲得比賽第一名,采用多個模型集成的方法,模型存儲容量為2.402GB[5]。HCCR-Gabor-GoogleNet方法是首次超越人類平均水平的脫機手寫漢字識別方法,其單模型的準(zhǔn)確率提高到96.35%,10個集成模型的準(zhǔn)確率提高到96.74%[8]。隨后,Zhang等[9]提出基于方向特征+卷積神經(jīng)網(wǎng)絡(luò)的方法,進(jìn)一步將識別準(zhǔn)確率提高到97.37%?;赗esNet網(wǎng)絡(luò)+空間變換的方法,也取得了97.37%的準(zhǔn)確率[20]。相比傳統(tǒng)方法,基于深度學(xué)習(xí)的方法基本取得了突破性的性能提升。但是,一般基于深度學(xué)習(xí)模型的算法模型容量和計算復(fù)雜度都較高,很難部署到計算資源和容量受限的設(shè)備上。
針對計算復(fù)雜度過高和模型容量過大的問題,本文提出基于深度可分離卷積的脫機手寫漢字識別方法。該方法在計算復(fù)雜度和模型容量方面相比傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)方法都有很大優(yōu)勢。本文提出的模型A,模型容量有20MB,主要計算復(fù)雜度為127M FLOPS,在保持較低計算復(fù)雜度和模型容量的情況下,測試準(zhǔn)確率為96.12%,達(dá)到了主流測試水平。通過引入中心損失函數(shù)優(yōu)化模型A,進(jìn)而得到優(yōu)化后的模型B,識別準(zhǔn)確率進(jìn)一步提高到96.50%。
表4 脫機手寫漢字識別方法性能比較
通過使用深度可分離卷積和聯(lián)合損失函數(shù)改進(jìn)殘差網(wǎng)絡(luò)結(jié)構(gòu),本文提出一個高效的脫機手寫漢字識別模型,使得模型更容易被部署到計算資源和存儲容量受限的移動端設(shè)備上?;谏疃瓤煞蛛x卷積的殘差卷積神經(jīng)網(wǎng)絡(luò)通過將標(biāo)準(zhǔn)卷積操作分離為特征提取和特征融合兩個部分,有效減少了模型的計算復(fù)雜度和模型容量。而且,基于殘差結(jié)構(gòu)的網(wǎng)絡(luò)模型采用瓶頸結(jié)構(gòu),使得計算復(fù)雜度進(jìn)一步降低。在此基礎(chǔ)上,引入中心損失函數(shù),通過學(xué)習(xí)每一類的類別中心,使類內(nèi)特征更加緊湊,聯(lián)合softmax損失函數(shù)可以學(xué)習(xí)到更具判別性的深度特征。實驗結(jié)果表明,網(wǎng)絡(luò)模型在達(dá)到主流識別準(zhǔn)確率的同時,所用方法擁有較低的模型容量和計算復(fù)雜度。