[模型压缩]--CVPR2020-HRank:Filter Pruning using High-Rank Feature Map

Github

重新定义了剪枝规则,从实验效果来看,效率更高

在这里插入图片描述

Abstract:

神经网络剪枝为深度神经网络在资源受限设备上的应用提供了广阔的前景。然而,现有的剪枝方法由于缺乏对非显著网络成分的理论指导,在剪枝设计中存在训练效率低、人工成本高的问题。本文通过对高秩特征图的研究,提出了一种新的滤波剪枝方法。我们的HRank的灵感来自于这样一个发现,即由单个过滤器生成的多个特征图的平均秩总是相同的,而不考虑接收到的CNNs图像batch的数量。在此基础上,本文提出了一种用数学方法对低秩特征图进行滤波的方法。我们的剪枝背后的原则是,低秩特征图包含的信息较少,因此剪枝的结果可以很容易地复制。此外,我们还通过实验证明了高秩特征图的权值包含了更多的重要信息,即使不更新一部分,对模型性能的影响也很小。在不引入任何额外约束的情况下,HRank在计算和参数减少方面比现有技术有了显著的改进,并且具有相似的准确性。

Introduction:

当前模型部署除了tensorRT等加速框架外,主要包含了三种模型加速的方法:
1.卷积核压缩
2.参数量化
3.网络剪枝,包含权值剪枝和滤波器剪枝

本文中重点研究了滤波器剪枝来实现模型压缩(减少参数)和加速(减少FLOPs),旨在为低计算能力的设备提供一个通用的解决方案。其中滤波器剪枝可以分为两种:
1.属性重要性:根据CNNs的固有属性对过滤器进行修剪。这些修剪方法并不能弥补网络训练的损失。在修剪之后,通过微调来增强模型性能。在这些方法中,Hu等人利用大网络中输出的稀疏性来去除零激活率高的滤波器。基于l1-norm的剪枝假设带有小规范的参数或特征信息较少,因此应该首先进行剪枝。Molchanov等人考虑了一阶梯度来评估滤波器的重要性,并删除了最不重要的滤波器。在[34]中,对最终响应的重要性评分被传播到网络中的每个过滤器,并通过删除重要性最低的一个来修剪CNNs。He等人计算了层的几何中位数,并修剪了最接近的过滤器。大多数滤波器评估函数的设计都是自适应的,这带来了时间复杂度低的优点,但也限制了加速度和压缩比。

2.自适应重要性:与基于属性重要性的方法不同,另一个方向将剪枝需求嵌入到网络训练损失中,并采用联合再训练优化来生成自适应剪枝决策。Liu等人和Zhao等人对BN层的尺度因子施加了稀疏约束,使得具有较低尺度因子的通道被认为是不重要的。Huang等人和Lin等人引入了一个新的比例因子参数(也称为掩码)来学习稀疏结构剪枝,其中移除对应于比例因子0的滤波器。与基于属性重要性的剪枝方法相比,基于自适应重要性的剪枝方法由于其联合优化,通常能获得更好的压缩和加速效果。然而,由于损失发生了变化,所需的再培训步骤在机器时间和人工劳动中都很繁重,通常需要进行另一轮超参数调优。对于某些方法,例如基于掩码的方案,修改后的损失甚至需要专门的优化器,这影响了基于自适应重要性的方法的灵活性和易用性。

HRank的动机来自于经验和定量的观察。如图2所示,我们发现,无论CNN看到多少数据,单个过滤器生成的feature map的平均秩总是相同的。这表明,只使用输入图像的一小部分就可以准确地估计深度cnn中特征图的秩,从而达到高效的目的。基于这一思想,我们用数学方法证明了秩越低的特征映射对精度的贡献越小。因此,可以首先删除生成这些特征映射的过滤器。
在这里插入图片描述
解释下图2,x轴代表特征图的通道,y轴代表batch的大小,图中的颜色表示特征图的rank,可以发现每个通道的特征图rank与batch大小无关,总是相同,因此可以使用图像的一小部分就可以估计出特征图的rank。

Approach:

文章公式推导比较多,但是容易懂,我这里挑出主要的说明:
卷积核剪枝的目的是为了减去不重要的卷积核,本文对卷积核的重要性进行了重新定义,卷积核的重要性与输出特征图的rank有关。
在这里插入图片描述
其中,输出特征图的rank可以经过SVD分解,得到高rank的特征和低rank的特征。因此,高阶特征图实际上比低阶特征图包含更多的信息。因此,rank排名可以作为一个可靠的衡量信息丰富度。
在这里插入图片描述
以往工作中,为了准确地估计秩的期望,必须使用大量的输入图像。在评估卷积核的相对重要性时,这是一个巨大的挑战。本文通过实验观察,发现特征图的平均rank与Batch数量无关,因此可以使用较小的输入,去得到平均rank,也就是公式中的g=500张图片。
在这里插入图片描述

剪枝流程如下图:
1.使用输入计算出每个卷积核的输出特征图的平均rank,Ri
在这里插入图片描述
2.对得到的平均rank进行排序,得到
在这里插入图片描述
3.依据rank排序结果,决定剪枝的个数,然后对排序较后的卷积核进行剪枝。
4.以剩余的卷积核为初始参数进行finetune
在这里插入图片描述

Experiments:

1.CIFAR10
在这里插入图片描述
2.ImageNet
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42096202/article/details/104595532
今日推荐