CRNN論文筆記
CRNN是《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》中提出的模型,解決影象中文字識別問題。
論文地址:https://arxiv.org/abs/1507.05717
github地址:https://github.com/bgshih/crnn
1、應用環境
應用於影象中序列物體的識別。比如說一段文字、一段樂譜。簡單而言,就是前後文有聯絡的。
2、特點
1、可以直接從序列標籤學習,不必給每一個字元打標籤。例如圖片中是“abc123”,標籤即是“abc123”,不用給每個字元單獨打標籤。
2、有CNN的優點,直接從輸入影象學習,不必做二值化、分割、定位等,這些預處理操作。
3、有RNN的優點,輸出的是一個序列標籤。
4、對要識別的序列物件沒有長度限制。只是在訓練和測試中,高度要歸一化。
5、比其他模型引數更少。
6、雖然結合了CNN和RNN,但最後用一個loss函式,可以端到端的訓練。
3、模型架構
模型有三部分構成:
(1)convolution layer 直接從影象中提取特徵,生成的特徵序列
(2)recurrent layer 把特徵序列變成特徵分佈
(3) transcription layer 則把特徵分佈轉化成標籤序列
4、特徵序列提取
首先輸入影象都必須統一成同樣高度,其次CNN由convolution layer和max-pooling layer組成。
因為卷積和池化具有平移不變性,所以在從左往右提取特徵的時候,生成的特徵向量跟原圖的位置也是對應的。因此生成的特徵序列可以看做是對原影象的描述。
5、序列標籤
The recurrent layers 輸入的是特徵序列,輸出的是特徵分佈。
對特徵序列
使用RNN有3個好處:
(1)RNN有很強的聯絡上下文能力,所以適合處理這種序列任務。
(2)RNN可以將誤差反向傳播回去,這樣就可以跟CNN聯合訓練
(3)RNN能輸入任意序列長度
本文采用了雙向LSTM,其原理和作用不再贅述。
最後,作者寫了一個“Map-to-Sequence”layer,作為聯絡CNN和RNN的橋樑。
6、transcription
transcription就是把特徵分佈轉化成標籤序列,本質上就是找特徵分佈中對應標籤概率最大的。
採用CTC的方法。未完待續。。
7、訓練
訓練使用了一個loss函式,可以跟CNN,RNN 聯絡起來,所以實現了端到端的訓練。
採用SGD訓練,ADADELTA優化效果更好。