-
4.1 文本检测
-
4.2 方向分类
-
4.4 文本识别
1、PP-OCR作者
作者是来自百度研究院的各位大佬:
Yuning Du, Chenxia Li, Ruoyu Guo, Xiaoting Yin, Weiwei Liu, Jun Zhou, Yifan Bai, Zilin Yu, Yehua Yang, Qingqing Dang, Haoshuang Wang
Bottom
光学字符识别(OCR)系统已广泛应用于办公自动化、工厂自动化、在线教育、地图制作等各种应用场合,但由于文本形式的多样性和计算效率的要求,OCR仍然是一个具有挑战性的课题。本文提出了一种实用的超轻量OCR系统,即PP-OCR。PP-OCR的整体模型大小仅为3.5M用于识别6622个汉字和2.8M用于识别63个字母数字符号。我们引入一系列策略来增强模型能力或减小模型尺寸。并用实际数据进行了相应的消融实验。同时,发布了几种预训练的中英文识别模型,包括文本检测器(使用97K图像)、方向分类器(使用600K图像)和文本识别器(使用1790万图像)。此外,本文提出的PP-OCR算法在法语、韩语、日语和德语等语言识别任务中也得到了验证。上述所有模型都是开源的,代码可以在GitHub存储库中找到,即:
https://github.com/paddle/paddocr。
Bottom
3、增强、剪枝策略
3.1 文本检测
在本节中,将详细介绍六种增强文本检测器的模型能力或减小模型大小的策略。
3.1.1 Light Backbone
backbone
的大小对文本检测器的模型大小有显著影响。因此,在构建超轻量化模型时,应选择轻骨架。随着图像分类技术的发展,MobileNetV1、MobileNetV2、MobileNetV3和ShuffleNetV2系列通常被用作轻主干。每个系列有不同的规模。下图提供了20种backbone的性能表现:(
https://github.com/PaddlePaddle/PaddleClas/
)
这里的MobileNetV3在推理时间和精度上都有较好的表现,百度选择了 MobileNetV3_large_x0.5,作为精度和效率的权衡。顺便说一句,Padderclas提供了多达24个系列的图像分类网络结构和训练配置,122个模型的预训练权重及其评估指标,如ResNet、ResNet_vd、SERes-NeXt、Res2Net、Res2Net vd、DPN、DenseNet、EfficientNet、Exception、HRNet等。
3.1.2 Light Head
文本检测器的头部类似于FPN(Lin et al.2017)在目标检测中的架构(使用了DB模块),融合了不同尺度的特征图,证明了对小文本区域检测的效果。为了便于合并不同分辨率的特征映射,通常采用1×1卷积将特征映射缩小到相同的通道数(使用inner_channels作为short)。该概率图和阈值图由融合后的特征图和卷积生成,卷积也与上述inner_channels相关。因此,inner_channels对模型尺寸有很大的影响。当inner_channels从256减少到96时,模型尺寸从7M减少到4.1M,但精度略有下降。
3.1.3 Remove SE
SE是 squeeze-and-excitation的缩写(Hu、Shen和Sun,2018)。SE块对通道间的依赖关系进行显式建模,并自适应地重新校准通道特征响应。因为SE块可以明显提高视觉任务的准确率,MobileNetV3的搜索空间中包含了SE块,并且有大量的SE块在MobileNetV3体系结构中。然而,当输入分辨率较大时,如640×640时,很难用SE块估计通道特征响应。精度提高有限,但时间成本很高。当从主干中删除SE块时,模型尺寸从4.1M减小到2.5M,但精度没有影响。
3.1.4 CLRD 余弦学习率衰减????
学习速率是控制学习速度的超参数。学习率越低,损失值变化越慢。虽然使用较低的学习率可以确保不会错过任何局部极小值,但这也意味着收敛速度较慢。在训练的早期阶段,权值处于随机初始化状态,因此可以设置一个相对较大的学习速率来加快收敛速度。在训练的后期,权重接近最优值,因此应该使用相对较小的学习率。余弦学习率衰减已成为提高模型精度的首选学习率缩减策略。在整个训练过程中,余弦学习速率衰减保持了较大的学习速率,因此其收敛速度较慢,但最终的收敛精度较好。下图是其函数曲线:
3.1.5 Learning Rate Warm-up 学习率预热????
论文(He et al.2019a)表明,使用学习率预热操作有助于提高图像分类的准确性。在训练过程开始时,使用过大的学习率可能会导致数值不稳定,建议使用较小的学习率。当训练过程稳定时,使用初始学习率。对于文本检测,实验表明该策略也是有效的。
此时的学习率函数曲线应该是从0增长到设置的初始值,然后使用CLRD.
3.1.6 FPGM Pruner : FPGM 裁剪????
剪枝是提高神经网络模型推理效率的另一种方法。为了避免模型剪枝导致的模型性能下降,我们使用FPGM(He et al.2019b)在原始模型中寻找不重要的子网络。FPGM以几何中值为准则,将卷积层中的每个滤波器看作欧氏空间中的一个点。然后计算这些点的几何中值,用类似的值重新移动过滤器,如下图所示。每层的压缩比对于修剪模型也很重要。统一修剪每一层通常会导致显著的性能下降。在PP-OCR中,根据(Li et al.2016)中的方法计算每层的修剪灵敏度,然后用于评估每层的冗余度。
FPGM论文:
https://arxiv.org/pdf/1811.00250.pdf
????
FPGM项目地址:
https://github.com/he-y/filter-pruning-geometric-median
????
PFEC论文:
https://arxiv.org/abs/1608.08710
????
关于FPGM裁剪策略可以参考文章:
FPGM 裁剪
。
Bottom
3.2 方向分类
3.2.1 Light Backbone
我们还采用了与文本检测器相同的MobileNetV3作为方向分类器的backbone。因为这个任务相对简单,所以我们使用MobileNetV3_small_ x0.35从经验上平衡准确性和效率。当使用更大的backbone时,精确度不会提高更多。
3.2.2 Data Augmentation
例如旋转、透视失真、运动模糊和高斯噪声。这些过程简称为BDA(basedataaugmentation)。它们被随机添加到训练图像中。实验表明,BDA对方向分类器的训练也有一定的帮助。除BDA外,最近还提出了一些新的数据增强操作,以提高图像分类的效果。