【论文解读】图像序列识别:CRNN技术在场景文本识别中的应用与突破(附论文地址)

论文地址:https://arxiv.org/pdf/1507.05717
这篇文章的标题是《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》,作者是Baoguang Shi, Xiang Bai和Cong Yao,来自中国武汉的华中科技大学电子信息与通信学院。文章主要研究了基于图像的序列识别问题,特别是场景文本识别,这是基于图像的序列识别中最重要和最具挑战性的任务之一。以下是对论文内容的解读:
研究背景与动机
该论文主要集中在解决基于图像的序列识别问题,尤其是场景文本识别。以下是研究背景和动机的几个关键点:
-
深度学习在视觉任务中的成功:近年来,深度学习,特别是深度卷积神经网络(DCNN)在各种视觉任务中取得了巨大成功。然而,大多数相关工作集中在对象类别的检测或分类上,而不是序列识别。
-
序列识别的独特挑战:与一般的对象识别不同,序列识别(例如场景文本、手写文本和乐谱)要求系统预测一系列对象标签,而不是单个标签。这些序列对象的长度可能会有显著变化,这使得直接应用DCNN模型变得困难,因为它们通常处理固定尺寸的输入和输出。
-
现有方法的局限性:现有的基于DCNN的场景文本识别方法通常需要先检测单个字符,然后使用DCNN模型进行识别,这要求训练一个强大的字符检测器来准确检测和裁剪原始单词图像中的每个字符。此外,将场景文本识别视为图像分类问题的方法需要一个大型的、包含数百万类别的模型,这难以泛化到其他类型的序列对象。
-
序列建模的需求:序列识别问题需要能够捕捉序列内部的上下文信息,这是传统的DCNN模型所不具备的。递归神经网络(RNN)是为处理序列而设计的,但它们通常需要将输入对象图像转换为图像特征序列的预处理步骤,这限制了现有基于RNN的系统无法以端到端的方式进行训练和优化。
-
端到端训练的需求:为了克服现有方法的局限性,需要一个能够端到端训练的系统,即从输入图像直接到输出序列标签,无需进行复杂的预处理或多个分离的步骤。
-
实际应用的可行性:在现实世界的应用场景中,需要一个既有效又紧凑的模型,以便能够部署在资源受限的设备上。
基于这些背景和动机,论文提出了一种新的神经网络架构——卷积递归神经网络(CRNN),它结合了DCNN和RNN的优势,能够处理任意长度的序列,无需字符分割或水平尺度归一化,并且可以端到端地训练,从而在场景文本识别和其他图像序列识别任务中取得了显著的性能提升。
网络结构

CRNN
文章的主要贡献是提出了一种新的神经网络模型,名为卷积递归神经网络(CRNN),它是深度卷积神经网络(DCNN)和递归神经网络(RNN)的结合。CRNN具有以下几个显著优势:
-
可以直接从序列标签(例如单词)中学习,不需要详细的注释(例如字符)。
-
与DCNN一样,能够直接从图像数据中学习信息丰富的表示,不需要手工特征或预处理步骤。
-
与RNN一样,能够产生标签序列。
-
不受序列对象长度的限制,只需要在训练和测试阶段进行高度归一化。
-
在场景文本(单词识别)上的性能优于或与现有技术相当。
-
包含的参数比标准DCNN模型少得多,占用的存储空间更少。
网络架构

网络架构由卷积层、循环层和转录层三部分组成,卷积层自动从每个输入图像中提取特征序列,循环层对卷积层输出的特征序列的每一帧进行预测,转录层将循环层的逐帧预测转换为标签序列。CRNN可以与一个损失函数一起联合训练。
-
卷积层:使用标准的CNN模型中的卷积和最大池化层(去除全连接层)来从输入图像中提取序列化的特征表示。
-
循环层:构建在卷积层之上,使用深度双向循环神经网络,对特征序列的每一帧进行预测,输出标签分布。
-
转录层:采用Connectionist Temporal Classification (CTC) 层定义的条件概率,将逐帧预测转换为最终的标签序列。
实验结果
该论文使用了包括IIIT-5K、Street View Text和ICDAR数据集在内的标准基准测试,证明了所提出算法相对于先前技术的优势。此外,所提出的算法在基于图像的音乐乐谱识别任务中表现良好,明显验证了其通用性。
-
IIIT-5K:包含3000张从互联网收集的裁剪过的单词图像,每个图像与一个50词的词汇表关联。
-
Street View Text (SVT):包含249张来自Google街景的图像,从中裁剪出647个单词图像,每个图像与一个50词的词汇表关联。
-
ICDAR:有两个数据集,ICDAR 2003 (IC03) 包含251张场景图像和标记的文本边框,ICDAR 2013 (IC13) 继承了IC03的大部分数据,包含1015个地面真实裁剪过的单词图像。
在实验部分,作者使用了合成数据集进行训练,并在多个真实世界的测试数据集上进行了测试,没有在它们的训练数据上进行微调。尽管CRNN模型仅使用合成文本数据进行训练,但它在标准文本识别基准的真实图像上表现良好。

为了进一步了解与其它文本识别方法相比,我们所提出算法的优点,我们提供了在一些特性上的综合比较,这些特性名称为E2E Train,Conv Ftrs,CharGT-Free,Unconstrained和Model Size,如下表所示。

-
E2E Train:这一列是为了显示某种文字阅读模型是否可以进行端到端的训练,无需任何预处理或经过几个分离的步骤,这表明这种方法对于训练是优雅且干净的。
-
Conv Ftrs:这一列表明一个方法是否使用从训练图像直接学习到的卷积特征或手动特征作为基本的表示。
-
CharGT-Free:这一列用来表明字符级标注对于训练模型是否是必要的。由于CRNN的输入和输出标签是序列,因此字符级标注是不必要的。
-
Unconstrained:这一列用来表明训练模型是否受限于一个特定的字典,是否不能处理字典之外的单词或随机序列。注意尽管最近通过标签嵌入和增强学习学习到的模型取得了非常有竞争力的性能,但它们受限于一个特定的字典。
-
Model Size:这一列报告了学习模型的存储空间。在CRNN中,所有的层有权重共享连接,不需要全连接层。因此,CRNN的参数数量远小于CNN变体所得到的模型。我们的模型有830万个参数,只有33MB RAM(每个参数使用4字节单精度浮点数),因此可以轻松地移植到移动设备上。
评估指标
准确率:在不同数据集上,CRNN模型识别正确的单词或字符的比率。
编辑距离:在音乐符号识别任务中,预测的音高序列与真实标签序列之间的平均编辑距离。
应用案例
论文探讨了CRNN在光学音乐识别(OMR)问题上的应用,展示了CRNN在不同类型数据集(Clean, Synthesized, Real-World)上的性能。

结论与贡献
文章的结论部分强调了CRNN作为一种新型神经网络架构的优势,它结合了CNN和RNN的优点,能够处理不同尺寸的输入图像,并产生不同长度的预测。CRNN不需要详细的个体元素注释,且由于放弃了传统神经网络中使用的全连接层,因此模型更紧凑、效率更高。这些特性使得CRNN成为基于图像的序列识别问题的优秀方法。作者还指出,提高CRNN的速度并使其在实际应用中更加实用是未来值得探索的方向。
相关文章:
【论文解读】图像序列识别:CRNN技术在场景文本识别中的应用与突破(附论文地址)
论文地址:https://arxiv.org/pdf/1507.05717 这篇文章的标题是《An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition》,作者是Baoguang Shi, Xiang Bai和Cong Yao,…...
Vue3+CesiumJS相机定位camera
new Cesium.Camera (scene) 摄像机由位置,方向和视锥台定义。 方向与视图形成正交基准,上和右视图x上单位矢量。 视锥由6个平面定义。每个平面都由 Cartesian4 对象表示,其中x,y和z分量定义垂直于平面的单位矢量,w分量…...
turbo译码算法MAX, MAX_SCALE and MAX_STAR的比较
在Turbo码的译码算法中,MAX、MAX_SCALE和MAX_STAR是涉及对数似然比(LLR)计算时,对MAP(最大后验概率)算法或其变种Log-MAP算法中分支度量计算的几种不同处理方式。下面是对这三种方法的比较: 1.…...
关于HarmonyOS的学习
day31 购物车案例 一、加入购物车 1、点击按钮后,把当前这个列表的数据拿到,应该存储到一个数组里面 --- 数据结构,把数据存储进行数组2、假如已经把所有的数据添加数组完毕,最终应该存储进购物车里面,所谓的购物车说…...
【雅特力AT32】搭建模板工程及GPIO点灯操作
目录 AT32模板工程建立及点灯操作 建立AT32模板工程 AT32点灯操作 LED原理图GPIO寄存器LED源码分析 建立AT32模板工程 从0到编译运行详细搭建保姆教程: 【雅特力AT32】Keil 环境:搭建标准库模板工程、使用 AT-Link、Debug 里选择 CMSIS-DAP调试器 下面做…...
实战千问2大模型第三天——Qwen2-VL-7B(多模态)视频检测和批处理代码测试
画面描述:这个视频中,一位穿着蓝色西装的女性站在室内,背景中可以看到一些装饰品和植物。她双手交叉放在身前,面带微笑,似乎在进行一场演讲或主持活动。她的服装整洁,显得非常专业和自信。 一、简介 阿里通义千问开源新一代视觉语言模型Qwen2-VL。其中,Qwen2-VL-72B在大…...
数据库索引底层数据结构之B+树MySQL中的页索引分类【纯理论干货,面试必备】
目录 1、索引简介 1.1 什么是索引 1.2 使用索引的原因 2、索引中数据结构的设计 —— B树 2.1 哈希 2.2 二叉搜索树 2.3 B树 2.4 最终选择之——B树 2.4.1 B树与B树的对比(面向索引)【面试题】 3、MySQL中的页 3.1 页的使用原因 3.2 页的结构 3.2.1 页文件头和页文件…...
编译QT源码时的configure参数须知
文章目录 一、configure help原文二、configure help机译三、features 执行命令得到configure帮助文件 qtsrc/configure --help一、configure help原文 Usage: configure [options] [-- cmake-options]This is a convenience script for configuring Qt with CMake. Options…...
如何利用人工智能大模型来进行数字化营销?
这是一本关于如何利用人工智能大模型来进行数字化营销并驱动业绩增长的书。人工智能大模型是指那些具有超大规模的参数和数据的人工智能模型,它们能够在各种复杂的任务上表现出惊人的能力。 在本书中,你将学习到如何在电商、广告和用户增长等数字化营销业…...
【MRI基础】回波序列长度-echo train length ETL概念
回波序列长度 回波序列长度 (echo train length, ETL) 是磁共振成像 (MRI) 中的一个重要参数,它对图像采集时间和图像质量有显著影响。ETL 是指在单个激励脉冲之后的 MRI 序列中采集的回波数量。通过增加 ETL,可以在一个重复时间 (TR) 内收集多个回波&a…...
(179)时序收敛--->(29)时序收敛二九
1 目录 (a)FPGA简介 (b)Verilog简介 (c)时钟简介 (d)时序收敛二九 (e)结束 1 FPGA简介 (a)FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域…...
[Visual Stuidio 2022使用技巧]2.配置及常用快捷键
使用vs2022开发WPF桌面程序时常用配置及快捷键。 语言:C# IDE:Microsoft Visual Studio Community 2022 框架:WPF,.net 8.0 一、配置 1.1 内联提示 未开启时: 开启后: 开启方法: 工具-选…...
每日奇难怪题(持续更新)
1.以下程序输出结果是() int main() {int a 1, b 2, c 2, t;while (a < b < c) {t a;a b;b t;c--;}printf("%d %d %d", a, b, c); } 解析:a1 b2 c2 a<b 成立 ,等于一个真值1 1<2 执行循环体 t被赋值为1 a被赋值2 b赋值1 c-- c变成1 a<b 不成立…...
江协科技STM32学习- P13 TIM定时器中断
🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝…...
git github仓库管理
原文链接:git github仓库管理 拉取镜像 github的仓库有两种下载方式,http和ssh,http是对外公开的,可以直接clone,ssh的一般是自己的或内部的仓库,仓库需要配置ssh-key才能使用git clone. 或者直接网页下载 #https git clone https://github.com/git/git.git #ssh…...
【JavaEE】线程安全性问题,线程不安全是怎么产生的,该如何应对
产生线程不安全的原因 在Java多线程编程中,线程不安全通常是由于多个线程同时访问共享资源而引发的竞争条件。以下是一些导致线程不安全的常见原因: 共享可变状态:当多个线程对共享的可变数据进行读写时,如果没有适当的同步机制&…...
低代码-赋能新能源汽车产业加速前行
在“双碳”战略目标的引领下,全球新能源汽车产业正经历着前所未有的发展和变革,新能源汽车整车制造成为绿色低碳转型的重要领域。在政府的大力扶持下,新能源整车制造领域蓬勃发展,已成为全球汽车产业不可逆转的重要趋势。新能源汽…...
基于UDP的简易网络通信程序
目录 0.前言 1.前置知识 网络通信的大致流程 IP地址 端口号(port) 客户端如何得知服务器端的IP地址和端口号? 服务器端如何得知客户端的IP地址和端口号? 2.实现代码 代码模块的设计 服务器端代码 成员说明 成员实现 U…...
AI大模型在知识管理平台上的应用:泛微·采知连实现自动采集.精准搜索.智能问答.主动推荐
AI技术的发展,正在推动组织知识管理模式发生变革。知识管理系统通过各种应用实现知识体系落地,当前聚焦于整合生成式AI技术,以提升业务效率。 组织在数字化进程中面临着知识增量增多、知识更新频率变快、知识与业务结合更紧密等挑战ÿ…...
JavaEE:文件内容操作(一)
文章目录 文件内容的读写---数据流字节流和字符流打开和关闭文件文件资源泄漏try with resources 文件内容的读写—数据流 文件内容的操作,读文件和写文件,都是操作系统本身提供了API,在Java中也进行了封装. Java中封装了操作文件的这些类,我们给它们起了个名字,叫做"文…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
