【论文笔记】Filter Pruning via Geometric Median for Deep Convolutional Networks Acceleration

本文介绍了一种基于几何中心的模型压缩方法FPGM,该方法针对传统基于范数裁剪方式的局限性,通过裁剪靠近几何中心的冗余卷积核,实现了更有效的模型压缩效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文:https://arxiv.org/pdf/1811.00250.pdf
源码:https://github.com/he-y/filter-pruning-geometric-median

本篇论文来源于CVPR2019的oral,主要提出了一种基于几何中心剪枝的模型压缩方法,文章分析了基于范数阈值裁剪的局限性,提出了FPGM的裁剪方式,并经过实验验证证明了FPGM算法更加有效。

简介

在这篇论文中,指出了基于范数裁剪方式的弊端,经过试验分析作者发现基于番薯标准裁剪的效果,主要取决于两个隐含条件: 1)权重的标准差足够大 2)权重的最小的范数应该趋近于0。然而这两个条件并不能保证总是满足,为了解决这个问题文章提出了一种基于几何中心的裁剪方式,认为靠近几何中心的卷积核在划水,因此可以裁减掉这些冗余的卷积核。
在这里插入图片描述

contributions

1)分析了基于范数标准裁剪方式的局限性,两个条件需要被满足: 1)权重的标准差足够大 2)权重的最小的范数应该趋近于0
2)提出了几何中位数裁剪的FPGM方法,裁剪掉可替代的冗余的卷积核
3)经过试验证明FPGM真实有效

相关工作

介绍了weight pruning与filter pruning的压缩方式
weight pruning 就是细粒度的从每个卷积核里面一点一点减,具体到每个值
filter pruning 就是比较粗粒度一些,直接以卷积核为单位进行裁剪
之后又介绍了二者之前的经典算法 balabala ~~~~~

方法

分析基于范数的评价标准

在这里插入图片描述
Figure.2 中蓝色的是我们认为的范数分布情况,基于范数裁剪的方法在理想情况下能发挥作用,但是在真实环境下却是绿色的分布,因此说明传统的基于范数裁剪的方式具有一定的局限性。
作者预训练了一些模型,权重分布可视化效果图如下所示。
在这里插入图片描述

基于几何中心的评价标准FPGM

在这里插入图片描述
公式(1)为几何中心的计算法方式,假设在实数空间内存在n个点 a ( i ) a^{(i)} a(i) i ∈ [ 1 , n ] i∈[1,n] i[1,n] ,目标是求解在实数空间内找到到各个a点欧式距离最小的 x x x x ∗ x^* x即为到各点距离和最小的几何中心
在这里插入图片描述
对应到本文问题上,我们当前层中的卷积核就是空间内的a点,因为用卷积核的符号替代,重新整理的后的几何中心求解公式即为公式(2) x G M x^{GM} xGM就是这些卷积核的几何中心
在这里插入图片描述
找到了几何中心后,顺利成章的我们就要开始找到距离几何中心最近的卷积核了,不难思考直接遍历每个卷积核,计算其与 x G M x^{GM} xGM的欧式距离,然后找到最小的即可。如公式(3)所示

pesudocode

在这里插入图片描述

实验结果

论文中分别在Cifar-10 和 ILSVRC-2012数据集上进行实验,FPGM因为考虑到了每个滤波器之间的关系,因此取得了较好的实验结果。
在这里插入图片描述
在这里插入图片描述

PS:(靠近几何中心的卷积核被认为是冗余的,这里存疑,划水的卷积核就应该被裁掉么?个人观点,如果卷积核彼此之间相似,那么在当前层对于该类型的featuremap就会增加,让模型更容易注意到,这是否说明对于model来说,这种类型的卷积核所关注的特征比较重要呢?)

代码修剪卷积神经网络用于资源高效推理,是一种优化模型的方法,旨在减小模型的尺寸和计算量,从而实现在资源受限的设备上进行高效推理。 修剪是指通过删除模型中的一些参数或神经元来减小模型的复杂性。在卷积神经网络中,修剪通常包括删除一些卷积核或通道,以及减少连接权重的数量。这可以通过一些算法和技术来实现,例如剪枝算法、稀疏矩阵和低秩近似等。 修剪卷积神经网络可以带来多个好处。首先,它可以大大减小模型的尺寸,从而降低了存储模型所需的内存空间。其次,修剪可以减少模型的计算量,使得模型可以更快地进行推理。这对移动设备和嵌入式系统等资源受限的设备非常重要。此外,修剪还可以提高模型的泛化能力,减少过拟合的风险。 对于修剪卷积神经网络的代码实现,一般分为两个步骤。首先,需要训练一个初始的卷积神经网络模型。然后,通过一些修剪算法选择要修剪的参数或神经元,并将其从模型中移除。修剪的目标可以是按照权重大小或梯度大小进行选择。 在实际编程中,代码可以使用一些深度学习框架(如PyTorch或TensorFlow)来实现。这些框架通常提供了一些修剪工具和函数,以便进行参数和神经元的修剪。开发者需要根据具体的应用场景和需求来选择合适的修剪策略,并根据框架的API来实现修剪过程。 总之,代码修剪卷积神经网络是一种资源高效推理的方法,通过减小模型的尺寸和计算量,提高模型的效率和性能。这对于在资源受限的设备上进行深度学习推理任务非常有意义。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值