【Keras计算机视觉OCR】文字识别算法中DenseNet、LSTM、CTC、Attention的讲解(图文解释 超详细)

news2025/1/12 7:53:51

觉得有帮助麻烦点赞关注收藏~~~

一、OCR文字识别的概念

利用计算机自动识别字符的技术,是模式识别应用的一个重要领域。人们在生产和生活中,要处理大量的文字、报表和文本。为了减轻人们的劳动,提高处理效率,从上世纪50年代起就开始探讨文字识别方法,并研制出光学字符识别器。

OCR(Optical Character Recognition)图像文字识别是人工智能的重要分支,赋予计算机人眼的功能,可以看图识字。如图6-1所示,图像文字识别系统流程一般分为图像采集、文字检测、文字识别及结果输出四个部分。

二、文字识别算法 

卷积神经网络是图像识别的主要方法,也同样适用于字符的识别,但文本识别不同于其他的图像识别,文本行的字符间是一个序列,彼此之间也有一定关系,同一文本行上的不同字符可以互相利用上下文信息,因此可以采用处理序列的方法例如循环神经网络来表示,CNN和RNN两种网络相结合可以提高识别精度,CNN用来提取图像的深度特征,RNN用来对序列的特征进行识别,以符合文本序列的性质,从而形成统一的端到端可训练模型

下面将介绍DenseNet+LSTM+CTC的结合方式 将特征提取 序列预测和解码集成到一个统一的网络模型中

1:基于DenseNet网络模型的序列特征提取

DenseNet是一种有效的图像识别算法,该网络的优点在于减轻了深层网络梯度消失问题,增强了特征图的传播利用率,减少了模型参数量,在ResNet的基础上进一步加强了特征图之间的连接,构造了一种具有密集连接方式的卷积神经网络

DenseNet网络模型的核心组成部分是密集连接模块,这个模块中任意两层之间均直接的连接,即网络中的第一层、第二层 第L-1层的输出都会作为第L层的输入,同时第L层的特征图也会直接传递给后面所有层作为输入

 

 

2:基于LSTM结构的上下文序列特征提取 

文本行是一个序列,含有丰富的上下文信息,同一文本行中的不同字符可以互相利用上下文信息,这对于字符的识别具有重要的影响,一些模糊的字符在观察其上下文时更容易区分,在卷积网络之后,构建了一个循环网络,用于提取文本序列的上下文序列特征

双向LSTM能在访问之前信息的同时,访问字符之后的信息,故能从正反两个方向提取文本行中的语义信息,有助于文本行识别任务,因此 双向LSTM可以同时处理上文和下文信息来提取上下文序列特征 

 字符序列的解码方式

在文本识别网络模型中,LSTM输出的序列中的字符要与标签中字符的位置一一对应,若使用softmax函数作为损失函数进行训练,训练网络参数时需要在图像上标注出每个的位置信息,使用手工标注对其样本工作量非常大,所以需要解码使字符位置一一对应 下面介绍两种常用的机制

1:基于CTC解码机制

CTC机制常用于文字识别系统,解决序列标注问题中输入标签与输出标签的对齐问题,通过映射韩叔叔将其转换为预测序列,无序数据对齐处理,减少了工作量,被广泛用于图像文本识别的损失函数计算,多用于网络参数的优化

解码是模型在做预测的过程中将LSTM输出的预测序列通过分类器转换为标签序列的过程,解码过程中的分类方式为最优路径编码,输出计算概率最大的一条路径作为最终的预测序列,即在每个时间点输出概率最大的字符

 

 

2:Attention模型注意力机制解码方式 

注意力机制被广泛用于序列处理Seq2Seq任务中,注意力模型借鉴了人类视觉的选择性注意力机制,其核心目标是从众多信息中选出对当前任务目标来说重要的信息,忽略其他不重要的信息

对含有文本的图片而言,文本识别输出的结果的顺序取决于文本行中字符的前后位置信息,引入注意力机制可以起到定位的作用,从而突出字符的位置信息,解决序列对齐问题,因此不需要标注文本的位置

Attention模型的原理是计算当前输入序列与输出序列的匹配程度,在产生每一个输出时,会充分利用输入序列上下文信息,对同一序列中的不同字符赋予不同的权重。

 

 创作不易 觉得有帮助请点赞关注收藏~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPR学术报告学习-刘四新 主持

钱荣毅 道路空洞 1 设备 天线矩阵 不能完全覆盖调查区域, 存在差异: 难以发现动态发育特征, 数据采集难以实现3D 全覆盖, 高频上探测深度浅, 通道间存在差异。 数据需要校准。。。主要A-SCAN的地面抖动矫正。 异常区…

【EmonCMS】开源数据处理平台安装教程

EmonCMS 安装教程1.EmonCMS平台介绍:2. EmonCMS安装2.1在 Ubuntu中安装2.2.在树莓派中安装3.安装完毕Emoncms是作为该项目的一部分开发的开源web应用程序,用于处理、记录和可视化能源、温度和其他环境数据。Emoncms从OpenEnergyMonitor监控硬件接收数据&…

VS Code 上已有200万+ Java 开发者!

大家好,我们很高兴与大家分享一个好消息,现在 Visual Studio Code 上已有超过200万 Java 开发者,这要来自于长期社区以及用户的支持,所以谢谢你们! 对于11月的更新,我们为您带来了全新的代码编辑功能&…

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中,ant 会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。 还可…

类加载器和反射

1.通过全限定名:包名类名(类名可能会重复,所以要加包名),然后用流拷贝到内存中,并在内存中创建一个class对象用来存储这个class文件的成员信息 类加载过程http://t.csdn.cn/FDnaa 在验证之前会把该类中引…

CRM的开发

开发步骤1.首页的开发2.由首页跳转到登陆页面3.用户登录4.记住密码实现5.安全退出6.登录验证7.创建市场活动8.分页查询市场活动9.删除市场活动10.修改市场活动11.批量导出市场活动12.导入市场活动13.查看市场活动明细14.添加市场活动备注15.删除市场活动备注16.修改市场活动备注…

分分钟搭建出nginx的https服务

nginx添加https协议一、https是什么?二、创建步骤1.安装nginx2.创建证书三、验证四、浏览器访问在windows安装证书总结nginx 192.168.122.50一、https是什么? HTTPS (全称:Hypertext Transfer Protocol Secure )&…

分布式文件存储系统Minio,tuling,fox,p3 5:27

MinIO | 高性能,对Kubernetes友好的对象存储 一 分布式文件系统应用场景 fastDFS 缺点: 部署麻烦。因为文件名是自动生成的,所以如果要处理文件的话,还要经过额外的编码。Minio介绍 应用场景 互联网海量非结构化数据的存储需求…

Spring常见注解

普通CURD框架结构 1、controller 控制器(注入服务)用于标注控制层,相当于struts中的action层 2、service 服务(注入dao)用于标注服务层,主要用来进行业务的逻辑处理 3、repository/Mapper(实…

25.前端笔记-CSS-溢出的文字省略号展示

1、单行文本溢出显示省略号 满足条件: (1)先强制一行内显示文本 white-space:nowrap;/*默认不写,或值是normal自动换行*/) (2)超出的部分隐藏 overflow:hidden; (3)文字用省略号代…

ESPnet-SE 开源工具介绍

下面是我们整理的钱彦旻教授、张王优、李晨达在第二届SH语音技术研讨会和第七届Kaldi技术交流会的报告内容,如果有误,欢迎指正。 基本情况 今天我们主要是围绕ESPnet-SE这个工具做一个简单的介绍,我会大概讲一下ESPnet-SE的情况,…

一文了解宏内核和微内核

【推荐阅读】 纯干货,linux内存管理——内存管理架构(建议收藏) 轻松学会linux下查看内存频率,内核函数,cpu频率 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 需要多久才能看完linux内核源码? 内核是操…

微信小程序第五篇:页面弹出效果及共享元素动画

系列文章传送门: 微信小程序第一篇:自定义组件详解 微信小程序第二篇:七种主流通信方法详解 微信小程序第三篇:获取页面节点信息 微信小程序第四篇:生成图片并保存到手机相册 目录 一、page-caontainer 实现假页弹出 …

LDP协议介绍

LDP介绍 1.LDP协议概述 LDP(Label Distribution Protocol)规定了标签分发过程中的各种消息以及相关的处理过程。LSR之间将依据本地转发表中对应于一个特定FEC的入标签、下一跳节点、出标签等信息联系在一起,从而形成标签交换路径LSP。 2.L…

【Python恶搞】Python实现祝福单身狗的恶搞项目,快发给你的怨种大兄弟 | 附源码

前言 halo,包子们上午好 咱就说,谁还没有一个单身的小伙伴呢 今天这个代码主要是为了祝福咱们单身的小伙伴 咱就说废话不多说,直接上才艺 相关文件 关注小编,私信小编领取哟! 当然别忘了一件三连哟~~ 公众号&#x…

Kali Linux 又更新了!202.4新版本有哪些变化?

Kali Linux在今年最后一个月迎来了新版本,即2022.4,上次更新是在8月份,时隔4个月,Kali linux 又有哪些新变化呢? 更新内容: Microsoft Azure - Kali 已添加到 Microsoft Azure,但目前没有图形…

阿里云效 ssh公钥配置

准备工作 通过 SSH 协议在 Git 命令行访问 Codeup,需要具备以下几点: 本机已安装Git(安装教程参见安装Git)并保证版本大于1.9(通过git --version可获取本地的版本); 本机需要安装OpenSSH客户端…

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测

智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测 目录 智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测分类效果基本介绍模型参数程序设计参考资料分类效果 基本介绍 Bee-CNN蜜蜂算法优化卷积神经网络是一种模糊进化深度学习(优化权重和…

银行测试的优势在哪里?

为什么做金融类软件测试举个栗子,银行里的软件测试工程师。横向跟互联网公司里的测试来说,薪资相对稳定,加班少甚至基本没有,业务稳定。实在是测试类岗位中的香饽饽!一、什么是金融行业金融业是指经营金融商品的特殊行…