OCR场景文本识别(SCR)中各模块性能比较

Posted 超级无敌陈大佬的跟班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCR场景文本识别(SCR)中各模块性能比较相关的知识,希望对你有一定的参考价值。

论文链接:https://arxiv.org/abs/1904.01906
github代码:https://github.com/clovaai/deep-text-recognition-benchmark.

PS:文章主要对别TPS(矫正)、特征提取、BiLSTM、Attention这四个模块对文本识别的精度、耗时、内存的影响。

一、摘要:

  • 提出现有论文中使用的各个数据集的不一致。
  • 针对OCR识别提出了一个统一的框架,将模型分成4个连续的部分:矫正转换(Trans),特征提取(Feat),序列模块(Seq),预测(Pred)。

二、统一训练集与测试集

作者提到之前的论文中使用的数据集都不一致,不好评判对比模型之间的性能。因此给出统一的数据集。

2.1统一的训练集

  1. MJSynth(MJ):含有8.9百万的croped文本图片,主要特点如下:不同的字体渲染、边框和阴影渲染、背景着色、字体,边框和背景的合成、应用投影失真、与现实世界的图像混合、添加噪音。
  2. SynthText(ST):是另外一个人工合成的图片,其本来是用于文本定位的。但是其中可以crop出5.5百万的文字图片。

数据集样例图:

2.2 统一的测试集

主要有7个现实测试数据集,分为常规数据集和非常规数据集:

  • 常规数据集:IIIT、SVT(谷歌街景图像,257张训练,647张测试,有很强的噪音,模糊和低分辨率)、IC03、IC13。
  • 非常规数据集:IC15、SP(是从谷歌街景中收集的,包含645幅图像用于评估。由于非正面视角的流行,许多图像包含了透视投影)、CT(主要为弯曲的文本)。

2.3 不同网络在相同测试集下的性能比较

三. STR(Scene Text Recognition)框架分析

现有的STR(Scene Text Recognition)框架主要分为以下4部分:

  • 1. 矫正转换模块 transformation(Trans.) :使用空间转换器网络 (STN网络) 对输入文本图像进行归一化,将曲线、倾斜的文本矫正为水平的矩形文本。简化后面的识别流程。
  • 2. 特征提取模块(Feat.):将输入图像映射到一个表示,重点关注与字符识别相关的属性,同时抑制字体、颜色、大小和背景等不相关的特征。使用VGG、ResNet等网络,其实就是将输入图像通过CNN网络提取为抽象的特征信息。
  • 3. 序列建模模块(Seq.):捕捉上一步CNN提取特征的字符序列中的上下文信息,使我们能够更好的预测整个文本字符,而不是独立识别单个字符。使用BiLSTM等,也有的网络不要RNN结构直接ResNet + CTC,不过准确率想对低一些。
  • 4. 预测模块(Pred.):根据前面提取的图像特征预测输出字符序列结果。有两种方法:1)使用CTC输出识别结果,不要进行标签对齐操作。2)使用attention结构自动捕捉输入序列内的信息流来预测输出序列。它使网络能够学习到表示输出类依赖关系的字符级语言模型。

四、实验结果分析

作者对实验细节、训练数据等进行了丰富的实验分析,这里没有详细列出。给出文中的部分结论。

4.1 训练样本的多样性比训练样本的数量更重要;

4.2 不同结构组合的性能(精度、耗时、内存)分析

作者对比了不同模块组合的准确度-速度和准确度内存权衡。

  • 1)权衡准确率-耗时:Rosetta 和 STAR-net 处于前沿。从上面2.3表格中可以看出Rosetta与crnn的耗时差不多(都为4点几ms),但精度比CRNN高2%左右。而STAR-net精度要高更多,但耗时要10ms。PS:有空可以研究下Rosetta这个网络。
  • 2)权衡准确率-内存:R2AM参数量最小(但耗时的20几ms!);

下表按模块组合的精度升序进行比较(T1 到 T5 表示精度时间,P1 到 P5 表示精度内存)。

4.3 ☆权衡精度与速度的结论(分析下表(a)):

T1花费的时间最短,不包括任何矫正和时序模块。 从T1到 T5,依次引入以下模块ResNet、BiLSTM、TPS 和 Attn。从T1到T5,一次只更改单个模块。逐步增加STR模型的复杂性,以计算效率为代价提高了性能。

  • ResNet、BiLSTM和TPS对时间影响相对较平滑:引入ResNet、BiLSTM和TPS对速度影响相对平滑(1.3ms→10.9ms),同时大大提高了准确性(69.5%→82.9%)。
  • Attention很耗时:另一方面,引入Attn只将准确率提高了1.1%,但对效率的影响巨大(耗时增加到27.6 毫秒);
  • 个人观点:T3、T4(ResNet + BiLSTM + CTC)的综合性价比相对高一些,TPS矫正模块根据实际使用场景考虑要不要使用(识别普通OCR文本感觉其实没必要使用TPS)。

                                                                 这个表很重要

4.4 权衡精度-内存的结论(上表(b)):

P1 是内存消耗最少的模型,从P1到P5,内存和精度之间权衡。P1-P5每一步只修改一个单元模块,分别是Attn(注意力预测)、TPS(矫正)、BiLSTM(时序) 和 ResNet(特征提取)。这些模块以内存为代价依次提高准确性。

  • RCNN比VGG、resnet要更轻量化(参数量少):与T1中使用的VGG相比,我们观察到P1-P4中的RCNN更轻(参数量更少),并提供了良好的准确性-内存权衡。 RCNN需要少量重复应用的独特CNN层。
  • TPS、BiLSTM和attention对内存消耗不大:另外发现,矫正、时序和预测模块对内存消耗没有显著影响(1.9M→7.2M参数)。虽然模型总体上是轻量级的,但这些模块对精度提升效果很大(75.4%→82.3%)。
  • ResNet参数量很大:另一方面,最终的变化 ResNet 将精度提高了 1.7%,代价是内存消耗从 7.2M 增加到 49.6M 浮点参数。因此,如果对内存比较关注的话,可以使用TPS(矫正)、BiLSTM(时序)和attention(预测)模块,但应避免使用ResNets这种参数量很大的特征提取器。

小结:

  1. attention对时间性能影响较大,ResNet对内存影响较大,实际使用时根据需求选用不同的单元模块进行组合。
  2. 每个模块在所有组合下对性能的贡献都相似,应该不存在某种模块单元搭配起来更好。

4.5 四个模块各自的长处

1)TPS转换将弯曲和透视文本标准化为标准化视图。预测结果显示了显着的改进,特别是对于圆圈品牌标志中的“POLICE”和店面标志透视图中的“AIRWAYS”。

2)高级特征提取器ResNet具有更好的表示能力,改善了背景杂乱“YMCA”、“CITYARTS”)和不可见字体(“NEUMOS”)的情况。

3)BiLSTM 通过调整感受野可以更好的对上下文建模;它可以忽略不相关的裁剪字符(“EXIT”末尾的“I”,“G20”末尾的“C”)。

4)Attention注意力机制会发现缺失或被遮挡的字符,例如“Hard”中的“a”、“to”中的“t”和“HOUSE”中的“S”。

        所有 24 种 STR 组合的完整实验结果。 每个基准的最高准确率以粗体显示。 对于每个 STR 组合,我们使用不同的初始化随机种子运行了五次试验,并对它们的准确度求平均值。

五、文章的用意

        虽然在新颖的场景文本识别 (STR) 模型上取得了巨大进步,但它们在不一致的基准上进行了比较,导致难以确定论文作者提出的模块是否以及如何改进 STR 基线模型。 本文分析了之前在不一致的实验设置下受到阻碍的现有 STR 模型的贡献。 为了实现这一目标,我们在关键的 STR 方法以及一致的数据集之间引入了一个通用框架:七个基准评估数据集和两个训练数据集(MJ 和 ST)。 我们对所比较的关键 STR 方法进行了公平比较,并分析了哪些模块带来了最大的准确性、速度和尺寸增益。 我们还对模块对 STR 中典型挑战的贡献以及剩余的故障案例提供了广泛的分析。

附录,文章附录中有对这四个模块的详细介绍。

以上是关于OCR场景文本识别(SCR)中各模块性能比较的主要内容,如果未能解决你的问题,请参考以下文章

用于 OCR 的场景文本图像超分辨率

车牌识别OCR—易泊时代智慧城市解决方案模块

智能文档处理文本识别OCR产品体验,多场景横向对比,哪家准确率最高

智能文档处理文本识别OCR产品体验,多场景横向对比,哪家准确率最高

智能文档处理文本识别OCR产品体验,多场景横向对比,哪家准确率最高

开源!基于TensorFlow/Keras/PyTorch实现对自然场景的文字检测及端到端的OCR中文文字识别