王馨悅,董蘭芳
(中國科學(xué)技術(shù)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,合肥 230027) E-mail:wxy66@mail.ustc.edu.cn
隨著計算機技術(shù)的不斷發(fā)展,人們越來越依賴計算機來接受和處理信息,將紙質(zhì)文檔中的信息轉(zhuǎn)換到計算機中,能夠更方便的存儲、編輯和管理信息.紙質(zhì)文檔的數(shù)據(jù)量十分巨大,而目前主要是通過人力來完成轉(zhuǎn)換,大大降低了工作效率.如果讓計算機自動識別,便可以在很大程度上提高工作效率,降低人力成本,具有重要作用.
與中文印刷體相比,手寫體字符的書寫隨意性大,缺乏規(guī)范性.出自不同書寫者的同一類漢字在字形、結(jié)構(gòu)上都會有明顯的差異;并且相鄰漢字之間會存在粘連,增加了識別的難度.與英文手寫體相比,漢字種類繁多,根據(jù)GB2312-80標準,漢字共有6763個,其中包括一級漢字3755個,二級漢字3008個,同樣給中文手寫體識別增加了難度.因此,中文手寫體識別仍然是一個具有挑戰(zhàn)性的研究課題.
對于脫機手寫體文本行識別,主要包括分割成單個字符的識別和整行識別兩種方法[1].對于分割成單個字符的識別方法,通常利用連通域分析,投影等方法對文本行進行字符分割,然后利用單字分類器對單個字符進行識別.針對整行識別,通常利用滑動窗口按照一定步長進行滑動,再利用單字分類器對滑動窗口內(nèi)的字符進行識別[2],然后在貝葉斯框架下,結(jié)合中文語言模型,對文本行的上下文進行建模,來實現(xiàn)文本行的識別[3].由于近幾年深度學(xué)習(xí)不斷發(fā)展,利用深度學(xué)習(xí)實現(xiàn)文本行識別是一個極具潛力的研究方向,Messina R等人[4]首次提出將MDLSTM-RNN網(wǎng)絡(luò)應(yīng)用到中文手寫體文本行識別,在CASIA-HWDB[5]數(shù)據(jù)集上進行訓(xùn)練,在ICDAR 2013競賽數(shù)據(jù)集上進行測試,字符準確率為83.5%.Wu Y C等人[6]在MDLSTM-RNN網(wǎng)絡(luò)基礎(chǔ)上做了改進,用分離的MDLSTM-RNN進行中文手寫體文本行識別,未加語料庫的前提下準確率提升了3.14%.可以看出利用神經(jīng)網(wǎng)絡(luò)進行文本行識別準確率相對較低,有較大的提升空間.但是由于漢字種類較多,目前成功應(yīng)用在中文手寫體文本行識別中的神經(jīng)網(wǎng)絡(luò)較少,因此找到合適的神經(jīng)網(wǎng)絡(luò)去擬合大類別的離線中文手寫體文本行識別,仍然是一個值得研究的問題.
對于離線中文手寫體識別,相比基于切分策略的文本行識別,利用神經(jīng)網(wǎng)絡(luò)可以避免字符切分,實現(xiàn)真正無分割端到端離線中文手寫體文本行識別.encoder-decoder[7]是較常見的框架,廣泛應(yīng)用在語音,圖像,視頻等領(lǐng)域.沈華東等人[8]將該框架應(yīng)用到文本摘要的自動提取;Deng Y等人[9]將該方法用到了公式識別中;O Vinyals 等人[10]將encoder-decoder框架應(yīng)用到圖片描述中,Xu K等人[11]首次提出在 encoder-decoder框架添加Attention的思想,應(yīng)用到圖片描述中.圖片描述是指給定一張圖片,計算機會自動輸出一句話來描述這張圖片.而對于離線中文手寫體,則是給定一張中文手寫體圖片,輸出對應(yīng)的可編輯的中文漢字.通過類比,我們可以將離線中文手寫體的識別看作是獲得該張圖片的描述.本文分別對傳統(tǒng)的encoder-decoder和基于Attention機制的encoder-decoder兩種方法作了對比實驗.實驗結(jié)果表明,基于Attention機制的encoder-decoder比傳統(tǒng)的encoder-decoder框架具有更好的識別結(jié)果;同時也表明encoder-decoder框架可以成功應(yīng)用到大類別中文手寫體文本行識別中.本文的網(wǎng)絡(luò)結(jié)構(gòu)與目前成功應(yīng)用到大類別中文手寫體文本行識別中的MDLSTM-RNN網(wǎng)絡(luò),具有以下優(yōu)點:
1)本文不需要利用單字符和中文語料庫來擴充中文手寫體文本行數(shù)據(jù)集;
2)也不需要利用其他語言的手寫體進行預(yù)訓(xùn)練.本文直接利用已有數(shù)據(jù)集CASIA-HDWB2.0-2.2,在CNN+BLSTM+Attention+LSTM網(wǎng)絡(luò)結(jié)構(gòu)下直接進行訓(xùn)練,并取得了較好的實驗結(jié)果.
本文采用的網(wǎng)絡(luò)結(jié)構(gòu)是基于Attention機制的encoder-decoder框架,具體的結(jié)構(gòu)為CNN+BLSTM+Attention+LSTM,如圖1所示.
圖1 整體框架結(jié)構(gòu)圖Fig.1 General framework structure
首先用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[12]提取特征,然后將特征圖的列向量依次輸入到雙向長短期記憶模型(Bidirectional Long Short Term Memory Network,BLSTM)[13]中進行編碼,再將BLSTM輸出結(jié)果結(jié)合Attention,輸入到長短期記憶模型(Long Short Term Memory Network,LSTM)[14]中進行解碼.具體的識別步驟如算法1所示.
算法1.脫機中文手寫體識別算法
輸入:經(jīng)過預(yù)處理后的離線中文手寫體圖片
輸出:識別結(jié)果
1)圖片預(yù)處理,按照圖片大小分成33類;
2)For epoch=1…15:
3)將預(yù)處理后的圖片輸入CNN;
4)將步驟3得到的特征圖,按列依次輸入BLSTM進行編碼;
5)將編碼后的結(jié)果,結(jié)合解碼時當前時刻隱藏層的輸出,作為全連接層的輸入,全連接層后連接tanh激活函數(shù);
6)把步驟5的輸出采用softmax進行歸一化,得到每列對應(yīng)的概率值,也稱為Attention;
7)將步驟4得到的編碼結(jié)果和步驟6得到的Attention,對應(yīng)相乘得到新的編碼結(jié)果;
8)將步驟7的輸出和當前時刻的LSTM隱藏層的輸出作為全連接層的輸入,全連接層后用tanh激活函數(shù);
9)將步驟8的結(jié)果用softmax歸一化,歸一化后的結(jié)果作為詞典中字符的概率;
10)目標函數(shù)采用條件概率的負對數(shù)似然.
傳統(tǒng)的漢字特征提取的方法有骨架特征、網(wǎng)格特征、筆畫密度特征及方向線速特征等[15].本文采取卷積層進行特征提取,池化層進行特征選擇.LeCun Y等人[12]提出的卷積神經(jīng)網(wǎng)絡(luò)最近廣泛應(yīng)用于圖像識別領(lǐng)域.卷積神經(jīng)網(wǎng)絡(luò)如圖2所示,由若干層卷積層、池化層和全連接層組成.卷積神經(jīng)網(wǎng)絡(luò)和全連接神經(jīng)網(wǎng)絡(luò)相比,具有局部感知野、權(quán)值共享和下采樣這三個結(jié)構(gòu)特性,使得卷積神經(jīng)網(wǎng)絡(luò)提取到的特征對輸入數(shù)據(jù)的平移、旋轉(zhuǎn)、縮放都具有較高的魯棒性.對于圖像識別來說,卷積神經(jīng)網(wǎng)絡(luò)會盡可能保留重要的參數(shù),來達到更好的識別結(jié)果.
圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Convolutional neural network structure
如果用卷積神經(jīng)網(wǎng)絡(luò)來提取一張中文手寫體圖片的特征,則會得到一組丟失圖片中漢字相對位置信息的向量;如果去除全連接層,則會得到具有漢字圖片相對位置的向量.所以為了保留圖片的相對位置,本文采用去除全連接層的卷積神經(jīng)網(wǎng)絡(luò),類似VGGNet[16]的結(jié)構(gòu).VGGNet是由牛津大學(xué)計算機視覺組(Visual Geometry Group)和DeepMind公司一起研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò),通過反復(fù)堆疊3×3的小型卷積核和2×2最大池化層,成功構(gòu)建了11到19層的卷積神經(jīng)網(wǎng)絡(luò),并取得ILSVRC 2014比賽分類項目的第二名和定位第一名.
在圖片描述中,編碼一般會采用LSTM、RNN、CNN.LSTM被廣泛應(yīng)用于語音識別、自然語言理解、文本預(yù)測等具有序列信息的數(shù)據(jù).帶有語義信息的離線中文手寫體圖片也是具有序列信息的數(shù)據(jù),在識別的過程中同樣可以使用LSTM.長短期記憶神經(jīng)網(wǎng)絡(luò)是改進的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[17],通過增加單元狀態(tài)和開關(guān)來解決RNN無法處理長距離依賴的問題.
開關(guān)在實現(xiàn)的時候用了門(gate)的概念.門實際上就是一層全連接層,它的輸入是一個向量,輸出是一個0到1的實數(shù)向量.LSTM單個神經(jīng)元如圖3所示.
圖3 LSTM單個神經(jīng)元Fig.3 Single neuron of LSTM
LSTM總共采用三個門,分別是遺忘門、輸入門、輸出門,LSTM利用遺忘門和輸入門來控制單元狀態(tài)c的內(nèi)容.遺忘門決定了上一時刻的單元狀態(tài)ct-1有多少保留到當前時刻的單元狀態(tài)ct;輸入門決定了t時刻的網(wǎng)絡(luò)輸入xt有多少保存到單元狀態(tài)ct;輸出門是用來控制單元狀態(tài)ct有多少輸出到LSTM的當前輸出值ht.遺忘門、輸入門、輸出門分別為:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
it=σ(Wi·[ht-1,xt]+bi)
(2)
ot=σ(Wo·[ht-1,xt]+bo)
(3)
其中ft是遺忘門,Wf是遺忘門的權(quán)重矩陣,bf是遺忘門的偏置矩陣,σ是sigmoid激活函數(shù);ht-1表示t-1時刻LSTM的輸出,xt表示當前時刻的輸入;[ht-1,xt]表示把兩個向量橫向連接.it和ot分別是輸入門和輸出門,其中Wi是輸入門的權(quán)重矩陣,bi是輸入門的偏置矩陣;Wo是輸出門的權(quán)重矩陣,bo是輸出門的偏置矩陣,其余的參數(shù)和遺忘門相同.
為了計算當前時刻的單元狀態(tài),需要計算當前輸入的單元狀態(tài)c′t,c′t是根據(jù)前一時刻的輸出和當前時刻的輸入進行計算的:
c′t=tanh(Wc·[ht-1,xt]+bc)
(4)
接下來計算當前時刻的單元狀態(tài)ct,ct是由遺忘門ft按元素乘以t-1時刻的狀態(tài)ct-1,再加上當前輸入門it按元素乘以當前輸入的單元狀態(tài)c′t得到的:
ct=ft°ct-1+it°c′t
(5)
°表示按元素相乘,由于遺忘門和輸入門的控制,它既可以保存很久之前的信息,也可以剔除當前時刻無用的信息.最后計算LSTM的最終輸出ht,它是由輸出門和單元狀態(tài)共同控制:
ht=ot°tanh(ct)
(6)
由此看出LSTM對前后有聯(lián)系的序列信息有較好的學(xué)習(xí)能力.BLSTM是LSTM的改進,LSTM表示當前時刻的輸出只和前面的序列相關(guān),如圖4(a)所示;而BLSTM表示當前時刻的輸出不僅與前面的序列相關(guān),還和后面的序列相關(guān),如圖4(b)所示.
針對中文手寫體文本行識別,假如有一張圖片的標簽為“我的筆記本壞了,我想買一個新的筆記本”.如果使用LSTM,從前向后學(xué)習(xí),如果“買”這個字的圖片信息不明確,根據(jù) “壞”這個字,可能學(xué)到是“修”,“扔”,“買”等.但如果使用BLSTM,可以從后向前學(xué)習(xí),根據(jù)“新”這個字,此時學(xué)到
圖4 LSTM和BLSTM結(jié)構(gòu)Fig.4 Structure of LSTM and BLSTM
“買”的概率會變大.所以針對具有語義信息的文本行,BLSTM具有更強的學(xué)習(xí)能力,本文也采用BLSTM進行編碼.
解碼的目的是將圖像特征轉(zhuǎn)換為識別結(jié)果.Vinyals O等人[1,0]直接用LSTM進行解碼,它是將編碼后的向量直接輸入到LSTM中.即無論我們當前學(xué)習(xí)的是什么,它的輸入都是整張圖片的信息,也就是說ht必須包含原始句子中的所有信息.但是當句子比較長時,ht沒辦法存放這么多信息,此時便會造成精度下降.為了解決這個問題,Xu K等人[11]提出了一種Attention機制,分為Hard-Attention和Soft-Attention,本文采用的是Soft-Attention.在使用Attention機制之后,每一時刻的輸入不再是整張圖片的信息,而是讓decoder在輸入序列中自由的選取特征.
圖5 中文文本行圖片的識別過程Fig.5 Process of Chinese text line image recognition
基于Attention機制的中文手寫體圖片的識別過程如圖5所示.標簽為“天陰雨濕聲啾啾”,當分別要識別“天”、“陰”、“雨”、“濕”,“聲”、“啾”、“啾”、“.”這8個字符時,他們的注意力可視化分別如圖5(a)、(b)、(c)、(d)、(e)、(f)、(g)、(h).如圖5(a)可以看出在識別“天”時,“天”所在圖片的位置的Attention值會比較大.而Attention的計算過程如下:
et=a(ht,{Vh,w})
(7)
αt=softmax(et)
(8)
zt=β({Vh,w},αt)
(9)
其中a操作用的是Luong M T等人[18]的方法,Vh,w表示特征圖中h行w列組成的向量,ht表示LSTM在t時刻的輸出.softmax表示softmax函數(shù),αt就是Attention,它表示特征圖中元素對應(yīng)的權(quán)值.β同樣采用Luong M T等人的方法,zt是decoder的輸入,decoder過程如下:
ot=tanh(W,c[ht,zt])
(10)
ht=LSTM(ht-1,[yt-1,ot-1])
(11)
p(yt+1|y1,…,yt,V)=softmax(Woutot)
(12)
其中p(yt+1|y1,…,yt,V)表示生成yt+1的所有候選字符的概率,tanh表示tanh激活函數(shù),W,c表示權(quán)重參數(shù),向量zt和ht橫向連接來預(yù)測yt+1的概率.
本文在t時刻的解碼,需要t-1時刻解碼的輸出和編碼后的特征圖作為輸入.首先根據(jù)公式(7)和公式(8)計算特征圖中列向量對應(yīng)的權(quán)重,再根據(jù)公式(9)計算出加權(quán)和,將加權(quán)和的結(jié)果作為t時刻LSTM的輸入,最終求出t時刻生成的字符類別.
由于本文采用的方法是針對有語義信息的文本行,所以選取CASIA-HWDB2.0-2.2[5]數(shù)據(jù)集,該數(shù)據(jù)集下共有5019頁圖像,分割為52230行和139414個漢字,共有2703類.52230行又分為訓(xùn)練集和測試集,其中41780行作為訓(xùn)練集,10450行作為測試集.并且所有圖像均為灰度圖像.
BLSTM分為兩類,第一類不支持變長輸入,第二類支持變長輸入.顯然,由于我們的手寫體文本行的長度都是不固定的,所以本文采用的是支持變長輸入的BLSTM.這里的變長不是指任意長度,而是多個固定長寬.根據(jù)CASIA-HWDB2.0-2.2數(shù)據(jù)集中文本行圖片的大小,采取的固定長寬分別為:[240,130]、[400,180]、[560,180]、[640,180]、[800,180]、[950,200]、[1030,200]、[1210,180]、[1290,200]、[1370,200]、[1450,200]、[1530,200]、[1610,180]、[1700,130]、[1700,170]、[1700,220]、[1800,130]、[1800,170]、[1800,220]、[1800,300]、[1900,130]、[1900,170]、[1900,220]、[1900,300]、[2000,150]、[2000,220]、[2000,300]、[2100,150]、[2100,220]、[2100,300]、[2200,260]、[2300,260]、[2600,500].根據(jù)圖片的大小,從前往后判斷當前圖片的長寬所處的邊界范圍.如果圖片長和寬恰巧等于邊界值,則不需改變圖片;否則需要根據(jù)邊界的大小,將圖片的右側(cè)和下方加白邊;將圖片大小超過[2600,500]邊界的圖片直接歸一化為[2600,500].這樣就把所有的圖片按照大小分成33類.并且為了高效的進行訓(xùn)練,把所有分類過后的圖片進行歸一化,長和寬分別設(shè)置為當前圖片的二分之一.
由于本文采取的是端到端的識別,輸入文本行圖片,直接輸出整行的識別結(jié)果.對于一行的識別結(jié)果,如果直接將它和標簽從前往后進行比對,這種方法計算出的正確字符數(shù)是不準確的.所以采取了字符串編輯距離(Levenshtein Distance)來計算識別結(jié)果和標簽的相似程度.對于兩個字符串,定義一套操作方法來把兩個不相同的字符串變得相同.如果兩個字符串相同,那么它們的編輯距離為0;具體的計算方式如下:
1)替換一個字符,編輯距離加1;
2)插入一個字符,編輯距離加1;
3)刪除一個字符,編輯距離加1.
最后當識別結(jié)果和標簽兩個字符串相同時,此時的編輯距離就是識別結(jié)果中出錯的字符的數(shù)目,字符的準確率和正確率分別定義為:
(13)
(14)
AR表示字符的準確率,CR表示字符的正確率.N是總的字符的數(shù)目,Sub是替換字符的數(shù)目,Ins是插入字符的數(shù)目,Del是刪除字符的數(shù)目.
本文采用去除全連接層的卷積神經(jīng)網(wǎng)絡(luò),并且在一些卷積層后面增加批標準化(Batch Normalization,BN)[19].如表1所示,maps表示特征圖的數(shù)量,Window表示池化層窗口大小,k、s、p分別代表卷積核,步長和填充.由表1可知,卷積層的卷積核的大小都是3,卷積核移動的步長均為1,填充也為1,激活函數(shù)使用的均為ReLU,池化層全部為MaxPooling.
表1 卷積神經(jīng)網(wǎng)絡(luò)配置
Table 1 Configuration of convolution neural network
TypeConfigurations2*Convolution-ReLU#maps:64,k:3×3,s:1,p:1MaxPoolingWindow:2×2,s:22*Convolution-ReLU#maps:128,k:3×3,s:1,p:1MaxPoolingWindow:2×2,s:2Convolution-Batch Normali-zation-ReLU#maps:256,k:3×3,s:1,p:1Convolution-ReLU#maps:256,k:3×3,s:1,p:1MaxPoolingWindow:2×1,s:2×12*Convolution-Batch Nor-malization-ReLU#maps:512,k:3×3,s:1,p:1MaxPoolingWindow:1×2,s:1×2Convolution-Batch Normali-zation-ReLU#maps:512,k:3×3,s:1,p:1
編碼使用的是BLSTM,隱藏層為256.解碼用的是LSTM,隱藏層為512.初始學(xué)習(xí)率為0.1,總共訓(xùn)練了15個迭代,選取了最好的實驗結(jié)果.
表2 實驗結(jié)果
Table 2 Experiment results
MethodARCRAttention with blank95.76%96.73%Attention no blank94.29%95.30%Negative-awareness CNN[5]92.04%93.24%Conventional [2]77.34%79.43%
本文使用的網(wǎng)絡(luò)框架在編碼和解碼都用到了LSTM,它對文本行前后序列的學(xué)習(xí)能力非常強,所以在給文本行打標簽的時候,增加了空格標簽.比如原始標簽為“大家好”,加空格后的標簽變?yōu)椤按?家#好”,空格標簽用#表示,這樣能在一定程度上抑制前后的聯(lián)系.如表2所示,加空格標簽的字符準確率達到95.76%,比不加空格標簽的準確率提升了1.47%.本文采用的加空格標簽的Attention機制比Song Wang等人的方法AR提升了3.72%,CR的準確率提升了3.49%.
為了驗證基于Attention機制的encoder-decoder的有效性.本文還采用傳統(tǒng)的encoder-decoder來進行中文手寫體識別,具體的網(wǎng)絡(luò)結(jié)構(gòu)是使用CNN進行編碼,再使用LSTM進行解碼.為了保持一致性,兩種方法的CNN均采用表1中的結(jié)構(gòu),LSTM解碼參數(shù)設(shè)置和訓(xùn)練時的參數(shù)設(shè)置均和基于Attention的encoder-decoder參數(shù)相同.實驗結(jié)果如表3所示.
表3 Attention機制對比實驗
Table 3 Comparison experiment of attention
MethodARAttention with blank95.76%no Attention with blank82.93%
表4 不同卷積層的對比實驗
Table 4 Comparison experiment of different
convolutional layers
CNN層數(shù)AR6層65.20%9層95.76%10層73.94%
表4列出了在添加空白標簽的前提下,不同數(shù)量的卷積層對識別結(jié)果的影響.當CNN為6層、9層和10層時,對應(yīng)的字符準確率分別為65.20%、95.76%、73.94%.對比表明,9層的卷積層的識別結(jié)果最好,6層的卷積層可能存在欠擬合的情況,而10層的卷積層可能又存在過擬合的情況.
本文將圖像描述中Attention方法應(yīng)用到離線中文手寫體文本行的識別中.整個網(wǎng)絡(luò)是基于encoder-decoder框架,采用9層卷積層提取特征,BLSTM進行編碼,將編碼結(jié)果結(jié)合Attention輸入到LSTM進行解碼.由于整個網(wǎng)絡(luò)結(jié)構(gòu)使用兩次LSTM,所以針對具有語義信息的數(shù)據(jù)會取到較好的實驗結(jié)果.本文還在原始標簽的基礎(chǔ)上增加了空格標簽,準確率得到進一步的提升.為了進一步提高實用性,接下來的研究工作,會將CASIA-HWDB1.0-1.2中孤立手寫字符,轉(zhuǎn)換為帶有語義信息的中文手寫體圖片,然后再修改成合適的網(wǎng)絡(luò)結(jié)構(gòu)重新進行訓(xùn)練.