通道剪枝Channel Pruning

 

你感觉不舒服的时候,就是成长的时候……

 

论文:Channel Pruning for Accelerating Very Deep Neural Networks

Github: https://github.com/yihui-he/channel-pruning

 

ICCV2017 旷视科技

 

论文提出了新的通道剪枝方法,基于2步迭代的剪枝方法。首先基于LASSO回归选择通道,然后基于最小均方误差,进行权值的重新学习。该方法在VGG-16上取得了5倍的加速,并且只产生0.3%的误差。

同时,论文给出了残差结构,多分支结构网络的剪枝方法。

model

Speed-up

Accuracy

VGG-16 channel pruning

5x

88.1 (Top-5), 67.8 (Top-1)

VGG-16 3C1

4x

89.9 (Top-5), 70.6 (Top-1)

ResNet-50

2x

90.8 (Top-5), 72.3 (Top-1)

faster RCNN

2x

36.7 (AP@.50:.05:.95)

faster RCNN

4x

35.1 (AP@.50:.05:.95)

 

传统的CNN加速方法,FFT,freeze ,optimize, quantize ,BinaryNet ,distlation,Structured simplification。

 

结构简化(Structured simplification)的加速方法:

(a)一个网络的3个卷积层

(b)让网络变得稀疏,去掉网络中的稀疏连接

(c)张量分解,分解一个矩阵为多个

(d)通道剪枝

 

通道剪枝:

N:样本数目,batch数目

n:输出通道数

kh,kw:卷积核大小

 

卷积核滤波器W大小为n*c

输入特征图大小X为N*c*kh*kw

输出特征图Y大小为N*n

c’:剪枝后的通道数

||.||F表示弗洛贝尼乌斯范数,也就是2范数

Βi表示第i个特征图通道的

 

整个剪枝过程,在输入X一定的情况下,需要选择剪掉第几个通道,同时还需要在通道被剪后,进行weights的重新学习,保证,剪枝前和剪枝后,输出的特征图具有最小的L2范数。

另外这里和PocketFlow一样,所谓剪枝,就是找一个mask,也就是Β给乘上去,并不是真正的剪掉,只有在最后导出模型的时候,才会真正把mask为0的通道删掉。

 

由于上面的式子中有Β和W2个需要优化的变量,是一个NP hard问题。所以,作者提出,首先固定W学习Β,得到要剪枝的通道,再固定Β,只学习W,这样来实现整体的剪枝过程。

(1)只学习β.

这里采用LASSO回归,增加基于β.的L1范数,可以学习到非常稀疏的β.数值。λ参数控制剪枝率,越大,表示剪枝率越大,最后模型越小。

(2)只学习W

这里,对W除以了W的2范数,进行了归一化操作,更方便学习优化。为了保证最终X*W的输出不变,对β乘以了W的2范数

 

剪枝残差结构模块:

残差模块的最后一层:

对于最后一个1x1 conv的pruning,我们不仅要考虑residual分支上的信息恢复,同样要考虑到identity maping分支上面的信息丢失。因此最终用于恢复的目标值并非是Y2,而是Y1 - Y'1 + Y2。
这样就可以在W的计算中考虑进去identity maping上信息的恢复了。

 

残差模块的第一层:

由于identity maping分支和shortcut 分支共享输入,所以不能直接进行剪枝。而是通过对

identity maping分支的输入进行通道采样,从C0采样为C0‘,实现了通道的剪枝,而shortcut分支通道没有进行剪枝,因为该分支没有卷积参数可以学习。

 

实验结果:

本文的channel pruning方法在单个层pruning比filter pruning方法的效果要好。在相同加速比的情况下,具有更小的误差。

 

总结:

通道剪枝,可以实现主流网络结构VGG,Inception ,Resnet等的加速。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值