CRNN 算法详解

作者: ce0b74704937 | 来源:发表于2019-03-26 17:46 被阅读0次

《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.png

下面来分开说明

1. CNN结构

CNN结构采用的是VGG的结构,并且文章对VGG网络做了一些微调,如下图所示


2.png

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

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

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

3.png
2. RNN的结构

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

4.png
3. CTC翻译层

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

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

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

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

二、损失函数

最小化负对数似然函数
\sum_{(X,Y)\in \mathcal{D}}-logp(Y|X)

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

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

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

欢迎加入OCR交流群:785515057(此群已满)
欢迎加入OCR交流群2:826714963

相关文章

  • CRNN 算法详解

    《An End-to-End Trainable Neural Network for Image-based S...

  • CRNN算法详解

    1. CRNN算法结构 文字识别是对序列的预测方法,所以采用了对序列预测的RNN网络。通过CNN将图片的特征提取出...

  • CRNN网络结构详解

    [TOC] 一. CRNN概论 重点:原论文一定要得看!!!英语好的直接看原论文,不懂的地方查资料。英语不好的(比...

  • 异步社区本周预售新书

    《算法详解(卷1)——算法基础》 Tim Roughgarden著 算法详解系列图书共有4卷,本书是第一卷——基础...

  • (转)KMP

    (原创)详解KMP算法

  • RCNN,Fast RCNN and Faster RCNN

    找到了三篇很好的文章,贴链接如下,留作自读: - 【目标检测】RCNN算法详解:【目标检测】RCNN算法详解 - ...

  • Crnn_chinese_characters 中文字符识别

    Crnn_chinese_characters 中文字符识别 重要的源码地址: Warp-ctc Crnn_chi...

  • K近邻(KNN)算法详解及Python实现

    K近邻(KNN)算法详解及Python实现 今天浏览网页看到一篇用Python实现K近邻(KNN)算法的详解教程,...

  • CRNN

    教程1 教程2

  • Java垃圾回收之复制算法详解

    Java垃圾回收之复制算法详解 之前的Java垃圾回收之标记清除算法详解会导致内存碎片。下文的介绍的coping算...

网友评论

    本文标题:CRNN 算法详解

    本文链接:https://www.haomeiwen.com/subject/ilknvqtx.html