PP-OCR阅读笔记

一、简介、方案概览和实验设置

1. 简介

  • PP-OCR是一个实用的超轻量中英文OCR系统,对最新的文本检测算法 Differentiable Binarization (DB) 和经典的文本识别算法CRNN的能力充分挖掘。
  • 虽然没有理论创新,但是从骨干网络选择和调整预测头部的设计数据增强学习率变换策略正则化参数选择预训练模型使用以及模型自动裁剪量化8个方面,采用19个有效策略,对各个模块的模型进行效果调优和瘦身,最终得到整体大小为3.5M的超轻量中英文OCR和2.8M的英文数字OCR

2.PP-OCR概述

  下图是PP-OCR的流程图,主要由DB文本检测检测框修正CRNN文本识别三部分组成:
在这里插入图片描述

2.1 文本检测

  • 文本检测的目标是定位出图像中的文字区域,一般希望检测结果是分字段的。
  • PP-OCR采用的是基于分割的DB文本检测算法,可以得到文本的紧致检测框。
  • PP-OCR采用以下6个策略提升文本检测器效果:超轻量骨干网络选择头部轻量化移除SE模块余弦学习率预热学习率以及使用FPGM模型裁剪器
  • 最终,PP-OCR里面文本检测模型的大小只有1.4M。

2.2 检测框校准

  • 由于DB文本检测结果是多边形4点表示,所以检测结果经过仿射变换文本可能是颠倒状态,因此需要一个文本方向分类器判断文本是否为颠倒图像。
  • 训练一个文本方向分类器是一个基本的图像分类任务。
  • PP-OCR采用以下4个策略提升文本方向分类器效果:超轻量骨干网络选择数据增强增大输入分辨率PACT量化
  • 最终,PP-OCR里面文本分类器模型的大小只有500KB。

2.3 文本识别

  • 文本识别的目标是将文本行图像转换为文本。
  • PP-OCR采用的是文本识别常用的方法CRNN
  • CRNN主要是融合了卷积特征序列特征,采用CTC损失函数来解决预测标签和真值标签不一致的问题。
  • PP-OCR采用以下9个策略提升文本识别的效果和效率:超轻量骨干网络选择数据增强余弦学习率增大特征图分辨率正则化参数预热学习率头部轻量化预训练模型PACT量化
  • 最终,PP-OCR里面中英文文本识别模型的大小只有1.5M。纯英文数字文本识别模型的大小只有900KB。

3. 实验设置

3.1 数据集

  如表1所示,为了实现一个实用的OCR系统,我们以构建一个用于中文和英文识别的大规模数据集为例。
在这里插入图片描述
  对于文本检测,有97k个训练图像和500个验证图像。在训练图像中,68K图像是真实场景图像,来自一些公共数据集和百度图像搜索。剩下的29K合成图像主要集中在长文本、多方向文本和表格文本的场景上。
  对于方向分类,有600k个训练图像和310k个验证图像。在训练图像中国,100K图像是真实场景图像,来自公共数据集(LSVT,RCTW-17,MTWI2018),剩下的50万章合成图像主要集中在反转文本上。
  对于文本识别,有179M个训练图像和18.7k个验证图像。在训练图像中,有190万张是真实场景图像,这些图像来自公共数据集和百度图像搜索。剩下的1600万幅合成图像主要集中在不同背景、平移、旋转、透视变换、直线干扰、噪声、垂直文本等场景中。

3.2 实验细节

  为了快速进行消融实验并选择合适的策略,我们从真实场景训练图像中选择4k个图像进行文本检测,从真实场景培训图像中选择300k个图像用于文本识别。
  为了验证OCR系统的效果,针对OCR实际应用场景,包括合同,车牌,铭牌,火车票,化验单,表格,证书,街景文字,名片,数码显示屏等,收集了300张图像作为评估集合,每张图平均有17个文本框。
  为了验证PP-OCR对于非中英文数据的识别能力,收集了一些英文数字、法语、韩语、日语和德语的语料,合成了一些文本行图像,用于训练相应的文本识别模型。由于MLT 2019是包含多语言的文本图像,因此中英文OCR系统中的文本检测模型可以同时支持多语言文本检测。问题:由于数据有限,没有找到合适的数据来训练多语言的方向分类器

二、文本检测优化及实验结果

  下图是PP-OCR中使用的文本检测算法DB的结构图,该图中虚线方框标出了骨干网络和网络头部部分。
在这里插入图片描述

1. 超轻量骨干网络选择

  影响检测器模型大小的一个主要因素是骨干网络结构的选择。常用的超轻量骨干网络有MobileNetV1系列, MobileNetV2系列, MobileNetV3系列和 ShuffleNetV2系列,每种系列都有不同规模的网络结构。下图对比了不同规模超轻量模型在 Snapdragon 855 上预测速度和准确度的情况,图中可以看到对于ImageNet 1000图像分类任务,MobileNetV3在相同预测速度的情况下,准确率最好。因此选择MobileNetV3作为骨干网络。
在这里插入图片描述
   表5对比了文本检测使用不同尺度的MobileNetV3的效果、模型大小和预测速度,可以看到不同尺度的MobileNetV3差异还是比较明显。PP-OCR中选择MobileNetV3_large_x0.5对效果和效率进行折中。选择这个骨干网络,HMean是61.27%,模型大小是7M,CPU上平均预测速度是406ms。
在这里插入图片描述

2. 头部轻量化

  DB文本检测的头部是类似目标检测中FPN的网络结构。融合了多个分辨率的特征图,提升对不同尺度目标的检测效果。为了便于特征融合,一般会使用一个1*1的卷积,将不同分辨率的特征图的特征通道数转换为相同的特征通道数,简称为inner_channels。考虑到预测的概率图和阈值图都与inner_channels相关,所以inner_channels对模型大小有非常大的影响。
   表2中显示,将inner_channels从256减小到96,模型大小从7M减小到4M,预测时间从406ms减小到213ms,加速50%,效果指标HMean下降不到1%。可见inner_channels对模型大小的影响,减小这个值,综合收益比较明显。
在这里插入图片描述
  表3显示了用于文本检测的头部内部通道SE余弦学习率衰减学习率预热的消融研究。首先,通过将探测头的内部通道从256个减少到96个,模型大小减少了41%,推理时间加快了近50%,HMean仅略有下降。因此,减少内部通道是减轻探测器重量的有效方法。

3. 移除SE模块

   SE是 squeeze-and-excitation 的简称,结构如下图所示,核心思想类似于注意力机制,挖掘特征通道之间的重要性,一般使用全局池化(Global Pooling)进行信息汇集。由于MobileNetV3是通过结构搜索得到的网络结构,因此SE模块也在MobileNetV3的搜索空间中,MobileNetV3结构中有多个SE模块。但是,对于文本检测任务,图中往往有多个文本目标和嘈杂的背景信息,输入分辨率一般都很大,例如640*640,通过SE挖掘特征之间的信息比较困难,同时又增加了计算量

4. 余弦学习率

  学习率是训练神经网络的一个非常重要的参数,一般网络训练异常,首先想到的是调整学习率。在训练早期,参数权重都是随机初始化,可以使用相对比较大的学习率来加速收敛,在训练后期,参数权重都靠近局部最优解,可以使用相对较小的学习率。余弦学习率是近年来非常受欢迎的一种学习率调整策略。与分阶段调整学习率不同,余弦学习率这个过程中学习率都比较大因此收敛比较慢,但是最终收敛效果更好
在这里插入图片描述
   表2对比了,使用余弦学习率替换Adam优化器中固定学习率,效果有略微提升

5. 预热学习率

  之前很多研究表明,在训练刚开始,使用太大的学习率,会导致学习过程中数值上不稳定。建议刚开始使用较小的学习率,逐步增加到初始学习率,这样有助于效果提升。对于文本检测,这个策略非常也有效。从表2可以看出,使用预热学习率,效果提升还是非常明显,Hmean可以增加1.2%。

6. FPGM模型剪裁器

  模型剪枝是提升预测效率的一种非常重要的手段。PP-OCR采用FPGM模型裁剪器去进一步减小模型大小。如下图所示,FPGM的主要思想如下,一个卷积层的每个滤波器认为是一个欧式空间的点,FPGM计算这些点的中心值,把离中心比较近的滤波器优先裁剪掉。此外,对于模型剪枝来说,每个卷积层裁剪的比例非常重要。如果裁剪比例都设置为相同的,则会导致裁剪效果下降非常严重。
在这里插入图片描述
  从表6可以看出,使用FPGM裁剪器可以将文本检测模型大小从2.6M裁剪到1.4M,预测速度从164ms加速到133ms,加速非常明显,效果指标HMean略微下降。
在这里插入图片描述

三、文本方向分类器优化及实验结果

1. 超轻量骨干网络选择

  和文本检测类似,PP-OCR也是采用MobileNetV3作为文本方向分类器的骨干网络。由于这个任务相对比较简单,所以使用了MobileNetV3_small_x0.35作为骨干网络。
在这里插入图片描述
  表7对比了MobileNetV3_small_x0.35和MobileNetV3_small_x0.5,识别准确率差别不大,但是模型大小减小非常明显。此外,对比了其他方法使用的ShuffleNetV2_x0.5,从准确率,模型大小,以及预测速度看,MobileNetV3_small_x0.35更加合适。

2. 数据增强

  在文本识别任务中,经常使用的数据增强方式是基本的图像处理,例如图像旋转,图像透视变换,运动模糊和高斯噪声,这些操作简称为BDA (Base Data Augmentation)。
  由于文本方向分类器是一个基本图像分类任务,上述方法是否有可能提升文本方向分类器效果。PP-OCR做了大量消融实验,
在这里插入图片描述
  如表9所示。不使用任何数据增广,文本方向分类器的识别准确率是88.79%。使用基础数据增广BDA,识别准确率提升到91.34%,提升非常明显。在与图像分类常用的数据增强方法结合,发现RandomErasing和RandAugment提升非常明显,其余效果不明显,甚至变得更差。在PP-OCR最终的训练方案中,使用BDA+RandAugment数据增广方式

3. 输入分辨率

  一般对于图像分类任务,输入图像的分辨率增加,识别准确率也会增加,但是相应的耗时也会增加。但是由于图像方向分类器使用的非常轻量的网络,适当的增加输入分辨率,效果会提升明显,预测时间不会明显增加。3 * 32 * 100是文本识别经常使用的一个分辨率。
在这里插入图片描述
  从表8可以看出,当输入分辨率从3 * 32 * 100增加到3 * 48 * 192,识别准确率提升将近2%,但是预测时间基本没有变换。可见适当增加分辨率,收益非常明显。

4. PACT量化

  量化也是提升预测效率的一种非常重要的手段。目前量化一般分为两类:离线量化在线量化。离线量化不需要训练,利用平均值决定量化参数。在线量化是通过训练决定量化参数。PACT量化是一种在线量化方法,核心关注激活函数异常点处理。当移除了异常点,则可以学习比较合适的量化参数。原始的PACT处理激活函数的公式如下:
在这里插入图片描述
  原始的PACT主要考虑的是ReLU激活函数,所有的输入大于一定阈值就被截断。但是MobileNetV3里面不仅只有ReLU激活函数,还有hard_swish,原始的PACT导致比较高的量化误差。因此,PP-OCR使用的PACT量化方法是进行了如下改进,进行两个方向的截断,从而降低量化误差。

在这里插入图片描述
  从表8中可以看出,使用PACT量化,模型大小从0.85M减小到0.46M,预测速度从3.21ms加速到2.38ms,加速明显,识别准确率基本没有影响。

四、文本识别优化及实验结果

  文本识别器CRNN的体系结构如下图所示。
在这里插入图片描述

1.超轻量骨干网络选择

  和文本检测类似,PP-OCR也是采用MobileNetV3作为文本识别的骨干网络。表1对比了不同骨干网络的文本识别效果。PP-OCR中选择MobileNetV3_small_x0.5对效果和效率进行折中。如果对大小不是很太敏感,MobileNetV3_small_x1也是一个不错的选择。
在这里插入图片描述

2.头部轻量化

  通常会使用一个全连接层对序列特征进行编码,因此序列特征的维度对模型大小影响比较大,尤其对于中文需要识别6000多常见汉字的场景。同时,并不是维数越高,序列特征的表示能力就越强。在PP-OCR中,序列特征的尺寸根据经验设置为48
在这里插入图片描述
  从表11可以看出,将序列特征维度从256减小到48,模型大小从23M减小到4.6M,预测时间从17.27ms加速到12.26ms,识别准确率影响比较小。减小头部的序列特征的维度,推理速度比较明显。

3.数据增强

  数据增强是提升文本识别效果的常用方法。除了在文本方向分类器章节中介绍的BDA,最近Luo等人针对文字识别提出的一种新的数据增强方法TIA,也是一种有效的策略。首先,设置一些参考点,然后将这些参考点进行随机扰动,并将相应的局部图像进行几何变换,形成新的变换图像。文章中的变换参数是可以学习的。在PP-OCR中,只使用在线数据增广,合成样本,并没有引入学习逻辑。

  从表12可以看出,不使用任何数据增广,也就是PP-OCR的v1.0版本策略,识别准确率只有0.5193。使用BDA数据增广,识别准确率大幅提升到0.5505。在后面的实验中,进一步使用TIA,可以使识别准确率提升0.9%,效果提升比较明显。
在这里插入图片描述

4.余弦学习率

  如之前文本检测所述,采用余弦学习率可以有效提升模型效果。在文本识别中,同样非常有效。从表12可以看到,采用余弦学习率,识别准确率可以提升1.5%左右。

5.增大特征图分辨率

  在PP-OCR中,文本识别的输入分辨率是3 * 32 * 320。MobileNetV3的原始stride变化策略并不适合文本识别。为了保留更多的水平方向图像的信息,除了第一次stride变化,其余stride变换都从[2,2]改为[2,1],为了进一步保留垂直方向图像的信息,将第二次stride变化,从[2,1]改为[1,1],整个网络的特征图的分辨率都变大。
在这里插入图片描述
  从表12可以看出,增大特征图的分辨率,识别准确率可以提升5.2%。实验表明,特征图的分辨率变大,对识别效果影响很大。

6.正则化参数

  正则化一般是为了防止过拟合,添加到损失函数中。常用的正则化参数是L2正则化。如果使用L2正则化,整个网络权重值倾向变小,从而提升模型的泛化能力。
  从表12可以看出,正则化参数对识别结果影响很大。使用合适的正则化参数,识别准确率提升3.4%。

7.预热学习率

  和文本检测类似,预热学习率也有助于提升文本识别效果。从表12可以看出,采用预热学习率,识别准确率提升0.7%左右。

8.预训练模型

  在图像分类、目标检测和图像分割中,使用ImageNet 1000训练的图像分类预训练模型,有助于模型快速收敛和效果提升。真实场景中,用于文本识别的数据往往有限,基于上千万场景丰富的数据训练的模型,也有助于真实场景中文本识别效果的提升。
  PP-OCR使用了1790万全量数据训练的模型,识别准确率是65.81%,然后在190万数据进行模型微调,识别准确率可以提升到69%。这个结论也说明,虽然全量数据场景丰富,对于特定场景效果不一定最优,对于特定场景的模型微调还是很有必要。

9.PACT量化

  与文本方向分类器类似,PP-OCR也采用PACT 量化减小模型大小。由于LSTM量化复杂性,目前的PP-OCR策略并没有对LSTM进行量化,实现中跳过该层。
在这里插入图片描述

  从表13可以看出,采用PACT量化文本识别,模型大小从4.6M减小到1.5M,预测时间从12ms降低到11ms,准确率有明显提升。预测时间提升不是很明显的原因是LSTM没有做量化导致的。准确率提升说明PACT 量化可以减小模型中的冗余,从而提升模型效果。

五、系统实验

  表14显示了OCR系统的 prunner or quantization的消融研究。当使用slim方法时,模型大小减少了55.7%,推理时间增加了12.42%。F_score没有影响。推理时间包括系统各部分的前处理和后处理。因此,FPGM修剪和PACT量化也是减小模型大小的有效策略。
在这里插入图片描述
  为了比较所提出的超轻量级OCR系统和大规模OCR系统之间的差距,还训练了一个大规模OCR系统,并使用Res18_vd作为文本检测器主干Res34_vd作为文本识别器主干
A
  表15显示了比较情况,大规模OCR系统的F_score高于超轻量级OCR系统,但超轻量级系统的模型大小和推理时间明显更好。

  以上就是PP-OCR阅读的主要内容,如有遗落或错误,欢迎讨论

友情链接

参考链接: 干货|PP-OCR: 3.5M超轻量中英文OCR模型详解(一) 简介、方案概览和数据
      干货|PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略
      干货|PP-OCR: 3.5M超轻量中英文OCR模型详解(三) 文本方向分类器优化瘦身策略
      干货|PP-OCR: 3.5M超轻量中英文OCR模型详解(四) 文本识别优化瘦身策略
论文地址:PP-OCR: A Practical Ultra Lightweight OCR System
代码地址:PaddleOCR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值