孫潔,朱玉全,黃承寧
(1.南京工業(yè)大學(xué)浦江學(xué)院 計(jì)算機(jī)與通信工程學(xué)院,江蘇南京,211200;2.江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇鎮(zhèn)江,212013)
自然場(chǎng)景文本是指存在于任意自然場(chǎng)景下的文本內(nèi)容,例如車牌、路標(biāo)、廣告牌、店鋪招牌等。自然場(chǎng)景下的文本識(shí)別不同于光學(xué)字符識(shí)別(Optical Character Recognition,OCR)[1],前者難度較大,例如清晰文本在通過圖像展示后變成傾斜、密集且模糊的文本,文本具有完全不同的字體、顏色和大小等[2],背景復(fù)雜使得背景物體和文本很難區(qū)分等。自然場(chǎng)景下的文本識(shí)別(scene text recognition,STR)[3]通常先利用文本檢測(cè)技術(shù)得到文本位置信息,再使用文本識(shí)別技術(shù)得到根據(jù)位置信息裁剪的圖像中的文本內(nèi)容。自然場(chǎng)景文本識(shí)別算法很多,其中基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)的文本識(shí)別算法主要有兩個(gè)框架,分別是卷積循環(huán)神經(jīng)網(wǎng)絡(luò)(convolutional recurrent neural network,CRNN)[4]+連接時(shí)序分類(connectionist temporal classification, CTC)模型和基于注意力(Attention)機(jī)制的序列到序列(sequence to sequence,Seq2Seq)模型。CRNN+CTC的收斂速度相對(duì)較快,但存在識(shí)別精度低,解碼信息丟失問題,又因?yàn)镃TC模型所需要的特征序列的高度為1,文本在高度上的變化限制了該方法的識(shí)別能力。基于注意力機(jī)制的Seq2Seq模型識(shí)別精度高于CRNN+CTC模型,英文識(shí)別率較高,但存在收斂速度慢,對(duì)于自然場(chǎng)景下的中文文本識(shí)別效果一般等問題。針對(duì)上述問題,提出一種基于二維CTC和注意力機(jī)制序列的文本識(shí)別模型。
以往的大多數(shù)算法主要是通過設(shè)計(jì)CTC或基于注意力的編碼解碼器框架,將文本視為一維信號(hào),并將轉(zhuǎn)換場(chǎng)景文本識(shí)別視為序列預(yù)測(cè)問題。但是與一維數(shù)據(jù)不同,文本一般都分布在圖像空間中,空間位置信息在自然場(chǎng)景下特別是對(duì)于中文識(shí)別來說是非常重要的,因此可利用文本的二維性質(zhì)來實(shí)現(xiàn)更高的識(shí)別精度。二維CTC可以自適應(yīng)地關(guān)注空間信息,同時(shí)排除背景噪聲的影響;它也可以處理各種形式(水平、定向和彎曲)的文本實(shí)例,同時(shí)給出更多的中間預(yù)測(cè)。在CTC中,給定一組概率分布,它尋求產(chǎn)生相同目標(biāo)序列的各種路徑,所有路徑的條件概率之和進(jìn)行標(biāo)記的概率,該概率用于測(cè)量標(biāo)記和預(yù)測(cè)的可能性。對(duì)于二維CTC,為路徑搜索添加了額外的維度:除了時(shí)間步長(zhǎng)(預(yù)測(cè)長(zhǎng)度)以外,還保留了高度的概率分布。它可以確保考慮到所有可能的高度路徑,并且不同的路徑選擇可能仍會(huì)導(dǎo)致相同的目標(biāo)順序。
二維CTC網(wǎng)絡(luò)的輸出可以分解為兩種類型的預(yù)測(cè):概率分布圖和路徑轉(zhuǎn)換圖。首先,將Ω定義為字母表。與CTC類似,二維CTC的概率分布由帶有|Ω|-類標(biāo)簽的Softmax輸出層預(yù)測(cè)。每個(gè)位置上第一個(gè)單元的激活都表示占位符的可能性,這意味著沒有有效的標(biāo)簽。以下單位對(duì)應(yīng)于|Ω|的概率分別為1個(gè)字符類。概率分布圖的形狀為H×W×|Ω|。H和W代表預(yù)測(cè)圖的空間大小,它與原始圖像的大小成比例。
二維CTC還要求在高度尺寸上進(jìn)行歸一化。實(shí)際上,另一個(gè)單獨(dú)的Softmax層會(huì)生成形狀為H×W的額外預(yù)測(cè)路徑過渡圖。概率分布圖和路徑轉(zhuǎn)換圖這兩個(gè)單獨(dú)的預(yù)測(cè)用于損失計(jì)算和序列解碼。二維CTC繼承了CTC的對(duì)齊概念。在二維CTC的解碼過程中,高度位置和字符類別上的最大概率被減少到序列預(yù)測(cè)中。二維CTC的對(duì)齊方式如圖1所示。除了CTC的先前幀對(duì)齊方式之外,二維CTC還選擇高度范圍內(nèi)的路徑。然后,在所選路徑上字符的預(yù)測(cè)概率將被聯(lián)合成幀預(yù)測(cè),從而使解碼過程成為原始的CTC對(duì)齊。
圖1 二維CTC對(duì)齊方式
二維CTC損失的目標(biāo)為所有有效路徑提供條件概率P(Y|X)。此條件概率用于測(cè)量標(biāo)簽和預(yù)測(cè)之間的差異。假設(shè)路徑從左向右擴(kuò)展,這對(duì)于大多數(shù)序列識(shí)別問題是很普遍的。給定具有高度H和寬度W的二維分布,定義路徑轉(zhuǎn)換γ∈RH×(W-1)×H。γh,w,h'表示解碼路徑從(h,w)到(h',w+1)的轉(zhuǎn)移概率,其中h',h∈[1,...,H],w∈[1,...W-1]。每個(gè)位置的路徑轉(zhuǎn)換概率之和等于1,計(jì)算公式為式(1):
二維CTC相對(duì)于一維來說,本質(zhì)上是將高度變換為尺寸,從而減輕了丟失或連接信息的問題,并提供給CTC解碼的更多路徑。
給定相同的擴(kuò)展標(biāo)簽Y',當(dāng)(Y's=ε)或者(Y's=Y's-2)的情況的遞歸公式為式(2):
對(duì)于其他情況,計(jì)算公式為式(3):
從方程中可以看出,每個(gè)時(shí)間步長(zhǎng)的條件概率是沿著高度維度分別計(jì)算的。 高度維度中的路徑通過相應(yīng)的轉(zhuǎn)移概率進(jìn)行加權(quán),并匯總為分布表示形式。
因此,二維CTC的動(dòng)態(tài)編程過程的計(jì)算公式為式(4):
將其中的φ第一個(gè)狀態(tài)定義初始化,計(jì)算公式為式(5):
此時(shí)二維CTC的條件概率總結(jié)的計(jì)算公式為式(6):
最終損失函數(shù)的計(jì)算公式為式(7):
1.2.1 Seq2Seq模型
序列到序列(sequence to sequence,Seq2Seq)模型[5]是在2014年被提出。該模型本質(zhì)上是一種多對(duì)多的循環(huán)神經(jīng)網(wǎng)絡(luò)模型,即輸入序列和輸出序列長(zhǎng)度不一致的循環(huán)神經(jīng)網(wǎng)絡(luò)模型。Seq2Seq模型是利用編碼(Encoder)-解碼(Decoder)的抽象架構(gòu),如圖2所示。
圖2 Seq2Seq模型
基礎(chǔ)的Seq2Seq模型一般是利用兩個(gè)LSTM或者RNN網(wǎng)絡(luò),一個(gè)作為Encoder(編碼)部分,另一個(gè)作為Decoder(解碼)部分,Encode意思是將輸入序列轉(zhuǎn)化成一個(gè)固定長(zhǎng)度的向量,Decode意思是將輸入的固定長(zhǎng)度向量解碼成輸出序列。還存在一個(gè)連接兩者的中間狀態(tài)向量C。Seq2Seq模型是根據(jù)輸入序列X來生成輸出序列Y。在RNN中當(dāng)前時(shí)刻的隱藏狀態(tài)是由上一個(gè)時(shí)刻的狀態(tài)和當(dāng)前時(shí)間的輸入x共同決定的,即如式(8)所示:
編碼過程中Encoder通過學(xué)習(xí)將輸入序列編碼成一個(gè)固定大小的狀態(tài)向量C,這個(gè)向量C則是這個(gè)序列的語義,即在編碼階段一個(gè)字/詞(實(shí)際是字/詞的向量)的輸入,輸入句子結(jié)束后,產(chǎn)生中間語義向量C,如式(9)所示:
其中,hi指的是編碼器編碼后的隱向量,t指的是當(dāng)前時(shí)刻,Tx指的是最后時(shí)刻,f和q是非線性函數(shù)。
繼而將語義向量C傳給Decoder,Decoder再通過對(duì)狀態(tài)向量C的學(xué)習(xí)每一步的解碼和已經(jīng)輸出的序列Y來預(yù)測(cè)下一個(gè)輸出yt,如式(10)所示。
在RNN中化簡(jiǎn)得式(11):
其中St是RNN中的隱藏層,C代表之前提過的語義向量,yt-1表示上個(gè)時(shí)刻的輸出,反過來作為這個(gè)時(shí)刻的輸入。而g則可以是一個(gè)非線性的多層的神經(jīng)網(wǎng)絡(luò),產(chǎn)生詞典中各個(gè)詞語屬于yt的概率。
Seq2Seq模型在輸出序列上,每一個(gè)時(shí)刻傳入的都是固定長(zhǎng)度的語義向量C,當(dāng)輸入的序列變長(zhǎng)時(shí)會(huì)導(dǎo)致語義向量無法完全表示整個(gè)輸入序列的信息,同時(shí)也會(huì)出現(xiàn)先輸入的序列中包含的語義信息會(huì)被后輸入序列中的語義信息覆蓋。輸入的序列越長(zhǎng),在獲取輸入序列的信息就越少,從而導(dǎo)致解碼的準(zhǔn)確率下降。
1.2.2 引入注意力機(jī)制的Seq2Seq的模型
注意力機(jī)制是模仿人類注意力而提出的一種解決上述問題的辦法,簡(jiǎn)單地說就是從大量信息中快速篩選出高價(jià)值信息。主要用于解決LSTM或者RNN模型輸入序列較長(zhǎng)的時(shí)候很難獲得最終合理的向量表示問題,模型在編碼解碼的過程中,不僅僅是關(guān)注生成的語義向量C,同時(shí)增加了一個(gè)注意力區(qū)域,并將其與輸出進(jìn)行關(guān)聯(lián),從而達(dá)到信息篩選的目的。如圖3所示。
圖3 加入注意力機(jī)制的Seq2Seq模型
相比之前的Encoder-Decoder模型,引入注意力機(jī)制模型最大的區(qū)別在于每一個(gè)輸出文本在計(jì)算時(shí),參考的語義編碼向量C(C1,C2,C3)都是不一樣的,也就是它們的注意力焦點(diǎn)是不一樣的。
Bahdanau等人[6]提出基于注意力機(jī)制的Seq2Seq的模型已成功應(yīng)用于大量的序列轉(zhuǎn)導(dǎo)問題(Luong等[7])。這些模型(Xu等人[8];Chorowski等人[9]以及Wang等人[10]等等)以常規(guī)的形式使用編碼器遞歸神經(jīng)網(wǎng)絡(luò)(RNN)處理輸入序列,以產(chǎn)生稱為存儲(chǔ)器的隱藏狀態(tài)序列。然后,解碼器RNN自回歸生成輸出序列。在每個(gè)輸出時(shí)間步,解碼器都直接由注意力機(jī)制的限制,該機(jī)制使解碼器可以利用編碼器的隱藏狀態(tài)序列,通過使用編碼器的隱藏狀態(tài)作為存儲(chǔ)器,該模型能夠消除較長(zhǎng)的輸入-輸出時(shí)滯[11~12],與缺乏注意力機(jī)制的Seq2Seq模型相比,具有明顯的優(yōu)勢(shì)。
在基于注意力序列的文本識(shí)別模型中,主要有兩個(gè)部分組成分別是卷積層和雙向LSTM的編碼模塊及LSTM+注意力的解碼模塊[13~14],如圖4所示。
圖4 Seq2Seq+注意力的文本識(shí)別框架
編碼部分首先利用卷積層提取文本圖像特征。在提取圖像特征之后將特征圖轉(zhuǎn)化為特征序列,假設(shè)之前的特征圖的尺寸大小為h·w·d(h代表高度,w代表寬度,d代表維度),轉(zhuǎn)換為序列特征后,得到寬為w的向量,向量中每一個(gè)序列的大小為h·d。由于卷積神經(jīng)網(wǎng)絡(luò)提取的圖像特征受到感受野的限制,為了擴(kuò)大上下文的特征信息,這里將雙向多層的LSTM網(wǎng)絡(luò)應(yīng)用于序列特征的提取,雙向多層的LSTM網(wǎng)絡(luò)可以同時(shí)兼顧兩個(gè)方向的長(zhǎng)期依賴關(guān)系,最后輸出相同長(zhǎng)度的新特征序列。
解碼部分中采用基于注意力機(jī)制的解碼器。該解碼器將編碼部分中提取的特征序列轉(zhuǎn)換為字符序列,首先對(duì)T個(gè)時(shí)刻的序列特征進(jìn)行迭代,產(chǎn)生長(zhǎng)度為T的符號(hào)序列,表示為[y1,...,yT],在時(shí)刻t,解碼部分根據(jù)編碼部分輸出的ht,內(nèi)部狀態(tài)的St-1以及上一步的預(yù)測(cè)結(jié)果yt來預(yù)測(cè)一個(gè)字符或者一個(gè)停止符號(hào)。具體的,解碼部分首先通過注意力機(jī)制來計(jì)算權(quán)重向量at,公式為式(12)和(13):
其中W和V為可訓(xùn)練的權(quán)重,解碼部分根據(jù)注意力的權(quán)值系數(shù),將輸入的ht的列向量通過線性組合成新的向量,稱為gt,在向量gt中at,i隨著每一個(gè)時(shí)刻t的變化而變化,并且每一個(gè)時(shí)刻都是不一樣的,公式表現(xiàn)為式(14):
向量gt包含了編碼的整個(gè)上下文的一部分,將它輸入到解碼部分的循環(huán)單元時(shí),循環(huán)單元會(huì)輸出一個(gè)向量yt和一個(gè)新的狀態(tài)向量st,公式為式(15):
在自然場(chǎng)景文本識(shí)別中不同于在A4紙上的打印文本,自然場(chǎng)景中的文本大多都是空間排列不規(guī)則的文本,并且噪聲很大。雖然CRNN+CTC的收斂速度相對(duì)較快,而基于注意力機(jī)制的Seq2Seq模型的收斂速度慢,但是精度要比CRNN+CTC模型高,但也存在缺陷,一方面CRNN存在解碼信息缺失的問題,另一方面CTC模型,所需要的特征序列的高度為1,文本在高度上的變化限制了它的識(shí)別能力,而基于注意力機(jī)制的Seq2Seq 模型在一定程度上對(duì)于自然場(chǎng)景下的英文識(shí)別率較高,但是對(duì)于自然場(chǎng)景下的中文識(shí)別效果一般[15~16]。針對(duì)上述問題,提出一種融合二維(2-D)CTC和注意力機(jī)制序列的文本識(shí)別模型。
基于二維CTC和注意力機(jī)制的Seq2Seq的文本識(shí)別框架分為兩個(gè)部分,編碼部分和解碼部分如圖5所示。
圖5 二維CTC和注意力機(jī)制的Seq2Seq文本識(shí)別框架
編碼部分,由卷積神經(jīng)網(wǎng)絡(luò)和多層雙向LSTM組成,負(fù)責(zé)將圖像轉(zhuǎn)換為特征序列。解碼部分由基于連接二維CTC和注意力機(jī)制的Seq2Seq的模型構(gòu)成,基于注意力機(jī)制的Seq2Seq在解碼時(shí),將所有特征集中在中間語義C上,此時(shí)計(jì)算每個(gè)特征的注意力權(quán)重,解碼過程計(jì)算方式為式(16)~(18):
其中hi,j表示第i個(gè)關(guān)系中第j個(gè)h經(jīng)過編碼后的特征向量,aj表示平滑歸一函數(shù)處理后的權(quán)值參數(shù),ej表示注意力的權(quán)值,g表示對(duì)hi,j和hj進(jìn)行線性變換,表示點(diǎn)乘?操作。
最后生成下一個(gè)狀態(tài)st和下一個(gè)標(biāo)yt簽,計(jì)算公式為(19)和(20):
此時(shí)注意力的損失函數(shù)計(jì)算方式如式(21):
該模型的思想是使用一個(gè)二維CTC目標(biāo)函數(shù)作為輔助任務(wù),在多任務(wù)學(xué)習(xí)框架下訓(xùn)練注意力模型編碼器。與注意模型不同,CTC的前向-后向算法可以實(shí)現(xiàn)語音和標(biāo)簽序列的單調(diào)對(duì)齊,并且CTC需要的特征序列的高度為1,不能兼顧空間信息,而二維CTC可以兼顧文本的空間信息。整個(gè)模型的損失函數(shù)如式(22)所示:
本節(jié)對(duì)上述兩種文本識(shí)別方法和本文的文本識(shí)別算法在公開的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對(duì)比,文本識(shí)別和檢測(cè)所采用的數(shù)據(jù)集不同。一般情況下,文本識(shí)別的數(shù)據(jù)集中的文本要比文本檢測(cè)的數(shù)據(jù)集中的更加規(guī)范,更多種類以及背景簡(jiǎn)單。因?yàn)楹芏鄶?shù)據(jù)集不能進(jìn)行端到端的方法,所以采用ICDAR2013數(shù) 據(jù) 集[17]、ICDAR2015數(shù) 據(jù) 集[18]、SVT數(shù) 據(jù)集以及ICPR WTMI2018(以下簡(jiǎn)稱IW2018)中英文混合數(shù)據(jù)集。作為訓(xùn)練集也作為測(cè)試集。ICDAR2013數(shù)據(jù)集中共有462張圖像,包括229張訓(xùn)練圖像,233張測(cè)試圖像,ICDAR2013數(shù)據(jù)集中的圖像都為水平的英文文本。ICDAR2015數(shù)據(jù)集有1500張圖像,1000張訓(xùn)練圖像和500張測(cè)試圖像,ICDAR2015數(shù)據(jù)集中的圖像大多為傾斜的英文文本。典型圖像如圖6(a)所示。ICPR WTMI2018中英文混合數(shù)據(jù)集中有20000張圖片,10000張訓(xùn)練圖片和10000張測(cè)試圖片,其中圖像全部來源于網(wǎng)絡(luò)圖像,主要有合成圖像、產(chǎn)品描述和網(wǎng)絡(luò)廣告構(gòu)成。其中主要為豎直,水平和傾斜的文本,并且字體種類繁多,大小不一,背景復(fù)雜。典型圖像如圖6(b)所示。Street View Text(SVT)數(shù)據(jù)集共有350張數(shù)據(jù)集,其中100張訓(xùn)練集,250張測(cè)試集,圖像中為水平的英文文本。SVT數(shù)據(jù)集是從谷歌街景中獲取,數(shù)據(jù)集中的圖像大多為低質(zhì)量的圖像。
圖6 數(shù)據(jù)集典型圖像
在損失函數(shù)中取一個(gè)參數(shù)λ用來約束二維CTC和注意力的權(quán)重,本文對(duì)λ分別取0 ,0.1,0.3,0.5,0.8和1這6個(gè)值并在ICDAR2015數(shù)據(jù)集下對(duì)識(shí)別率和收斂情況進(jìn)行實(shí)驗(yàn)分析。對(duì)于λ取0和1可以看出為單獨(dú)使用二維CTC或者注意力機(jī)制來進(jìn)行解碼。其他值為0~1之間的任意取值,并對(duì)于不同的取值,有不同的效果。
收斂速度如圖7所示,可以從圖中的關(guān)系看出,隨著迭代次數(shù)的增加,取值越大收斂越快,主要原因是注意力解碼產(chǎn)生的參數(shù)較多導(dǎo)致收斂速度降低,而二維的CTC并不會(huì)產(chǎn)生過多參數(shù),所以當(dāng)二維CTC的比重大越大收斂速度越快。
圖7 λ取不同值的收斂速度情況
識(shí)別率如圖8所示,當(dāng)λ取值為0.3時(shí)識(shí)別率最高,單純的使用二維CTC和注意力機(jī)制的識(shí)別率都不是最高,當(dāng)取值為0.1和0.8時(shí)在單獨(dú)使用二維CTC或者注意力機(jī)制的識(shí)別率之間。實(shí)驗(yàn)表明了連接二維CTC和注意力機(jī)制的有效性。
圖8 λ取不同值的識(shí)別率情況
自然場(chǎng)景文本識(shí)別的評(píng)價(jià)指標(biāo)一般有兩種,一種是字符識(shí)別準(zhǔn)確率,一種是單詞識(shí)別準(zhǔn)確率。字符識(shí)別準(zhǔn)確率表示字符識(shí)別正確的個(gè)數(shù)占總字符的比例。此評(píng)價(jià)指標(biāo)比較直觀。單詞識(shí)別準(zhǔn)確率一般使用編輯距離,編輯距離使用一種衡量?jī)蓚€(gè)字符序列差異大小的方法,簡(jiǎn)單地說,當(dāng)一個(gè)字符需要轉(zhuǎn)換成另一個(gè)字符所需要的步驟數(shù),包括刪除、插入和替換。一般的步驟數(shù)越小表示兩個(gè)字符的相似度越大,文本識(shí)別的準(zhǔn)確率就越高,一般的編輯距離可以由動(dòng)態(tài)算法計(jì)算得到。本文采用在ICADR2013手寫漢字識(shí)別競(jìng)賽中的識(shí)別準(zhǔn)確率(AR)作為評(píng)價(jià)指標(biāo),公式為式(23):
其中N表示總字符的數(shù)量,D、I、S分別表示刪除、插入、替換的步驟數(shù)。
使用CRNN+CTC的模型和CNN+Seq2Seq+注意力模型以及其他識(shí)別方法與本文將改進(jìn)的檢測(cè)算法與融合二維CTC和注意力機(jī)制的Seq2Seq結(jié)合的模型在幾個(gè)公開數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)對(duì)比。如表1所示。
表1 集中方法的識(shí)別準(zhǔn)確率
通過其CRNN的特征提取網(wǎng)絡(luò)與本文的識(shí)別算法結(jié)合與其他文本識(shí)別算法對(duì)比可以看出,改進(jìn)的文本識(shí)別方法的有效性。最后將上述檢測(cè)方法和識(shí)別方法結(jié)合發(fā)現(xiàn),準(zhǔn)確率都高于其他方法。
本文針對(duì)CRNN+CTC文本識(shí)別模型和基于注意力機(jī)制的Seq2Seq文本識(shí)別方法存在的問題,提出一種基于二維CTC和注意力Seq2Seq機(jī)制的文本識(shí)別模型。通過二維CTC將帶有空間信息的特征序列輸入到注意力的Seq2Seq的解碼機(jī)制上,從而進(jìn)一步提升識(shí)別不規(guī)則和彎曲文本序列的準(zhǔn)確率,極大地改善了不規(guī)則文本信息缺失的問題,同時(shí)改進(jìn)了Seq2Seq模型在自然場(chǎng)景的中文文本識(shí)別效果較差的問題。實(shí)驗(yàn)證明,該文本識(shí)別算法可以有效地減少信息缺失,降低失誤率,提高各類文本識(shí)別的準(zhǔn)確率。該模型雖然對(duì)于一些傾斜和一些不規(guī)則的文本有了較好的識(shí)別效果,但是對(duì)于黏連以及多行的文本識(shí)別效果還是略顯不足,未來會(huì)對(duì)此進(jìn)行進(jìn)一步的研究。