【原文】Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks
代码地址

1.神经网络剪枝

本篇论文是笔者阅读的第一篇神经网络剪枝论文,选取的2018年的论文,相关概念的理解还不透彻,后续会补充2019年很火的神经网络蒸馏内容

剪枝(Pruning)是深度学习的一种技术,目标是为了开发更小、更高效的神经网络。 这是一种包括去掉权重张量中多余的值的模型优化技术。 压缩后的神经网络运行速度更快,还减少了训练网络的计算成本。 这在部署模型到手机或其它边缘设备时尤为关键。

由于神经网络模型往往十分庞大,这就需要占用终端设备更高的内存,同时也会导致运行时间很长,这无疑会导致终端设备的运行效果下降,比如ResNet-152拥有60 200 000 000个参数,需要231MB硬盘空间,380MB内存空间,使用cpu计算需要6秒。

下图为VGG-19,CNN-34,ResNet-34的网络结构,ResNet相较于CNN-34每两层增加了短路机制。

神经网络可视化最新论文 神经网络论文推荐_神经网络可视化最新论文

所以近年来很多学者对神经网络压缩和加速进行了研究,本篇论文介绍的就是针对卷积神经网络的剪枝方法。

2.卷积神经网络的过滤器(filter)

因为笔者阅读论文时对filter的理解不全面,才增加此章,可跳过。

filter可被翻译为过滤器/滤波器,在多数论文中也被称为卷积核(kernel)。

filter主要用于卷积过程,卷积可由下图表示,是对图片中特征进行提取的过程。

神经网络可视化最新论文 神经网络论文推荐_卷积核_02


上图是对RGB图像的卷积,RGB图像是三通道(channels),上图左侧红绿蓝的三层图像。上图中中间三层黄色图像就是filter/kernel,因为需要卷积的左图为三层,所以对应的filter也是三层,也就是filter的深度为3(如果是灰度图像,channels为1,filter的深度也为1)。

上面的左图是6×6××3的图像,而filter我们设置为3×3×3,上面的卷积过程就是:

  • 第一步卷积核放置于左图的左上角,进行卷积操作(这里并没有规定具体的卷积运算),通过卷积操作得到的结果,就是右图4×4图片中的左上角有蓝点的数值。
  • 取步长为1,也就是filter每次卷积只在图像上移动一个单元,假设规定移动方向为由左向右,由上至下,则第二次卷积操作得到右图中第一行第二个格子中的数值。
  • 如此逐次移动filter,得到右图4×4图像中的全部数值,也就是我们通过卷积操作从原图中提取出的特征。

通常为了提取出更多的特征,往往不会设置一个filter,如下图所示,设置有4个filters,得到的结果也是具有四层的特征。

神经网络可视化最新论文 神经网络论文推荐_卷积核_03

3.soft filter pruning(SFP) & before(hard filter pruning)

作者将自己的提出的方法称为软过滤,同之前的方法相比,删除filter的过程是动态的。其区别如下图所示。

神经网络可视化最新论文 神经网络论文推荐_卷积_04


之前的方法在删除filter后会导致模型质量下降,而使用SFP后能很大程度上保持模型的性能。

4.SPF

SPF执行过程如下图所示。

神经网络可视化最新论文 神经网络论文推荐_卷积_05

神经网络可视化最新论文 神经网络论文推荐_神经网络可视化最新论文_06


【未完待续】学习完代码后,进行补充。