ThiNet算法详解

ThiNet是一种以filter为单位的深度学习模型压缩方法,通过prune冗余filter实现模型压缩和加速。它根据filter的输出判断其对结果的贡献,若可用输入子集近似得到相同输出,则可去掉冗余filter。在VGG-16和ResNet50上的实验表明,ThiNet能显著减少FLOPs和模型大小,同时保持较高准确性。

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

论文:ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression
论文链接:https://arxiv.org/abs/1707.06342

prune(剪枝)是深度学习模型压缩和加速的重要方法。ThiNet是ICCV2017的文章,主要通过prune方式达到模型压缩和加速,prune以filter(卷积核)为单位,根据该层filter的输出来判断该filter是否对结果有贡献,如果没有贡献或贡献很小,则直接把这个filter去掉,因此文章的核心就在于filter的选择方式,依据则是如果可以用某一层的输入的一个子集代替原来的输入得到尽可能类似原来的输出的话,那么子集以外的输入就可以去掉,同时其对应的前面一层的filter也就可以去掉。以去掉冗余filter做prune的研究还有很多,关键在于选择方式,比如计算filter的绝对值和,认为如果一个filter的绝对值和比较小,说明该filter并不重要,这种算法暂且叫Weight sum;还有计算激活层输出的feature map的值的稀疏程度,如果feature map的值很稀疏,也就是大部分值是0,那么该feature map对应的filter也是冗余的,可以去掉,这种算法暂且叫APoZ(Average Percentage of Zeros)。这两种压缩算法在后面的实验中都会提到。

具体ThiNet的压缩和加速效果怎么样?VGG-16可以达到减少3.31倍FLOPs和16.63倍的压缩,top-5准确率只下降0.52%。ResNet50可以达到减少2.26倍FLOPs和2.06倍的压缩,top-5准确率只下降了1%。

框架的流程图如下Figure1,第一行是filter selection,选择的依据是:如果我们可以用第i+1层的输入channel的一个子集作为第i+1层的输入且近似得到第i+1层的输出,那么这个子集以外的channel就可以去掉了,因为第i+1层的一个输入channel对应第i层的一个filter(卷积核),因此去掉第i+1层的channel同时也就可以去掉第i层的filter。第二行是prune,将第一步的weak channel和对应的前面一层的filter去掉,得到更窄(

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值