一、研究背景
通常来说,无论是裁剪图像的文字识别还是端到端图像的文字识别,主要思想都是把文字识别问题当成CV中的(字符)图像分类问题,比如说传统特征时代首先检测并分割字符随后识别字符的方法、到CNN共享计算的识别方法、到语义分割识别、甚至到现在主流的CTC方法,其本质上都是基于图像分类的纯CV方法。这种方法,在图像清晰可读的情况下,比如说文档图像、相对规整的手写及场景文本图像等,均可取得相对不错的效果(即字符的外形清晰可读的情况纯CV方法也可以取得高精度的性能)。
但场景文本识别中,大部分情况并不是字符外形清晰可读的(至少不是每个字符都可能清晰可读),那这种情况下单纯基于CV的思路就比较乏力了。从简单层面来看,“o”跟“0”、“i”跟“l”以及中文的“未”跟“末”、“蓝”跟“篮”等,这些字符在外形上都比较接近,使用纯视觉特征进行区分难度比较大。从更常见更复杂的层面来下,比如说下边这些例子。
人类在识别文字的时候,当一个字符的外形特征无法判别其具体类别时,就会考虑到语言方面的特征。语言特征,即考虑字符之间的上下文来推断这个字符的类别,而非基于字符本身的外形特征。为了更好说明视觉特征跟语言特征的区别,本文拿Special这个词中的c来举例。视觉特征,就是说根据图像中c的视觉外形,来推测这个字符是c;而语言特征,是根据c的上下文Spe-ial来推测,这个字符应该是c。传统的方法主要仅考虑视觉特征,即便是使用CNN这种不需要显性分割字符的方法,由于CNN中心感受野的机制,本质上也是在做关于视觉特征的分类;包括CTC的方法在内,虽然使用了RNN在视觉特征层面做上下文建模,但本质上依然可以把这类方法划分为基于视觉特征的方法。
在考虑语言建模方面,先前也有不少方法(但并没有全面梳理语言建模这个问题,相关方法也没有得到很好的分类)。早期基于统计的N-gram方法以及现在流行的RNN或Transformer使用Attention的方法,都可以理解为考虑语言特征的方法(但是不同考虑语言特征的方式有很大不同)。比如说基于Attention的方法,本质上是隐性的、单向的语言建模。值得注意的是,并不是使用了RNN或者使用了Transformer的方法就是做了语言建模,只有形式上符合或部分符合根据Spe-ial推理c的才可视为语言建模。比如说按照[1]中的定义,不少方法在CNN后边使用RNN或Transformer做序列建模(SequenceModeling),这个阶段的其实是视觉特征的上下文建模,而非语言特征的上下文建模。
在论文《ReadLikeHumans:Autonomous,BidirectionalandIterativeLanguageModelingforSceneTextRecognition》的工作中,围绕如何进行有效地建模语言问题展开了一些探索及讨论,其总体上的思想为从NLP字符级别拼写矫正的语言建模角度来思考场景文字识别问题,尤其是针对图像质量退化的这种场景文字识别。这里得再解释下,本文的语言建模主要是Character级别的语言建模,而非NLP中更常用的Word级别或者Token级别的语言建模(尽管算法大部分情况下是通用的)。这也是为什么论文中在描述语言的时候尽量得在使用Linguistic而非Semantic这个词,因为更准确来说本文是在模拟语言规则方面的特性,而非更高层的语义层特性。不过本文相信,今后也会有不少方法可以实现更高语义层的结合,尤其是在篇章级长文本识别的时候,考虑词的语义是有意义的。二、核心思想
正如文章标题所说的,ABINet的三个主要特点就是自治性(Autonomous)、双向性(Bidirectional)以及迭代性(Iterative)。这里分别阐述下三个特性的Motivation:
1.自治性(Autonomous)
第一节提到比较典型的语言建模方法是基于Attention的方法,这种方法可以理解为隐性(Implicit)的自回归语言建模方法。隐性是指,语言建模的过程是含蓄进行的、是跟视觉模型耦合的、语言模型依赖于视觉特征来做预测的。首先,这种方法自回归的特性保证了其本质上是在做语言建模。其次,这种方法的耦合特性,一方面可解释性较差;另一方面由于语言模型以视觉特征为条件,学习到的语法规则为一种估计值,而非严格按照语言的学习目标进行的:在耦合的条件下,学习目标可以形式化为,而在解耦的方式下,却是严格按照语言规则的学习目标来的;此外,还有一方面的考虑是,隐性建模的方法中语言特征的学习跟视觉特征的学习是在同一个损失函数下进行的。而前边本文分析了,语言特征跟视觉特征还是有很大差别的,单一目标的损失函数下同时学习视觉特征跟语言特征本身就不够合理,这也是MM[2]论文中使用视觉跟语言多任务损失函数的原因。
2.双向性(Bidirectional)
第一节提到标准的基于Attention的方法是单向的语言模型,即,而双向的语言建模应该是。传统基于Attention方法的单向性是由自回归(Auto-regression)的特性决定的。熟悉NLP的同学知道,像GPT这类自回归的语言模型,更适合于生成式的任务。而像BERT这类非自回归的自编码语言模型,在非生成式任务上通常更有效。现在的问题是,文字识别任务到底是生成式任务,还是非生成式任务。尽管语音识别跟文字识别有不少相似的地方,但除了模态不一样外,本文认为还有一个相当重要的区别就是,语音识别式生成式任务,而文字识别是非生成式任务。
传统的方法,如ASTER[3]、DAN[4]等是标准的RNN下的Attention方法,采用标准串行计算(RNN结构导致的)的自回归方式,为模拟文字识别从前到后以及从后到前的方式,其使用两个相同的模型,一个从前往后计算,一个从后往前计算,最后在概率层面做拼接融合。发展到基于Transformer的SRN[5],尽管实现了并行的计算,但是本质上还是自回归的方式,当然SRN为了做到更好的双向,两个集成的模型是在网络最后一层的特征层做拼接融合,但实际上跟前者没区别。仔细思考下会发现,这种两个自回归模型做拼接集成的方式,且不说参数规模跟计算效率上大打折扣,单个模型做预测时,还是按照的方式做预测的,因此,只能算是“伪”双向。而在本文的工作中,以上的问题都得到了解决,仅使用单一模型自编码的方式,就实现了真正意义上的双向语言建模。
3.迭代性(Iterative)
回到最开始的举例,在Spe-ial推理c过程中,ASTER和DAN自回归的方法前向的计算过程可以看作是预测p("c"
"spe",如果在前几轮的计算中Spe并没有被正确识别,比如说识别成了Spc,那么预测c的难度将大很多,而且这种错误会累计到后边的i、a、l的预测中。在SRN中,放弃了这种串行的计算方式,而使用并行的方式。但同样的,如果其他时间步预测错了,同样会影响当前的字符预测。这个问题比较棘手,因为事实上不大可能保证其他时间步的预测完全正常。针对该问题,本文给出了一种比较好的缓和方案,即通过语言模型多轮迭代的方式,使得识别结果逐步修正,这样能保证语言模型的输入尽可能受噪声的影响小。
比较有意思的是,本文提出的ABINet在识别文字时,是比较符合人类识别阅读的运作模式的。首先,自治性描述了人脑中视觉的功能跟语言的功能本身具有一定独立性的,一来既能单独识别非语义的物体,也能在丧失视觉功能的情况下正常交流;其次,双向性反应了人类识别字符时同时考虑前边及后本的文字,即融合上下文信息后做决策;最后,迭代性模拟人们在猜测字符时推理的过程,通过逐渐地思考得出结论。当然,以上的猜测是基于观察的,双向性以及迭代性是相对显而易见的,而自治性除非完全搞清人脑视觉与语言的交互及学习机制,否则很难证实,当然也有可能二者在结构上是共享的,而在语言及视觉能力上是自治的。
这里再做一个总结,本文总体上的思路是,基于字符级完形填空的语言模型,通过语言修正的方式实现语言建模,其中自治性是描述文字识别模型中语言模型跟视觉模型的交互关系,双向性是描述语言模型自身结构应该满足的特性,而迭代性是描述语言模型的执行方式。本文希望,在这种总体框架下,能比较好的解决复杂场景文字识别问题,当然这种思维在端到端文字识别中是同样使用的,而区别主要在于视觉模型变为一个更强大的带定位功能的模型。三、ABINet的简介
总体框架图
这部分针对ABINet中语言建模的一些关键思想展开介绍:
1.自治策略
如总体框架图所示,自治性在实现上,就是显性(Explicit)定义视觉模型与语言模型,视觉模型只负责图像分类的功能,而语言模型只负责语言建模的功能。视觉模型与语言模型的交互方式为视觉模型的预测概率分布直接作为语言模型的输入。语言模型的输入为概率向量,并使用线性函数实现概率映射(ProbabilityMapping)。二者分别使用损失函数进行训练,最终结果进行融合。其中,一个核心的点为视觉模型的输出概率向量到语言模型的输入概率向量,通过梯度阻塞的方式使得视觉模型跟语言模型进行分离,进而实现两个模型作为独立的功能个体进行学习,即实现显性地语言建模型。这样做的好处其实有很多:
1)解耦之后,视觉模型跟语言模型就互相独立了。语言模型在做语言推理的适合也不再依赖于视觉特征,视觉模型跟语言模型都是独立的个体,比如说语言模型的语言修正功能可以直接使用和单独训练,这个是隐性的方法不具备的。因此,视觉模型可以单独训练(有监督/无监督均可),而语言模型更可以轻易从海量文本中无监督预训练学习。这就是为什么本文是叫自治的模型,而非解耦的模型。
2)强大的可解释性,本文甚至可以直接评估语言模型的性能,比如本文在实验章节单独针对语言模型展开定量以及可视化定性的评估,在这样的模式下,今后文字识别任务可以针对语言模型更加具体的问题提出解决方案。
3)足够的灵活性,一方面今后若有更优秀的语言模型能代替ABINet中的BCN语言模型,那么可以在不调整其他结构比如视觉模型的前提下直接取代BCN;以及在端到端识别中,只需要替换视觉模型,而语言模型并不需要做改变(甚至已经学习到的模型可以直接拿来做Fine-tune),这样成本就低很多了。
4)更好的拓展性,由于本文输入输出都是定义成概率的形式,其拓展性得以增强,比如说在本文的框架下可以很简单的实现第三点迭代性的建模。
5)当然,本文认为最大的优势是强迫语言模型真正地学习语言规则方面的建模。不像隐性语言模型那样,可能存在视觉特征作为混杂因子的某种关系导致了模型的偏倚,在反向传播过程中,某条作弊的路径让语言模型的学习是次优的。
自治性下单独可视化语言模型的预测结果
这里还有一个比较有意思的问题是,尽管SRN中没注意到,但SRN使用了Argmax的方式处理语言建模的输入。在分析之后可知道,Argmax的方式本质上是本文这种方法的一种特例,因为Argmax操作是不可导的,在这一步的时候直接阻塞了梯度的反向传播。
2.双向表达
ABINet中双向建模的BCN
总体上,BCN(BidirectionalClozeNetwork)是一个基于完型填空思想,作拼写矫正的语言模型。实现上是一个L层的TransformerDecoder的变种,注意是Ddecoder变种,而非Encoder,也不是一些方法使用的Encoder+Decoder。为了实现双向的建模,BCN在很大程度上跟Transformer又有区别:
1)该网络以字符位置序号编码作为输入,为非字符概率向量。而字符概率向量直接传入Multi-headAttention模块。
2)网络通过Multi-headAttention模块中的对角注意力掩码Mask控制字符信息的访问。对于第个时间步的字符来说,注意力机制通过对角Mask避免看到当前字符,且实现同时访问该字符左边及右边的信息,并综合左边及右边的信息同时做出预测。
3)为了避免信息泄露,传统TransformerDecoder中的自注意模块Self-attention并没有在BCN中使用,这样避免了跨时间步上的信息访问。因此BCN的每个时间步的计算均为独立且并行的,也具有高效的特点。
注意:在3)中,这一点是很关键的一点,设想下如果第时间步尽管在网络输入的时候没有看到前后时间步的信息,但却在Self-attention跨时间步的信息交互上看到了前后时间步的信息,那么语言模型就不需要费劲去预测了,只需要直接将“偷看”的信息恒等映射即可,如果有Self-attention,效果立竿见影地降低,这也是一些基于Transformer的方法效果不好的原因。此外,在1)中也不能将字符概率向量作为BCN的直接输入,仔细揣摩下会发现这种情况下Transformer的残差连接也会信息泄漏。因此,BCN的一切,都是为了精准实现这个公式。
本文从特征提取时信息熵值的角度分析单向特征跟BCN双向特征的区别。本文相信这种双向的特征能更加全面的实现拼写矫正的过程,正如BERT中介绍的那样。因此,BCN的这种方法可以学到比单向模型更好的特征表达,并且比两个单向模型拼接集成的方式无论是参数规模还是计算效率都更有优势。
这里还得对比下BCN跟BERT的区别。最开始本文是想直接使用BERT做语言建模的,因为BERT可是双向语言建模中的王牌。BCN跟BERT都是为了做双向建模,但机制上却有很大的不同。BERT的方式是将输入文本中的一个字符替换成[Mask]符号做预测,因此一次BERT的计算只能预测一个字符的结果。假设识别一个长度为的文本串,那么BERT就得预测次,这样的计算成本几乎是不可行的。
3.迭代修正
如总体框架图所示,迭代修正的思想为反复多轮执行语言模型,使得识别的效果逐步修正。在本文这个框架下,语言模型在第一轮修正的目标为视觉模型的输出结果,而在第二轮及多轮以后修正的目标为上一轮ABINet的输出结果。这种方法巧妙的地方就在于,不需要修改任何其他的定义或结构,就能实现反复迭代了。并且,网络在非迭代的方式下训练,直接在推理阶段迭代也是有效的。当然,从实验来看,训练阶段迭代效果更好些。但得注意的是,迭代的方法也得看使用的场景,通常来说针对Hard的样本效果才明显,Easy的场景用处就没那么大了。比如说在实际工程中,甚至可以这样去做,如果识别结果的置信度比较低,就反复多轮迭代,置信度比较高,就没必要迭代了。
文中还提出了一种基于自训练的半监督学习方法,有兴趣的同学可以参考下原文,算是尝试一些新的思路吧,毕竟感知识别的深度学习方法还是数据为王。
4.视觉模型
文字识别视觉模型
这里简单介绍下视觉模型,如图所示,视觉模型的主干网络由图像特征提取网络ResNet以及视觉特征上下文建模网络Transformer组成。视觉预测结果由定义为查询范式的PositionAttention计算而得,其中Q定义为字符坐标位置的函数、K与V定义为视觉特征的函数,在实现上,本文使用小型U-Net网络来进一步抽象K的取值,而V为视觉特征的恒等映射。
模型其他部分的细节请阅读原文…四、实验及算法效果
1.实验部分的主要结论摘要如下,详情参见原文:
1)视觉模型的能力对文字识别的结果影响还是很大,在本文定义的视觉模型实现方式下,简单升级视觉模型的网络规模可取得明显的性能提升。
2)自治性的策略可由定义为概率交互下的梯度阻塞方式实现,在该方式下,从海量无标注文本中预训练语言模型可加快文字识别算法的收敛速度及提升性能。
3)本文提出的双向特征提取模型BCN在精度上及速度上均领先于对应的SOTA模型。此外,通过评估Top5的预测结果,可直接评估语言模型的性能。
4)迭代执行方式下可有效提升困难样本的识别精度,可在训练及推理阶段均使用迭代执行方式。
2.部分定性的分析结果如下,首先是迭代方式下的中间结果、其次是在Uber-Text上半监督训练的学习的结果。
依次:GT,第一轮迭代、第二轮迭代、第三轮迭代
半监督训练下识别结果
3.训练的过程便是分别预训练视觉及语言模型,作为ABINet的初始化参数进一步学习,其他细节参考原文。多种配置下跟其他方法的对比,在同等规模的视觉模型下,本文的ABINet-SV比SOTA模型SRN在IC13数据集上提升了1.3%,在SVT上提升了1.7%,在IIIT上提升了0.6%,在IC15上提升了1.3%,在SVTP上提升了1.9%,在CUTE上提升了1.1%,详情见下表。
Ours:小视觉模型/大视觉模型/半监督学习五、相关资源
ABINet论文
转载请注明:http://www.0431gb208.com/sjsbszl/307.html