一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

OCR文字識(shí)別—基于CTC/Attention/ACE的三大解碼算法

 西北望msm66g9f 2021-08-26

本文全面梳理一下OCR文字識(shí)別三種解碼算法,先介紹一下什么是OCR文字識(shí)別,然后介紹一下常用的特征提取方法CRNN,最后介紹3種常用的解碼算法CTC/Attention/ACE。


什么是OCR文字識(shí)別?




圖片

一般來(lái)說(shuō),文字識(shí)別之前需要先對(duì)文字進(jìn)行定位(文字檢測(cè)主要有基于物體檢測(cè)和基于分割兩種方法),文字識(shí)別就是通過(guò)輸入文字圖片,然后解碼成文字的方法。本文主要講文字識(shí)別部分,文字識(shí)別主要分成三種類型:?jiǎn)巫址诸?、整詞分類和整詞識(shí)別。當(dāng)能夠定位出單字時(shí),可以用圖像分類的方法直接對(duì)單字進(jìn)行分類;當(dāng)需要預(yù)測(cè)整詞數(shù)量較少時(shí),可以對(duì)整詞進(jìn)行分類;當(dāng)有大量整詞需要預(yù)測(cè)并且沒(méi)有單字定位時(shí),就需要用解碼序列的方法進(jìn)行識(shí)別了。因此,文字識(shí)別中最常用的是文字序列識(shí)別,適用場(chǎng)景更為廣泛。本文將主要介紹文字序列識(shí)別的解碼算法。
OCR解碼是文字識(shí)別中最為核心的問(wèn)題。本文主要對(duì)OCR的序列方法CTC、Attention、ACE進(jìn)行介紹,微信OCR算法就是參考這三種解碼算法的。
不同的解碼算法的特征提取器可以共用,后面接上不同的解碼算法就可以實(shí)現(xiàn)文字識(shí)別了,以下用CRNN作為特征提取器。


CRNN




圖片

CRNN的特征抽取器由一個(gè)CNN和一個(gè)BiLSTM組成,其中BiLSTM使用的是stack形深層雙向LSTM結(jié)構(gòu)。
CRNN特征提取器流程如下:
1.假設(shè)輸入圖像尺寸為32x100x3(HxWxC),經(jīng)過(guò)CNN轉(zhuǎn)換成1x25x512(HxWxC)。
2.將CNN的輸出維度轉(zhuǎn)換為25個(gè)1x512的序列,送入深層雙向LSTM中,得到CRNN的輸出特征,維度轉(zhuǎn)換成為25xn(n是字符集合總數(shù))。

OCR文字識(shí)別的難點(diǎn)
圖片
OCR文字識(shí)別的解碼主要難點(diǎn)在于如何進(jìn)行輸入輸出的對(duì)齊。如上圖所示,如果每個(gè)1xn預(yù)測(cè)一個(gè)字符,那么可能會(huì)出現(xiàn)多個(gè)1xn預(yù)測(cè)同一個(gè)字符,這樣子得到的最終結(jié)果會(huì)產(chǎn)生重復(fù)字符。所以需要設(shè)計(jì)針對(duì)文字識(shí)別的解碼算法來(lái)解決輸入輸出的對(duì)齊問(wèn)題。
目前我了解到的主要有三種解碼方法,可以解決OCR解碼的一對(duì)多問(wèn)題,分別為CTC、Attention和ACE三種。


CTC




圖片
CTC是最為經(jīng)典的OCR解碼算法,假設(shè)CRNN特征抽取器的輸出維度Txn,其中T=8,n包含blank(記作 - )字符(blank字符是間隔符,意思是前后字符不連續(xù))。對(duì)每一列1xn進(jìn)行softmax得到概率最大的字符,得到的最終序列需要去除連續(xù)的重復(fù)字符,比如最終得到的序列為-stt-ate,那么去重合并后就得到state序列。
那么state的序列概率就變成了所有去重合并后為state的字符序列概率之和,只要最大化字符序列概率,就可以優(yōu)化CRNN+CTC的文字識(shí)別算法。由于每個(gè)字符前后都可以插入blank,所以可以將所有可能狀態(tài)如下圖展開(kāi)。
圖片
為了方便起見(jiàn),對(duì)于所有state序列的合法路徑做一些限制,規(guī)則如下:
1.轉(zhuǎn)換只能往右下方向,其它方向不允許
2.相同的字符之間起碼要有一個(gè)空字符
3.非空字符不能被跳過(guò)
4.起點(diǎn)必須從前兩個(gè)字符開(kāi)始
5.終點(diǎn)必須落在結(jié)尾兩個(gè)字符
根據(jù)上述約束規(guī)則,遍歷所有'state'序列的合法路徑,“state”的所有合法路徑如下圖所示:
圖片
其中綠色框部分為起點(diǎn)和終點(diǎn),藍(lán)色箭頭為'state'序列的合法路徑。當(dāng)然可以通過(guò)枚舉所有路徑,然后求所有路徑的概率之和即為'state'序列的概率。但是枚舉所有路徑計(jì)算復(fù)雜度太高了,于是CTC引入了HMM的前向-后向算法來(lái)減少計(jì)算復(fù)雜度(可以參考一下我之前的回答,增加隱馬爾可夫模型(HMM)的理解)。
圖片
以前向算法為例(后向算法可以認(rèn)為是狀態(tài)序列的反轉(zhuǎn),計(jì)算方法相同),簡(jiǎn)單來(lái)說(shuō),就是利用分治和動(dòng)態(tài)規(guī)劃的思想,把8個(gè)時(shí)間點(diǎn)拆分成7個(gè)重復(fù)單元,然后先計(jì)算出第一個(gè)重復(fù)單元紅色虛線框中每個(gè)狀態(tài)的觀測(cè)概率,并且保存下來(lái)當(dāng)作下一個(gè)重復(fù)單元的初始狀態(tài),循環(huán)計(jì)算7次就得了最終的觀測(cè)概率。比起暴力求解觀測(cè)概率,復(fù)雜度大大降低。


Attention



基于Attention的OCR解碼算法,把OCR文字識(shí)別當(dāng)成文字翻譯任務(wù),即通過(guò)Attention Decoder出文字序列。
RNN -> Seq2Seq
圖片
左圖是經(jīng)典的RNN結(jié)構(gòu),右圖是Seq2Seq結(jié)構(gòu)。RNN的輸入序列和輸出序列必須有相同的時(shí)間長(zhǎng)度,而機(jī)器翻譯以及文字識(shí)別任務(wù)都是輸入輸出不對(duì)齊的,不能直接使用RNN結(jié)構(gòu)進(jìn)行解碼。于是在Seq2Seq結(jié)構(gòu)中,將輸入序列進(jìn)行Encoder編碼成一個(gè)統(tǒng)一的語(yǔ)義向量Context,然后送入Decoder中一個(gè)一個(gè)解碼出輸出序列。在Decoder解碼過(guò)程中,第一個(gè)輸入字符為<start>,然后不斷將前一個(gè)時(shí)刻的輸出作為下一個(gè)時(shí)刻的輸入,循環(huán)解碼,直到輸出<stop>字符為止。
Seq2Seq -> Attention Decoder
Seq2Seq把所有的輸入序列都編碼成一個(gè)統(tǒng)一的語(yǔ)義向量Context,然后再由Decoder解碼。由于context包含原始序列中的所有信息,它的長(zhǎng)度就成了限制模型性能的瓶頸。如機(jī)器翻譯問(wèn)題,當(dāng)要翻譯的句子較長(zhǎng)時(shí),一個(gè)Context可能存不下那么多信息,就會(huì)造成精度的下降。除此之外,如果按照上述方式實(shí)現(xiàn),只用到了編碼器的最后一個(gè)隱藏層狀態(tài),信息利用率低下。
圖片
所以如果要改進(jìn)Seq2Seq結(jié)構(gòu),最好的切入角度就是:利用Encoder所有隱藏層狀態(tài)解決Context長(zhǎng)度限制問(wèn)題。于是Attention Decoder在Seq2Seq的基礎(chǔ)上,增加了一個(gè)Attention Layer,如上圖所示。
圖片
在Decoder時(shí),每個(gè)時(shí)刻的解碼狀態(tài)跟Encoder的所有隱藏層狀態(tài)進(jìn)行cross-attention計(jì)算,cross-attention將當(dāng)前解碼的隱藏層狀態(tài)和encoder的所有隱藏層狀態(tài)做相關(guān)性計(jì)算,然后對(duì)encoder的所有隱藏層加權(quán)求和,最后和當(dāng)前解碼的隱藏層狀態(tài)concat得到最終的狀態(tài)。這里的cross-attention計(jì)算方式也為后來(lái)的Transformer框架打下了基礎(chǔ)(詳細(xì)看我之前寫的文章計(jì)算機(jī)視覺(jué)'新'范式: Transformer)。
另外,從形式上看,Attention Decoder很自然的可以替換成最近非常流行的Transformer,事實(shí)上,最近也有幾篇基于Vision Transformer的文本識(shí)別算法。


ACE




圖片
基于ACE的解碼方法不同于CTC和Attention,ACE的監(jiān)督信號(hào)實(shí)際上是一種弱監(jiān)督(輸入輸出沒(méi)有做形式上的對(duì)齊,沒(méi)有先后順序信息,傾向于學(xué)習(xí)表征),并且可以用于多行文字識(shí)別。
對(duì)于單行文字,假設(shè)輸出維度為Txn(T是序列長(zhǎng)度,n是字符集合總數(shù)),那么第k個(gè)字符出現(xiàn)的總數(shù)為  ,然后除以T,就能得到第k個(gè)字符出現(xiàn)的概率分布(記作  ),做相同計(jì)算,可以求出所有字符的概率分布,最后和label字符的概率分布計(jì)算交叉熵優(yōu)化網(wǎng)絡(luò)。同理,對(duì)于多行文字,只需要將HxW壓縮成T=HW,然后計(jì)算所有字符的概率分布即可。
CTC/Attention/ACE三種解碼算法比較

圖片

從模型設(shè)計(jì)上來(lái)看,可以采用結(jié)合上面3種方法的多任務(wù)文本識(shí)別模型。在訓(xùn)練時(shí),以CTC為主,Attention Decoder和ACE輔助訓(xùn)練。在預(yù)測(cè)時(shí),考慮到速度和性能,只采用CTC進(jìn)行解碼預(yù)測(cè)。多任務(wù)可以提高模型的泛化性,同時(shí)如果對(duì)預(yù)測(cè)時(shí)間要求不高,多結(jié)果也可以提供更多的選擇和對(duì)比。

圖片
上圖來(lái)源于微信OCR技術(shù)的比較:
1.CTC和ACE方法不需要額外的計(jì)算參數(shù),Attention需要額外的計(jì)算參數(shù)
2.推理內(nèi)存,ACE < CTC < Attention;推理速度,ACE > CTC > Attention
3.CTC效果更好一些,適合長(zhǎng)文本;Attention可以得到語(yǔ)言模型;ACE可以用于計(jì)數(shù)和2D預(yù)測(cè)
由于Attention依賴于上一個(gè)預(yù)測(cè)結(jié)果,導(dǎo)致只能串行解碼,推理速度影響較大,但是可以得到語(yǔ)言模型做pretrain遷移使用;而CTC可以通過(guò)引入blank字符做形式上對(duì)齊,并且通過(guò)HMM前向-后向算法加速;ACE則直接不依賴順序信息,直接估計(jì)整體分布。三者各有利弊,實(shí)際使用時(shí),需要結(jié)合具體任務(wù)按需使用。

Reference
[1] An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
[2] Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks
[3] Robust Scene Text Recognition with Automatic Rectification
[4] Aggregation Cross-Entropy for Sequence Recognition
[5] https://mp.weixin.qq.com/s/6IGXof3KWVnN8z1i2YOqJA

強(qiáng)烈推薦以下三篇blog
https://zhuanlan.zhihu.com/p/43534801
https://zhuanlan.zhihu.com/p/51383402
https:///ctc-explained/


覺(jué)得還不錯(cuò)就給我一個(gè)小小的鼓勵(lì)吧!



圖片

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    嫩草国产福利视频一区二区| 国产免费一区二区不卡| 日本精品啪啪一区二区三区| 欧美欧美欧美欧美一区| 在线观看免费午夜福利| 日韩一区二区三区在线欧洲| 亚洲欧美一二区日韩高清在线| 亚洲视频一区自拍偷拍另类| 伊人久久五月天综合网| 成人亚洲国产精品一区不卡| 中文字幕禁断介一区二区| 国产无摭挡又爽又色又刺激| 欧美有码黄片免费在线视频| 亚洲做性视频在线播放| 国产剧情欧美日韩中文在线| 亚洲第一区二区三区女厕偷拍| 久久精品亚洲精品一区| 最新69国产精品视频| 国产精品伦一区二区三区在线| 欧美日韩校园春色激情偷拍 | 亚洲高清欧美中文字幕| 国产精品亚洲一级av第二区| 欧美精品久久一二三区| 亚洲欧美日韩精品永久| 国产农村妇女成人精品| 亚洲中文字幕高清乱码毛片| 在线观看免费无遮挡大尺度视频| 少妇在线一区二区三区| 亚洲精品一区三区三区| 大香蕉再在线大香蕉再在线| 国产主播精品福利午夜二区| 亚洲精品一区三区三区| 日本91在线观看视频| 国产亚洲欧美日韩精品一区| 国产精品午夜福利免费在线| 日韩人妻毛片中文字幕| 91免费精品国自产拍偷拍| 老司机亚洲精品一区二区| 日本一区二区三区黄色| 精品丝袜一区二区三区性色| 欧美中文字幕一区在线|