一、剪枝分类

目前常见的模型剪枝算法主要分成两类,即非结构化剪枝与结构化剪枝;在不少的神经网络加速器中已经应用了这些剪枝算法,早期常见的是非结构化剪枝,例如MIT的韩松组的前几年的相关工作中就有此类应用,但是在设计中采用的特殊数据格式和额外的编码/解码会带来额外的硬件开销;

这在基于传统系统架构的情况下,利用非结构化剪枝或者可以为NN模型的计算起到加速的作用,但是在存内计算架构下,基于ReRAM或SRAM这类紧耦合的电路结构中将很难去利用网络中存在的稀疏特征;

为此,近年来关于剪枝的算法工作,越来越聚焦于各种结构化剪枝的方法,从剪枝尺度的角度来分的话,结构化剪枝主要包括:filter-wise、channel-wise、shape-wise以及block-wise pruning这四种;鉴于工作需要,后面主要介绍在硬件加速器中常见的通道剪枝算法。

二、通道(channel-wise)剪枝与卷积核(filter-wise)剪枝的区别

其实从网络模型最终的呈现形式来看,通道剪枝与卷积核剪枝的效果是一样的,具体可以结合下面这张图来看:

如果是通道剪枝的话,可以认为先剪掉输入B中的C个通道,而这会直接导致该层的所有卷积核也需要剪掉相应的通道,这样进行卷积的时候才能进行相应的匹配;这是通道剪枝对该层的影响,他还会对该层的上一层产生影响,我们知道,卷积的时候,每一组卷积核对应这一层的一个输出通道,也就是下一层的输入通道,此时B中减少了C个通道,自然就需要上一层中也需要剪掉相应的卷积核,即上图中虚线对应的卷积核。

如果是卷积核剪枝的话,就更容易理解了,上图从左往右,先剪掉左边的两个虚线内的卷积核,这会直接导致该层的输出通道数减少,也即呈现出B中的效果,输入B的通道数减少了,那自然也会导致其层内的卷积核中的通道数减少。

所以从上述角度来分析的话,通道剪枝与卷积核剪枝确实相似,不过也可以很明显看到,两种卷积方法的剪枝依据或者说出发点是不一样的;一般认为通道剪枝的结果,可能效果会更好一些。

故本文后续部分主要介绍的也是通道剪枝。

三、常见的通道剪枝算法

首先需要声明为什么只提到以下的几篇文章,主要是因为笔者在遍览近几年的通道剪枝方面的文章后发现,这些文章的方法并没有太大的改动,很多方法都是基于这几篇文章的内容进行一些修改或变型,此为其一;其二是因为在我所看到的硬件实现图像分类或者目标检测任务加速的相关文章中,其中对模型压缩处理的最常见的几种方法不外乎就是这几种;鉴于此,有如下推荐的可读文章。

第一篇:Learning Structured Sparsity in Deep Neural Networks

引用次数超1500,算是非常经典的一篇通道卷积文章了(其实应该归属于结构化剪枝,因为该文中提出了基于好几个wise的剪枝方案);

上图中即这篇文章中提出的集中wise剪枝方案的示意图,文章具体内容就不一一阐述了(后续文章类似);其最主要的贡献即在于其提出的group lasso正则化方法,后面有很多工作都是在此方法基础上展开的。

第二篇:Channel Pruning for Accelerating Very Deep Neural Networks
        此处就不放图了,文章中的一张经典图就是本文中的第一张插图;主要贡献在于其他出的通道剪枝方法是一种inference-time方法,不需要从头开始训练,在节省大量时间的情况下,还能做到很好的模型压缩效果;

第三篇:Learning Efficient Convolutional Networks through Network Slimming

这篇文章的这张图非常经典,如果有看过一些中文的关于加速器的大论文的话,其中最常用的通道剪枝算法就是本文中提出的这一种;即通过训练BN层中的γ参数,来作为每一层的稀疏因子,在训练完之后,对所有通道的该系数进行排序,然后通过预先设置的剪枝比例,确定γ系数的阈值,再将阈值以下的对应通道剪掉即可;其中细节,还是要自己去读文章;我想这篇文中的方法之所以应用广泛,可能还是因为方法剪枝,且容易实施吧!在GitHub上可以看到不少将此剪枝方法应用在目标检测等模型上的案例,由此可见其实际应用价值。

卷积神经网络通道剪枝算法小结相关推荐

  1. 卷积神经网络通道剪枝裁剪

    论文来自旷视科技2017年的论文Channel Pruning for Accelerating Very Deep Neural Network 论文地址:https://arxiv.org/abs ...

  2. pytorch基于卷积层通道剪枝的方法

    pytorch基于卷积层通道剪枝的方法 原文:https://blog.csdn.net/yyqq7226741/article/details/78301231 本文基于文章:Pruning Con ...

  3. 全连接神经网络的BP算法(BP神经网络模型)与卷积神经网络的BP算法

    1.神经网络模型 1.1神经网络模型的演变: 神经元模型------->感知机模型------->神经网络模型 神经元模型:1943年,W.S.McCulloch和W.Pitts根据生物学 ...

  4. 收藏 | 一文总结70篇论文,帮你透彻理解神经网络的剪枝算法

    来源:DeepHub IMBA本文约9500字,建议阅读10+分钟 本文为你详细介绍神经网络剪枝结构.剪枝标准和剪枝方法. 无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的 ...

  5. 我总结了70篇论文的方法,帮你透彻理解神经网络的剪枝算法

    无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的性能都是最先进的.然而,它们在计算能力.内存或能源消耗方面的成本可能令人望而却步,这使得大部份公司的因为有限的硬件资源而完全 ...

  6. ICCV 2021 | 性能炸裂的通道剪枝算法ResRep(Keras复现)

    清华大学&旷世科技 Lossless CNN Channel Pruning via Decoupling Remembering and Forgetting paper:https://a ...

  7. 卷积神经网络的训练算法,卷积神经网络算法实现

    卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feed ...

  8. 卷积神经网络有哪些算法,卷积神经网络算法实现

    卷积神经网络通俗理解 . 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetwork ...

  9. 卷积神经网络(CNN)小结

    卷积神经网络(Convolutional Neural Network,CNN)是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点. 感受野和权值共享 卷积神经网络一个牛逼的地方就在于通 ...

  10. 经典卷积神经网络(CNN)图像分类算法详解

    本文原创,转载请引用 https://blog.csdn.net/dan_teng/article/details/87192430 CNN图像分类网络 一点废话:CNN网络主要特点是使用卷积层,这其 ...

最新文章

  1. 怎样在两小时内搞定 OpenStack 部署?
  2. linux禁用用户账号,技术|在 Linux 系统中禁用与解禁用户的账号
  3. Microsoft Hyper-V Server 2008 R2和SCVMM2012部署XenDesktop 5.6桌面虚拟化系列之二准备虚拟桌面模板...
  4. 汉字转html实体符号js_html实体编码遇上js代码
  5. FileProvider的使用
  6. [导入][转]Blog写作十大必杀技
  7. oracle基础知识文档,Oracle 基础知识分享PPT
  8. Cesium整体架构介绍
  9. 地铁一公里造价达7亿元,大部分城市无法回本,为何还抢着建?
  10. android apk 应用分发平台
  11. 1004.选择结构习题:奇偶数判断
  12. 台式计算机的内存容量,内存容量
  13. 石墨计算机,石墨文档电脑版
  14. swagger使用流程梳理
  15. 企业营销的内容之痛,腾讯云SaaS工具的破局之道
  16. Python读取PDF文档(或TXT)
  17. 计算机主题和桌面背景区别,xp系统主题,桌面背景,屏幕保护,分辨率等技巧设置...
  18. 使用web3调用智能合约的简单例子
  19. AHB2APB Bridge
  20. Word 纸张方向横向纵向调整格式问题

热门文章

  1. SSM框架原理及使用方法
  2. 雨听|Vs Code中使用markdown语法实现mac风格的代码块
  3. vue+elementUI 打印pdf文件
  4. 计算机内码和国际码的转换,汉字机内码、国标码和区位码之间转换关系图
  5. python实现游戏同步翻译字幕
  6. 免费PR转场 独特的形状过渡PR动态图形模板MOGRT免费下载
  7. CASS11最新版免狗下载安装教程
  8. SpringBoot +esapi 实现防止xss攻击
  9. java各种优秀开源库收集
  10. Flutter绘制虚线