周於川,譚欽紅,奚川龍
(重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065)
脫機手寫漢字識別在50年以來的研究中,在票據(jù)自動識別、手寫漢字錄入、自動化教學(xué)辦公等領(lǐng)域具有重要意義;相較于于打印字,人們有著風(fēng)格迥異的字體,更難于提取和識別特征.傳統(tǒng)方法中,MQDF[1]和DLQDF[2]在CASIA[3]數(shù)據(jù)集上有好的效果,達(dá)到近93%的準(zhǔn)確率,但傳統(tǒng)方法逐漸達(dá)到瓶頸.基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的模型在模式識別方面效果很好,用于脫機手寫漢字識別中的CNN模型也有許多,基于CNN的Fujitsu[4]模型在測試集ICDAR-2013以94.77%準(zhǔn)確率獲得冠軍;輪換訓(xùn)練松弛卷積神經(jīng)網(wǎng)絡(luò)(ATR-CNN)[5]最新模型達(dá)到3.94%的錯誤率進一步縮小機器和人眼識別差距;HCCR-Gabor-GoogLeNet(HEGL)[6]在Fujitsu基礎(chǔ)上修改后準(zhǔn)確率達(dá)到96.58%,HEGL在損失部分速度和存儲情況下達(dá)到96.74%的準(zhǔn)確率;基于ResNet的傾斜校正網(wǎng)絡(luò)[7]更是達(dá)到了98.4%準(zhǔn)確率.
盡管基于CNN模型的手寫漢字識別在準(zhǔn)確率上取得了很大提升,但是其運算資源、功耗和存儲空間要求大、參數(shù)多、訓(xùn)練復(fù)雜、難于進行分布式訓(xùn)練;很難將相應(yīng)模型部署于硬件資源有限的ARM板和FPGA等嵌入式平臺中.本文為實現(xiàn)有限資源條件下的手寫漢字識別,在保證模型預(yù)測性能良好的情況下,盡可能減小模型的體量.
壓縮CNN模型體積常用方法[8]有5類,分別是網(wǎng)絡(luò)剪枝、參數(shù)共享、量化、網(wǎng)絡(luò)蒸餾和緊湊網(wǎng)絡(luò)設(shè)計,都可以得到明顯的壓縮效果.其中緊湊網(wǎng)絡(luò)改進了網(wǎng)絡(luò)參數(shù)量和計算量較多的卷積,Iandola等提出SqueezeNet[9],曠視科技提出的ShuffleNet[10],谷歌團隊的MobileNet[11],以及Francois等提出的Xception[12]都是在卷積設(shè)計上做了相關(guān)工作.
其中SqueezeNet將FireModule引入AlexNet卷積模型,在保證準(zhǔn)確率較好的情況下,將模型壓縮50倍,并成功應(yīng)用于嵌入式平臺.本文對脫機手寫漢字模型壓縮進行研究,將SqueezeNet模型修改后,加入動態(tài)網(wǎng)絡(luò)手術(shù)(Dynamic Network Surgery)[13]對模型參數(shù)壓縮,包含裁剪和修復(fù),壓縮參數(shù)同時保證模型準(zhǔn)確率.
SqueezeNet是基于AlexNet的卷積神經(jīng)網(wǎng)絡(luò)模型,設(shè)計更少參數(shù)的CNN模型,減少大量參數(shù)的同時,仍然擁有接近AlexNet網(wǎng)絡(luò)的準(zhǔn)確率.
SqueezeNet核心在于FireModule,小卷積核代替部分大卷積核,當(dāng)分別用5*5和3*3卷積核對5*5*1圖像進行卷積,前者產(chǎn)生25個參數(shù),25次計算,后者會產(chǎn)生18個參數(shù),90次計算,但計算機讀取內(nèi)存的速度遠(yuǎn)慢于乘法計算,參數(shù)量少的小卷積核卷積速度更快,故文中采用1*1替代部分3*3會加快卷積速度,剩余3*3卷積核保證收斂速度.
如圖1所示,分為Squeeze層和Expand層,其中Squeeze層是S個1*1卷積核的卷積層,Expand層是e1個1*1和e2個3*3卷積核的卷積層,其激活層都是ReLU.其中FireMoudle輸入特征圖大小為H*W*M,輸出特征圖大小為H*W*(e1+e2),變化的僅是維數(shù),并未改變其分辨率.首先H*W*M的特征圖經(jīng)過Squeeze層,得到S個特征圖,S均是小于M,起到壓縮效果;在Expand層,H*W*S分別用e1個1*1卷積核和e2個3*3卷積核進行卷積,并將兩部分卷積結(jié)果進行合并,得到H*W*(e1+e2)大小的輸出結(jié)果,所選取e1+e2的值要求大于M,因此FireMoudle增加了輸入的維數(shù).其中S、e1、e2是可調(diào)參數(shù),都是代表卷積核個數(shù),也反映輸出特征圖的維數(shù),文中取e1=e2=4S.
此外,模塊中采用下采樣操作來保證卷積層具有更大的激活函數(shù),在有限網(wǎng)絡(luò)參數(shù)的條件下保證模型精度.
如圖2所示,SqueezeNet網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計思想與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)類似,通過堆疊卷積操作來實現(xiàn),只是SqueezeNet堆疊的是FireMoudle.
本文改進的SqueezeNet模型,在原模型的基礎(chǔ)上進行3個部分的改進:1)將最大池化層加入下層FireMoudle層進行融合,改善小卷積核的過擬合問題,這個過程中保證最大池化
圖2 原始和改進的SqueezeNet網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計Fig.2 Original and improved SqueezeNet structure design
層特征圖和融合的FireMoudle特征圖大小匹配;2)針對FireMoudle層的特征圖參數(shù),采用動態(tài)壓縮網(wǎng)絡(luò)手術(shù)算法動態(tài)連接修剪、降低網(wǎng)絡(luò)復(fù)雜度;3)采用L2范數(shù)約束[14]的Softmax代替原先的Softmax進行分類,通過正則化來實現(xiàn)更好的約束效果.模型參數(shù)見表1.
表1 改進SqueezeNet模型參數(shù)Table 1 Improved SqueezeNet module parameters
常用的模型參數(shù)裁剪算法是通過閾值來刪除不重要的參數(shù)來壓縮CNN模型,但是參數(shù)重要性往往伴隨著網(wǎng)絡(luò)性能而變化,也就導(dǎo)致兩個常見問題:1)有可能將重要的參數(shù)刪除,降低模型精度;2)時間很長,收斂過慢.動態(tài)網(wǎng)絡(luò)手術(shù)壓縮模型,對參數(shù)進行調(diào)整,其流程采取剪枝和拼接結(jié)合、訓(xùn)練與壓縮同步的方式,在減少大量參數(shù)的同時保證精度.此模型包含兩部分,即剪枝和拼接,如圖3所示.其中,剪枝是壓縮網(wǎng)絡(luò)模型;拼接是為了彌補在剪枝不正確而造成的精度損失,對不正確的剪枝進行恢復(fù)拼接.不僅提高學(xué)習(xí)效率,而且更好接近壓縮極限.對于問題2,通過兩個方式來加快訓(xùn)練速度:1)降低參數(shù)的刪除概率,提高收斂速度;2)將FireMoudle和卷積層分開進行參數(shù)裁剪.
圖3 動態(tài)網(wǎng)絡(luò)手術(shù)策略Fig.3 Dynamic network surgery strategy
式(1)表明網(wǎng)絡(luò)的損失函數(shù):
(1)
L(Wk⊙Tk)是網(wǎng)絡(luò)損失函數(shù),⊙代表是矩陣哈達(dá)瑪乘積;hk(w)是分類函數(shù),判定重要就為1,否則為0;Tk是0-1矩陣,表明網(wǎng)絡(luò)的連接狀態(tài),是否被剪枝.I代表矩陣Wk中的元素.
分類函數(shù)hk(w)如式(2)所示,參數(shù)的重要性以權(quán)值絕對值為基礎(chǔ),設(shè)置ak,bk2個閾值,其中bk=ak+Tk.
(2)
Wk和Tk確定后,通過式(3)來更新Wk的值,其中β為正向?qū)W習(xí)效率.式(3)不僅更新重要的參數(shù),而且更新已被認(rèn)定為不重要或?qū)p少損失函數(shù)無效的參數(shù),即對Tk中已被定為0的參數(shù)依然進行更新.
(3)
算法中剪枝和拼接是不斷循環(huán)的過程,通過不斷更改連接的權(quán)重Wk和Tk的值來實現(xiàn),直到迭代次數(shù)iter達(dá)到預(yù)設(shè)值.動態(tài)網(wǎng)絡(luò)算法步驟如表2所示.
最大池化層和下層的FireMoudle層相融合[15],不僅改善小卷積核的過擬合問題;而且底層特征分辨率更高含有更多位置、細(xì)節(jié)信息,但噪聲很多,而高層特征分辨率低,但是對細(xì)節(jié)感知能力差;將高層特征和底層特征進行融合會提高對小目標(biāo)(手寫漢字中的點)的檢測效果;前層學(xué)習(xí)的特征映射可以被后層訪問,整個網(wǎng)絡(luò)公用一部分特性,使模型更緊湊.
融合方法[16]體現(xiàn)于圖2,將池化層得到的特征圖和后面
表2 動態(tài)網(wǎng)絡(luò)手術(shù)算法步驟Table 2 Dynamic network surgery algorithm procedure FireMoudle得到的特征圖進行融合,得到新的特征圖,算法如式(4)所示,將池化層提取得到的特征圖和其后FireMoudle得到的特征圖進行融合,得到新的特征圖.
(4)
其中n,i,j分別代表新特征圖個數(shù),池化層所提取的特征圖個數(shù)和FireMoudle處理后的特征圖個數(shù).
Softmax對于給定的測試輸入,通過假設(shè)函數(shù)針對估算出每一個類別概率值并歸一化處理,得到類別的歸一化概率值,如式(5)所示;在模式識別任務(wù)中,可以有效分離多個類別并且容易實現(xiàn);但是也有明顯缺點:1)如果類別過多,那么會出現(xiàn)匹配問題;2)受限于最大化條件概率的處理方式,其更適用于高質(zhì)量圖像,不適用于困難罕見圖像.
圖4 Softmax和L2-Softmax在mnist數(shù)據(jù)集特征 分布情況對比Fig.4 Comparison of Softmax and L2-Softmax feature distributions in the mnist dataset
當(dāng)限制最后的隱藏層輸出為2時,實現(xiàn)特征可視化,得到圖4從左到右為Softmax和L2-Softmax在mnist數(shù)據(jù)集上得到的特征分布情況,L2-Softmax準(zhǔn)確率要高于Softmax.
由于本文手寫漢字識別類別較多,故本文采用L2范數(shù)約束的Softmax進行分類,加上范數(shù)約束條件后,同一類別圖像在歸一化特征空間更接近彼此,不同類別圖像距離更遠(yuǎn),給樣本平均化的關(guān)注,可以很好地處理到質(zhì)量較差的樣本.
(5)
式(6)為L2-Softmax類別概率值歸一化處理,其中f(xi)是規(guī)模為M的一張輸入圖像,yi表示第i個目標(biāo)的類別描述,只有一個元素為1,f(xi)是最后的全連接層之前的d維特征描述量,C是類別的數(shù)量,W和b分別代表網(wǎng)絡(luò)中可訓(xùn)練的權(quán)重和偏差.
(6)
在網(wǎng)絡(luò)中實現(xiàn)L2約束如圖5,Softmax直接對Softmax損失進行歸一化處理得到概率值,而L2-Softmax對Softmax輸出前引入L2格式化層和Scale層.其中L2格式化層將輸入的特征x歸一化為單位向量;Scale層根據(jù)給定參數(shù)α,將單位向量縮放到固定的半徑,鑒于將參數(shù)a同其他網(wǎng)絡(luò)參數(shù)同時訓(xùn)練所得值過大,本文直接將a固定為較小常量,效果更好.
圖5 Softmax與L2-Softmax網(wǎng)絡(luò)Fig.5 Softmax and L2-Softmax network
本文選擇CASIA-HWDB1.1數(shù)據(jù)集作為模型訓(xùn)練集,其中的漢字更多變,更難識別,包含3755類漢字;ICDAR-2013競賽數(shù)據(jù)集作為測試集.實驗環(huán)境:操作系統(tǒng)是Ubuntu 18.04,CPU是Intel Core i7-8700K CPU@3.70GHzX12,GPU是NVIDIA GTX1080TI 16G,RAM是DDR4 3200 16G,采用深度學(xué)習(xí)框架是Tensorflow 1.4.0和Keras 2.1.0,基于python3.6.3.
數(shù)據(jù)集中漢字字跡深淺不一,對識別準(zhǔn)確率有影響,對圖像進行增強對比度操作.
(7)
式(7)中Imax,Imin分別為原圖像的最大、最小灰度像素值,I(x,y)為原圖像像素值,D(x,y)為目標(biāo)圖像像素值.
圖片尺寸過大會增加網(wǎng)絡(luò)負(fù)擔(dān),過小會降低識別性能,通過最近鄰插值法將漢字圖像歸一化為56×56大小.
結(jié)合梯度特征可以提高手寫漢字識別的有效性和準(zhǔn)確率[17].從0,π/4,π/2,3π/4,π,5π/4,3π/2,7π/4這8個方向提取手寫漢字特征,可以涵蓋漢字的橫、豎、撇、捺等筆畫.通過sobel算子得到水平和垂直方向的梯度,再根據(jù)平行四邊形分解原 則得到八個方向的特征圖,最后進行疊加得到平均梯度圖像.
圖6左上角為原始圖像“的”,中間為圖像增強處理后的圖像,右上角為梯度圖像疊加后的平均梯度圖像,后面8幅圖像為對應(yīng)方向的梯度圖像.
圖6 對“的”預(yù)處理Fig.6 Pretreatment of “的”
本數(shù)據(jù)集中每個漢字大概含有300個樣本,共計1121749個漢字,分為訓(xùn)練集和驗證集;訓(xùn)練集中每個漢字包含250個樣本,驗證集中每個漢字包含50個樣本.測試集ICDAR-2013依然采用32×32的輸入尺寸.
表3 超參數(shù)設(shè)置Table 3 Improved SqueezeNet module parameters
對卷積神經(jīng)網(wǎng)絡(luò)超參數(shù)進行設(shè)置,如表3所示,其中FireMoudle中設(shè)置壓縮比為0.5,3×3的filter個數(shù)占總個數(shù)比例為0.25.
表4中展示幾種典型方法在ICDAR-2013數(shù)據(jù)集上的識別效果,MQDF-HIT和MQDF-THU是通過提取灰度化后字符圖像的特征向量后,采用級聯(lián)的MQDF分類器分類.CNN-Fujitsu作為ICDAR-2013漢字識別的冠軍模型,根據(jù)4個CNN模型投票來產(chǎn)生最終輸出結(jié)果.ATR-CNN采用松弛卷積神經(jīng)網(wǎng)絡(luò)識別手寫漢字,即通過改變傳統(tǒng)卷積中一個特征圖內(nèi)共享卷積核策略.HEG是通過10個改進后的GoogLeNet的投票結(jié)果來產(chǎn)生最終結(jié)果.
由表可得,本文所提模型的識別準(zhǔn)確率和模型體積量都比以MQDF為代表的傳統(tǒng)手寫漢字識別更有優(yōu)勢;比卷積神經(jīng)網(wǎng)絡(luò)AlexNet、CNN-Fujitsu和ATR-CNN有小幅度準(zhǔn)確率提升并降低了模型體積;其準(zhǔn)確率僅低于Skew Correction ResNet的98.4%,但有更小的體積.
對比SqueezeNet模型直接剪枝后的結(jié)果,雖然模型體積變得很小,同時準(zhǔn)確率降低較多;本文中采用的動態(tài)網(wǎng)絡(luò)手術(shù)來剪枝并拼接被誤刪重要的參數(shù),雖模型體積相對直接剪枝更大一些,達(dá)到了3.2MB,但準(zhǔn)確率得到顯著提高,達(dá)到96.03%;最后對輸入圖片進行增強和梯度提取后,在預(yù)處理輸入的基礎(chǔ)下,得到模型的準(zhǔn)確率提高到96.32%.
表4 改進SqueezeNet模型參數(shù)Table 4 Improved SqueezeNet module parameters
注:SN表示SqueezeNet,SCR表示Skew-correction-ResNet,DNS表示動態(tài)網(wǎng)絡(luò)手術(shù),HEG表示HCCR-Ensemble-GoogLeNet
本文提出的模型是在卷積神經(jīng)網(wǎng)絡(luò)SqueezeNet的基礎(chǔ)上,引入動態(tài)網(wǎng)絡(luò)手術(shù)降低參數(shù)輸入,加快訓(xùn)練和收斂并在保證精度的情況進行合理剪枝,進一步減少參數(shù),將模型壓縮到了3.2MB,采用L2約束Softmax分類函數(shù)加速漢字分類的收斂,速度得到提升,達(dá)到很好的效果.但是模型的準(zhǔn)確率對比最新的模型偏低2.37%,后面會加入HWDB1.0訓(xùn)練集,提高準(zhǔn)確率;模型在計算機上已經(jīng)有較好的壓縮和識別效果,故下一步將本模型部署在ARM板或FPGA等硬件資源限制有限的平臺,實現(xiàn)對脫機手寫漢字的識別,并評估準(zhǔn)確率和速率等性能.