PaddelOCR网络主体结构

文本检测部分:我们使用Differentiable Binarization (DB) (Real-Time Scene Text Detection with Differentiable Binarization.) 作为基于简单分割网络的文本检测器。 DB的简单后处理使其非常高效。为了进一步提高其有效性和效率,使用了以下六种策略:轻骨干、轻头、删除SE模块、余弦学习率衰减、学习率预热和FPGM剪枝。最终,文本检测器的模型大小减小到1.4M

方向分类器:由于检测框由四个点组成,很容易通过几何变换来实现。然而,修正后的框可以颠倒。因此,需要一个分类器来确定文本方向。如果确定某个盒子颠倒了,则需要进一步翻转。训练文本方向分类器是一项简单的图像分类任务。我们采用以下四种策略来增强模型能力并减小模型尺寸:轻量骨干、数据增强、输入分辨率和PACT量化。最后,文本方向分类器的模型大小为500KB。

文本识别:采用 CRNN (Shi, Bai, and Yao 2016) 作为文本识别器,它在文本识别中应用广泛且实用。 CRNN 集成了特征提取和序列建模。它采用连接主义时间分类(CTC)损失来避免预测和标签之间的不一致。为了增强模型能力并减小文本识别器的模型大小,使用了以下九种策略:轻骨干、数据增强、余弦学习率衰减、特征图解析

文本检测DB结构图:

backbone部分为了轻量化选取了mobilenet,head部分也是做了轻量化操作,类似目标检测中的FPN结构,融合不同尺度的特征图以提高小文本区域检测的效果,移除了mobilenet中的的se注意力机制,因为分辨率很大的时候,比如640x640,就很难用se学习通道特征,移除se后,模型大小从 4.1M 减小到 2.5M,但精度没有影响。

模型剪枝:采用FPGM,FPGM Pruner 剪枝是另一种提高神经网络模型推理效率的方法。为了避免模型剪枝导致的模型性能下降,我们使用 FPGM (He et al 2019b) 来查找原始模型中不重要的子网络。 FPGM以几何中位数为标准,将卷积层中的每个滤波器视为欧几里德空间中的一个点。

文本识别使用CRNN结构图:

backbone部分依然采用的是mobilenet,根据经验选择的V3,可自己更换版本

head部分使用全连接层将序列特征编码为普通的预测字符。

序列特征的维度对文本识别器的模型大小有影响,特别是对于超过6000个字符的中文识别。同时,并不是维度越高,序列特征表示的能力越强。在PP-OCR中,根据经验将序列特征的维度设置为48。

附:

文中涉及的PACT量化和FPGM剪枝操作:(模型的剪枝是为了减少参数量和运算量,而量化是为了压缩数据的占用量。)

模型量化简单来说就是用更低比特数据(如8位整型)代替原浮点数据(32位)。听上去似乎是非常简单,但是实际操作下来会发现这个坑远远比想象中的大。量化最核心的挑战,是如何在减少模型数据位宽的同时,模型的准确度不要掉下来,也就是在压缩率与准确率损失间作trade-off。这衍生出很多有趣的子问题,比如量化对象是谁(weight,activation,gradient),量化到几位(8位,4位,2位,1位),量化参数选哪些(如moving rate,clipping value),量化参数是否可以自动优化,不同层是否需要不同的量化参数,如何在量化后恢复准确率或者在训练时考虑量化,等等……

量化是将以往用32bit或者64bit表达的浮点数用8bit、16bit甚至1bit、2bit等占用较少内存空间的形式进行存储。这样的好处是:

  1. 减少模型体积,降低模型存储空间需求;
  2. 降低内存带宽需求;
  3. 加速计算。现代移动端设备,基本都支持SIMD(单指令流多数据流),以128-bit 寄存器为例,单个指令可以同时运算 4个32位单精度浮点,或者8个16 位整型,或者16个8位整型。显然8位整型数在 SIMD 的加持下,运算速率要更快。

PACT量化大致原理:

模型量化主要包括两个部分,一是对权重Weight量化,一是针对激活值Activation量化。同时对两部分进行量化,才能获得最大的计算效率收益。权重可以借助网络正则化等手段,让权重分布尽量紧凑,减少离群点、不均匀分布情况发生,而对于激活值还缺乏有效的手段。

PACT量化(PArameterized Clipping acTivation)是一种新的量化方法,该方法提出在量化激活值之前去掉一些离群点来降低模型量化带来的精度损失。提出方法的背景是作者发现:“在运用权重量化方案来量化activation时,激活值的量化结果和全精度结果相差较大”。作者发现,activation的量化可能引起的误差很大(相较于weight基本在 0到1范围内,activation的值的范围是无限大的,这是RELU的结果),所以提出截断式RELU 的激活函数。该截断的上界,即α 是可学习的参数,这保证了每层能够通过训练学习到不一样的量化范围,最大程度降低量化带来的舍入误差。

FPGM剪枝大致原理:

SFP与FPGM算法:

软剪枝的概念来源于Soft Filter Pruning (SFP)这篇论文,软剪枝(SFP)硬剪枝(Hard Filter Pruning,HFP)的区别,它们的不同点是HFP在每个epoch后会将卷积核直接剪掉,被剪掉的卷积核在下一个epoch中不会再出现,而SFP在每个epoch后,会将需要剪枝的卷积核仍然保留,只是将其参数置为0,依旧参与下一轮的迭代更新,在所有的epoch循环结束后再进行权重修剪。

 SFP和FPGM是同一个作者提出的,它们的思路相似,不同之处在于下图中的红色区域,SFP采用的是范数准则,而FPGM采用的是几何中位数准则。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值