当前位置: 首页 > news >正文

CRNN介绍:用于识别图中文本的深度学习模型

CRNN:用于识别图中文本的深度学习模型

  • CRNN介绍:用于识别图中文本的深度学习模型
    • CRNN的结构
      • 组成部分
      • 工作原理
    • CRNN结构分析
      • 卷积层(Convolutional Layers)
      • 递归层(Recurrent Layers)
      • 转录层(Transcription Layer)
    • CRNN在文本识别中的应用
      • 识别不定长文本
      • 单词和场景文本的识别
      • 强大的泛化能力
    • CRNN的优势与局限性
      • 优势
      • 局限性

CRNN介绍:用于识别图中文本的深度学习模型

在计算机视觉和机器学习的领域中,文本识别是一个重要的研究领域,它旨在从图像中检测和识别文字。CRNN(Convolutional Recurrent Neural Network,卷积递归神经网络)是这个领域内的一个代表性的框架,它融合了卷积神经网络(CNN)和递归神经网络(RNN),特别适用于对图像中的序列文本进行识别。
在这里插入图片描述

CRNN的结构

组成部分

CRNN模型主要包含三个部分:一个用于提取图像特征的卷积层序列、一个用于序列建模的递归层序列和一个转录层,将递归层的输出解码为一个文本序列。

工作原理

卷积层负责提取图像的特征,这些特征随后被展平并输入到递归层。在递归层中,RNN处理输入序列,并且能够在序列的每个时间步捕捉上下文信息。这对于理解文本的意义尤其重要,因为文本的特定字符通常需要对前文和后文的了解。最后是转录层(通常使用CTC即Connectionist Temporal Classification)对RNN的输出进行解码,生成最终的文本序列。

CRNN结构分析

卷积层(Convolutional Layers)

CRNN的第一部分是一系列卷积层,用于从输入图像中提取视觉特征。设输入图像为 I ,通过 L 层卷积操作后得到的特征图(feature map)为:

F L = c o n v ( I ; W L , b L ) F^L = conv(I; W^L, b^L) FL=conv(I;WL,bL)

其中 W^L和 b^L 分别代表第 L 层的卷积权重和偏置。卷积操作提取的特征 F^L将被送入后续的递归层进行进一步的处理。

递归层(Recurrent Layers)

递归层的作用是对特征序列进行建模,捕捉序列中的时间依赖性。最常用的RNN单元是长短时记忆(LSTM),它在处理长序列数据时表现出色。LSTM有三个门控机制:遗忘门 f_t,输入门 i_t 和输出门 o_t 。LSTM单元中在时间步 t 的状态更新公式如下:

遗忘门:
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)

输入门:
i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)

输出门:
o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)

新记忆单元内容:
C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) C~t=tanh(WC[ht1,xt]+bC)

记忆单元更新:
C t = f t ∗ C t − 1 + i t ∗ C ~ t C_t = f_t * C_{t-1} + i_t * \tilde{C}_t Ct=ftCt1+itC~t

隐藏状态更新:
h t = o t ∗ tanh ⁡ ( C t ) h_t = o_t * \tanh(C_t) ht=ottanh(Ct)

在CRNN中,通常使用双向LSTM(Bi-LSTM),在每个时间步 t 同时考虑先前h_{t-1} 和后续h_{t+1} 的上下文信息。

转录层(Transcription Layer)

CRNN的最后部分是转录层,负责将递归层的输出映射到最终的序列标签。转录通常通过CTC(Connectionist Temporal Classification)完成,CTC利用概率论原理解决无对齐数据的序列学习问题,其目标是最大化条件概率:

P ( π ∣ x ) P(\pi|x) P(πx)

其中π表示一个路径,它通过删除重复的标签和空白标签来映射到最终的标签序列l 。CTC的目标函数定义如下:

P ( l ∣ x ) = ∑ π ↦ l P ( π ∣ x ) P(l|x) = \sum_{\pi \mapsto l} P(\pi|x) P(lx)=πlP(πx)

该函数对所有可能映射到标签序列 l 的路径π的概率求和。

CRNN在文本识别中的应用

识别不定长文本

CRNN特别适用于识别图像中的不定长文本。它不需要预先定义文本的长度,这给识别流程带来了极大的灵活性。

单词和场景文本的识别

CRNN不仅可以在图像中识别单个字符或者单词,还能很好地工作在识别自然场景中的文本,如街道标志、广告牌等。

强大的泛化能力

CRNN已被证实在多个文本识别数据集上表现出色,并能够很好地泛化到新的、未见过的图像。

CRNN的优势与局限性

优势

  • 端到端学习: CRNN能够从原始图像直接学习到文本识别所需要的最终输出,无需手动特征提取或其他预处理步骤。
  • 对于图像扭曲的鲁棒性: CRNN对图像的畸变和扭曲有很好的适应性,提高了模型在现实世界应用的实用性。

局限性

  • 计算成本: CRNN结合了CNN和RNN两个复杂的模型,可能导致较高的计算成本。
  • 训练数据: 获得大量带有标注的训练数据对于训练CRNN模型来说至关重要,但这有时候可能既昂贵又耗时。

相关文章:

CRNN介绍:用于识别图中文本的深度学习模型

CRNN:用于识别图中文本的深度学习模型 CRNN介绍:用于识别图中文本的深度学习模型CRNN的结构组成部分工作原理 CRNN结构分析卷积层(Convolutional Layers)递归层(Recurrent Layers)转录层(Transc…...

机器人运动学林沛群——变换矩阵

对于仅有移动,由上图可知: A P B P A P B o r g ^AP^BP^AP_{B org} APBPAPBorg​ 对于仅有转动,可得: A P B A R B P ^AP^A_BR^BP APBA​RBP 将转动与移动混合后,可得: 一个例子 在向量中&#xff…...

阿里云增加数据库访问白名单

阿里云增加数据库访问白名单 概况 我们希望在外网访问数据库时,可能会遇到无法连接的问题,这有可能是被拦截了。这时就需要去查看自己的ip有没有在白名单里面,没有的话就把ip加入到白名单。 路径 阿里云控制台-搜索RDS-进入RDS管理控制台…...

Rust基础拾遗--辅助功能

Rust基础拾遗 前言1.错误处理1.1 panic为什么是 Result 2. create与模块3. 宏4. 不安全代码5. 外部函数 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总,读者通读此系列文章就可以轻松的把该语言基础捡起来。 1.错误处理 Rust 中的两类错误处理…...

【数据结构】双向链表(链表实现+测试+原码)

前言 在双向链表之前,如果需要查看单链表来复习一下,链接在这里: http://t.csdnimg.cn/Ib5qS 1.双向链表 1.1 链表的分类 实际中链表的结构非常多样,以下情况组合起来就有8种链表结构: 1.1.1 单向或者双向 1.1.2 …...

ChatGPT 3.5与4.0:深入解析技术进步与性能提升的关键数据

大家好,欢迎来到我的博客!今天我们将详细比较两个引人注目的ChatGPT版本——3.5和4.0,通过一些关键数据来深入解析它们之间的差异以及4.0版本的技术进步。 1. 模型规模与参数 ChatGPT 3.5: 参数数量:约1.7亿个模型层数…...

前端JavaScript篇之ajax、axios、fetch的区别

目录 ajax、axios、fetch的区别AjaxAxiosFetch总结注意 ajax、axios、fetch的区别 在Web开发中,ajax、axios和fetch都是用于与服务器进行异步通信的技术,但它们在实现方式和功能上有所不同。 Ajax 定义与特点:Ajax是一种在无需重新加载整个…...

【PyTorch][chapter 15][李宏毅深度学习][Neighbor Embedding-LLE]

前言: 前面讲的都是线性降维,本篇主要讨论一下非线性降维. 流形学习(mainfold learning)是一类借鉴了拓扑流行概念的降维方法. 如上图,欧式距离上面 A 点跟C点更近,距离B 点较远 但是从图形拓扑结构来看, …...

在JSP中实现JAVABEAN

在JSP中实现JAVABEAN 问题陈述 创建Web应用程序以连接数据库并检索作者名、地址、城市、州及邮政编码等与作者的详细信息。JavaBean组件应接受作者ID、驱动程序名及URL作为参数。信息要从authors表中检索。 解决方案 要解决上述问题,需要执行以下任务: 创建Web应用程序。创…...

智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现飞蛾扑火(MFO)(内含完整源码) 源码设计 %%%% clear all clc SearchAgents_no=100; % Number of search ag...

LSF 主机状态 unreach 分析

在LSF集群运行过程中,有主机状态变为 unreach。熟悉LSF的朋友都知道主机状态为 unreach 表示主机上的 SBD 服务中断服务了,但其它服务 LIM 和 RES 还在正常运行。 影响分析 那么主机上的 SBD 服务中断的影响是什么呢? 我们需要先明白 SBD …...

SpringBoot日志

自定义日志 导入的是slf4j的Logger类 package app.controller;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.GetMapping;RestController pu…...

006集——where语句进行属性筛选——arcgis

在arcgis中, dBASE 文件除了 WHERE 语句以外,不支持 其它 SQL 命令。选择窗口如下: 首先,我们了解下什么是where语句。 WHERE语句是SQL语言中使用频率很高的一种语句。它的作用是从数据库表中选择一些特定的记录行来进行操作。WHE…...

《动手学深度学习(PyTorch版)》笔记8.3

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…...

静态时序分析:建立时间分析

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中,建立时间检查约束了触发器时钟引脚(时钟路径)和输入数据引脚(数据路径)之间的时序关系&#x…...

深入探究 HTTP 简化:httplib 库介绍

✏️心若有所向往,何惧道阻且长 文章目录 简介特性主要类介绍httplib::Server类httplib::Client类httplib::Request类httplib::Response类 示例服务器客户端 总结 简介 在当今的软件开发中,与网络通信相关的任务变得日益普遍。HTTP(Hypertext…...

ARP欺骗攻击利用之抓取https协议的用户名与密码

1.首先安装sslstrip 命令执行:apt-get install sslstrip 2.启动arp欺骗 arpspoof -i ech0 -t 192.168.159.148 192.168.159.2 arpspoof -i ech0(网卡) -t 目标机ip 本地局域网关 3.命令行输入: vim /etc/ettercap/etter.conf进入配置文件 找到下红框的内容&a…...

<s-table>、<a-table>接收后端数据

对于 中的 <template #bodyCell“{ column, record }”> &#xff1a; <s-tableref"table":columns"columns":data"loadData":alert"options.alert.show"bordered:row-key"(record) > record.id":tool-config&…...

[数学]高斯消元

介绍 用处&#xff1a;求解线性方程组 加减消元法和代入消元法 这里引用了高斯消元解线性方程组----C实现_c用高斯消元法解线性方程组-CSDN博客 改成了自己常用的形式&#xff1a; int gauss() {int c, r; // column, rowfor (c 1, r 1; c < n; c ){int maxx r; //…...

【Linux】gdb调试与make/makefile工具

目录 导读 1. make/Makefile 1.1 引入 1.2 概念 1.3 语法规则 1.4 示例 2. Linux调试器-gdb 2.1 引入 2.2 概念 2.3 使用 导读 我们在上次讲了Linux编辑器gcc\g的使用&#xff0c;今天我们就来进一步的学习如何调试&#xff0c;以及makefile这个强大的工具。 1. mak…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...