CRNN算法详解

《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》,是比较老的一篇文章了,在2015年6月发表在arxiv上,但是该方法还是被广泛运用。

文章思想:文章认为文字识别是对序列的预测方法,所以采用了对序列预测的RNN网络。通过CNN将图片的特征提取出来后采用RNN对序列进行预测,最后通过一个CTC的翻译层得到最终结果。说白了就是CNN+RNN+CTC的结构。

关于CTC的解释在之前写过一篇博客,这里不做重复介绍。

一、网络结构

如前面所说的,就是CNN+RNN+CTC,如下图所示
在这里插入图片描述

下面来分开说明

1. CNN结构

CNN结构采用的是VGG的结构,并且文章对VGG网络做了一些微调,如下图所示
在这里插入图片描述

从上图可以看出,对VGG的调整如下:

  1. 为了能将CNN提取的特征作为输入,输入到RNN网络中,文章将第三和第四个maxpooling的核尺度从 2 × 2 2\times 2 2×2改为了 1 × 2 1\times 2 1×2
  2. 为了加速网络的训练,在第五和第六个卷积层后面加上了BN层。

这里需要说明的是第一点,为什么将第三和第四个maxpooling的核尺度从 2 × 2 2\times 2 2×2改为 1 × 2 1\times 2 1×2是为了方便的将CNN的提取特征作为RNN的输入.首先要注意的是这个网络的输入为 W × 32 W\times 32 W×32,也就是说该网络对输入图片的宽没有特殊的要求,但是高都必须resize到32。文中举例说明了,如果一张包含10个字符的图片大小为 100 × 32 100\times 32 100×32,经过上述的CNN网络得到的特征尺度为 25 × 1 25\times 1 25×1(这里忽略通道数),这样得到一个序列,每一列特征对应原图的一个矩形区域(如下图所示),这样就很方便作为RNN的输入进行下一步的计算了,而且每个特征与输入有一个一对一的对应关系。
在这里插入图片描述

2. RNN的结构

RNN网络是对于CNN输出的特征序列 x = x 1 , ⋯   , x t x=x_{1},\cdots,x_{t} x=x1,,xt,每一个输入 x t x_{t} xt都有一个输出 y t y_{t} yt。为了防止训练时梯度的消失,文章采用了LSTM神经单元作为RNN的单元。文章认为对于序列的预测,序列的前向信息和后向信息都有助于序列的预测,所以文章采用了双向RNN网络。LSTM神经元的结构和双向RNN结构如下图所示。
在这里插入图片描述

3. CTC翻译层

测试时,翻译分为两种,一种是带字典的,一种是没有字典的。

带字典的就是在测试的时候,测试集是有字典的,测试的输出结果计算出所有字典的概率,取最大的即为最终的预测字符串

不带字典的,是指测试集没有给出测试集包含哪些字符串,预测时就选取输出概率最大的作为最终的预测字符串。

至于CTC的解释这里不详细说明,有需要的请查看我之前的博客,简单说就是将RNN的输出 y = y 1 , ⋯   , y t y=y_{1},\cdots,y_{t} y=y1,,yt转化为一个字符串,而转化的输入与输出长度不对应而且输入可以是不同长度的序列。

二、损失函数

最小化负对数似然函数
∑ ( X , Y ) ∈ D − l o g p ( Y ∣ X ) \sum_{(X,Y)\in \mathcal{D}}-logp(Y|X) (X,Y)Dlogp(YX)

详情还是请查看CTC算法详解这篇博文

到这里CRNN算法的基本理论就介绍完了

中文本定位与识别的评测方法

欢迎加入OCR交流群:785515057

  • 8
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值