CRNN论文笔记

来源:互联网 发布:系统数据接口方案 编辑:程序博客网 时间:2024/06/05 23:39

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 输入的是特征序列,输出的是特征分布。
对特征序列x=x1,x2,..,xTxtyt
使用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优化效果更好。

原创粉丝点击