張顯杰,張之明
(1.武警工程大學(xué)信息工程學(xué)院,西安 710086;2.武警工程大學(xué)研究生大隊(duì),西安 710086)
離線手寫體文本識(shí)別(Offline Handwritten Text Recognition,OHTR)一直是計(jì)算機(jī)視覺和模式識(shí)別的主要研究?jī)?nèi)容之一[1]。不同于聯(lián)機(jī)手寫體文本識(shí)別可以記錄書寫人的軌跡,OHTR 由于不同的人書寫的風(fēng)格不同以及文本的結(jié)構(gòu)越來(lái)越復(fù)雜等原因,仍然是一個(gè)具有挑戰(zhàn)性的難題[2]。早期的OHTR 主要是基于分割的手寫體文本識(shí)別[3-4],該類方法將圖像分割成像素級(jí)的小部分,再使用分類的方法給每一個(gè)部分歸類,由于分割的不確定性,此類方法識(shí)別的精度較低;另一種主流的方法是基于隱馬爾可夫模型(Hidden Markov Model,HMM)的無(wú)分割的手寫體文本識(shí)別[5-6],該類方法將圖像作為整體輸入到模型中,能避免出現(xiàn)圖像分割產(chǎn)生的問題。
隨著深度學(xué)習(xí)技術(shù)的飛速發(fā)展,基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的無(wú)分割手寫體識(shí)別模型[7-10]不斷被提出。Vaswani 等[11]提出了基于全局自注意力的Transformer,該模型放棄了循環(huán)連接的長(zhǎng)短時(shí)記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò),已經(jīng)廣泛應(yīng)用于自然語(yǔ)言處理和計(jì)算機(jī)視覺領(lǐng)域[12-14]。
受此啟發(fā),本文提出了基于CNN 和Transformer 的手寫體英文文本識(shí)別模型。主要工作有以下幾點(diǎn):
1)將CNN 和Transformer 編碼器結(jié)合,提出了無(wú)分割的手寫體英文文本識(shí)別模型;
2)使用鏈接時(shí)序分類(Connectionist Temporal Classification,CTC)貪心搜索算法解碼,解決輸入序列和標(biāo)簽的對(duì)齊問題。
CNN 已經(jīng)成為深度學(xué)習(xí)時(shí)代的主干架構(gòu),廣泛應(yīng)用于圖像分類[15]、目標(biāo)檢測(cè)[16-17]、實(shí)例分割[18-19]。然而,大多數(shù)CNN擅長(zhǎng)利用卷積操作捕捉局部信息[20-25],但不擅長(zhǎng)捕捉全局信息,比如對(duì)于手寫體文本識(shí)別比較重要的長(zhǎng)序列依賴關(guān)系。為了使CNN 能夠捕捉到全局信息,一種方法是通過卷積層的堆疊,使網(wǎng)絡(luò)模型變得更深[21-23],而這往往導(dǎo)致模型的參數(shù)量急劇增加;另一種方法是增大卷積核的尺寸,擴(kuò)大卷積操作的感受野,這需要更多具有破壞性的池化操作[26-27]。雖然使用以上兩種方法確實(shí)提高了CNN 的性能,但直接使用全局依賴關(guān)系的機(jī)制可能更適用于手寫體文本識(shí)別任務(wù)。
基于全局自注意力機(jī)制的Transformer 在許多序列模式識(shí)別任務(wù)中取得了不錯(cuò)的效果,比如機(jī)器翻譯[28]、語(yǔ)音識(shí)別[29]。Kang 等[30]首次將Transformer 的自注意力機(jī)制應(yīng)用于手寫體文本識(shí)別,提出了沒有循環(huán)網(wǎng)絡(luò)的識(shí)別模型,解決了循環(huán)網(wǎng)絡(luò)不能并行的問題,并且在字符級(jí)別上預(yù)測(cè)手寫體文本。Mostafa 等[31]構(gòu)建了自己的數(shù)據(jù)集,應(yīng)用Transformer 編碼器和解碼器,結(jié)合頁(yè)面分割和文本分割技術(shù)用于手寫體阿拉伯文識(shí)別。Ly 等[32]將Transformer 編碼器與雙向長(zhǎng)短時(shí)記憶(Bidirectional LSTM,BLSTM)網(wǎng)絡(luò)結(jié)合,提出了注意力增強(qiáng)的卷積循環(huán)網(wǎng)絡(luò),在手寫體日語(yǔ)文本識(shí)別中表現(xiàn)優(yōu)異。雖然Transformer 在計(jì)算機(jī)視覺領(lǐng)域發(fā)展迅速,但在手寫體文本識(shí)別中還有很大的發(fā)展空間。
目前,CTC 解碼方法是無(wú)分割手寫體文本識(shí)別任務(wù)常用的一種解碼方法,Graves 等[33-34]最早將CTC 和BLSTM 結(jié)合用于端到端手寫體文本識(shí)別。之后,Chen 等[35]提出將門控卷積網(wǎng)絡(luò)和可分離的多維長(zhǎng)短時(shí)記憶(Multi-Dimensional LSTM,MDLSTM)網(wǎng)絡(luò)結(jié)合,同時(shí)訓(xùn)練筆跡識(shí)別和文本識(shí)別,使用CTC 處理文本識(shí)別輸入和標(biāo)簽序列對(duì)齊問題。Zhan等[36]提出將帶有殘差連接[23]的CNN 和BLSTM 結(jié)合,用CTC計(jì)算損失和解碼?;贑TC 模型,Krishnan 等[37]提出了一種端到端的嵌入方案,聯(lián)合學(xué)習(xí)文本和圖像的嵌入。
在手寫體英文文本識(shí)別任務(wù)中使用CTC 解碼器能夠取得一定的效果,但CTC 解碼器假設(shè)不同時(shí)刻的網(wǎng)絡(luò)輸出是條件獨(dú)立的[33],存在忽略全局信息的不足,而Transformer 基于全局自注意力機(jī)制能夠有效地捕捉到全局信息。因此,本文利用Transformer 捕捉全局信息的優(yōu)點(diǎn)彌補(bǔ)CNN 難以捕捉全局信息和CTC 忽略全局信息的不足,探索Transformer 在手寫體英文文本識(shí)別中的應(yīng)用前景。
本文提出的基于CNN 和Transformer 的手寫體英文文本識(shí)別模型CTN(CNN-Transformer Network)如圖1 所示,主要包含三個(gè)部分:CNN 特征提取層、Transformer 編碼器、CTC 解碼器。輸入灰度圖像I∈RH*W*1,經(jīng)過CNN 提取到特征圖,而后將特征圖F輸入Transformer 編碼器得到特征序列每一幀的預(yù)測(cè)Y=[y1,y2,…yT],yT∈RL,其中:T是序列長(zhǎng)度,L是標(biāo)簽字符種類的個(gè)數(shù)(含空白字符)。最后經(jīng)過CTC 解碼器獲取最終的預(yù)測(cè)結(jié)果。
圖1 CTN總體架構(gòu)Fig.1 Overall architecture of CTN
由于Transformer 缺少CNN 固有的一些歸納偏置[12],即對(duì)模型作出的一系列人為限制,同時(shí)對(duì)訓(xùn)練數(shù)據(jù)集需求較高,因此本文使用CNN 作以彌補(bǔ),使模型能夠在一般的數(shù)據(jù)集上具有泛化性。
本文使用帶有壓縮激勵(lì)(Squeeze-and-Excitation,SE)塊的SE-ResNet-50[27]作為特征提取層,SE 塊結(jié)構(gòu)如圖2,特征圖X經(jīng)過壓縮函數(shù)Fsq(·)得到關(guān)于通道的統(tǒng)計(jì)信息Z,隨后經(jīng)過激勵(lì)函數(shù)Fex(·,We)獲取通道的相關(guān)性S,最后經(jīng)過縮放函數(shù)Fscale(·,·)得到新的特征圖。計(jì)算公式如下:
圖2 SE塊Fig.2 SE block
SE 塊讓特征圖通過一些網(wǎng)絡(luò)層得出每個(gè)通道的“權(quán)重”,再和原特征圖進(jìn)行運(yùn)算,對(duì)通道增加了注意力機(jī)制。
Transformer 編碼器由一個(gè)多頭注意力(Multi-Head Attention,MHA)和一個(gè)多層感知器(Mult-iLayer Perceptron,MLP)兩個(gè)子層組成[11],每個(gè)子層前使用層標(biāo)準(zhǔn)化(Layer Normalization,LN)[38],每個(gè)子層后使用殘差連接[23],如圖3(a)所示。
為了減少運(yùn)算量,文獻(xiàn)[14]提出了線性的空間縮減注意力(Liner Spatial Reduction Attention,LSRA),如圖3(b)。和MHA 類似,LSRA 也是接收查詢Q、鍵K、值V作為輸入,計(jì)算公式如下:
圖3 Transformer編碼器和LSRAFig.3 Transformer encoder and LSRA
其中:Ni表示的是第i個(gè)階段注意力頭的數(shù)量;表示第j個(gè)頭與輸入對(duì)應(yīng)的權(quán)重矩陣;WO表示線性層的權(quán)重矩陣;Avg(·)表示的是平均池化,目的是減少參數(shù)運(yùn)算量。和文獻(xiàn)[11]一樣,Attention(·)注意力計(jì)算如下:
多頭注意力經(jīng)過Ni次計(jì)算,將所有頭的結(jié)果拼接到一起,再經(jīng)過一個(gè)線性層獲得LSRA 的輸出結(jié)果。
對(duì)于輸入特征Fin,帶有LSRA 的Transformer 編碼器計(jì)算過程如下:
由于Wang 等[13]提出的金字塔視覺Transformer(Pyramid Vision Transformer,PVT)大幅減少了模型的計(jì)算量和內(nèi)存消耗,并且能很好適用于下游任務(wù),本文在Wang 等[14]提出的PVTv2 上作以改良,用于建立圖像內(nèi)部的上下文關(guān)系,整體結(jié)構(gòu)如圖4 所示。
圖4 改良的PVTv2整體架構(gòu)Fig.4 Overall architecture of improved PVTv2
PVTv2 共有4 個(gè)相似的階段,每個(gè)階段都包含一個(gè)塊嵌入層(Patch Embedding)和多個(gè)Transformer 編碼器,CNN 獲取的特征圖經(jīng)過嵌入層后輸入到Transformer 編碼器中。PVTv2 在第i個(gè)階段開始都會(huì)把特征圖平均分成份,分辨率降為原來(lái)的,每個(gè)階段輸出的結(jié)果都會(huì)重塑(Reshape)成特征圖,再輸入到下一個(gè)階段,從而降低圖像的分辨率。為了產(chǎn)生寬度較大的特征圖,本文對(duì)特征圖的劃分與PVTv2不同,經(jīng)過Transformer 后,特征圖的高H依次降為,寬W依次降為
Transformer 編碼器輸出的特征序列每一幀的預(yù)測(cè),輸入到CTC 解碼器中得到最后的預(yù)測(cè)結(jié)果。實(shí)驗(yàn)結(jié)果表明,使用CTC 束搜索算法解碼和使用貪心搜索算法解碼精度相差不到0.1%,但束搜索算法(束大小設(shè)置為10)解碼時(shí)間是貪心搜索算法的3 倍左右,因此,在實(shí)驗(yàn)時(shí),本文使用CTC 的貪心搜索算法解碼。
實(shí)驗(yàn)所用數(shù)據(jù)集是公開的IAM(Institut für Angewandte Mathematik)手寫英文單詞數(shù)據(jù)集[39],包含由675 個(gè)作者手寫的115 320 個(gè)單詞以及對(duì)應(yīng)的標(biāo)簽,由字母、數(shù)字以及特殊符號(hào)組成。由于原始數(shù)據(jù)部分單詞分割錯(cuò)誤,本文在實(shí)驗(yàn)前對(duì)原始數(shù)據(jù)進(jìn)行了篩選,去掉了錯(cuò)誤分割的圖像、純標(biāo)點(diǎn)符號(hào)的圖像以及兩張損壞的圖像和一張標(biāo)簽錯(cuò)誤的圖像,得到實(shí)驗(yàn)圖像數(shù)據(jù)共84 976 張,按照8∶1∶1 劃分為67 919 張訓(xùn)練集圖像、8 461 張驗(yàn)證集圖像和8 596 張測(cè)試集圖像。圖5 是實(shí)驗(yàn)中使用的數(shù)據(jù)集和標(biāo)簽示例。
圖5 實(shí)驗(yàn)數(shù)據(jù)集和標(biāo)簽示例Fig.5 Examples of experimental dataset and labels
為了量化實(shí)驗(yàn)的結(jié)果,使用標(biāo)準(zhǔn)的字符錯(cuò)誤率(Character Error Rate,CER)和單詞錯(cuò)誤率(Word Error Rate,WER)評(píng)估模型。預(yù)測(cè)的單詞轉(zhuǎn)換為標(biāo)簽,需要替換的字符個(gè)數(shù)記為SC,需要插入的字符個(gè)數(shù)記為IC,需要?jiǎng)h除的字符個(gè)數(shù)記為DC:
其中:LC表示單詞標(biāo)簽中字符的總個(gè)數(shù)。最后求取所有單詞CER 的算術(shù)平均數(shù)。同理,
其中:SW表示預(yù)測(cè)的字符串轉(zhuǎn)換為標(biāo)簽需要替換的單詞個(gè)數(shù);IW表示需要插入的單詞個(gè)數(shù);DW表示需要?jiǎng)h除的單詞個(gè)數(shù);LW表示字符串標(biāo)簽中單詞的總個(gè)數(shù)。最后求取所有字符串WER 的算術(shù)平均數(shù)。
3.3.1 實(shí)驗(yàn)設(shè)置
在CNN 特征提取層,選擇3.4.1 節(jié)消融研究的最優(yōu)結(jié)果作為基準(zhǔn),Transformer 編碼器的參數(shù)在遵循文獻(xiàn)[14]的B2-Li 的基礎(chǔ)上,對(duì)特征圖的劃分份數(shù)作以修改,CTC 解碼器采用貪心搜索算法。輸入圖像為灰度圖,尺寸統(tǒng)一縮放到128 × 384,預(yù)測(cè)序列長(zhǎng)度為24,標(biāo)簽字符種類個(gè)數(shù)(含空白符)為72,使用CTC 損失函數(shù),優(yōu)化器使用均方根傳遞(Root Mean Square prop,RMSprop),共訓(xùn)練100 個(gè)循環(huán)次數(shù)。實(shí)驗(yàn)操作系統(tǒng)為ubuntu18.04,GPU 型號(hào)為GTX1080Ti,CUDA(Compute Unified Device Architecture)版本為10.2,采用Pytorch 1.5.0 學(xué)習(xí)框架。
3.3.2 數(shù)據(jù)增強(qiáng)
由于數(shù)據(jù)量有限,為了防止過擬合,本文對(duì)輸入圖像做了增強(qiáng)。在訓(xùn)練階段,為了增加訓(xùn)練樣本的多樣性,既采用了隨機(jī)幾何數(shù)據(jù)增強(qiáng),如旋轉(zhuǎn)、平移、縮放、錯(cuò)切等,又采用了文獻(xiàn)[40]提出的數(shù)據(jù)增強(qiáng)方法。前者將圖像視為一個(gè)整體,而后者對(duì)圖像中每個(gè)字符作以變化,更加適用于手寫體英文文本的識(shí)別。在測(cè)試階段,為了防止數(shù)據(jù)增強(qiáng)對(duì)識(shí)別產(chǎn)生影響,只將圖像縮放到128 × 384,不做其他任何處理。
為了選擇最優(yōu)的訓(xùn)練模型,本文做了大量的消融實(shí)驗(yàn),主要包括CNN 深度對(duì)實(shí)驗(yàn)精度的影響和學(xué)習(xí)率對(duì)實(shí)驗(yàn)精度的影響。
3.4.1 CNN深度對(duì)實(shí)驗(yàn)精度的影響
實(shí)驗(yàn)中選擇了SE-ResNet-50 作為CNN 特征提取層,其模型含有5 個(gè)層級(jí)。為了選擇合適的截取層級(jí)作為CNN 特征提取層,對(duì)不同截取層級(jí)獲得的精度和速度進(jìn)行了比較。所有的實(shí)驗(yàn)都在同一個(gè)數(shù)據(jù)集和實(shí)驗(yàn)環(huán)境下進(jìn)行,學(xué)習(xí)率設(shè)為0.000 5,選取在驗(yàn)證集上WER 最低的模型進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果如表1 所示。
表1 SE-ResNet-50不同截取層級(jí)的性能Tab.1 Performance of different interception layers of SE-ResNet-50
從實(shí)驗(yàn)結(jié)果可發(fā)現(xiàn):隨著層級(jí)的不斷加深,模型的參數(shù)量由94.1×106增加到197.0×106,單張圖像測(cè)試時(shí)間由1.98 ms 增加到37.92 ms,但模型的字符錯(cuò)誤率和單詞錯(cuò)誤率在conv2_x 達(dá)到最低,分別為4.30%和14.52%,同時(shí)參數(shù)量相對(duì)較低。由此可見,CNN 的歸納偏置能夠增加Transformer 的識(shí)別精度。因此,本文選擇截取層級(jí)conv2_x作為CNN 特征提取層。
3.4.2 學(xué)習(xí)率對(duì)實(shí)驗(yàn)精度的影響
為了選擇最優(yōu)的訓(xùn)練模型,在3.4.1 節(jié)模型的基礎(chǔ)上設(shè)置不同的學(xué)習(xí)率進(jìn)行實(shí)驗(yàn),同樣選取在驗(yàn)證集上WER 最低的模型進(jìn)行測(cè)試,結(jié)果如圖6 所示。
圖6 不同學(xué)習(xí)率的測(cè)試精度Fig.6 Test accuracies of different learning rates
從圖6 可以看出,學(xué)習(xí)率不同,測(cè)試精度不同,隨著學(xué)習(xí)率的不斷增加,CER 和WER 也不斷變化,總體呈現(xiàn)先下降后上升的趨勢(shì),學(xué)習(xí)率為0.000 7 時(shí)CER 和WER 達(dá)到最高,分別為11.98%和29.78%,學(xué)習(xí)率為0.000 2 時(shí)CER 和WER 達(dá)到最低,分別為3.60%和12.70%,因此,本文選擇0.000 2 作為模型的最終學(xué)習(xí)率,所得測(cè)試精度作為模型的最終測(cè)試精度。
3.5.1 與其他模型的比較
表2 是不同模型在IAM 手寫英文單詞數(shù)據(jù)集上評(píng)估的結(jié)果。表2 中分別提供了作者采用的主要模型所獲得的識(shí)別精度,部分模型同時(shí)提供了在不同條件下所得的評(píng)估結(jié)果,可以看出,在有詞典或語(yǔ)言模型的情況下,識(shí)別精度都比較高。本文所提出的模型不依賴于詞典或語(yǔ)言模型的約束,既能呈現(xiàn)出模型的真實(shí)識(shí)別能力,也能應(yīng)對(duì)一些不能提供詞典的情況,比如姓名識(shí)別,實(shí)用性較強(qiáng)。表2 中CTC+Attention[2]、RNN+CTC[37]、RNN+CTC[41]、Attention[42]沒有使用預(yù)處理方法,CER 和WER 基本都高于本文的CER 和WER;RNN+Attention[8]、RNN+CTC[9]、Attention[43]和本文模型一樣使用了預(yù)處理,其中RNN+Attention[8]在未使用其他方法的情況下,CER 和WER 分別比本文高了5.20 個(gè)百分點(diǎn)和11.10個(gè)百分點(diǎn),使用了詞典約束后CER 比本文高了2.60 個(gè)百分點(diǎn),RNN+CTC[9]只使用了預(yù)訓(xùn)練方法后CER 比本文高了1.28 個(gè)百分點(diǎn),WER 比本文低了0.09 個(gè)百分點(diǎn),Attention[43]只使用了預(yù)訓(xùn)練方法后CER 和WER 分別比本文高了2.19個(gè)百分點(diǎn)和2.45 個(gè)百分點(diǎn),通過比較驗(yàn)證了本文模型的可行性。
表2 IAM手寫英文單詞數(shù)據(jù)集上的評(píng)估結(jié)果比較Tab.2 Comparison of evaluation results on IAM handwritten English word dataset
3.5.2 錯(cuò)誤結(jié)果分析
為了進(jìn)一步了解模型的識(shí)別能力,從預(yù)測(cè)錯(cuò)誤圖像的結(jié)果中隨機(jī)抽取100 條記錄進(jìn)行分析,表3 給出了預(yù)測(cè)錯(cuò)誤的類型占比。從表3 可以看出,單詞預(yù)測(cè)錯(cuò)誤1 個(gè)字母所占比例為68%(單詞內(nèi)部錯(cuò)誤1 個(gè)字母所占比例為41%,開頭或結(jié)尾錯(cuò)誤1 個(gè)字母所占比例為27%),單詞大小寫預(yù)測(cè)錯(cuò)誤所占比例為4%,而整個(gè)單詞錯(cuò)誤所占比例僅為1%,驗(yàn)證了模型能夠識(shí)別出單詞中大部分的字母,識(shí)別能力比較強(qiáng)。
表3 預(yù)測(cè)錯(cuò)誤的類型占比Tab.3 Proportion of types of prediction errors
圖7 展示了模型預(yù)測(cè)的圖像示例。圖7(a)展示的是預(yù)測(cè)正確的圖像示例;圖7(b)、(c)展示的是預(yù)測(cè)錯(cuò)誤1 個(gè)字母的圖像示例;圖7(d)展示的是整個(gè)單詞預(yù)測(cè)錯(cuò)誤的圖像示例。
圖7 預(yù)測(cè)的圖像示例Fig.7 Examples of predicted images
從圖7 可以看出,模型對(duì)于書寫相對(duì)規(guī)范的英文文本識(shí)別精度高,對(duì)于書寫隨意性較大的英文文本識(shí)別精度低。
手寫體英文文本識(shí)別因書寫隨意、結(jié)構(gòu)復(fù)雜和分割困難等問題,一直是計(jì)算機(jī)視覺和模式識(shí)別的難題之一。針對(duì)這些問題,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和Transformer 相結(jié)合的手寫體英文文本識(shí)別模型。該模型利用CNN 提取特征,而后輸入到Transformer 進(jìn)行編碼,最后采用CTC 解碼器解決輸入序列和標(biāo)簽的對(duì)齊問題。通過在公開數(shù)據(jù)集上進(jìn)行大量的實(shí)驗(yàn)分析,驗(yàn)證了本文模型的可行性。接下來(lái)的研究工作:一是將本文模型應(yīng)用于其他手寫體文本識(shí)別任務(wù),比如中文或日文手寫體文本識(shí)別;二是在手寫體行級(jí)文本識(shí)別中提出合適的網(wǎng)絡(luò)結(jié)構(gòu),達(dá)到較高的識(shí)別精度。