[2021-CVPR] A Multiplexed Network for End-to-End, Multilingual OCR
端到端、多语言OCR的多路网络
Introduction
现有的许多方法主要集中在拉丁字母语言上,甚至往往只关注于不区分大小写的英语字符。在本文中,提出了一种端到端的多语种text spotter。
具体来讲,本文提出了一个单独的文本检测模块,和多个针对每种语言的文本识别头,由多路复用器将检测到的文本送到适当的头,由语言预测模型(Language Prediction Network (LPN))做输出的决策。这种策略可以看作是人类对文本的感知。即使不了解语言,定位大多数语言的单词也很容易,但是识别实际的字符和单词需要特殊的知识:语言/文种识别通常先于识别。
这种多路复用器设计对现实世界的文本定位系统具有重要的意义。拥有特定于语言的文本识别头,可以根据每种语言的难度和特征自定义设计架构,同时仍然共享和共同学习相同的文本检测主干。新的语言也可以很容易地添加到系统中,而不用重新训练整个模型,也不用担心会影响现有的语言。
Contributions
- 提出了一种端到端可训练的多路OCR模型,该模型能够自动为检测到的单词挑选最佳的识别头。
- 提出了一种语言预测网络,使用masked pooled features作为输入,并使用带有识别头的集成损失函数。
- 我们设计了一种训练策略,利用提出的损失,允许轻松扩展到新语言,并解决数据不平衡问题。
- 我们的经验表明,多路复用模型始终优于单头模型,并且更不容易出现训练数据分布偏差。
Methodology
这个多路网络和Mask TextSpotter V3有相同的检测器和分割模块。
Mask TextSpotter V3的识别模型包括字符分割模块和适于文本识别的空间注意模块(a Character Segmentation Module and a Spatial Attention Module)。我们在模型中只使用了空间注意模块,原因如下:(1)当字符集从36扩展到10k时,两个模块的使用都不具有伸缩性;(2)字符分割模块需要字符级标注来监督训练,分割后的maps无法获取字符的顺序;(3)在我们的纯拉丁语模型实验中,不使用字符分割模块对最终识别结果的影响很小。
将该模型从纯拉丁语扩展到多语言,有两个方向:(1)将所有语言和字符视为同所有字符属于同一语言,并使用一个单一的识别头来处理所有的语言和字符;(2)建立独立的识别头来处理来自不同语言的单词,然后从中挑选/组合预测。我们选择方法(2),因为当我们训练模型时,不用担心不同语言之间的数据不平衡,它更灵活,并且有更大的未来扩展潜力。
Language prediction network
给定一个文种,为了能够自动的选择合适的识别模块,本文设计了一个语言预测网络LPN:
这其实就是个分类的网络,输入是从detection和segmentation模块输出的masked pooled features,网络的输出是长度为L的向量,可以使用Softmax将其转换为概率,其中L = N_lang是我们希望该模型支持的语言类的数量。
Multiplexer with disentangled loss
本文在训练时并行地训练LPN和识别器头,然后直接将损失函数进行相加:
L_lang是LPN的loss,L_seq( r )是识别器头r的loss,两者分别分配一个超参数权重,本文设置了在前几千次迭代种a_lang = 0.2,之后调整为a_lang = 1;而所有识别器头loss的权重始终为a_seq( r ) = 0.5。
L_lang即为N分类的损失,可以通过交叉熵损失来计算:
与分类损失类似,我们使用负似然对数来作为识别器的损失:
当然,对于该识别器头不支持的字符,要忽略:
其中I=1表示支持,I=0表示不支持。
Multiplexer with integrated loss
disentangled loss虽然可以作为一个良好的初始化模型的训练,但是这种方法仍有一些局限性。
首先,语言预测器的训练需要在单词级别上明确地标注语言的基本事实,这可能是不准确的,而且在经过策划的数据集之外并不总是可用。其次,当多个识别头之间存在共同特征时,disentangled loss不能反映模型在推理时的实际预测。最后,尽管有一种忽略标签的机制,但用不支持的单词训练识别头识别错误的语言是适得其反的。
为了解决这些问题,我们提出了一个综合损失,结合结果的语言预测头部和识别头部在训练。为了加强训练和测试之间的一致性,我们可以使用硬集成损失(hard integrated loss):
在hard integrated loss的情况下,我们为每个单词选择一个准确的识别头,选择并使用语言预测网络预测的概率最大的损失头。这种损失更好地匹配了文本识别系统在推理过程中的操作,避免了在训练过程中涉及不相关的识别头。我们的消融研究(第4.3节)表明,它优于替代的软集成损失。
软集成损失:
Experiments
Ablation study
多路网络与单路网络的参数数量的对比:
硬集成损失vs软集成损失:
硬集成损失可以看作是软集成损失的特例,其中p®中只有一个为1,其他均为0。然而,在我们的实验中,在相同的迭代次数下,使用硬集成损失比使用软集成损失在H-mean方面的效果要好10%左右。这可以解释为硬集成损失与模型在推理期间的预期行为更一致。