【文本检测与识别白皮书-3.2】第二节:基于注意力机制和CTC的场景文本识别方法的对比

本文主要是介绍【文本检测与识别白皮书-3.2】第二节:基于注意力机制和CTC的场景文本识别方法的对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节内容给出基于CTC和基于注意力机制的两种场景文本识别方法,并给出各自的优势与局限性

3.2.2.1 基于CTC的无需分割的场景文本识别方法

基于时序连接序列(CTC)的自然场景文本识别算法。

时序连接序列(CTC)算法早期由Graves等人(2016)提出,用以训练循环神经网络(Cho 等,2014;Hochreiter 和Schmidhuber,1997),并直接标记未分割的特征序列。CTC 算法在多个领域均证明了它的优异性能,例如语音识别(Graves 等,2013;Graves 和Jaitly,2014)和联机手写文本识别(Graves等,2009;Graves,2012)。

对于自然场景文本识别言,CTC 算法通常作为转录层,通过计算条件概率将深度卷积神经网络或循环神经网络提取的特征序列直接解码为目标字符串序列。  得益于CTC 算法在语音处理领域的成功应用,一些研究人员(Su 和Lu,2014;He 等,2016b;Shi 等,2017b)率先将其应用于自然场景文本识别算法中以改善解码性能。例如,Shi 等人(2017b)将自然场景文本识别任务视为序列识别任务,并提出了一个可端到端训练的网络模CRNN(convolutional recurrent neural network),其结构如图 所示。

该方法不仅无需逐字符分割的繁复操作,而且充分结合了深度卷积神经网络和循环神经网络的优点,有效改善了自然场景文本识别算法的性能。此后,大量基于CTC 算法解码的自然场景文本识别算法(Liu等,2016b; Su 和Lu,2017; Yin 等,2017; Wang 和Hu,2017;Gao 等,2018,2019;Qi 等,2019)展现出了优秀的识别性能。然而,一些研究人员(Liu 等,2018a)认为CTC 算法趋向于产生高度尖锐和过度自信的预测分布,这是过拟合的表现。为了解决上述难点,Liu 等人(2018a)引入最大条件熵的正则化项增强其泛化性,并鼓励CTC 算法探索更多可行的有效路径。Feng 等人(2019b)将CTC 算法与焦点损失函数相融合,以解决样本类别极度不均衡的自然场景文本识别问题。Hu 等人(2020)应用图卷积神经网络改善基于CTC 算法解码的自然场景文本识别算法的识别精度和鲁棒性。

 

 虽然CTC 算法具有很好的解码性能,并进一步推动了自然场景文本识别领域的发展,但是它也面临着一些局限性:

(1)CTC 算法的底层理论基础相对复杂,直接应用CTC 算法解码将会造成很大的计算消耗;

(2)CTC 算法容易产生高度尖锐和过度自信的预测分布(Miao 等,2015),当出现重复字符时,解码性能下降;

(3)由于CTC 算法自身结构和实现方式的限制,它很难应用于2 维的预测问题,例如不规则的自然场景文本识别问题(不规则的自然场景文本识别是指待识别的文本在自然场景文本图像中的分布呈现特殊的空间结构而非水平方向)。

为了解决CTC 算法无法应用于不规则的自然场景文本识别任务,Wan 等人(2019)通过沿着高度方向增加维度,扩展原始的CTC 算法。尽管该方法在一定程度上改善了识别性能,但是并没有从根本上解决CTC 算法应用于二维预测任务的难点。因此,基于CTC 的自然场景文本识别算法仍然存在使用场景的限制。将CTC 算法应用于解决2 维预测问题是未来领域研究中一个有潜力的研究方向。

3.2.2.2基于注意力机制的无需分割的场景文本识别方法

基于注意力机制的自然场景文本识别算法。

注意力机制由Bahdanau 等人(2015)提出,早期用于改善机器翻译算法的性能。注意力机制以人类的注意力特点为原型,即当人们在观察事物时,目光往往聚焦到感兴趣的事物上而忽略无用信息的干扰。同样地,注意力机制可以自动地分配不同时刻的权重,达到“注意”的目的。在机器翻译领域,注意力机制的特点是可以自动搜寻并高亮与当前预测词相关的句子成分,辅助生成预测词。近年来,注意力机制在多个领域都取得了优异的性能,例如图像描述(He等,2019)、文本识别(Shi 等,2019)和遥感图像分类(Wang 等,2019d) 等。对于自然场景文本识别而言,注意力机制常常与循环神经网络结合使用,作为转录层,生成目标字符串序列。

 受启发于机器翻译领域注意力机制的成功应用,大量基于注意力机制解码的自然场景文本识别算法(Lee 和Osindero,2016;Shi 等,2016,2019;Yang等,2017,2019;Cheng 等,2018;Luo 等,2019;Li 等,2019; Zhan 等, 2019; Zhang 等, 2019b; Baek 等,2019a;Zhan 和Lu,2019)得到广泛研究。相关算法大致包括:

(1)应用注意力机制解决二维的预测问题。对于不规则的自然场景文本识别而言,文本字符的不规则排布显著增加了识别的难度。注意力机制能够通过高亮字符所在位置的特征,有效弥补不规则文本和水平平直文本之间的特征差异。因此,一些研究人员(Yang 等,2017;Li 等,2019;Huang等,2020)提出了2 维的注意力机制,用于改善不规则自然场景文本识别问题。

(2)改善隐式语言模型的建模过程。一些研究认为注意力机制解码算法中的glimpse 向量不足以表征待预测字符的特征。因此,Chen 等人(2020)设计了自适应的门控机制,通过引入高阶统计语言模型作为监督信息,改善注意力机制内部字符级隐式语言模型的建模过程。__Wang 等人(2018a)通过加入历史预测字符的特征, 构建了记忆力增强的注意力机制,改善自然场景文本识别算法的识别性能。Shi 等人(2019)认为常规的基于注意力机制的预测转录模块只能捕获单一方向的语义信息,因此提出了ASTER(attentional scene text recognizer with flexible rectification),它使用了双向的注意力解码器以捕获两个方向的互补语义特征,其网络及双向的注意力解码器结构如图11 所示。

    

 

(3)并行处理优化、降低计算复杂度。虽然基于循环神经网络结构的注意力机制能够捕获长期的上下文信息,但是计算量大、耗时较多。因此,一些研究(Zhu 等,2019;Wang 等,2019b;Sheng 等,2019;Yu 等,2020)应用注意力机制的变体,即Transformer(Vaswani,2017),来改善注意力机制的并行处理,降低基于注意力机制解码的自然场景文本识别算法的计算复杂度。

(4)解决注意力漂移问题。注意力漂移问题是指注意力机制不能准确地定位到与当前解码位置相对应的文本图像特征序列。一些研究(Cheng 等,2017;Yue 等,2020)增加额外的监督信息改善注意力漂移现象。Cheng 等人(2017)提出了专注注意力网络。该方法通过在注意力机制中引入单字符位置监督,引导识别器学习待解码字符与对应的文本图像特征序列的对齐关系。Yue 等人(2020)增加了位置强化分支,将语义信息与位置信息特征融合解码。该方法不仅改善了注意力漂移问题,而且改善了识别模型对于非语义文本的泛化性。

部分研究人员(Wang 等,2019c;Huang 等,2020;Zhu等,2019)通过级联注意力模块的方式缓解注意力漂移现象。特别地,Wang 等人(2020b) 认为注意力漂移现象源于循环神经网络的递归结构。因此,他们将注意力机制的对齐操作从参照历史解码信息过程中解耦出来。该方法有效缓解了长文本的注意力漂移问题,进一步改善了自然场景文本识别性能。

基于注意力机制的自然场景文本识别算法已经逐渐成为领域的主流解码算法,并展现了优于其他传统方法的优越性能。相比于CTC 算法,注意力机制不仅进一步提升了自然场景文本识别算法的识别性能,而且可以很容易地扩展到2 维的预测问题上,例如不规则自然场景文本识别任务。

然而,注意力机制也面临着一些局限性:

(1)注意力机制需要计算文本图像特征与预测字符之间的对齐关系,这会引入额外的存储消耗。

(2)对于较长的输入文本图像而言,注意力机制很难准确地预测出目标字符串序列。因为注意力机制存在漂移现象,一旦出现对齐错误,后续的文本很难正确识别。

(3)领域中基于注意力机制解码的自然场景文本识别算法主要集中于字符类别数量较少的语种,例如英文和法文。对于拥有类别字符数量的语种,例如中文,较少获得领域内研究人员的关注。

这篇关于【文本检测与识别白皮书-3.2】第二节:基于注意力机制和CTC的场景文本识别方法的对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542168

相关文章

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学