国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Attention機制在脫機中文手寫體文本行識別中的應(yīng)用

2019-09-09 03:38王馨悅董蘭芳
小型微型計算機系統(tǒng) 2019年9期
關(guān)鍵詞:字符編碼時刻

王馨悅,董蘭芳

(中國科學(xué)技術(shù)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,合肥 230027) E-mail:wxy66@mail.ustc.edu.cn

1 引 言

隨著計算機技術(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é)果.

2 模 型

本文采用的網(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ù)似然.

2.1 卷積神經(jīng)網(wǎng)絡(luò)

傳統(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比賽分類項目的第二名和定位第一名.

2.2 BLSTM編碼

在圖片描述中,編碼一般會采用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進行編碼.

2.3 解碼

解碼的目的是將圖像特征轉(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時刻生成的字符類別.

3 實 驗

3.1 數(shù)據(jù)集

由于本文采用的方法是針對有語義信息的文本行,所以選取CASIA-HWDB2.0-2.2[5]數(shù)據(jù)集,該數(shù)據(jù)集下共有5019頁圖像,分割為52230行和139414個漢字,共有2703類.52230行又分為訓(xùn)練集和測試集,其中41780行作為訓(xùn)練集,10450行作為測試集.并且所有圖像均為灰度圖像.

3.2 預(yù)處理

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è)置為當前圖片的二分之一.

3.3 評估方法

由于本文采取的是端到端的識別,輸入文本行圖片,直接輸出整行的識別結(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ù)目.

3.4 實驗結(jié)果

本文采用去除全連接層的卷積神經(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層的卷積層可能又存在過擬合的情況.

4 結(jié)束語

本文將圖像描述中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)練.

猜你喜歡
字符編碼時刻
冬“傲”時刻
生活中的編碼
捕獵時刻
《全元詩》未編碼疑難字考辨十五則
論高級用字階段漢字系統(tǒng)選擇字符的幾個原則
子帶編碼在圖像壓縮編碼中的應(yīng)用
字符代表幾
一種USB接口字符液晶控制器設(shè)計
圖片輕松變身ASCⅡ藝術(shù)畫
Genome and healthcare