端到端的OCR方法已经能够带来很不错的精度了,检测和识别能够互相帮助带来提升,但是之前大多数的方法针对的都是单一的一种语言:英文。英文仅仅只有26个字母,而且识别的时候,我们一般不区分大小写。除了英文之外,还有很多的拉丁语种。拉丁语种的特点就是字符比较少,词语都是几个基础的字符组成起来的。而中文,韩语,日语这些亚洲语言,和英文区别就很大,字符的个数远远多多于英文。此外还有很多已经遗忘的语言和古文字。因此单单只研究英文的端到端方法是不足以解决世界上全部的OCR的问题。因此一个能够识别多语种的文本端到端的方法便显得十分的重要。
针对多种语言做text spotting,我们最容易想到的方法就是直接把我们的识别种类扩大,将所有的字体作为候选来训练我们的识别器。但是这会存在一个问题,不同的语言由于不同的结构,需要不同的特征提取器来达到更好的结果。此外,还有个问题,不同语言种类的训练数据的数量是不同的,这样就会存在一个长尾效应,一些稀少的字体在训练的时候出现的概率会比较小,也会导致针对稀少字体的识别概率问题。
那么作者针对以上的问题,提出了自己的做法。一个多识别器的端到端检测识别网络,能够自动判断字体而挑选最合适的识别网络。那么为了能够做到不同语种的识别,作者提出了一个语种预测网络来判断语言种类。此外为了解决数据不平衡的问题,还提出了独特的训练策略。那么作者提出的多头的网络能够达到比单头更好的识别效果。
整体网络框架如图所示。检测部分使用的是masktextspotter v3。fpn网络结合多尺度特征之后,预测文字区域的分给位置,然后拓展。之后使用attention decoder的方式解码。
这里使用的语言预测模型就是将特征送入两层卷积网络和两层全连接来预测语言种类。使用cross entropy来作为loss。
一部分的数据集提供了语言种类的标注,因此一开始训练的时候使用distangel loss。一开始的语言种类预测的参数设为0.02,之后设置为1. 而每个识别头的参数都设为0.5.训练的时候,不同的头设置的类别也不相同,因此会将没有字符的I定义为0.(问题在于相同的字符可能出现在不同语种中。)
除了有语言种类标注的数据集,还有很多没有语言种类标注的数据集。因此,作者使用了另外一种loss。保证了训练和验证的情况相同。训练的时候,只反向传导语言预测种类最大的头的梯度。当然,这会出现错误的情况,为了告诉网络选择错了种类,那么会有一个惩罚机制,基于对不上的字符label更大的负值。
作者针对不同的语言识别器设置了不同的维度。将emb size的大小设置关联字符个数。hidden size的设置和语义关联有关。和单头对比参数量差不多,当然维度设置也有原因。
之后就是对别实验的结果。在端到端短的结果中,在latin语言的结果上略微差一点,作者觉得是因为单头更容易拟合数据分布。
A Multiplexed Network for End-to-End, Multilingual OCR组会稿
最新推荐文章于 2022-10-25 19:13:45 发布