《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its...》论文阅读之CRNN

An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

paper: CRNN

翻译:CRNN

Convolutional Recurrent Neural Network(CRNN),华科白翔老师组的作品

摘要

基于图像的序列识别一直是计算机视觉中长期存在的研究课题。在本文中,我们研究了场景文本识别的问题,这是基于图像的序列识别中最重要和最具挑战性的任务之一。提出了一种将特征提取,序列建模和转录整合到统一框架中的新型神经网络架构。与以前的场景文本识别系统相比,所提出的架构具有四个不同的特性:(1)与大多数现有的组件需要单独训练和协调的算法相比,它是端对端训练的。(2)它自然地处理任意长度的序列,不涉及字符分割或水平尺度归一化。(3)它不仅限于任何预定义的词汇,并且在无词典和基于词典的场景文本识别任务中都取得了显著的表现。(4)它产生了一个有效而小得多的模型,这对于现实世界的应用场景更为实用。在包括IIIT-5K,Street View Text和ICDAR数据集在内的标准基准数据集上的实验证明了提出的算法比现有的技术更有优势。此外,提出的算法在基于图像的音乐乐谱识别任务中表现良好,这显然证实了它的泛化性。

 

CRNN

1) 端到端可训练(把CNN和RNN联合训练)

2) 任意长度的输入(图像宽度任意,单词长度任意)

3) 训练集无需有字符的标定

4) 带字典和不带字典的库(样本)都可以使用

5) 性能好,而且模型小(参数少)

整体流程:


CNN+BiLSTM+CTC

网络结构


架构包括三部分: 
1) 卷积层,从输入图像中提取特征序列; 
2) 循环层,预测每一帧的标签分布; 
3) 转录层,将每一帧的预测变为最终的标签序列。

扫描二维码关注公众号,回复: 4139857 查看本文章

在CRNN的底部,卷积层自动从每个输入图像中提取特征序列。在卷积网络之上,构建了一个循环网络,用于对卷积层输出的特征序列的每一帧进行预测。采用CRNN顶部的转录层将循环层的每帧预测转化为标签序列。虽然CRNN由不同类型的网络架构(如CNN和RNN)组成,但可以通过一个损失函数进行联合训练。

网络结构综合了CNN+RNN

(1)其中Max pooling中的窗口大小为1*2,保证提出的特征具有横向的长度,有利于识别较长的文本;

(2)CNN+RNN的训练比较困难,所以加入了BatchNorm,有助于模型收敛;

优势
(1)可以端到端训练;

(2)不需要进行字符分割和水平缩放操作,只需要垂直方向缩放到固定长度即可,同时可以识别任意长度的序列;

(3)可以训练基于字典的模型和不基于词典的任意模型;

(4)训练速度快,并且模型很小。
 

特征序列提取
在CRNN模型中,通过采用标准CNN模型(去除全连接层)中的卷积层和最大池化层来构造卷积层的组件。这样的组件用于从输入图像中提取序列特征表示。在进入网络之前,所有的图像需要缩放到相同的高度。然后从卷积层组件产生的特征图中提取特征向量序列,这些特征向量序列作为循环层的输入。具体地,特征序列的每一个特征向量在特征图上按列从左到右生成。这意味着第i个特征向量是所有特征图第i列的连接。在我们的设置中每列的宽度固定为单个像素。

由于卷积层,最大池化层和元素激活函数在局部区域上执行,因此它们是平移不变的。因此,特征图的每列对应于原始图像的一个矩形区域(称为感受野),并且这些矩形区域与特征图上从左到右的相应列具有相同的顺序。如图2所示,特征序列中的每个向量关联一个感受野,并且可以被认为是该区域的图像描述符。 


2.2. 序列标注
一个深度双向循环神经网络是建立在卷积层的顶部,作为循环层。循环层预测特征序列x=x1,…,xT中每一帧xt的标签分布yt。循环层的优点是三重的。首先,RNN具有很强的捕获序列内上下文信息的能力。对于基于图像的序列识别使用上下文提示比独立处理每个符号更稳定且更有帮助。以场景文本识别为例,宽字符可能需要一些连续的帧来完全描述(参见图2)。此外,一些模糊的字符在观察其上下文时更容易区分,例如,通过对比字符高度更容易识别“il”而不是分别识别它们中的每一个。其次,RNN可以将误差差值反向传播到其输入,即卷积层,从而允许我们在统一的网络中共同训练循环层和卷积层。第三,RNN能够从头到尾对任意长度的序列进行操作。 


传统的RNN单元在其输入和输出层之间具有自连接的隐藏层。每次接收到序列中的帧xt时,它将使用非线性函数来更新其内部状态ht,该非线性函数同时接收当前输入xt和过去状态ht−1作为其输入:ht=g(xt,ht−1)。那么预测yt是基于ht的。以这种方式,过去的上下文{{xt′}t′


 

其他链接:

1. NLP 之自然场景文字识别 2 CRNN tensorflow: https://www.imooc.com/article/51482

2. http://mc.eistar.net/~xbai/

3. http://mc.eistar.net/~xbai/CRNN/crnn_code.zip

4. https://github.com/bgshih/crnn

5. https://github.com/Belval/CRNN

猜你喜欢

转载自blog.csdn.net/Gavinmiaoc/article/details/83308648