PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略


PP-OCR: A Practical Ultra Lightweight OCR System
论文地址:https://arxiv.org/abs/2009.09941
代码地址:https://github.com/PaddlePaddle/PaddleOCR

本文主要介绍PP-OCR中文本检测优化瘦身策略,首先会介绍实验环境,然后介绍超轻量骨干网络选择、头部轻量化、SE模块的断舍离、余弦学习率、预热学习率以及使用FPGM模型裁剪器的基本思路和消融实验。下图是PP-OCR中使用的文本检测算法DB的结构图,该图中虚线方框标出了骨干网络和网络头部部分。

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第1张图片

1. 实验环境

检测的消融实验的训练集是从6.8万的真实数据中选择4000张图像,测试图像还是500张真实图像。HMean指标用来评估一个检测器的效果。使用单个T4 GPU卡测试GPU时间,Intel® Xeon® Gold 6148 处理器测试CPU时间,骁龙855在手机上测试量化模型时间。

2. 超轻量骨干网络选择

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

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第2张图片

表1 文本检测使用不同尺度的MobileNetV3的效果
PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第3张图片

  1. 头部轻量化
    DB文本检测的头部是类似目标检测中FPN的网络结构。融合了多个分辨率的特征图,提升对不同尺度目标的检测效果。为了便于特征融合,一般会使用一个1*1的卷积,将不同分辨率的特征图的特征通道数转换为相同的特征通道数,简称为inner_channels。考虑到预测的概率图和阈值图都与inner_channels相关,所以inner_channels对模型大小有非常大的影响。表2中显示,将inner_channels从256减小到96,模型大小从7M减小到4M,预测时间从406ms减小到213ms,加速50%,效果指标HMean下降不到1%。可见inner_channels对模型大小的影响,减小这个值,综合收益比较明显。

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第4张图片
表2 头部的inner_channels、SE的移除、余弦学习率和预热学习率的消融实验

4. SE模块的断舍离

SE是 squeeze-and-excitation 的简称,结构如下图所示,核心思想类似于注意力机制,挖掘特征通道之间的重要性,一般使用全局池化(Global Pooling)进行信息汇集。因此在多个视觉任务显著提升模型的表达能力,像图像分类、目标检测等任务。由于MobileNetV3是通过结构搜索得到的网络结构,因此SE模块也在MobileNetV3的搜索空间中,MobileNetV3结构中有多个SE模块。但是,对于文本检测任务,图中往往有多个文本目标和嘈杂的背景信息,输入分辨率一般都很大,例如640*640,通过SE挖掘特征之间的信息比较困难,同时又增加了计算量。表2中对比了移除SE模块的效果。将SE模块移除,模型大小从4.1M下降到2.6M,预测时间从213ms减小到173ms,加速明显。同时效果指标HMean基本没有影响。可见,SE模块在文本检测中比较冗余。

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第5张图片

5. 余弦学习率

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

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第6张图片

6. 预热学习率

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

7. FPGM模型裁剪器

模型剪枝是提升预测效率的一种非常重要的手段。PP-OCR采用FPGM模型裁剪器去进一步减小模型大小。如下图所示,FPGM的主要思想如下,一个卷积层的每个滤波器认为是一个欧式空间的点,FPGM计算这些点的中心值,把离中心比较近的滤波器优先裁剪掉。此外,对于模型剪枝来说,每个卷积层裁剪的比例非常重要。如果裁剪比例都设置为相同的,则会导致裁剪效果下降非常严重。因此在PP-OCR中,也对每一个卷积层进行敏感度分析,具体敏感度分析方法参考相关文献。从表3可以看出,使用FPGM裁剪器可以将文本检测模型大小从2.6M裁剪到1.4M,预测速度从164ms加速到133ms,加速非常明显,效果指标HMean略微下降。FPGM的实现可以关注github repo PaddleSlim(https://github.com/PaddlePaddle/PaddleSlim)

PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第7张图片
PP-OCR: 3.5M超轻量中英文OCR模型详解(二) 文本检测优化瘦身策略_第8张图片
表3 FPGM裁剪器的消融实验


感谢大家关注,PP-OCR: 3.5M超轻量中英文OCR模型详解系列总共有4个部分,列表如下:
(一) 简介、方案概览和数据
(二) 文本检测优化瘦身
(三) 文本方向分类器优化瘦身
(四) 文本识别优化瘦身
欢迎大家star PaddleOCR(https://github.com/PaddlePaddle/PaddleOCR),支持该repo的建设。感兴趣的朋友,可以加入Repo里面的PaddleOCR技术交流微信群,一起讨论OCR相关问题。

你可能感兴趣的:(PaddleOCR,深度学习,python相关,计算机视觉,ocr,python,深度学习)