Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度学习算法优化系列一 | ICLR 2017《Pruning Filters for Efficient ConvNets》

深度学习算法优化系列一 | ICLR 2017《Pruning Filters for Efficient ConvNets》

作者头像
BBuf
发布于 2019-12-23 10:09:07
发布于 2019-12-23 10:09:07
1.8K0
举报
文章被收录于专栏:GiantPandaCVGiantPandaCV

前言

这篇文章是深度学习算法优化系列的第一篇文章,主要解读一篇ICLR 2017年的《Pruning Filters for Efficient ConvNets》,关于通道剪枝策略的一篇论文。论文原地址见附录。

背景

模型压缩的方法中,包括剪枝,量化,多值网络,模型蒸馏等。这篇论文是模型剪枝当面的。剪枝最初应用应该是在决策树算法中,通过降低决策树的模型复杂度防止过拟合。在CNN中也是类似的思想,因为在大型的模型中,总是不可避免的存在大量的权重冗余,这种冗余甚至有可能降低模型的准确率。因此需要借助剪枝的方法压缩模型,在压缩率合适的条件下,可以提高模型的准确率的同时减少模型大小。同时,在往移动端部署模型的时候也会考虑牺牲一点精度换取时间和空间的节约。CNN的剪枝主要分为两种,一种是基于幅值的剪枝,一种是基于通道的剪枝。基于幅值的剪枝主要思想是将小于一定阈值的权重抛弃,阈值用剪枝率来确定。而基于通道的剪枝主要思想史将不重要的整个权重通道剪掉,从而将模型变小。这篇论文就属于第二类。

1. 摘要

CNN在各种应用中的成功伴随着计算量和参数量的显着增加。最近朝着减少这些开销的研究涉及到在不损伤精度的条件下剪枝和压缩不同层的权重。然而,基于幅值的权重剪枝主要是减少了全连接层的参数量,并且由于修剪的不规则性,并没有减少卷积层的计算成本。这篇论文展示了一种对于CNN的加速方法,即直接移除对于CNN精度影响很小的卷积核。通过将网络的这些卷积核以及它们的feature map移除掉,可以极大的减少计算成本。与权重剪枝相比,这个方法不会导致稀疏连接模式。因此,它不需要专门支持稀疏卷积库的支持,它可以使用针对密集矩阵乘法的BLAS库高效处理,我们展示了通过简单的卷积核剪枝可以推理成本,在CIFAR10上,VGG-16的推理成本可降低高达34%,ResNet-110最高可降低38%,同时通过重新训练网络恢复接近原始精度。

2. 卷积核和特征图剪枝

是第个卷积层的输入通道数,和是输入特征图的高和宽。卷积层将输入维度为的特征图转化为维度为的输出特征图作为下一层的输入。这里卷积核的维度为,卷积层的乘加操作次数为。如下面的Figure1所示:

当我们把一个卷积核剪掉后,对应的feature map也没了,减少了操作。这是因为当前一个卷积层的卷积核被剪掉后,该层保留的卷积核参数不仅仅在卷积核个数这个维度上缩减了,还和上一个卷积层剪掉的卷积核个数有关,其简介导致了该层卷积核在通道上的缩减。

3. 方法

3.1 确定在单层中需要剪枝的卷积核

论文用来表示第层的一个卷积核,然后论文提出通过,即一个卷积核类所有权值绝对值之和(L1范数)来表示每个层中该卷积核的重要程度。Figure2(a)展示了在CIFAR-10数据集上训练好的VGG16网络中每一个卷积层中每个卷积核权重绝对值之和的分布,可以看到每层的分布是不同的。

同时论文发现剪掉L1值最小的卷积核比随机剪枝或者剪掉最大的卷积核效果更好。从第个卷积层剪掉个卷积核的算法过程如下:

  • 对每个卷积核,计算它的权重绝对值之和。
  • 根据排序。
  • 将个权重绝对值之和最小的卷积核及对应的feature map剪掉。下一个卷积层中和剪掉的feature ,ap相关的卷积核也要移除。
  • 一个对于第层和第层的新的权重矩阵被创建,并且剩下的权重参数被复制到新模型中。

3.2 确定卷积层对剪枝的敏感度

为了确定每个卷积层对剪枝的敏感度,论文对每一层独立剪枝并在验证集上对剪枝后的网络进行评估。Figure2(b)展示了这一结果。其中曲线的斜率就可以代表敏感度,斜率比较平缓的说明该层对剪枝的敏感度就更高。论文根据经验来决定对每一层的卷积核进行剪枝,对于深度网络(如VGG-16或ResNets),观察到同一stage相同尺寸的特征图)对应的层对剪枝的敏感度相似,论文对于同一stage的所有层使用相同的剪枝比例。而对于那些敏感度高的层,剪枝时比例很小,甚至完全不进行剪枝。

3.3 跨多个卷积层剪枝

之前的工作是逐层剪枝然后重新训练来恢复进度。然而理解如何能一次性的对多层进行剪枝是有有必要的:(1)因为对于深层网络来说,逐层剪枝再训练太耗时。(2)整体剪枝的方法可以为网络鲁棒性提供一个全局视野,从而形成了一个更小的网络。(3)对于复杂的网络,一个整体的方法是有必要的。例如对于ResNet,对恒等映射特征图或者每个残差模块的第二层剪枝会导致额外层的剪枝。为了对多层同时剪枝,论文考虑了两个策略。

  • 每一层独立剪枝,即在计算(求权重绝对值之和)时不考虑上一层的剪枝情况,所以计算时Figure3中的黄色点权重仍然参与计算。
  • 采用贪心策略,计算时不计算已经剪枝过的,即黄色点不参与计算。实验证明采用贪心策略的计算方式精度会好一些。

对于简单的CNN网络如AlexNet,VGGNet,可以简单的对任意卷积层进行剪枝。然而,对于ResNet这种复杂的网络,这是不可行的。ResNet的结构对剪枝提出了限制条件,残差块中的第一个卷积层可以随意修剪,因为它不会改变残差块输出特征图的数目,然而第二个卷积层和特征映射的剪枝很困难。因此,为了残差模块的第二个卷积层进行剪枝,相关的projected featured maps(就是)必须也要剪掉,由于恒等特征映射要比添加的residual maps重要,对第二个层的剪枝应该由shortcut层的剪枝结果决定。为了决定那些恒等特征映射图被剪掉,我们对shortcut卷积层(1x1卷积核)上采用相同的选择标准,即residual block 中第二层修剪的 Filter index 与shortcut layer 所选择的 Filter index 相同。这个过程结合Figure4比较容易懂。

3.4 重新练网络恢复精度

在剪枝过后,通过重新训练可以补偿剪枝造成的精度损失,有两种策略:

  • 一次剪枝和重新训练:一次性对多层的卷积核剪枝,然后重新训练直到原来的准确率恢复。
  • 交替剪枝和训练:逐层或逐卷积核剪枝,然后再训练,重复多次。

4. 实验结论

从下面的Table1可以看到,对剪枝后的网络结构从头训练要比对重新训练剪枝后的网络(利用了未剪枝之前的权重)的结果差,这也说明了对小容量的网络训练很难。

其中Tabl2表示了VGG16中各层的剪枝比例,如下:

在CIFAR10上,VGG-16的推理成本可降低高达34%,ResNet-110最高可降低38%,同时通过重新训练网络恢复接近原始精度。

5. 附录

论文原文:https://arxiv.org/abs/1608.08710 再记录一些剪枝相关的论文。

基于权重的剪枝

  • Song Han:Deep Compression: Compressing Deep Neural Network with Pruning, Trained Quantization and Huffman Coding.
  • Michael Zhu and Suyog Gupta:To prune, or not to prune: exploring the efficacy of pruning for model compression

基于通道的剪枝

  • Channel Pruning for Accelerating Very Deep Neural Networks
  • Zhuang Liu:Learning Efficient Convolutional Networks through Network Slimming

关于源码实现

可以看看这个工程:https://github.com/666DZY666/model-compression

6. 参考

https://zhuanlan.zhihu.com/p/63779916

7. 后记

因为我也刚开始学习CNN的剪枝,量化等模型压缩技巧,所以还没有什么深度的认识,也仅仅是从文字角度阅读了这篇论文,要真正做好这方面的工作还需要大量论文阅读和代码实践。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GiantPandaCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习算法优化系列七 | ICCV 2017的一篇模型剪枝论文,也是2019年众多开源剪枝项目的理论基础
这篇文章是ICCV 2017的一篇模型压缩论文,题目为《 Learning Efficient Convolutional Networks through Network Slimming》。2019年有相当多的关于YOLOv3的剪枝开源工程,他们大多数的原理都来自于这篇论文,这篇论文的思想值得仔细品读。论文原文地址和Pytorch开源代码地址见附录。
BBuf
2020/02/12
1.6K0
深度学习算法优化系列七 | ICCV 2017的一篇模型剪枝论文,也是2019年众多开源剪枝项目的理论基础
【AI系统】模型剪枝
本文将介绍模型剪枝的概念、方法和流程,这是一种通过移除神经网络中的冗余或不重要参数来减小模型规模和提高效率的模型压缩技术。
用户11307734
2024/12/05
4150
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
一、CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二、LeNet-5网络 输入尺寸:32
10JQKA
2018/05/09
2.9K0
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
卷积神经网络学习路线(十)| 里程碑式创新的ResNet
开篇的这张图代表ILSVRC历年的Top-5错误率,我会按照以上经典网络出现的时间顺序对他们进行介绍,同时穿插一些其他的经典CNN网络。
BBuf
2020/02/12
1.1K0
卷积神经网络学习路线(十)| 里程碑式创新的ResNet
实战 | 速度快3倍,大小仅1/4,这项技术教你多快好省搭建深度学习模型
一般来说,神经网络层数越深、参数越多,所得出的结果就越精细。但与此同时,问题也来了:越精细,意味着所消耗的计算资源也就越多。这个问题怎么破?这就要靠剪枝技术了。言下之意,把那些对输出结果贡献不大的参数剪掉。这项技术可追溯至深度学习大神Yan LeCun在1990年的研究。 本文除了对各类剪枝技术进行详解,还会以案例的形式来进行实验实操:修剪一个基于VGG-16模型的猫狗分类器。这个案例结果证明,剪枝后的模型在速度上比原来快了近3倍,而文件大小只有原来的1/4。这对于移动设备,速度和大小都极其重要。
AI科技大本营
2018/04/26
1.1K0
实战 | 速度快3倍,大小仅1/4,这项技术教你多快好省搭建深度学习模型
说明!今日arXiv无更新!! 腾讯优图|基于模型剪枝的高效模型设计方法
深度神经网络推动了许多机器学习任务,包括语音识别、视觉识别和语言处理,是人工智能的有力工具。为了让深度神经网络得以更好地应用,就要让其有更高的准确率以及更快的速度,而剪枝技术可以满足这两点。
公众号-arXiv每日学术速递
2021/10/22
6250
AAAI 2020 | 滴滴&东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍
近年来,随着深度神经网络模型性能不断刷新,模型的骨干网络参数量愈发庞大,存储和计算代价不断提高,从而导致难以部署在资源受限的嵌入式平台上。滴滴 AI Labs 与美国东北大学王言治教授研究组合作,联合提出了一种基于 AutoML 思想的自动结构化剪枝的算法框架 AutoCompress,能自动化的去寻找深度模型剪枝中的超参数,去除模型中不同层的参数冗余,替代人工设计的过程并实现了超高的压缩倍率。从而满足嵌入式端上运行深度模型的实时性能需求。
机器之心
2020/02/14
9590
AAAI 2020 | 滴滴&东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍
深度学习与CV教程(9) | 典型CNN架构 (Alexnet,VGG,Googlenet,Restnet等)
本系列为 斯坦福CS231n 《深度学习与计算机视觉(Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频可以在 这里 查看。更多资料获取方式见文末。
ShowMeAI
2022/06/03
8220
深度学习与CV教程(9) | 典型CNN架构 (Alexnet,VGG,Googlenet,Restnet等)
[深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀。CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF Net到VGG,GoogLeNet再到ResNet和最近的DenseNet,网络越来越深,架构越来越复杂,解决反向传播时梯度消失的方法也越来越巧妙。新年有假期,就好好总结一波CNN的各种经典架构吧,领略一下CNN的发展历程中各路大神之间的智慧碰撞之美。
小宋是呢
2019/06/27
6550
[深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
摘要:我们提出了一种全新的深度学习架构,其中的卷积运算利用了异构核。相比于标准的卷积运算,我们提出的 HetConv(基于异构核的卷积)能在减少计算量(FLOPs)和参数数量的同时维持表征的效率。为了展现我们所提出的卷积的有效性,我们在 VGG [30] 和 ResNet [8] 等标准卷积神经网络(CNN)上进行了广泛的实验并给出了实验结果。我们发现,使用我们提出的 HetConv 过滤器替换了这些架构中的标准卷积过滤器之后,我们能在 FLOPs 方面实现 3 到 8 倍的速度提升,同时还能维持(有时候能提升)准确度。我们将我们提出的卷积与分组/深度方面的卷积进行了比较,结果表明它能在显著提升准确度的同时将 FLOPs 降低更多。
机器之心
2019/04/09
8930
CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
如果06年Hinton的深度置信网络是深度学习时代的开启,12年的Alexnet在ImageNet上的独孤求败是深度学习时代的爆发,那么至今也有近15年的发展历程。15年足够让一个青涩懵懂的少年成长为一个成熟稳重的壮年。
黄博的机器学习圈子
2020/12/11
5550
【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
卷积神经网络——吴恩达深度学习课程笔记(四)
计算机视觉(Computer Vision)包含很多不同类别的问题,如图片分类、目标检测、图片风格迁移、人工图片合成等等。
lyhue1991
2020/07/20
7310
推翻剪枝固有观点?清华、伯克利提出NN过参数化真的不重要
在该论文 ICLR 2019 的双盲审评论区,论文「ThiNet」的一作 Jian-Hao Luo 和论文「通道剪枝」的一作 Yihui He 提出了修改意见。Jian-Hao Luo 分别对表 2 中 VGG-16 和 ResNet-50 的结果提出了质疑,但同时也认为这是一篇「Interesting paper」,研究社区应该对「剪枝」方法和「从零开始训练」方法进行更深入的思考。Yihui He 要求作者修改表 1、表 2 和表 4 中关于 VGG-16 的准确率结果。作者也向他们作出了积极的回应。
机器之心
2018/11/23
7620
【美团技术解析】模型加速概述与模型裁剪算法技术解析
作者简介:Michael,2017年加入美团无人配送部,负责无人配送车感知算法迭代工作。
美团无人配送
2019/04/26
2.8K1
【美团技术解析】模型加速概述与模型裁剪算法技术解析
深度学习500问——Chapter17:模型压缩及移动端部署(1)
模型压缩是指利用数据集对已经训练好的深度模型进行精简,进而得到一个轻量且准确率相当的网络,压缩后的网络具有更小的结构和更少的参数,可以有效降低计算和存储开销,便于部署再受限的硬件环境中。
JOYCE_Leo16
2024/10/01
2280
深度学习500问——Chapter17:模型压缩及移动端部署(1)
3*3卷积+1*3卷积+3*1卷积=白给的精度提升
下面要介绍的论文发于ICCV2019,题为「ACNet:Strengthening the Kernel Skeletons for Powerful CNN via Asymmetric ConvolutionBlocks」,axriv地址为:https://arxiv.org/abs/1908.03930v1。
AI科技评论
2019/11/28
1.4K0
深度学习之基础网络演进、分类与定位的权衡|牛喀技研
深度学习,目标检测,图像,智能驾驶 编译:牛喀网-钱伟 前言 本篇关注基础网络架构的演进和处理分类、定位这一矛盾问题上的进展。 基础网络结构的演进 基础网络(Backbone network)作为特征提取器,对检测模型的性能有着至关重要的影响。在分类任务的权威评测集ImageNet上,基于卷积网络的方法已经取得超越人类水平的进步,并也促使ImageNet完成了她的历史使命。这也是机器视觉领域的整体进步,优秀的特征、深刻的解释都为其他任务的应用提供了良好的基础。在本节中,我们选取了几个在检测任务
朱晓霞
2018/04/18
2.3K0
深度学习之基础网络演进、分类与定位的权衡|牛喀技研
YOLO-v4目标检测、换脸、视频上色全部实时手机端实现,美国东北大学等提出全自动实时移动端AI框架
基于模式化稀疏度的剪枝方法能够使深度神经网络在图像识别任务中「看得」更清楚,同时减小了模型尺寸,使模型在移动端「跑得」更快,实现实时推理。
机器之心
2020/08/28
7980
YOLO-v4目标检测、换脸、视频上色全部实时手机端实现,美国东北大学等提出全自动实时移动端AI框架
轻量化神经网络综述
深度神经网络模型被广泛应用在图像分类、物体检测等机器视觉任务中,并取得了巨大成功。然而,由于存储空间和功耗的限制,神经网络模型在嵌入式设备上的存储与计算仍然是一个巨大的挑战。
SIGAI学习与实践平台
2018/10/18
1.1K0
轻量化神经网络综述
深度学习经典网络解析:7.ResNet
  如果说你对深度学习略有了解,那你一定听过大名鼎鼎的ResNet,正所谓ResNet 一出,谁与争锋?现如今2022年,依旧作为各大CV任务的backbone,比如ResNet-50、ResNet-101等。ResNet是2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的冠军,是中国人何恺明、张祥雨、任少卿、孙剑在微软亚洲研究院(AI黄埔军校)的研究成果。
AiCharm
2023/05/15
5.5K0
深度学习经典网络解析:7.ResNet
推荐阅读
深度学习算法优化系列七 | ICCV 2017的一篇模型剪枝论文,也是2019年众多开源剪枝项目的理论基础
1.6K0
【AI系统】模型剪枝
4150
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
2.9K0
卷积神经网络学习路线(十)| 里程碑式创新的ResNet
1.1K0
实战 | 速度快3倍,大小仅1/4,这项技术教你多快好省搭建深度学习模型
1.1K0
说明!今日arXiv无更新!! 腾讯优图|基于模型剪枝的高效模型设计方法
6250
AAAI 2020 | 滴滴&东北大学提出自动结构化剪枝压缩算法框架,性能提升高达120倍
9590
深度学习与CV教程(9) | 典型CNN架构 (Alexnet,VGG,Googlenet,Restnet等)
8220
[深度学习概念]·CNN网络架构演进:从LeNet到DenseNet(代码实现基于Keras)
6550
CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
8930
【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
5550
卷积神经网络——吴恩达深度学习课程笔记(四)
7310
推翻剪枝固有观点?清华、伯克利提出NN过参数化真的不重要
7620
【美团技术解析】模型加速概述与模型裁剪算法技术解析
2.8K1
深度学习500问——Chapter17:模型压缩及移动端部署(1)
2280
3*3卷积+1*3卷积+3*1卷积=白给的精度提升
1.4K0
深度学习之基础网络演进、分类与定位的权衡|牛喀技研
2.3K0
YOLO-v4目标检测、换脸、视频上色全部实时手机端实现,美国东北大学等提出全自动实时移动端AI框架
7980
轻量化神经网络综述
1.1K0
深度学习经典网络解析:7.ResNet
5.5K0
相关推荐
深度学习算法优化系列七 | ICCV 2017的一篇模型剪枝论文,也是2019年众多开源剪枝项目的理论基础
更多 >
LV.0
这个人很懒,什么都没有留下~
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档