摘要:受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR和 SRN。

当前的文本行识别器为拥有更强的序列语义能力,模型多采用CNN + RNN的结构,如目前使用十分广泛的两个识别器CRNN和Aster,这些模型取得了非常好的效果。然而由于RNN只能采用串行计算,在目前大量采用并行计算设备的前提下,RNN面临着明显的速度瓶颈。若弃用RNN只使用CNN,性能往往不尽如人意。在NLP领域,Ashish Vaswan[1]等人提出的Transformer模型在语言理解相关任务上十分成功,并优于CNN和RNN效果,展现出Transformer强大的序列建模能力。Transformer模型基于Attention实现,该操作可并行实现,因此该模型具有良好的并行性。

受Transformer模型的启发,目前一些学者将该结构应用到文本行识别中,以替代RNN,取得了良好的效果,如在HGA-STR[2]和 SRN[3]。下面对两种方法进行介绍,总体上,HGA-STR更接近原有的Transformer的结构,使用了和Transformer类似的解码结构,而SRN则是使用了Transformer unit进行特征提取,并采用该文作者提出的并行解码器,整个模型拥有更好的可并行性。为较好理解下面两篇文章,请参阅相关资料以了解Transformer的原理。

HGA-STR 简介

对于不规则文本,文本分布在二维空间上,将其转换成一维有一定难度,同时基于RNN的编码解码器无法做到并行,本文直接将2D的特征输入到attention-based 1D序列解码器,解码器采用Transformer中的解码器同样的结构。同时,在编码器部分,提取一个全局语义向量,与解码器的输入embedding向量合并,为解码器提供全局语义信息。该模型结构如图1所示。

图 1. 模型的基本结构

编码器介绍:该模型使用CNN进行特征提取,并保持输出的特征为二维。并使用池化操作得到一维向量,作为全局信息表示。

解码器介绍:编码器主要组件有:masked self-attention用来建模预测结果的依赖性;2D-attention用来连接编码器和解码器;以及一个前馈层。具体实现和Transformer文中的结构相同。同时为了更好的性能作者使用两个方向进行解码,结构如图2所示。

图 2.该方法使用双向解码器

该方法在多个英文基准数据集取得了较好的结果,具体结果可参见论文。在速度上作者和两种基于attention的方法进行对比有一定的优势,如表1所示。

表 1. 速度对比

在作者进行的对比试验中,一个比较有意思的现象是,在编码器里面添加Self-attention模块并不能提升模型性能,在解码器中添加才会对结果有提升,如表2所示。这表明原本的Transformer结构直接应用到文字识别任务上是不可行的,需要做相应的调整。

表 2. Self-attention性能对比

SRN简介

与上一方法不同的是,SRN采用完全不同的解码方式,并引入全局语义推理模块。就获取语义信息的方式而言,主流的Attention-based方法基于RNN来实现,是一种采用单向串行方式进行建模的方法,如图 3.(a)所示。这种方式有明显的不足:

1)仅仅感知了历史时刻的语义信息,而无法获取未来时刻的语义信息;

2)如果较早时刻解码出的错误字符,会为余下时刻的解码传递错误的语义信息,导致误差积累效应;

3)串行的解码模式是相对低效的,特别是在模型预测的环节。

图 3. 两种不同的传递语义信息的方法

如图4所示,SRN由四部分组成:基础网络Backbone、并行的视觉特诊提取模块(PVAM)、全局语义推理模块(GSRM) 和视觉语义融合的解码器(VSFD)。给定一张输入的文本图像,基于ResNet50 + Transformer unit的Backbone从中提取出视觉2D feature map V;之后PVAM会针对每个目标字符获取其相应的视觉特征G;GSRM会基于视觉特征G获取全局语义信息,并转化为每个目标字符的语义特征S;最后VSFD融合对齐的视觉特征和语义特征,预测出相应字符。在训练阶段和推断阶段,每个序列中各个字符之间是并行。

图 4. 方法的总体结构图

PVAM模块介绍:在Backbone输出了2D的视觉特征图之后,PVAM会针对文本行中的每个字符,计算出相应attention map, 通过将其与feature map 按像素加权求和,可得到每个目标字符对应的的视觉特征。另外,PVAM也用字符的阅读顺序取代上一时刻隐变量来引导计算当前时刻的attention map,实现了并行提取视觉特征的目的。

GSRM模块介绍:GSRM会基于全局语义信息进行推理。具体过程为,首先将视觉过程转换成语义特征,使用交叉熵损失进行监督,并对其概率分布取argmax得到初始的分类结果,同时通过分类结果获取每个字符的embedding向量,通过多层Transformer unit后,得到经语义推理模块修正的预测结果,同样使用交叉熵损失进行监督。

VSFD 模块介绍:对PVAM输出的对齐的视觉特征和GSRM输出的全局语义特征进行融合,最后基于融合后的特征进行预测输出。

该方法在多个英文基准数据集上取得了SOTA的结果。对于中文长文本的识别,SRN相对于其他识别方法也有明显优势,如表3所示。

表 3.中文数据集结果(TRW-L为长文本)

速度上,得益于整个模型的并行设计,SRN拥有较小的推理时延,如表4所示。

表 4.推理速度介绍

Reference

[1] https://arxiv.org/pdf/1706.03762.pdf

[2] https://arxiv.org/abs/1904.01375

[3] https://arxiv.org/pdf/2003.12294.pdf

本文分享自华为云社区《技术综述六:文字识别中基于Transformer识别方法汇总简介》,原文作者:谷雨润一麦 。

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

一文带你了解两种Transformer文字识别方法相关推荐

  1. 配置idea自带的tomcat_Tomcat下载安装并部署到IDEA的教程(附带idea两种热部署设置方法)...

    使用Idea的时候,修改了代码,需要反复的重启Tomcat,查看效果,是不是贼烦?还记得刚上手idea的时候,瞎配置部署Tomcat,结果最后修改一个jsp都要重新启动服务器,我这金牛座程序员能忍?~ ...

  2. PDF文档压缩的两种简单方法

    我们无论在办公中还是在上网查找资料时,经常会遇到PDF文档.工作中,传送邮件时需要PDF文档格式的,但是PDF文档太大也是个棘手的问题.大多数公司邮箱上传附件大小是限制在5M以下的,否则就会出现接收失 ...

  3. pyecharts对于经纬度_一文带你掌握Pyecharts地理数据可视化的方法

    本文主要介绍了Pyecharts地理数据可视化,分享给大家,具体如下: 一.Pyecharts简介和安装 1. 简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计, ...

  4. golang java rpc_golang两种调用rpc的方法

    本文实例讲述了golang两种调用rpc的方法.分享给大家供大家参考,具体如下: golang的rpc有两种方法进行调用,一种是rpc例子中给的: package main import ( &quo ...

  5. 英雄无敌6服务器在哪个文件夹,Win7系统无法运行英雄无敌6的两种原因和解决方法...

    英雄无敌6作为一款策略模拟类游戏,深受高端玩家的喜爱.但最近有Win7旗舰版系统用户在玩英雄无敌6时,却出现了无法运行的情况,重启好多次还是一样,不太清楚是哪里出问题,网上相关解决方案也比较少,针对此 ...

  6. 两种ps切图方法(图层/切片)

    两种Ps切图方法 一.      基础操作: a)    Ctrl++ 放大图片,ctrl - -缩小图片 b)    按住空格键space+,点击鼠标左键,拖动图片. c)    修改单位,点击编辑 ...

  7. 归一化mysql函数_数据归一化和两种常用的归一化方法

    数据归一化和两种常用的归一化方法 一.总结 一句话总结: min-max标准化:x* =(x-min)/(max-min):新数据加入,需重新计算max和min Z-score标准化:x* =(x-μ ...

  8. win7 计算机名称 ip6,Win7系统提示ipv6无网络访问权限的两种原因及解决方法

    Win7系统提示ipv6无网络访问权限,导致无法上网,这该如何解决呢?ipv6无网络访问权限的原因有很多种,针对此问题,下面脚本之家的教大家解决ipv6无网络访问权限的问题,大家一起来看看吧. 故障原 ...

  9. 利用网络信息减少因果推断中的confounding bias--结合两种思路的新方法

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 本期AI TIME PhD专场,我们有幸邀请到了来自亚利桑那州立大学的博士生郭若城,为我们带来他的精彩分享--利用网络信息减少因果推断中 ...

最新文章

  1. mysql 遍历_MySQL 实现树的遍历详解及简单实现示例
  2. 单片机会被淘汰吗?单片机现在还有用吗?
  3. 什么是SPDK,以及什么场景需要它
  4. springboot控制接口返回的字段_SpringBoot实战:SpringBoot之Rest Full接口自定义返回数据类型(ResponseBodyAdvice)...
  5. aes c android ios,AES加密在iOS和Android中产生不同的结果
  6. 均值差异大但是t检验不显著_T检验原理及介绍
  7. excel去重_数据处理之EXCEL的高效技巧分享
  8. 心疼吗?被指是“傻X” 罗永浩深夜怒怼网友
  9. 好用的shell_Linux系统安全 | Linux中的Shell和Bash
  10. Python中的条件判断和循环
  11. ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
  12. 外贸建站需要注意的地方
  13. SAPlink 的初次使用
  14. sails mysql_Sails+MVC+Mysql+Node+学习笔记一
  15. 安装tensorflow提示Requirement already satisfied,然而无法导入tensorflow
  16. Alfred workflow使用教程持续更新
  17. 腾讯微信面试题:侧重科班基础
  18. Ubuntu上实现蓝牙串口通讯(SPP)
  19. 安装jdk,没有jre
  20. 生成对抗网络 – Generative Adversarial Networks | GAN

热门文章

  1. CSS 语言伪类选择器
  2. kelvin模型蠕变方程_第二章:黏弹性与波传播——2.4 力学模型和波传播
  3. ROS笔记(7) 话题通信
  4. mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...
  5. 修复共享服务器,【转】Exadata存储服务器的紧急修复(rescue)经验分享
  6. 怎么用计算机弹柯南,柯迷们的骚操作有哪些?用计算器弹柯南主题曲,自制缩小药丸...
  7. 类和对象(2)—— 类的封装和访问控制
  8. linux下华为HSPA模块MU609的驱动问题
  9. strcpy完整版 与 strcpy为什么有返回值
  10. Ubuntu apt-get方式安装Subversion