1. 背景介紹
具體地犬第,模型輸入一張定位好的文本行芒涡,由模型預(yù)測出圖片中的文字內(nèi)容和置信度英妓,可視化結(jié)果如下圖所示:
文本識別是OCR(Optical Character Recognition)的一個子任務(wù)搜囱,其任務(wù)為識別一個固定區(qū)域的的文本內(nèi)容。在OCR的兩階段方法里趾痘,它接在文本檢測后面,將圖像信息轉(zhuǎn)換為文字信息蔓钟。
文本識別的應(yīng)用場景很多永票,有文檔識別、路標(biāo)識別滥沫、車牌識別侣集、工業(yè)編號識別等等,根據(jù)實際場景可以把文本識別任務(wù)分為兩個大類:規(guī)則文本識別和不規(guī)則文本識別兰绣。
- 規(guī)則文本識別:主要指印刷字體世分、掃描文本等,認(rèn)為文本大致處在水平線位置
- 不規(guī)則文本識別: 往往出現(xiàn)在自然場景中狭魂,且由于文本曲率罚攀、方向、變形等方面差異巨大雌澄,文字往往不在水平位置斋泄,存在彎曲、遮擋镐牺、模糊等問題炫掐。
下圖展示的是 IC15 和 IC13 的數(shù)據(jù)樣式,它們分別代表了不規(guī)則文本和規(guī)則文本睬涧∧嘉福可以看出不規(guī)則文本往往存在扭曲、模糊畦浓、字體差異大等問題痹束,更貼近真實場景,也存在更大的挑戰(zhàn)性讶请。
因此目前各大算法都試圖在不規(guī)則數(shù)據(jù)集上獲得更高的指標(biāo)祷嘶。
不同的識別算法在對比能力時,往往也在這兩大類公開數(shù)據(jù)集上比較夺溢。對比多個維度上的效果论巍,目前較為通用的英文評估集合分類如下:
2. 文本識別算法分類
在傳統(tǒng)的文本識別方法中,任務(wù)分為3個步驟风响,即圖像預(yù)處理嘉汰、字符分割和字符識別。需要對特定場景進行建模状勤,一旦場景變化就會失效鞋怀。面對復(fù)雜的文字背景和場景變動双泪,基于深度學(xué)習(xí)的方法具有更優(yōu)的表現(xiàn)。
多數(shù)現(xiàn)有的識別算法可用如下統(tǒng)一框架表示接箫,算法流程被劃分為4個階段:
主流的算法類別和主要論文攒读,參考下表:
算法類別 | 主要思路 | 主要論文 |
---|---|---|
傳統(tǒng)算法 | 滑動窗口、字符提取辛友、動態(tài)規(guī)劃 | - |
ctc | 基于ctc的方法薄扁,序列不對齊较幌,更快速識別 | CRNN, Rosetta |
Attention | 基于attention的方法貌踏,應(yīng)用于非常規(guī)文本 | RARE, DAN, PREN |
Transformer | 基于transformer的方法 | SRN, NRTR, Master, ABINet |
校正 | 校正模塊學(xué)習(xí)文本邊界并校正成水平方向 | RARE, ASTER, SAR |
分割 | 基于分割的方法,提取字符位置再做分類 | Text Scanner乾蛤, Mask TextSpotter |
2.1 規(guī)則文本識別
文本識別的主流算法有兩種邑滨,分別是基于 CTC (Conectionist Temporal Classification) 的算法和 Sequence2Sequence 算法日缨,區(qū)別主要在解碼階段。
CTC(Connectionist Temporal Classification)是一種避開輸入與輸出手動對齊的一種方式掖看,是非常適合語音識別或者OCR這種應(yīng)用的匣距。
原理可參考CTC理論和實戰(zhàn)
基于 CTC 的算法是將編碼產(chǎn)生的序列接入 CTC 進行解碼;基于 Sequence2Sequence 的方法則是把序列接入循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)模塊進行循環(huán)解碼哎壳,兩種方式都驗證有效也是主流的兩大做法毅待。
2.1.1 基于CTC的算法
基于 CTC 最典型的算法是CRNN (Convolutional Recurrent Neural Network)[1]归榕,它的特征提取部分使用主流的卷積結(jié)構(gòu)尸红,常用的有ResNet、MobileNet刹泄、VGG等外里。由于文本識別任務(wù)的特殊性,輸入數(shù)據(jù)中存在大量的上下文信息特石,卷積神經(jīng)網(wǎng)絡(luò)的卷積核特性使其更關(guān)注于局部信息盅蝗,缺乏長依賴的建模能力,因此僅使用卷積網(wǎng)絡(luò)很難挖掘到文本之間的上下文聯(lián)系姆蘸。為了解決這一問題墩莫,CRNN文本識別算法引入了雙向 LSTM(Long Short-Term Memory) 用來增強上下文建模,通過實驗證明雙向LSTM模塊可以有效的提取出圖片中的上下文信息乞旦。最終將輸出的特征序列輸入到CTC模塊贼穆,直接解碼序列結(jié)果题山。該結(jié)構(gòu)被驗證有效兰粉,并廣泛應(yīng)用在文本識別任務(wù)中。Rosetta[2]是FaceBook提出的識別網(wǎng)絡(luò)顶瞳,由全卷積模型和CTC組成玖姑。Gao Y[3]等人使用CNN卷積替代LSTM愕秫,參數(shù)更少,性能提升精度持平焰络。
2.1.2 Sequence2Sequence 算法
Sequence2Sequence 算法是由編碼器 Encoder 把所有的輸入序列都編碼成一個統(tǒng)一的語義向量戴甩,然后再由解碼器Decoder解碼。在解碼器Decoder解碼的過程中闪彼,不斷地將前一個時刻的輸出作為后一個時刻的輸入甜孤,循環(huán)解碼,直到輸出停止符為止畏腕。一般編碼器是一個RNN缴川,對于每個輸入的詞,編碼器輸出向量和隱藏狀態(tài)描馅,并將隱藏狀態(tài)用于下一個輸入的單詞把夸,循環(huán)得到語義向量;解碼器是另一個RNN铭污,它接收編碼器輸出向量并輸出一系列字以創(chuàng)建轉(zhuǎn)換恋日。受到 Sequence2Sequence 在翻譯領(lǐng)域的啟發(fā), Shi[4]提出了一種基于注意的編解碼框架來識別文本,通過這種方式嘹狞,rnn能夠從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)隱藏在字符串中的字符級語言模型岂膳。
以上兩個算法在規(guī)則文本上都有很不錯的效果,但由于網(wǎng)絡(luò)設(shè)計的局限性刁绒,這類方法很難解決彎曲和旋轉(zhuǎn)的不規(guī)則文本識別任務(wù)闷营。為了解決這類問題,部分算法研究人員在以上兩類算法的基礎(chǔ)上提出了一系列改進算法知市。
2.2 不規(guī)則文本識別
不規(guī)則文本識別算法可以被分為4大類:
- 基于校正的方法
- 基于 Attention 的方法
- 基于分割的方法
- 基于 Transformer 的方法傻盟。
基于校正的方法
基于校正的方法利用一些視覺變換模塊,將非規(guī)則的文本盡量轉(zhuǎn)換為規(guī)則文本嫂丙,然后使用常規(guī)方法進行識別娘赴。
RARE
RARE[4]模型首先提出了對不規(guī)則文本的校正方案,整個網(wǎng)絡(luò)分為兩個主要部分:一個空間變換網(wǎng)絡(luò)STN(Spatial Transformer Network) 和一個基于Sequence2Squence的識別網(wǎng)絡(luò)跟啤。其中STN就是校正模塊诽表,不規(guī)則文本圖像進入STN,通過TPS(Thin-Plate-Spline)變換成一個水平方向的圖像隅肥,該變換可以一定程度上校正彎曲竿奏、透射變換的文本,校正后送入序列識別網(wǎng)絡(luò)進行解碼腥放。
RARE論文指出泛啸,該方法在不規(guī)則文本數(shù)據(jù)集上有較大的優(yōu)勢,特別比較了CUTE80和SVTP這兩個數(shù)據(jù)集秃症,相較CRNN高出5個百分點以上候址,證明了校正模塊的有效性吕粹。基于此[6]同樣結(jié)合了空間變換網(wǎng)絡(luò)(STN)和基于注意的序列識別網(wǎng)絡(luò)的文本識別系統(tǒng)岗仑。
基于校正的方法有較好的遷移性匹耕,除了RARE這類基于Attention的方法外,STAR-Net[5]將校正模塊應(yīng)用到基于CTC的算法上荠雕,相比傳統(tǒng)CRNN也有很好的提升稳其。
2.2.2 基于Attention的方法
基于 Attention 的方法主要關(guān)注的是序列之間各部分的相關(guān)性,該方法最早在機器翻譯領(lǐng)域提出炸卑,認(rèn)為在文本翻譯的過程中當(dāng)前詞的結(jié)果主要由某幾個單詞影響的欢际,因此需要給有決定性的單詞更大的權(quán)重。在文本識別領(lǐng)域也是如此矾兜,將編碼后的序列解碼時损趋,每一步都選擇恰當(dāng)?shù)腸ontext來生成下一個狀態(tài),這樣有利于得到更準(zhǔn)確的結(jié)果椅寺。
R^2AM
R^2AM [7] 首次將 Attention 引入文本識別領(lǐng)域浑槽,該模型首先將輸入圖像通過遞歸卷積層提取編碼后的圖像特征,然后利用隱式學(xué)習(xí)到的字符級語言統(tǒng)計信息通過遞歸神經(jīng)網(wǎng)絡(luò)解碼輸出字符返帕。在解碼過程中引入了Attention 機制實現(xiàn)了軟特征選擇桐玻,以更好地利用圖像特征,這一有選擇性的處理方式更符合人類的直覺荆萤。
后續(xù)有大量算法在Attention領(lǐng)域進行探索和更新镊靴,例如SAR[8]將1D attention拓展到2D attention上,校正模塊提到的RARE也是基于Attention的方法链韭。實驗證明基于Attention的方法相比CTC的方法有很好的精度提升偏竟。
2.2.3 基于分割的方法
基于分割的方法是將文本行的各字符作為獨立個體,相比與對整個文本行做矯正后識別敞峭,識別分割出的單個字符更加容易踊谋。它試圖從輸入的文本圖像中定位每個字符的位置,并應(yīng)用字符分類器來獲得這些識別結(jié)果旋讹,將復(fù)雜的全局問題簡化成了局部問題解決殖蚕,在不規(guī)則文本場景下有比較不錯的效果。然而這種方法需要字符級別的標(biāo)注沉迹,數(shù)據(jù)獲取上存在一定的難度睦疫。Lyu[9]等人提出了一種用于單詞識別的實例分詞模型,該模型在其識別部分使用了基于 FCN(Fully Convolutional Network) 的方法鞭呕。[10]從二維角度考慮文本識別問題蛤育,設(shè)計了一個字符注意FCN來解決文本識別問題,當(dāng)文本彎曲或嚴(yán)重扭曲時,該方法對規(guī)則文本和非規(guī)則文本都具有較優(yōu)的定位結(jié)果缨伊。
2.2.4 基于Transformer的方法
隨著 Transformer 的快速發(fā)展,分類和檢測領(lǐng)域都驗證了 Transformer 在視覺任務(wù)中的有效性进宝。如規(guī)則文本識別部分所說刻坊,CNN在長依賴建模上存在局限性,Transformer 結(jié)構(gòu)恰好解決了這一問題党晋,它可以在特征提取器中關(guān)注全局信息谭胚,并且可以替換額外的上下文建模模塊(LSTM)。
一部分文本識別算法使用 Transformer 的 Encoder 結(jié)構(gòu)和卷積共同提取序列特征未玻,Encoder 由多個 MultiHeadAttentionLayer 和 Positionwise Feedforward Layer 堆疊而成的block組成灾而。MulitHeadAttention 中的 self-attention 利用矩陣乘法模擬了RNN的時序計算,打破了RNN中時序長時依賴的障礙扳剿。也有一部分算法使用 Transformer 的 Decoder 模塊解碼旁趟,相比傳統(tǒng)RNN可獲得更強的語義信息,同時并行計算具有更高的效率庇绽。
SRN
SRN[11] 算法將Transformer的Encoder模塊接在ResNet50后锡搜,增強了2D視覺特征。并提出了一個并行注意力模塊瞧掺,將讀取順序用作查詢耕餐,使得計算與時間無關(guān),最終并行輸出所有時間步長的對齊視覺特征辟狈。此外SRN還利用Transformer的Eecoder作為語義模塊肠缔,將圖片的視覺信息和語義信息做融合,在遮擋哼转、模糊等不規(guī)則文本上有較大的收益明未。
NRTR
NRTR[12] 使用了完整的Transformer結(jié)構(gòu)對輸入圖片進行編碼和解碼,只使用了簡單的幾個卷積層做高層特征提取壹蔓,在文本識別上驗證了Transformer結(jié)構(gòu)的有效性亚隅。
SRACN
SRACN[13]使用Transformer的解碼器替換LSTM,再一次驗證了并行訓(xùn)練的高效性和精度優(yōu)勢庶溶。