CRNN算法详解

article/2025/8/23 23:48:18

《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


http://chatgpt.dhexx.cn/article/98DGcIwG.shtml

相关文章

文本识别论文CRNN

目录 1. 解读文本识别论文CRNN1.1 CRNN文字识别整体流程1.2 理解CTC Loss1.2.1 CTC loss是如何做的1.2.2 以一个具体的例子来展现CTC loss的过程 2. 总结3. 参考资料 1. 解读文本识别论文CRNN 本文解读的是一篇来自2015年的一篇文字识别论文 [ 1 ] ^{[1]} [1]。里面的CTC Loss相…

opencv pytorch CRNN验证码识别

文章目录 前言:效果预览:搭建CRNN模型:验证码数据集制作:模型训练:项目结构与源码下载: 前言: 本文使用crnn网络识别验证码,使用的验证码数据集有三种,准确率都很高。 …

CRNN笔记

参考链接: 一文读懂CRNNCTC文字识别 - 知乎 CTC loss - 知乎 1、背景 文字识别主流的两种算法 1.1 基于CRNNCTC 1.2 基于CNNSeq2SeqAttention 2、CRNNCTC原理解析 CRNNCTC结构图 以下是根据paddleocr中以mobilenetv3为backbone的网络结构图 model …

ocr小白入门CRNN

什么是CRNN CRNN的整体框架图: CRNNCNNRNNCTC 1)CNN主要是为RNN提取特征; 2)RNN主要是将CNN输出的特征序列转换为输出; 3)CTC为翻译层,得到最终的预测结果,由于CTC适合不知道输入…

CRNN代码笔记

CRNN代码笔记 主要由五个模块组成: 数据集的加载与切分CRNN代码复现训练过程预测过程训练过程中对的评估 文章目录 CRNN代码笔记数据集的加载与切分RCNN模型构建训练部分训练辅助函数注意超参数设置判断cuda是否可用,是则基于GPU训练,否则用…

基于CRNN的文本识别

文章目录 0. 前言1. 数据集准备2.构建网络3.数据读取4.训练模型 0. 前言 至于CRNN网络的细节这里就不再多言了,网上有很多关于crnn的介绍,这里直接讲一下代码的实现流程 1. 数据集准备 CRNN是识别文本的网络,所以我们首先需要构建数据集&a…

CRNN论文翻译——中文版

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers-translation An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Applicatio…

CRNN论文笔记

0. 前言 在这篇论文《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》所讲述的内容便是大名鼎鼎的CRNN网络,中实现了端到端的文本识别。 论文地址 Github地址 该网络具有如下的特点: 1)该模…

CRNN详解

一.概述 常用文字识别算法主要有两个框架: CNNRNNCTC(CRNNCTC)CNNSeq2SeqAttention 本文介绍第一种方法。 CRNN是一种卷积循环神经网络结构,用于解决基于图像的序列识别问题,特别是场景文字识别问题。 文章认为文字识别是对序列的预测方法…

CRNN模型

介绍: 是目前较为流行的图文识别模型,可识别较长的文本序列, 它利用BLSTM和CTC部件学习字符图像中的上下文关系, 从而有效提升文本识别准确率,使得模型更加鲁棒。 CRNN是一种卷积循环神经网络结构,用于解决…

CRNN

CRNN详解:https://blog.csdn.net/bestrivern/article/details/91050960 https://www.cnblogs.com/skyfsm/p/10335717.html 1 概述 传统的OCR识别过程分为两步:单字切割和分类任务。现在更流行的是基于深度学习的端到端的文字识别,即我们不需…

论文阅读 - CRNN

文章目录 1 概述2 模型介绍2.1 输入2.2 Feature extraction2.3 Sequence modeling2.4 Transcription2.4.1 训练部分2.4.2 预测部分 3 模型效果参考资料 1 概述 CRNN(Convolutional Recurrent Neural Network)是2015年华科的白翔老师团队提出的,直至今日&#xff0c…

文本识别网络CRNN

文本识别网络CRNN 简介网络结构CNN层LSTM层CTC Loss 代码实现 简介 CRNN,全称Convolutional Recurrent Neural Network,卷积循环神经网络。 它是一种基于图像的序列识别网络,可以对不定长的文字序列进行端到端的识别。 它集成了卷积神经网络…

CRNN——文本识别算法

常用文字识别算法主要有两个框架: CNNRNNCTC(CRNNCTC)CNNSeq2SeqAttention 文章认为文字识别是对序列的预测方法,所以采用了对序列预测的RNN网络。通过CNN将图片的特征提取出来后采用RNN对序列进行预测,最后通过一个CTC的翻译层得到最终结果…

OCR论文笔记系列(一): CRNN文字识别

👨‍💻作者简介:大数据专业硕士在读,CSDN人工智能领域博客专家,阿里云专家博主,专注大数据与人工智能知识分享,公众号:GoAI的学习小屋,免费分享书籍、简历、导图等资料,更有交流群分享AI和大数据,加群方式公众号回复“加群”或➡️点击链接。 🎉专栏推荐:➡️点…

CRNN——卷积循环神经网络结构

CRNN——卷积循环神经网络结构 简介构成CNNMap-to-Sequence 图解RNNctcloss序列合并机制推理过程编解码过程 代码实现 简介 CRNN 全称为 Convolutional Recurrent Neural Network,是一种卷积循环神经网络结构,主要用于端到端地对不定长的文本序列进行识…

java bean的生命周期

文章转载来自博客园:https://www.cnblogs.com/kenshinobiy/p/4652008.html Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例&#xf…

Spring创建Bean的生命周期

1.Bean 的创建生命周期 UserService.class —> 无参构造方法(推断构造方法) —> 普通对象 —> 依赖注入(为带有Autowired的属性赋值) —> 初始化前(执行带有PostConstruct的方法) —> 初始…

Bean的生命周期(不要背了记思想)

文章内容引用自 咕泡科技 咕泡出品,必属精品 文章目录 1. 应付面试2 可以跟着看源码的图3 学习Bean 的生命周期之前你应该知道什么4 Bean 的完整生命周期 1. 应付面试 你若是真的为面试而来,请把下面这段背下来,应付面试足矣 spring的bean的…

简述 Spring Bean的生命周期

“请你描述下 Spring Bean 的生命周期?”,这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点。 其实要记忆该过程,还是需要我们先去理解,本文将从以下两方面去帮助理解 Bean 的生命周期: 生…