卷积神经网络通道剪枝算法小结
一、剪枝分类
目前常见的模型剪枝算法主要分成两类,即非结构化剪枝与结构化剪枝;在不少的神经网络加速器中已经应用了这些剪枝算法,早期常见的是非结构化剪枝,例如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上可以看到不少将此剪枝方法应用在目标检测等模型上的案例,由此可见其实际应用价值。
卷积神经网络通道剪枝算法小结相关推荐
- 卷积神经网络通道剪枝裁剪
论文来自旷视科技2017年的论文Channel Pruning for Accelerating Very Deep Neural Network 论文地址:https://arxiv.org/abs ...
- pytorch基于卷积层通道剪枝的方法
pytorch基于卷积层通道剪枝的方法 原文:https://blog.csdn.net/yyqq7226741/article/details/78301231 本文基于文章:Pruning Con ...
- 全连接神经网络的BP算法(BP神经网络模型)与卷积神经网络的BP算法
1.神经网络模型 1.1神经网络模型的演变: 神经元模型------->感知机模型------->神经网络模型 神经元模型:1943年,W.S.McCulloch和W.Pitts根据生物学 ...
- 收藏 | 一文总结70篇论文,帮你透彻理解神经网络的剪枝算法
来源:DeepHub IMBA本文约9500字,建议阅读10+分钟 本文为你详细介绍神经网络剪枝结构.剪枝标准和剪枝方法. 无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的 ...
- 我总结了70篇论文的方法,帮你透彻理解神经网络的剪枝算法
无论是在计算机视觉.自然语言处理还是图像生成方面,深度神经网络目前表现出来的性能都是最先进的.然而,它们在计算能力.内存或能源消耗方面的成本可能令人望而却步,这使得大部份公司的因为有限的硬件资源而完全 ...
- ICCV 2021 | 性能炸裂的通道剪枝算法ResRep(Keras复现)
清华大学&旷世科技 Lossless CNN Channel Pruning via Decoupling Remembering and Forgetting paper:https://a ...
- 卷积神经网络的训练算法,卷积神经网络算法实现
卷积神经网络算法是什么? 一维构筑.二维构筑.全卷积构筑. 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feed ...
- 卷积神经网络有哪些算法,卷积神经网络算法实现
卷积神经网络通俗理解 . 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetwork ...
- 卷积神经网络(CNN)小结
卷积神经网络(Convolutional Neural Network,CNN)是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点. 感受野和权值共享 卷积神经网络一个牛逼的地方就在于通 ...
- 经典卷积神经网络(CNN)图像分类算法详解
本文原创,转载请引用 https://blog.csdn.net/dan_teng/article/details/87192430 CNN图像分类网络 一点废话:CNN网络主要特点是使用卷积层,这其 ...
最新文章
- 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
- 恢复从回收站中被删除的文件的方法
- 不符合条件重新输入 c语言,2016年计算机考试上机应试技巧
- leetcode-20-有效的括号
- 飞畅科技-国内老牌工业以太网交换机品牌
- 基于51单片机的时钟系统
- 从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.
- 物联网卡使用过程中的注意事项
- “21天好习惯“第一期-2
- PHP中的e标签和em标签一样吧,html em标签的作用
- Linux gcc编译时强制链接并依赖一个库(即使未使用)
- ios开发快速入门教程
- 广州计算机中心杜云飞,我校学子在ISC19世界大学生超级计算机竞赛中获佳绩
- 一年级计算c语言编程,用C语言switch语句做一年级算术题。
- 疯狂原始人手游怎么用电脑玩 疯狂原始人手游PC电脑版教程
- 《大数据时代》读后感,维克托
- 硬件设计22之高速电路设计保险丝的选型
- JDK19都出来了~是时候梳理清楚JDK的各个版本的特性了【JDK15特性讲解】
- [转载]Android性能优化来龙去脉总结
- MFC绘图二——简单绘制直线等