"Learning Efficient Convolutional Networks through Network Slimming"这篇文章提出了一种有效的结构性剪枝方法,即规整的通道剪枝策略:在训练期间,通过对网络BN层的gamma系数施加L1正则约束,使得模型朝着结构性稀疏的方向调整参数。此时BN层的Gamma系数所起的作用,类似于信息流通道的开关系数,控制着信息流通道的开关闭合。完成稀疏训练或者正则化之后,便可以按照既定的压缩比(或剪枝率)裁剪模型,能够生成低存储占用的精简模型、并提升一定的加速比。该方法与其他模型压缩方法(量化、低秩分解)结合使用,可以进一步提高压缩比;与其他优化加速方法(TensorRT等)结合使用,可以提升推理速度;若推理精度损失过大,也可以结合知识蒸馏,有效恢复损失的精度。
上图(图1、图2)显示了Network Slimming的基本流程,属于典型的迭代式过程(包含sparse-training、fine-tuning)。在channel-level实施的规整剪枝操作,能够沿输出通道维度裁剪当前层的3D filters,并沿输入通道维度裁剪下一层的2D kernels。最终所生成的精简模型能够直接运行在成熟框架(Pytorch、MXnet或TensorFlow等)或硬件平台上(GPU、FPGA等),无需特殊算法库的支持。另外,在正则化期间,BN层Gamma系数的分布经自动调整、稀疏化之后,有助于网络结构的优化探索,即Network Slimming属于自