论文:Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks (SFP)
论文链接:https://www.ijcai.org/proceedings/2018/0309.pdf
代码链接:https://github.com/he-y/soft-filter-pruning
Title | Venue | Type | Code |
---|---|---|---|
Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks | IJCAI | F | github(pytorch) |
Abstract
所提出的SFP使得修剪后的过滤器在对模型进行训练时能够得到更新。
对修剪后的模型进行训练时更新。与以往的工作相比,SFP有两个优势:
(1)更大的模型容量
。与将过滤器固定为零相比,更新以前修剪过的过滤器为我们的方法提供了更大的优化空间。因此,我们所训练的网络具有更大的模型学习能力。
(2)减少对预训练模型的依赖
。大容量使SFP能够从零开始训练,并同时修剪模型
思路
- 在模型训练的过程中,将
L
2
L_2
L2 范数小的按照预设的剪枝比例进行裁剪(被剪掉的卷积核的值全部设置为
0
),然后按照对模型继续进行训练,一直重复,直到模型训练结束。
一些关键词
-
卷积核剪枝
-
迭代剪枝
-
软剪枝
1 Introduction
目前问题
- 模型容量降低;
- 对预训练模型的依赖。
方法操作对象
卷积核
总述
在第一次训练之前,几乎所有层的卷积核都用小的
L
2
L_2
L2-norm 选择并设置为0。
然后利用训练数据对修剪后的模型进行更新。
在下一个训练时期之前,我们的SFP将修剪一组新的小
L
2
L_2
L2-norm 范数的卷积核。
这些训练过程一直持续到收敛为止。
最后,一些卷积核将被选择和修剪,没有进一步的更新。
SFP算法使压缩后的网络具有更大的模型容量,从而达到比其他算法更高的精度
贡献
- SFP允许在训练过程中对修剪后的过滤器进行更新。这种软方式可以极大地保持模型的容量,从而获得优异的性能。
- 我们的加速方法可以从零开始训练模型,与最先进的技术相比,可以获得更好的性能。这样就节省了调优过程和整体训练时间。此外,使用预训练的模型可以进一步提高我们的方法的性能,以提高最先进的模型加速。
- 在两个基准数据集上的广泛实验证明了我们的SFP的有效性和效率。与CIFAR-10相比,我们将ResNet-110的相对精度提高了约4%,提高了2倍,并且实现了最先进的解决方案
2 Related Works
- 权重剪枝
- 卷积核剪枝
3 Algorithm
硬卷积核修剪 VS 软卷积核修剪
-
硬卷积核修剪
我们称之为硬卷积核修剪。通常情况下,这些算法首先对预先训练好的模型的单层进行滤波,然后对修剪后的模型进行微调,以弥补性能的下降。然后他们修剪下一层并再次微调模型,直到最后一层模型被修剪。然而,一旦筛选器被修剪,这些方法将不会再次更新这些筛选器 -
软卷积核修剪
在训练阶段不断更新修剪后的卷积核
好处。它既保持了深度压缩CNN模型的原始模型容量,又避免了逐层剪枝的贪心过程,几乎可以同时对所有层进行剪枝。我们的方法可以在从零开始的训练过程中,或者在一个预先训练的模型中裁剪一个模型。在每个训练epoch中,根据训练数据对整个模型进行优化训练。在每个epoch之后,每个卷积核计算所有过滤器的 L 2 L_2 L2 范数,作为我们选择卷积核策略的标准。然后,我们将通过设置相应的卷积核权值为0来修剪所选的卷积核,接下来是下一个训练epoch。最后,原来CNNs 被精简成一个紧凑而高效的模型。
相关图解
-
图1.
硬卷积核修剪 VS 软卷积核修剪
-
图2.
SFP的概述
算法流程
1、求模型权重的 L2 范数
2、将 L2 范数结果小的置0
3、进入模型新的一轮训练,更新全部的权重(包含被置零的卷积核全部权重。即全零卷积核,与非零卷积核)
4、直到模型全部收敛
5、完全去掉被置 0 的卷积核
4 Experiments
- 表1:CIFAR-10上修剪ResNet的比较
- 表2:ImageNet上修剪ResNet的比较。
-
表3:理论加速和实际加速的比较。
-
拓展阅读
Soft Filter Pruning(SFP)算法笔记
https://blog.csdn.net/u014380165/article/details/81107032