带你读AI论文丨针对文字识别的多模态半监督方法

news2025/7/9 0:18:23
摘要:本文提出了一种针对文字识别的多模态半监督方法,具体来说,作者首先使用teacher-student网络进行半监督学习,然后在视觉、语义以及视觉和语义的融合特征上,都进行了一致性约束。

本文分享自华为云社区《一种针对文字识别的多模态半监督方法》,作者: Hint 。

摘要

直到最近,公开的真实场景文本图像的数量仍然不足以训练场景文本识别器。因此,当前大多数的训练方法都依赖于合成数据并以全监督的方式运行。然而,最近公开的真实场景文本图像的数量显着增加,包括大量未标记的数据。利用这些资源需要半监督方法;然而,这些方法不能直接适配文字识别这类视觉语言的多模态结构。因此,本文提出了半监督多模态文本识别器(SemiMTR),它在训练阶段中,利用每个模态的未标记数据。此外,本文的方法并不需要额外的训练阶段,保持了当前的三阶段多模态训练策略。

首先,在视觉模型方面,本文提出了一个将自监督预训练和强监督训练结合的单阶段训练模型。然后,语言模型是在一个大型文本语料库上进行自监督预训练。得到两个模态的预训练模型之后,对文字识别进行半监督训练。本文采用的是teacher-student的结构,具体来说,对一张文本图像分别进行弱数据扩增和强数据扩增,然后对两个网络不同模态的输出进行一致性约束。大量实验证实本文的方法优于当前的训练方案,并在多个场景文本识别基准上取得了最先进的结果。

方法

1. 识别模型框架:

首先,本文的文字识别框架采用的是ABINet。大致流程如下:首先,视觉模型首先提取图像的特征序列并将其解码成字符序列;接着,将字符序列输入给语言模型,得到文本的语义特征;最后,使用一个融合模块,将视觉和语义特征进行融合,得到最终的识别结果。为了进一步提高识别性能,可以采用迭代的方式,多次对识别结果进行微调。

2. 视觉模型预训练

本文将自监督预训练与强监督预训练融合到了一个统一的框架下。自监督预训练采用的是基于对比学习的方法,在自监督的同时,也会对这些数据进行有标注的强监督预训练。

3. 基于一致性约束的半监督训练

首先,本文采用的是一个常见的teacher-student网络,进行半监督训练。具体来说,将前面得到的预训练模型作为teacher和student网络的初始化模型,然后对同一张输入图像进行弱数据扩增和强数据扩增,并分别输入到teacher和student网络中;将teacher网络的预测结果作为伪标签对student的输出进行监督。区别于一般的半监督学习,本文的方法对识别模型的各个模态都进行不同程度的一致性约束,比如视觉模型,语言模型和融合模型的输出。

实验

可以看到,本文的结果在多个数据集上取得了一致性的提升。

可以看到,在视觉预训练阶段,统一自监督预训练和强监督预训练比分阶段的训练效果要好。

可以看到,使用交叉熵loss作为一致性约束loss效果最好。

由于本文采用的识别模型,具有视觉、语言和融合的模态,所以在进行一致性约束的时候,teacher网络和student网络可以采用不同的特征分别进行对齐。从上表可以看到,当teacher和student网络中的vision,language和fusion模块分别进行对齐的时候,效果最好。

论文链接:[2205.03873] Multimodal Semi-Supervised Learning for Text Recognition (arxiv.org)

点击关注,第一时间了解华为云新鲜技术~

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

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

相关文章

构建高性能内存队列:Disruptor

1、 背景 Java中有哪些队列 ArrayBlockingQueue 使用ReentrantLock LinkedBlockingQueue 使用ReentrantLock ConcurrentLinkedQueue 使用CAS 等等 我们清楚使用锁的性能比较低,尽量使用无锁设计。接下来就我们来认识下Disruptor。 2、Disruptor简单使用 github地…

Web3中文|可判115年监禁的FTX创始人SBF即将被引渡到美国

巴哈马总检察长办公室在宣布逮捕FTX前CEO Sam Bankman-Fried时,指出他很可能应美国要求被引渡。 一个多星期后,美国广播公司新闻报道称 ,SBF于12月20日签署了引渡文件。 另据彭博社12月20日的一份报告称,该交易所创始人SBF于12月…

Centos7安装配置Minio

Background 官方下载地址:https://github.com/minio/minio/releases 这里给出本次使用的一个版本:minio-2021-05-11T23:27:41Z,提取码:king 1、下载minio文件夹 其他的版本的相关命令可能发生变化,这里只是针对我提供…

基于GIS的生态安全格局构建之生态阻力面的建立

GIS前沿 一、数据来源介绍 (一)土地利用数据 土地利用数据来自国土资源三次调查数据(2018年),根据研究需要对其进行分析处理。 (二)生态安全等级数据 利用对从生态属性和生态干扰两方面选择的…

Junit5 + YAML 轻松实现参数化和数据驱动,让 App 自动化测试更高效(一)

登录:不同的用户名,不同的密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例 搜索:不同的搜索条件产生不同的搜索结果,搜索也是常见的测试项,单个搜索参数或者多种搜…

Java---正则表达式

目录 一、正则表达式的介绍 二、正则表达式的基本语法 (1)字符类 (2)预定义符 (3)数量词 三、正则表达式的具体实例 (1)判断电话号码是否符合规则 (2)…

git push踩坑记录【看注意事项】

记录一次git push的踩坑过程(详细在注意事项里,列出了具体的解决办法)。 push远程仓库命令 使用命令 git init git add . git commit -m "提交说明写在这里" git remote add origin gitgithub.com:xxx/surgical-robot.git git p…

4、常用类和对象

文章目录4、常用类和对象4.1 Object4.2 数组4.3 二维数组4.4 二维数组 九层妖塔4.5 冒泡排序4.6 选择排序4.7 二分法查找4.8 字符串4.9 字符串拼接4.10 字符串比较4.11 字符串截断4.12 字符串替换4.13 字符串大小写转换4.14 字符串查询4.15 StringBuilder4.16 包装类4.17 日期类…

windows环境下python和gdal绑定方法

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 编译和安装gdal 此篇介绍的方法并不需要用到pip工具,可依据自己编译的gdal库来灵活绑定。 安装gdal主要是设置两个环境变量:一是gdal的动态库路径加入到path环境变量下,如下图: 二是…

vim的常规操作

Linux系统内置vi文本编辑器,vim是vi的增强版 vi和vim的三种模式 正常模式:默认模式,可以使用“上下左右”键来移动光标,也可以用删除、复制、粘体等功能插入模式:按i,I,o,O,a,A,r,R等任何一个字母进入命令行模式&…

django logging的StreamHandler的一个小用法

首先先了解下,logging的大致结构,它有一个内置处理器,还有一个django提供的内置记录器。基本上,日志模块就是由这俩组成的,他俩的关系,有点水渠理论的意思。就是说,处理器,和记录器&…

MCU-51:独立按键控制LED灯的动作

目录一、独立按键二、独立按键控制LED亮灭二、消除按键抖动2.1 按键的抖动2.2 控制LED灯状态-消除按键抖动三、独立按键控制LED显示二进制四、独立按键控制LED灯移位一、独立按键 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断…

微服务技术--认识微服务

技术栈: 认识微服务 服务架构演变 单体架构 将业务的功能集中在一个项目中开发,打成一个包部署优点: 架构简单部署成本低 缺点: 耦合度高 分布式架构 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发&…

黑盒测试用例设计 - 场景法

原理 现在的软件几乎都是用时间触发来控制流程的。测试时,可以以生动的描述出触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基…

[洛谷]P2234 [HNOI2002]营业额统计

[洛谷]P2234 [HNOI2002]营业额统计一、问题描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示二、问题分析1、算法标签2、思路分析三、代码实现一、问题描述 [洛谷]P2234 [HNOI2002]营业额统计 题目描述 Tiger 最近被公司升任为营业部经理,他上任后…

微服务系列 - Zookeeper下篇:源码解析

前言 关于zookeeper的入门到精通请阅读:微服务系列 - Zookeeper上篇 注:本内容仅用于个人学习笔记,如有侵扰,联系删除 参考文档:https://blog.csdn.net/mjb740074431/article/details/120173792 一、算法基础 Zook…

@Configuration注解

1.作用 Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。 2.基础运用 Configuration注解最常见的搭配使用有两个:Bean和Scope Bean:等价于Spring中的bean标签用于注册bean对象的&#xff…

SpringBoot 过滤器、拦截器、监听器对比及使用场景

一、关系图理解 二、区别 1.过滤器 过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁 可以对请求的URL进行过滤, 对敏感词过滤 挡在拦截器的外层 实现的是 javax.servlet.Filter 接口,是 Servlet 规范的一部分 在请求进入容器后,但…

Java 线程的六种状态及其简易转换

1.Java中线程的状态分为六种 NEW:初始状态,线程被创建,但是还没有调用start()方法。 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中”。 BLOCKED:阻塞状态,表示线程阻塞于…

IJCAI-2022 多级发射方法的脉冲神经网络

原文链接:CSDN-脉冲神经网络(SNN)论文阅读(四)-----IJCAI-2022 多级发射方法的脉冲神经网络 Multi-Level Firing with Spiking DS-ResNet: Enabling Better and Deeper Directly-Trained Spiking Neural Networks目录说…