模型压缩总结

1.模型复杂度衡量

  • model size
  • Runtime Memory 
  • Number of computing operations

  • model size 

就是模型的大小,我们一般使用参数量parameter来衡量,注意,它的单位是。但是由于很多模型参数量太大,所以一般取一个更方便的单位:兆(M) 来衡量(M即为million,为10的6次方)。比如ResNet-152的参数量可以达到60 million = 0.00006M。

有些时候,model size在实际计算时除了包含参数量以外,还包括网络架构信息和优化器信息等。比如存储一个一般的CNN模型(ImageNet训练)需要大于300MB。

这里你可能会有疑问:刚才的单位是M,怎么这里出来了个MB?是不是写错了?

肯定没有,我们需要注意这里的M和MB的换算关系:

比如说我有一个模型参数量是1M,在一般的深度学习框架中(比如说PyTorch),一般是32位存储。32位存储的意思就是1个参数用32个bit来存储。那么这个拥有1M参数量的模型所需要的存储空间的大小即为:1M * 32 bit = 32Mb = 4MB。因为1 Byte = 8 bit。

所以读到这里你应该明白说一个模型的model size,用M和MB其实是一样的意思。

那你可能还会有疑问:是不是一定要用32位存储?

这个问题很好,现在的quantization技术就是减少参数量所占的位数:比如我用8位存储,那么:

所需要的存储空间的大小即为:1M * 8 bit = 8Mb = 1MB。

更有甚者使用二值神经网络进一步减小参数量所占的位数(权值被限制为{-1, 1}或{-1, 0, 1}),后文有论文的链接,有空再专门介绍这个方法吧。下面简单介绍下参数量的计算方法:

卷积层参数量的计算方法:

  • Run time Memory

就是模型实际运行时所占的内存。注意这个指标与只存储模型参数所占的存储空间的大小是不一样的,这个指标更大。这对于GPU来讲不算是问题,但是对于硬件能力极为有限的端侧设备来说就显得无法承受了。它的单位是兆字节 (MB)

  • Number of computing operations  FLOPS MACs

就是模型的计算量,有FLOPs和MACs两种衡量的方式、简而言之,前者指的是乘加的数量,而后者指运算量。比如ResNet-152在前向传播一张256 * 256的图片的运算量可以达到20 GFLOPs。下面简单介绍下模型计算量的计算方法:

第1种:FLOPs:

卷积层FLOPs的计算方法:

只需在parameters的基础上再乘以feature map的大小即可,即对于某个卷积层,它的FLOPs数量为:

 

全连接层FLOPs的计算方法:

对于全连接层,由于不存在权值共享,它的FLOPs数目即是该层参数数目:

第2种:MACs:

MACs与FLOPs的关系:

设有全连接层为:

 y = w[0]*x[0] + w[1]*x[1] + w[2]*x[2] + ... + w[n8]*x[8]

对于上式而言共有9次乘加,即9MACs(实际上,9次相乘、9-1次相加,但为了方便统计,将计算量近似记为9MACs。所以近似来看1MACs\approx 2FLOPs 。(需要指出的是,现有很多硬件都将乘加运算作为一个单独的指令)。

全连接层MACs的计算:

激活层MACs的计算:

激活层不计算MAC,计算FLOPs。假设激活函数为:

则计算量为 4N_{out}FLOPs(乘法,指数,加法,除法)。

在计算FLOPS时,我们通常将加,减,乘,除,求幂,平方根等计为单个FLOP。

但是,实际上,我们通常不计这些操作,因为它们只占总时间的一小部分。通常只计算矩阵乘法和点积(dot product),忽略激活函数的计算量

卷积层MACC的计算:

 关于这些指标,更详细的解读以及对应的代码实现可以参考:

科技猛兽:PyTorch 63.Coding for FLOPs, Params and Latency

coding实现  PyTorch 63.Coding for FLOPs, Params and Latency - 知乎

2.常见模型压缩方法

剪枝,量化,蒸馏,轻量化模块设计,低秩分解,加法网络等

  • 剪枝就是通过去除网络中冗余的channels,filters, neurons, or layers以得到一个更轻量级的网络,同时不影响性能。 代表性的工作有:

奇异值分解SVD(NIPS 2014): Exploiting linear structure within convolutional networks for efficient evaluation
韩松(ICLR 2016): Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding
(NIPS 2015): Learning both weights and connections for efficient neural network
频域压缩(NIPS 2016): Packing convolutional neural networks in the frequency domain
剪Filter Reconstruction Error(ICCV 2017): Thinet: A filter level pruning method for deep neural network compression
LASSO regression(ICCV 2017): Channel pruning for accelerating very deep neural networks
Discriminative channels(NIPS 2018): Discrimination-aware channel pruning for deep neural networks
剪枝(ICCV 2017): Channel pruning for accelerating very deep neural networks
neuron level sparsity(ECCV 2017): Less is more: Towards compact cnns
Structured Sparsity Learning(NIPS 2016): Learning structured sparsity in deep neural networks

(ICCV 2017):清华张长水,黄高团队: Learning Efficient Convolutional Networks through Network Slimming
(ECCV 2020):得克萨斯大学奥斯汀分校团队: GAN Slimming: All-in-One GAN Compression by A Unified Optimization Framework

  • 轻量化模块设计就是设计一些计算效率高,适合在端侧设备上部署的模块。 代表性的工作有:

Bottleneck(ICLR 2017): Squeezenet: Alexnet-level accuracy with 50x fewer parameters and 0.5 mb model size
MobileNet(CVPR 2017): Mobilenets: Efficient convolutional neural networks for mobile vision applications
ShuffleNet(CVPR 2018): Shufflenet: An extremely efficient convolutional neural network for mobile devices
SE模块(CVPR 2018): Squeeze-and-excitation networks
无参数的Shift操作(CVPR 2018): Shift: A zero flop, zero parameter alternative to spatial convolutions
Shift操作填坑(Arxiv): Shift-based primitives for efficientconvolutional neural networks
多用卷积核(NIPS 2018): Learning versatile filters for efficient convolutional neural networks
GhostNet(CVPR 2020): GhostNet: More features from cheap operations

  • 蒸馏就是过模仿教师网络生成的软标签将知识从大的,预训练过的教师模型转移到轻量级的学生模型。 代表性的工作有:

Hinton(NIPS 2015): Distilling the knowledge in a neural network
中间层的特征作为提示(ICLR 2015): Fitnets: Hints for thin deep nets
多个Teacher(SIGKDD 2017): Learning from multiple teacher networks
两个特征得新知识再transfer(CVPR 2017): A gift from knowledge distillation: Fast optimization, network minimization and transfer learning

  • 量化就是减少权重等的表示的位数,比如原来网络权值用32 bit存储,现在我只用8 bit来存储,以减少模型的Memory为原来的 ;更有甚者使用二值神经网络。 代表性的工作有:

量化:
(ICML 2015): Compressing neural networks with the hashing trick
(NIPS 2015): Learning both weights and connections for efficient neural network
(CVPR 2018): Quantization and training of neural networks for efficient integer-arithmetic-only inference
(CVPR 2016): Quantized convolutional neural networks for mobile devices
(ICML 2018): Deep k-means: Re-training and parameter sharing with harder cluster assignments for compressing deep convolutions
(CVPR 2019): Learning to quantize deep networks by optimizing quantization intervals with task loss
(CVPR 2019): HAQ: Hardware-Aware automated quantization with mixed precision.

二值神经网络:
Binarized weights(NIPS 2015): BinaryConnect: Training deep neural networks with binary weights during propagations
Binarized activations(NIPS 2016): Binarized neural networks
XNOR(ECCV 2016): Xnor-net: Imagenet classification using binary convolutional neural networks
more weight and activation(NIPS 2017): Towards accurate binary convolutional neural network
(ECCV 2020): Learning Architectures for Binary Networks
(ECCV 2020): BATS: Binary ArchitecTure Search

  • 低秩分解就是将原来大的权重矩阵分解成多个小的矩阵,而小矩阵的计算量都比原来大矩阵的计算量要小。 代表性的工作有:

低秩分解(ICCV 2017): On compressing deep models by low rank and sparse decomposition
乐高网络(ICML 2019): Legonet: Efficient convolutional neural networks with lego filters
奇异值分解(NIPS 2014): Exploiting Linear Structure Within Convolutional Networks for Efficient Evaluation

  • 加法网络就是:利用卷积所计算的互相关性其实就是一种“相似性的度量方法”,所以在神经网络中用加法代替乘法,在减少运算量的同时获得相同的性能。 代表性的工作有:

(CVPR 20): AdderNet: Do We Really Need Multiplications in Deep Learning?
(NIPS 20): Kernel Based Progressive Distillation for Adder Neural Networks
(Arxiv): AdderSR: Towards Energy Efficient Image Super-Resolution

参考链接:

深入浅出的模型压缩:你一定从未见过如此通俗易懂的Slimming操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/65155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019 智见 AI workshop in Beijing

[持续更新]2019 智见 AI workshop in Beijing 前言代季峰:卷积神经网络中的几何形变建模Deformable Conv V1Deformable Conv V2Tricks & Exprience 张士峰:物体检测算法的对比探索和展望Detector Algorithm Overviewanchor-basedanchor-free RefineD…

湖北黄冈中学2021年高考成绩查询,2019年黄冈中学高考成绩发布,包揽全市文科前13名,省内排名却不值一提...

2019年黄冈中学高考成绩发布,包揽全市文科前13名,省内排名却不值一提 2019年6月23日,黄冈中学公布了2019年黄冈中学的高考成绩,如下图所示,今年黄冈中学的高考成绩相比2018年略有提高。 全校参考总人数共883人&#xf…

Paper | Densely Connected Convolutional Networks

目录 黄高老师190919在北航的报告听后感故事背景网络结构 Dense blockDenseNet 过渡层成长率瓶颈层细节实验 发表在2017 CVPR。 摘要 Recent work has shown that convolutional networks can be substantially deeper, more accurate, and efficient to train if they contain…

黄冈中学2021高考成绩查询,清华公布2021丘班录取名单,黄冈中学表现尴尬,衡中无人上榜...

每个学生心中都有个清华和北大梦,只不过后来发现自己能力有限,清华北大更是遥不可及,学生眼下的想法只是纠结能不能考上重点大学,但是这也并不妨碍大家对名牌院校的好奇心。 清华大学一直是理科学生梦寐以求的高等学府&#xff0c…

清华商汤上海AICUHK提出Siamese Image Modeling,兼具linear probing和密集预测性能!...

关注公众号,发现CV技术之美 本文分享论文『Siamese Image Modeling for Self-Supervised Vision Representation Learning』,由清华(黄高组)&商汤(代季峰组)&上海AI Lab&CUHK提出Siamese Image…

2022CVPR云分享 | 清华大学四位讲者带你玩转计算机视觉

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 7月20日晚上7点半,本期我们邀请到清华大学黄高老师实验室的四位讲者,为大家解读2022CVPR的优秀论文! 哔哩哔哩直播通道 扫码关注AI TIME哔哩哔哩官方账号预约直播 7月20日 19…

【线上直播】SFFAI 99 期 数据扩增专题

会议简介 在计算机视觉任务中,数据扩增是一种基于较少数据、产生大量训练样本,进而提升模型性能的有效方法。传统数据扩增方法主要借助于图像域的翻转、平移、旋转等简单变换。而本期讲者王语霖提出了一种隐式语义数据扩增算法,对样本进行更…

【活动报名 | 青源Talk第3期】DenseNet发明者黄高:面向边缘设备的轻量神经网络...

活动议程 日期:12月10日(周四) 时间 主题19:00-19:05开场简介刘知远,清华大学计算机系副教授,智源青年科学家19:05-19:50《面向边缘设备的轻量神经网络》黄高,清华大学自动化系助理教授,智源青年…

不是所有图像都值 16x16 个词,可变序列长度的动态 Transformer 来了!

转自 | AI 科技评论 编辑 | 陈大鑫 最近半年,Transformer在视觉领域大获成功,其中的代表作就是谷歌的工作ViT:《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》。 以ViT为代表的视觉Transformer通常将所有输…

国内有哪些不错的计算机视觉团队?

来源:深度学习技术前沿 编辑:Evans 【导读】计算机视觉是当前人工智能领域的超级热门,本文为大家总结了当前国内比较优秀的计算机视觉团队信息,希望能在大家申请硕士或者博士的过程中,提供一些参考信息! 作…

圆形的CNN卷积核?华中科大清华黄高团队康奈尔提出圆形卷积,进一步提升卷积结构性能!

作者丨小马 编辑丨极市平台 写在前面 目前正常卷积的感受野大多都是一个矩形的,因为矩形更有利于储存和计算数据的方便。但是,人类视觉系统的感受野更像是一个圆形的。因此,作者就提出,能不能将CNN卷积核的感受野也变成圆形呢&a…

深入浅出的模型压缩:你一定从未见过如此通俗易懂的Slimming操作

点击上方“计算机视觉工坊”,选择“星标” 干货第一时间送达 作者丨科技猛兽 编辑丨极市平台 导读 本文首先介绍了模型压缩领域的指标含义,并通过梳理文献,介绍了模型压缩领域常用的方法。随后对Slimming这一模型压缩方法进行了详细介绍&…

Dropout技术之随机神经元与随机深度

1. 写在前面 在学习复现EfficientNet网络的时候,里面有一个MBConv模块长下面这个样子: 当然,这个结构本身并不是很新奇,从resNet开始,几乎后面很多网络,比如DenseNet, MobileNet系列&#xff0…

如何做高质量研究、写高水平论文?| 黄高、王兴刚等共话科研与论文写作

如何产生好的研究思路?如何撰写一篇高质量论文?如何从浩如烟海的论文中寻找好的科研灵感?如何通过Rebuttal为自己的文章扳回一城?导师跟学生之间怎样才能形成更好的合作关系? 在ECCV 2022中国预会议的Panel环节&#x…

智源青年科学家黄高:面向高效推理的深度网络结构设计

随着深度学习在工业界的广泛应用,人们对模型的关注不仅仅在于其预测精度,同时也对计算和存储效率提出了更高的要求。在提升模型效率的诸多手段中,神经网络结构创新始终是最为有效的方式之一。 2019年12月24日上午,智源青年科学家、…

RANet:MSDNet加强版!清华黄高团队提出分辨率自适应的高效推理网络RANet!

关注公众号,发现CV技术之美 本文分享论文『Resolution Adaptive Networks for Efficient Inference』,由清华黄高团队提出分辨率自适应的高效推理网络RANet!MSDNet加强版! 详细信息如下: 论文链接:https://…

ICLR2021 | 清华大学黄高团队:显存不够?不妨抛弃端到端训练

智源导读:本文主要介绍清华大学黄高团队被ICLR2021接收的一篇文章:Revisiting Locally Supervised Learning: an Alternative to End-to-End Training。 论文链接:https://openreview.net/forum?idfAbkE6ant2 代码链接:https://g…

清华大学黄高——图像数据的语义层扩增方法

⬆⬆⬆ 点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 2020 年 9 月 25 日,在由中国科协主办,清华大学计算机科学与技术系、AI TIME 论道承办的《2020 中国科技峰会系列活动青年科学家沙龙——人工智能学术生态与产业创新》上&#xf…

DenseNet发明者黄高:动态模型好在哪里?

智源导读:自2012年至今,计算机视觉领域蓬勃发展,各种模型不断涌现,短短 8 年时间,计算机视觉领域便发生了天翻地覆的变化。那么如何看待过往变化,当下研究又如何? 12月10日晚,在【青…

对话 DenseNet 一作黄高:做有韧劲、能抗压、不断探索未知的科研

点击上方“计算机视觉工坊”,选择“星标” 干货第一时间送达 作者丨刘冰一 来源丨极市平台 清华大学助理教授、密集连接卷积网络 (DenseNet)提出者 、计算机视觉领域一作顶会论文被引次数最高的国内学者、百万青橙奖奖金获得者..... 这些标签…