阅读笔记——HRank: Filter Pruning using High-Rank Feature Map

概述

这篇通道裁剪论文同样提到,对于权重裁剪在特定硬件上可以获得加速,但是通用性不够。相对的,通道裁剪就没有这样的问题。因此文章聚焦于通道裁剪达到模型压缩(降低参数量)和加速(减少计算 FLOPs)的效果。

同时文章将通道裁剪方法分为两类:

  • 一类是基于 CNN 网络内在性质做裁剪,这类裁剪方法不需要修改网络损失,在裁剪后,通过 finetune 恢复模型性能;
  • 另一类是自适应重要性排序方法,与前面方法不同的是,这类方法将裁剪方法集成到网络训练损失,然后联合优化一个自适应的裁剪决策。

如果下图所示,提出的方法属于第一类方法,不需要修改训练函数损失,更加直接方便。
在这里插入图片描述

方法

方法将特征图分为高秩部分和低秩部分,认为低秩部分包含更少的信息,可以进行裁剪。

因此首先需要计算特征图中各通道秩的情况。对于一个训练好的网络,输入一批图片,然后进行秩的计算。

论文首先证明了,如下图所示,不管输入图片数量多少,各层计算出的秩基本上保持稳定,使得可以在不用输入太多图片的情况下完成秩的估算。在实验中作者最终设置图片数量 g = 500 g=500 g=500
在这里插入图片描述
在计算出每个通道的秩之后,整个裁剪流程就相对简单了:

  1. 计算特征图平均秩;
  2. 对秩值按从高到低排序;
  3. 找到高秩值对应的特征通道,裁剪低秩值通道;
  4. 使用高秩值通道作为预训练权重,对裁剪后的模型进行 finetune 训练。

一些裁剪情况如下图所示,其中红线所指向的是发生了裁剪的卷积层:
在这里插入图片描述

实验和指标

方法在 Resnet、Densenet 模型的裁剪结果如下图所示。可以看到,相对于原始模型,裁剪后的模型可能精度会有提升,也可能会有降低。
在这里插入图片描述
在这里插入图片描述
另外作者还提出,在进行 finetune 时,可以冻结一部分高秩通道权重,但是权重的冻结还是影响了模型性能,如下图所示:
在这里插入图片描述
为了证明高秩通道确实包含更多的信息量,作者也做了一些实验。在裁剪的时候对高秩或者随机裁剪,相对于裁剪掉低秩通道,如下图所示,都造成了更多的性能损失:
在这里插入图片描述

可能的问题

除了方法的效果,可能还存在的一些问题就是:

  • 需要对每个层分别设置裁剪系数,但是关于系数的设置论文中似乎没有细讲;
  • 关于残差结构的裁剪细节也没有太细讲,需要去看代码实现。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇哇九号

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值