论文:Channel Pruning for Accelerating Very Deep Neural Networks
论文链接:https://arxiv.org/abs/1707.06168
代码地址:https://github.com/yihui-he/channel-pruning
这是一篇ICCV2017的文章,关于用通道剪枝(channel pruning)来做模型加速,通道减枝是模型压缩和加速领域的一个重要分支。
文章的核心内容是对训练好的模型进行通道剪枝(channel pruning),而通道减枝是通过迭代两步操作进行的:第一步是channel selection,这一步是采用LASSO regression来做的,其实就是添加了一个L1范数来约束权重,因为L1范数可以使得权重中大部分值为0,所以能使权重更加稀疏,这样就可以把那些稀疏的channel剪掉;第二步是reconstruction,这一步是基于linear least squares(也就是最小二乘,或者叫最小平方)来约束剪枝后输出的feature map要尽可能和减枝前的输出feature map相等,也就是最小二乘值越小越好。可以看出本文的通道剪枝是对训练好的模型进行的,也就是文章说的inference time,当然作者在最后的conclusion中也提到以后会在train time中也引进通道剪枝,希望能减少训练的时间。
原文中作者列举的加速效果:Our pruned VGG-16 achieves the state-of-the-art results by 5 speed-up along with only 0.3% increase of error. More importantly, our method is able to accelerate modern networks like ResNet, Xception and suffers only 1.4%, 1.0% accuracy loss under 2 speedup respectively, which is significant.
本文采用的通道剪枝(channel pruning)是模型压缩和加速领域中一种简化网络结构的操作,文中作者还列举了其他两种常见的简化网络结构的操作:sparse connection和tensor factorization,可以看Figure1的对比。(a)表示传统的3层卷积操作。(b)表示sparse connection,这是通过去掉一些参数很小的连接得到的,理论上是有明显的加速效果的,但是在实现过程中并不容易,主要因为稀疏连接层的形状不规则。