【ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression】论文笔记

[ICCV’17]论文链接:https://arxiv.org/pdf/1707.06342.pdf
GitHub网址:https://github.com/Roll920/ThiNet
项目资料网址:http://lamda.nju.edu.cn/luojh/project/ThiNet_ICCV17/ThiNet_ICCV17_CN.html
这篇论文提出了一个高效且统一的CNN框架ThiNet,实现网络模型在训练与预测阶段的同时加速与压缩。关注filter级别的剪枝,将filter剪枝操作定义为一个优化问题,通过下一层的统计信息来指导当前层的剪枝。

效果:

在ILSVRC-12数据集上,在VGG16上能够降低3.31×的FLOPs,16.63×的网络参数,而top-5准确度下降仅为0.52%。
对于ResNet-50这样紧凑的网络,ThiNet也能减少超过一半的的参数与FLOPs,而top-5仅降低1%。
ThiNet能将VGG16网络模型剪枝到只有5.05MB的大小,保留AlexNet级别的精度,却拥有更强的泛化性能。
不同选择算法的性能比较:
这里写图片描述

主要思想:

ThiNet的核心就在于filter的选择方式:filter的修剪取决于其下一层的输出,而不是当前层。
思想就是如果某层输入数据中的一部分就可以得到与全部输入非常近似的结果,那么就可以将输入数据中其他部分去掉,同时其对应的前面层的filter也就可以去掉。
ThiNet的剪枝框架:
这里写图片描述
首先,根据图中的虚线框部分来判断哪些通道及其相对应的filter的性能较弱(第一行中用黄色高亮的部分)。这些通道(及其对应的filter)对网络的性能影响较小,因此可被丢弃,从而得到一个剪枝的模型。最后剪枝后的模型通过微调以恢复其精度。

通道选择(数据驱动):

为了确定哪个通道可以安全移除,将收集用于重要性评估的训练集。如图所示,由y表示的元素从张量(ReLU之前)中进行随机采样。
这里写图片描述
通常,带偏置项b的卷积计算如下:
这里写图片描述
现在,如果我们定义:
这里写图片描述
便能将上面公式简化为:
这里写图片描述
这里 y^=y−b。 若我们能够找到一个通道子集S⊂{1,2,…,C},使得下式
这里写图片描述
总是成立,那么我们便能不再依赖于任何c∉S的通道。因此,这些通道(及其对应的filter)便能在不改变CNN网络模型精度的前提下被安全移除。当然,上面的公式不可能对于所有的x^与y^总保持成立。但我们可以手动提取一部分训练样本,来计算一个使得上式近似正确的子集S。

一种用于通道选择的贪心算法:

给定m(m由图片数量与位置数量决定)个训练样本{(x^i,y^i)},原通道选择问题可以转化为如下的优化问题:
这里写图片描述
这里,|S|为子集S的元素数量,r为预定义的压缩率(即保留多少个通道)。令T为被移除的通道集合(S∪T={1,2,…,C} 同时 S∩T=∅),我们便能最小化另一等价优化目标:
这里写图片描述
求解公式是一个NP难的问题,因此我们提出了一种快速的贪心算法进行求解。
这里写图片描述

最小化重构误差:

在决定保留哪几个滤波器之后,我们可以通过对每一个通道赋予权重来进一步地减小重构误差。
这里写图片描述
上式可以通过普通的最小二乘法来求解。

算法步骤:

1.filter选择。
使用layer(i + 1)的输入中的一个通道子集来逼近layer(i + 1)中的输出,则其他通道可以安全地从layer(i + 1)的输入中移除。layer(i + 1)的输入中的一个通道由第i层中的一个filter产生,因此可以同时修剪第i层中的相应filter。
2.修剪。
3.微调。
4.重复步骤1修剪下一层。

注意事项:

1)对于VGG-16网络,由于前面10层卷积占据了90%的计算量,而全连接层又占据了86%的参数,因此作者采用对前面10层卷积层进行prune,达到加速目的,另外将所有全连接层用一个global average pooling层代替。
2)对于ResNet网络,作者采用只对一个block的前两层卷积做prune,而不动最后一个卷积层,如下图。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值