37DATA

模型加速

背景

工程应用中除了考虑算法精度以外,还需要考虑算法速度和设备成本。在验证完算法效果以后,会开展模型加速的工作。

其中常用的模型加速的手段有

  •  基础网络使用轻量化网络

  •  使用模型蒸馏

  •  模型剪枝

  •  等等...

轻量化网络

mobilenet系列

mobilenet 系列能较其他网络速度更快的核心原因在于使用了 深度可分离卷积(Depthwise separable convolution)。使用深度可分离卷积替换标准卷积,可以减少 8/9的计算量。同时囿于卷积的底层实现对点乘运算进行了加速,而深度可分离卷积的计算大部分均为点乘运算,所以能够进一步加快模型推断速度。

标准卷积

输入的特征映射F FF尺寸为Image,采用的标准卷积K为 Image(如图(a)所示),输出的特征映射为G 尺寸为Image

 。输入的通道数为M ,输出的通道数为N 。对应的计算量为Image

Depthwise Separable Convolution

深度可分离卷积的核心思路是使用 深度卷积和逐点卷积 代替标准卷积。步骤如下

1. 深度卷积 卷积核为Image,经过深度卷积核,输出特征Image,计算量为Image;

2. 逐点卷积 卷积核为Image,经过逐点卷积核,输出特征Image,计算量为Image;

这样在既保证了输入输出不变的情况下,计算量减少了Image,当标准卷积是 3*3卷积时,计算量缩减到1/9。

Image

实际用法

在日常应用中,以目标检测为例,可以把backbone的resnet50基础网络 替换成 mobilenetV2网络,重新训练。可得出更高效的模型。

shufflenet系列

shufflentnet 的核心思想是在mobilenet的思路基础上,通过分组卷积 来代替标准卷积,进一步减少 逐点卷积的减少量,继而减少计算量。所以整体来看,shufflenet是比mobilnet的计算量更少。

Image

Group Convolution

分组卷积 主要是讲 一个1*1 卷积 Image,分成三个 (1,1,M/3,N/3),从后concat在一起。其中搭配 通道打乱,其目的是为了缓和因使用分组卷积带来的特征丢失问题,

如下图

Image

效果对比

Image

对比mobilenet 和 shufflenet 的效果,我们发现shufflenet的计算复杂度更少,但分类效果(特征提取能力)更差。而mobilenet虽然对比shufflenet计算复杂度高,但总体来看对比标准网络结构复杂度低,且效果更佳,总体来看,Mobilenet性价比更高。

模型蒸馏

知识蒸馏的基本理念,是考虑到较大网络内部存在的稀疏性或冗余性。虽然大规模网络具有较高的表示能力,但如果网络容量未达到饱和,则可以用具有较低表示能力的较小网络(即较少的神经元)表示。

效果较好的训练步骤如下:

  1. 训练一个效果比较的大网络,作为教师模型(Teacher)

  2. 使用 小网络训练,得到学生模型(Student)

  3. 将 教师模型 和 学生模型 放到蒸馏学习架构中,一起训练,最终得到更好的学生模型。

其中,在蒸馏学习中不仅仅只有label loss,还可以加入中间过程监督,即 Teacher 的 layerM 与 Student 的layerN 的输出差异也可以作为loss 放入训练。

Loss

loss一共有两种,分别是 经过soft target 和hard target处理后的 交叉熵。

  • hard target 为 softmax(T=1), T=1时,为正常softmax

  • soft target 为 softmax(T=t)

student的目标函数是hard target和soft target目标函数的加权平均,使用hard target时T=1,soft target时T和teacher的一样。Hinton的经验是给hard target的权重小一点。另外要注意的是,因为在求梯度(导数)时新的目标函数会导致梯度是以前的  Image,所以要再乘上Image,不然T变了的话hard target不减小(T=1),但soft target会变。在蒸馏时teacher使用新的softmax产生soft targets, 即Softmax(T=t)公式为

Image

Image

结语

除了以上的模型加速方法以外,还有模型通道缩减等方法。从理论上来讲,模型规模缩减能大大加快模型推断速度,是立竿见影的做法,但也随之带来了模型泛化性/特征提取能力不够的问题,所以在模型加速后,可适当对训练数据清洗,使用噪音更小的数据,使得小模型也同样能够拟合数据,这样就能达到性能与速度的平衡。

参考资料

《深度神经网络模型蒸馏Distillation》深度神经网络模型蒸馏Distillation - 知乎 (zhihu.com)

https://zhuanlan.zhihu.com/p/71986772

《mobilenet》(23条消息) 轻量级网络--MobileNet论文解读_DFan的NoteBook-CSDN博客

https://blog.csdn.net/u011974639/article/details/79199306

《shufflenet》(23条消息) ShuffleNet算法详解_AI之路-CSDN博客_shufflenet

https://blog.csdn.net/u014380165/article/details/75137111