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