CRNN:端到端不定长文字识别算法
點擊上方“AI搞事情”關注我們
?
論文:《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》
Git code:
https://github.com/bgshih/crnn? 官方lua實現
https://github.com/meijieru/crnn.pytorch??
https://github.com/bai-shang/crnn_ctc_ocr_tf
?這是2015年就發表的一篇基于深度學習的OCR文章,且不用文字切割、可以處理任意長度的端到端文字識別方法。總的來說,CRNN由卷積神經網絡從圖像中提取文字特征序列,RNN進行文本序列學習,CTC進行網絡輸出與文本序列的對齊轉換。
CRNN = CNN + RNN + CTC,如下圖所示:
網絡結構圖CRNN借鑒了語音識別思想,引入LSTM+CTC的建模方法解決不定長序列對齊問題。CRNN一般會結合文字檢測算法(如:CTPN)一起使用,進行文字定位與識別的整個流程。
一、CNN特征序列提取
CNN通過卷積、池化操作提取輸入圖像的序列特征,輸入圖像在輸入網絡之前被縮放到了固定的高度(文中采用32),經過CNN計算輸出RNN所輸入的序列特征,由多列向量組成,由于卷積池化具有平移不變性,每一列特征可以映射到原圖的矩形感受野。
論文采用VGG結構作為圖像特征提取網絡,為了適應LSTM的輸入格式,文中將第三和第四個max-pooling的核尺度從 2×2 改為了 1×2;同時加速網絡收斂,為后面的卷積加上了BN層。二、RNN序列標記
使用雙向RNN網絡對CNN輸出的特征序列進行進行分類,每一個輸入都有一個對應的softmax概率輸出。利用LSTM將OCR轉為序列化識別問題,既避免了單字符切分與單字符識別的傳統處理方式,利用了文字的上下文依賴信息,同時,LSTM可以通過BP算法進行訓練優化,可以和CNN進行聯合訓練,實現端到端任意長度的字符序列識別。
三、CTC轉錄聯結時序分類(Connectionist Temporal Classification, CTC),一種常用在語音識別、文本識別等領域的算法,主要用于處理不定長序列對齊問題,通常接在RNN的后面,體現在RNN輸出與標簽的損失計算上。假設LSTM最終輸出的概率序列為,一種對齊和的對齊方式是先對輸入的每個分量?對應一個輸出字符,然后將相鄰的字符進行去重合并得到對應的輸出序列,具體如下圖所示。但是,像hello、happy這樣有相鄰重復的單詞就會無法完整識別,同時對于輸入語音或者文字圖像往往存在空白區域,不可能每個部分都會有對應的字符映射。于是CTC引入了空白符 ? 進行空白占位和重復切分,有效地避免了以上問題。
CTC具有以下幾種特性:
「條件獨立性」,CTC做了一個假設就是不同時間步的輸出之間是獨立的。這個假設對于很多序列問題來說并不成立,輸出序列之間往往存在聯系。
「單調對齊」,CTC只允許單調對齊,在語音識別中可能是有效的,但是在機器翻譯中,比如目標語句中的一些比較后的詞,可能與源語句中前面的一些詞對應,這個CTC是沒法做到的。
「多對一映射」,CTC的輸入和輸出是多對一的關系。這意味著輸出長度不能超過輸入長度,這在手寫字體識別或者語音中不是什么問題,因為通常輸入都會大于輸出,但是對于輸出長度大于輸入長度的問題CTC就無法處理了。
所以,輸出?的長度一定不大于?。具體CTC原理和推導可以看參考鏈接【1】,還是比較難懂的。轉錄時,有兩種方式,一種是帶字典的,一種是沒有字典的。帶字典的方式輸出的會包含字典所有元素的概率,取概率最大的作為預測結果。不帶字典的方式,預測時直接選取輸出概率最大的作為最終的預測字符串(ps:沒太明白這兩個啥意思 ̄□ ̄||)。論文在在無詞典和基于詞典的場景文本識別任務中都取得了顯著的性能。參考:
Sequence ModelingWith CTC
https://distill.pub/2017/ctc/
【OCR技術系列之七】端到端不定長文字識別CRNN算法詳解
https://www.cnblogs.com/skyfsm/p/10335717.html
帶你看懂CTC算法
https://zhuanlan.zhihu.com/p/161186907
推薦閱讀
DeepHSV:號稱可以商用的計算機筆跡鑒別算法
CVPR 2019筆跡識別論文:逆鑒別網絡+八路Attention
PolarMask:單階段實例分割框架,FCOS進階!
真正意義的Anchor-Free,FCOS目標檢測算法了解一下
Windows10下的AlphaPose配置,人體摔倒姿態識別
長按二維碼關注我們
有趣的靈魂在等你
總結
以上是生活随笔為你收集整理的CRNN:端到端不定长文字识别算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你看我还有机会吗?这么GAN让我秃然荒了
- 下一篇: 行千里,看山城轻轨穿楼越林;致广大,望重