深度神经网络模型压缩

深度学习之模型压缩(剪枝、量化) 随着深度学习的发展,模型变得越来越复杂,随之而来的模型参数也越来越多,对于需要训练的模型硬件要求也越来越高。模型压缩技术就是为了解决模型使用成本的问题。通过提高推理速度,降低模型参数量和运算量。现在主流的模型压缩方法包含两大类:剪枝和量化。模型的剪枝是为了减少参数量和运算量,而量化是为了压缩数据的占用量。 阅读详情

深度学习近几年非常火,网络不断涌现,从AlexNet,GoogleNet,VggNet到ResNet,DenseNet,这些网络不断地提升各大分类比赛,识别比赛的精度,因此研究者们又开始着手于深度学习的实际应用,试图将深度学习算法能够应用在手机,嵌入式等移动设备和终端设备中。我本人之前也在思考:卷积神经网络固然在图像,计算机视觉等方面大显神通,但是它们参数量之大,占用大量内存,消耗大量资源和电量,它们又如何能够在资源有限的终端设备跑起来呢?恰好前些日子选择研究方向,我就选择了模型压缩。大家可能发现,从VggNet到DnseNet,模型的参数越来越少,虽然网络变深了。也就是说,它们用到了一些策略,在减少参数的同时,保证模型的效果提升。

关于模型压缩,其实已经出现了很多方法,在2016年,来自Song Han的the best paper (ICRL)提出了基于裁剪,量化,霍夫曼编码三步走的方法获得广泛关注,使得更多的人开始投入到模型压缩的研究当中;大家可以参考此博文:Deep compression

2017年,在CVPR一篇paper中,根据filter(权重矩阵)的低秩和稀疏性质,提出采用低秩和稀疏分解的方法对模型进行压缩;为便于大家学习,给出论文title:On Compressing Deep Models by Low Rank and Sparse Decomposition.

还有基于教师——学生网络学习的方法等等,在这里我不一一列举。我接下来要介绍另外一种方法,也是我本人觉得很看好的一种,那就是精细模型设计,精细模型的目标是设计一个轻量型网络。我之所以看好它的原因是:它从一开始是就使用一些策略对模型本身进行改进,而其他方法基本都是在有一个已经训练好而且性能也好的网络前提下对模型进行裁剪,压缩等,步骤比较繁琐。此外工业界本来就不追求最高的精度,往往是考虑精度和资源上的折中,虽然轻量型模型表现的性能也相当好,关键是该方法真的很简单。

接下来,我要介绍一些网络,包括Iception系列,Xception,Resnet,Resnext,Mobilenet ,ShuffleNet.虽然后面两个模型相当典型,但是前面几个模型也需要提一下,因为后者借鉴了前者的思想。

在具体讲模型之前,先说说1*1卷积核的作用,因为它真的是一个很高效的卷积核。
现在很多网络都不同程度加入了1*1卷积核。
作用 :
(1)加入非线性。一个卷积核只含有一个参数,但是经过一次卷积操作,就加入了非线性激励,提升了网络的表达能力。
(2)具有升维和降维的作用。一张RGB图像,含有三个channel,如果用2个1*1卷积核对它作卷积,那么深度由原来的3变为2;如果用4个1*1卷积核对它作卷积,深度则变为4,这就是降维和升维。具体看如下图:
1

我们再来看一个例子
:3
我们来分别计算左边和右边所需要的参数:
第一种:256维的输入经过3*3*256卷积核,输出为256维,那么参数量为:
256*3*3*256=589824
第二种:虽然输入和输出维度相同,但是利用1*1卷积核降维和升维的特点,参数量变为:256*1*1*64+64*3*3*64+64*1*1*256=69632,参数量下降了9倍左右。
由此可以体现出卷积核的威力。

接下来,介绍InceptionV1结构,也就是Googlenet。看如下图:2
对比作图和右图,右图加入了1*1卷积核,目的就是为了降维,从上面的例子可以知道,降维减少了参数,此外,我们发现,这里使用了3中卷积核,相当于混合模型,这样可以提取更多的特征,同时增加了网络深度,加入了更多的非线性。

INception V2和V3继续做了改进:看下图:
4
5*5卷积核用两个3*3卷积核代替,参数从25减少至18,还加深了层数。
5
用1*3和3*1卷积核代替3*3卷积核,参数减少了,这是普遍适用的(1*n和n*1代替n*n),大家可以自己动手算一算,的确可以这样做。

因此上面的网络就改进成类似于下面的结构:
6
9。
另外,filter concat 指的是维度上的拼接,通常是在第四维。

接下来,提一下ResNet. 自ResNet问世以来,很多网络都会借鉴它的残差单元,因为它可以让网络变得很深但是精度却会越来越高,并且对浅层和深层特征进行了融合。大家可以了解一下为什么它的效果那么好,我的上一篇博文大致说了原因。请参考:resnet
13

接下来介绍比较典型的网络之一:Mobilenet. 它首次提出了depthwise separable convolution 思想。思想就是:将传统的卷积操作分成两步,假设原来是3*3的卷积,那么depthwise separable convolution就是先用M个3*3卷积核一对一卷积输入的M个feature map,不求和,生成M个结果,然后用N个1*1的卷积核正常卷积前面生成的M个结果,求和,最后得到N个结果,即所谓的分离——合并操作。
11
我们可以得到计算复杂度之比为:
12
计算复杂度大大下降。

接下来,介绍group convolution and channel shuffle 思想,这也是最近才提出来的shufflenet所采用的思想。

group convolution思想主要借鉴了Alexnet网络的训练,当时Alexnet采用了两块GPU并行训练,将卷积核分为了两组;此外,之前Mobilenet由于大量使用1*1卷积核,导致1*1卷积核所占据的计算量占据了总网络的70%——80%左右。研究者认为可以继续降低卷积操作的计算量。

假设输入feature map的数量是N,该卷积层的filter数量是M,那么M个filter中的每一个filter都要和N个feature map的某个区域做卷积,然后相加作为一个卷积的结果。假设你引入group操作,设group为g,那么N个输入feature map就被分成g个group,M个filter就被分成g个group,然后在做卷积操作的时候,第一个group的M/g个filter中的每一个都和第一个group的N/g个输入feature map做卷积得到结果。原始计算复杂度为M*N,现在变为(M/g*N/g*g),变为原来的1/g.

10

Group 操作的确是降低了复杂度,但是也但是也带来了新的问题,从图中,我们可以看到每个group中的信息只在这个group中流通,也就是各个group之间没有信息的交流,这不利于提取更多的特征,因此由通过channel shuffle来实现通道重排。

所以,在进行GConv2之前,对其输入feature map做一个分配,也就是每个group分成几个subgroup,然后将不同group的subgroup作为GConv2的一个group的输入,使得GConv2的每一个group都能卷积输入的所有group的feature map。

channel shuffle操作: reshape, transpose, flatten,看个简单的例子:

14

shufflenet unit 如下:

15

pointwise group convolutions其实就是带group的卷积核为1*1的卷积,也就是说pointwise convolution是卷积核为1*1的卷积。在ResNeXt中主要是对3*3的卷积做group操作,但是在ShuffleNet中,对1*1的卷积做group的操作,我们可以认为1*1的卷积操作的计算量不可忽视。

还有人提出Global Average Pooling思想,也就是来代替全连接层。因为全连接层的参数占据了总网络的很大一部分,所以就想用别的层来代替它。

Global Average Pooling做法很简单,是对每一个单独的feature map取全局average。要求输出的nodes和分类category数量一致,这样后面就可以直接接softmax了。
18
Global Average Pooling的好处有:
(1) 因为强行要求最后的feature map数量等于category数量,因此feature map就会被解析为categories confidence maps.
(2) 没有参数,所以不会过拟合;
(3) 对一个平面的计算,使得利用了空间信息,对于图像在空间中变化更鲁棒;

总结一下,轻量型模型的设计用到了很多策略。
在卷积核方面:
1 现在多使用1*1卷积核来降维和升维;
2 使用不同尺寸的卷积核来代替单一尺寸卷积核(见Inception网络)
3 使用group convolution and channel shuffle(见 shufflenet)
4 使用depthwise separable convolution (见 Mobilenet )
在连接方面,会借鉴ResNet 的残差单元或者Densenet单元,基本是在该单元上进行改进。

在以后的精细模型设计中,肯定会用到这些策略,不知道,把这些策略结合起来设计的轻量型模型会有什么结果呢?

今天时间比较多,所以就把前些日子看的论文和相关知识总结了一下。接触深度学习也没多久,今天作总结的目的是巩固知识,以后也会用到,当然有理解不明白的东西,如果你看到了,若觉得有错误,欢迎指出,网上的资源非常多,我们总能找到我们需要的知识。

深度神经网络高效处理:从模型压缩到推理部署的完整技术栈 深度神经网络的高效处理是AI工程落地的核心挑战,其本质是在模型性能与计算资源间寻求最优平衡。从原理上看,这涉及算法设计、模型压缩和硬件协同等多个层面。技术价值在于能显著降低模型运行成本与门槛,使其得以在资源受限的移动端、嵌入式设备及实时场景中部署。应用场景广泛覆盖自动驾驶、实时翻译和在线推荐等关键领域。本文聚焦于通过剪枝、量化等模型压缩技术,结合TensorRT、TFLite等推理引擎优化,系统阐述实现高效处理的全链路实践方案。 阅读详情

相关推荐

DNN模型压缩:综述

DNN-ompression模型压缩:Deep Compression剪枝Pruning资料论文应用量化Quantification资料论文应用 模型压缩:Deep Compression 以剪枝和量化为主要压缩方式减小模型大小和计算量,使得模型可以应用在计算和存储资源有限的嵌入式等设备上。 剪枝Pruning 资料 博客:深度学习模型压缩方法(3)-----模型剪枝(Pruning) 博客:深...

努力努力再努力丶的博客 858

深度学习模型压缩与加速

模型压缩与加速前言加速网络的设计分组卷积分解卷积BottleNeck结构神经网络搜索模型剪枝核稀疏化量化操作 前言 压缩与加速对于深度学习模型的端侧部署至关重要,但假设你的模型部署在服务端,模型的压缩与加速显得作用并不是特别大。在前一篇博客中,深度学习 模型压缩之知识蒸馏介绍了蒸馏的知识。我对知识蒸馏个人看法是没太大的必要去设计这样的网络训练,因为知识蒸馏需要花费功夫去训练一个好的教师模型,然后通过这个教师模型去训练学生模型(轻量模型),在这个过程中,也可以对教师模型进行压缩与量化从而达到模型的轻量化。另一

Fantastic 3616

提高深度神经网络推理速度-模型压缩与加速的最新进展

模型压缩与加速技术是深度神经网络应用中不可或缺的一部分,尤其是在资源受限的环境中。通过合理运用剪枝、量化、知识蒸馏等技术,并结合硬件加速与计算图优化,可以显著提升模型的性能和效率。随着技术的不断进步,未来的深度学习应用将在嵌入式设备、移动端、实时计算等领域发挥更大的潜力。模型压缩与加速技术为深度神经网络在资源受限环境中的部署提供了有效的解决方案。剪枝、量化、知识蒸馏等技术能够有效减小模型的计算量和存储需求,在保证精度的同时提升推理速度。然而,这些技术仍然面临一些挑战,如精度损失、复杂度增加等。

一键难忘的博客 4531

最新论文阅读(18)

Dilated Recurrent Neural Networks - - - IBM;伊利诺伊大学厄巴纳-香槟分校(UIUC)   将dilated用在RNN中,本质就是跳过若干个单元的连接(原本的RNN是上一帧与下一帧连接)。 Dynamic Edge-Conditioned Filters in Convolutional Neural Networks on Graph...

wydbyxr的博客 848

【电击防护篇】电击防护技术详解:从人体效应到接地系统全解析

本文系统讲解了电击防护的关键知识,包括电流对人体的影响(如30mA是心室颤动阈值)、人体电阻特性(700Ω-6100Ω)以及电气接触防护措施。重点分析了TT、TN和IT三大接地系统的结构特点与应用场景,强调TN-S系统最安全,IT系统供电连续性最佳。详细介绍了漏电保护器(RCD)的工作原理与选型指南,建议人身防护选用30mA高灵敏度RCD。文章通过对比表总结三大系统的安全性、成本及适用场景,为电气安全设计提供实用参考。

2301_81299416的博客 1744

深入剖析一个卷积块(ConvBlock)

深入剖析一个卷积块(ConvBlock)

qq_45670407的博客 1926

深度学习模型压缩分类及原理方法

深度学习模型压缩分类及原理方法 深度学习模型压缩思路 精细模型设计 模型裁剪及权重共享复用 低秩近似 知识蒸馏 核的稀疏化 模型量化(网络二值化) Compressing Deep Convolutional Neural Networks by Stacking Low-dimensional Binary Convolution Filters 剪枝 就是通过去除网络中冗余的channels,filters, neurons, or layers以得到一个更轻量级的网络,同时不影响性能。 代表性的工作有

茅场晶彦 900

MobaXterm破解14个会话限制的保姆级教程(附Python环境配置指南)

本文提供了MobaXterm破解14个会话限制的详细教程,并深入讲解了如何配置稳定的Python环境以支持相关脚本运行。通过理解软件授权机制、安全实践步骤以及许可文件的应用,帮助用户解除会话数量限制,实现高效的远程服务器管理与自动化运维。

weixin_29211309的博客 1657

CVPR2017 all paper list

本文给出了CVPR2017的最新的paperlist

一亩半分地 3万+

3D医学影像分割新突破:手把手教你用MedSAM2快速标注CT/MRI数据(附3D Slicer插件配置)

本文详细介绍了如何利用MedSAM2模型进行3D医学影像分割,包括从环境准备到3D Slicer插件配置的全流程。通过实战案例和技巧分享,帮助医疗从业者快速掌握CT/MRI数据的高效标注方法,提升医学影像分析的准确性和效率。

ujm5678901的博客 301

多模态RAG实战:为LLM装上视觉之眼,实现图文混合文档智能问答

检索增强生成(RAG)技术通过结合外部知识库,有效缓解了大语言模型(LLM)的幻觉问题,并扩展了其知识边界。其核心原理是将文档切分、向量化后存入向量数据库,在问答时通过语义检索召回相关上下文,辅助LLM生成更精准的答案。这项技术的核心价值在于,它为大模型应用提供了一种低成本、高效率的知识注入与实时更新方案,广泛应用于智能客服、知识库问答、文档分析等场景。随着应用深入,纯文本RAG在处理产品手册、学术论文、设计图纸等富含视觉信息的文档时面临瓶颈。本文聚焦的**多模态RAG**和**视觉理解**技术,正是为了解

weixin_30698527的博客 722

基于DNN的声学模型压缩与量化

本文深入探讨了DNN声学模型在端侧设备上的轻量化技术,重点介绍剪枝、知识蒸馏和量化三大核心方法。通过模型压缩,可在保持高识别精度的同时显著减小模型体积、降低计算开销,使语音识别模型高效运行于嵌入式设备。结合实战部署建议,展示了从理论到落地的完整路径。

weixin_35509395的博客 268

【OpenCV-Python】图像的载入、显示和输出(imread()、imshow()、waitKey()、namedWindow()、imwrite())

图像的载入:imread()函数 imread()函数可以用来非常便捷地读取文件中的图片到Opencv中。这个函数一般需要两个参数: (1)载入图片的路径名。如果图像文件在工程文件夹下,可以直接用文件名读取,如“cat.jpg”,否则需要输入完整的访问路径,如“D:\\test\\lena.png”。这里还有几个tips: imread函数中,一个点代表省略当前文件夹路径,两个点则代表回...

M&Q的博客 1397

DNN模型压缩:深度神经网络压缩论文总结

  1、HanS, Mao H, Dally W J. Deep Compression: Compressing Deep NeuralNetworks with Pruning, Trained Quantization and Huffman Coding[J].Fiber, 2015, 56(4):3--7. 主要内容:简化和压缩DNN模型,以减少计算量和内存的占用。神经网络剪...

努力努力再努力丶的博客 3244

YOLOv8进阶:SEAM注意力与Repulsion Loss双剑合璧,突破遮挡检测瓶颈

做目标检测时,最头疼的莫过于目标被遮挡的场景——行人被树木挡住一半、车辆被广告牌遮挡部分轮廓……这些情况往往让模型“犯迷糊”。但现在,有了SEAM注意力模块和Repulsion Loss排斥损失,我们就能让YOLOv8在遮挡场景下也能“拨开迷雾见真章”。这篇教程会带你一步步理解这两个技术,并亲手把它们融入YOLOv8,让你的检测模型在复杂场景下也能稳如泰山。

FJN110的博客 233

【WRF编译-Lab1】使用自动脚本编译WRF:错误总结

WRF编译过程及错误总结

WW、forever的博客 83

深度神经网络模型压缩与加速研究综述

深度神经网络模型压缩与加速研究综述 前言 深度卷积神经网络(CNNs)近年来在许多视觉识别领域取得了巨大的成功。然而,现有的深度神经网络模型在计算上是昂贵的且内存是密集型的。这限制了他们在低配置的硬件上的运行。因此,在不显著降低模型性能的情况下,在深度网络中进行模型压缩和加速是一种自然的思路,在这篇博客里讲会大致的想你介绍这个领域内的技术,综述了近年来发展起来的压缩和加速CNNs模型的先进技术。...

python_LC_nohtyp的博客 2325

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

边缘设备上的DNN推理优化:从模型压缩到硬件加速的实战指南

本文深入探讨了边缘设备上DNN推理优化的关键技术,包括模型剪枝、量化压缩和硬件加速等实战方法。通过树莓派4B、Jetson Nano等设备的实测数据,展示了如何实现毫秒级响应的AI推理,为边缘智能应用提供高效解决方案。

wood5的博客 168

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

DNN深度神经网络:结构、训练与优化全指南

深度神经网络(DNN)作为深度学习的核心基础,是图像分类、自然语言处理、时序预测等众多AI任务的核心驱动力。从基础的层结构设计到复杂的训练调参,再到工程化的优化部署,每个环节都直接决定模型的性能与落地效果。本文将结合实战案例,全面拆解DNN的结构设计要点、训练关键技术与优化核心方案,助力开发者快速掌握DNN从搭建到落地的全流程技巧。

2401_85083137的博客 1762

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

当前深度神经网络模型压缩和加速都有哪些方法

本期推荐的论文笔记来自 PaperWeekly 社区用户@yanjoy。本文全面概述了深度神经网络的压缩方法,主要可分为参数修剪与共享、低秩分解、迁移/压缩卷积滤波器和知识精炼,论文对每一类方法的性能、相关应用、优势和缺陷等方面进行了独到分析。 关于作者:小一一,北京大学在读硕士,研究方向为深度模型压缩加速。个人主页:http://yanjoy.win ■论文 | A Survey of ...

smartcat2010的博客 662

Cleer Arc5耳机深度神经网络声学模型压缩技术

Cleer Arc5通过深度神经网络模型压缩技术,在开放式耳机中实现高效主动降噪。采用剪枝、量化、知识蒸馏与轻量架构设计,在低功耗DSP上实现实时语音增强,兼顾性能、能耗与隐私安全。

weixin_28840811的博客 698

深度神经网络模型压缩方法总结

新的卷积计算方法 这种是直接提出新的卷积计算方式,从而减少参数,达到压缩模型的效果,例如SqueezedNet,mobileNet 1. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size 代码地址:https://github.com/DeepScale/Squeez...

Cheese_pop的博客 5858

深度神经网络模型压缩学习笔记一:模型压缩概述

额外的需求。

谢白羽 833

在AIoT设备上加速深度神经网络推理的进展:一项综述

此外,混合并行性,通过结合不同并行化技术的优势,以提高复杂计算任务的推理效率和可扩展性,已成为提高AIoT设备上DNN推理效率的有前途的解决方案。例如,通过结合数据并行性和模型并行性,优化了在卷积层中的数据并行性,并在全连接层中应用模型并行性。早期退出策略可以是静态的或动态的,它们通过在模型的适当层添加退出点,减少不必要的计算,从而提高推理速度。在AIoT设备上加速DNN推理的过程中,这些并行化技术的发展和应用至关重要,它们共同提高了计算效率,满足了AIoT设备上资源受限环境中对高性能计算的需求。

研究兴趣:智能物联网、嵌入式系统、人工智能 1443

深度收缩器:一种提高紧凑神经网络实硬件效率的新压缩范式

高效的深度神经网络(DNN)模型配备了紧凑的算子(如深度卷积),在降低DNN的理论复杂性(如权值/操作的总数)的同时保持良好的模型精度方面显示出了巨大的潜力。然而,现有的高效dnn由于其普遍采用的紧凑型操作器的硬件利用率较低,在实现其提高实硬件效率的承诺方面仍然受到限制。在这项工作中,我们为开发实际硬件高效的dnn开辟了一种新的压缩范式,在保持模型精度的同时提高了硬件效率。有趣的是,我们观察到,虽然一些DNN层的激活函数有助于DNN的训练优化和可达到的精度,但它们可以在训练后适当去除,而不影响模型精度。

qq_44703968的博客 702

阅读笔记:深度神经网络模型压缩与加速

目前的深层卷积神经网络模型非常耗费计算资源和内存,面临着在终端部署和低延迟需求场景下难以应用的问题。因此,一种很自然的解决方案就是在保证分类准确率不显著下降的前提下对深层卷积神经网络进行压缩和加速。

hukai7190的博客 5298
上一篇: Resnet解决了什么问题
下一篇: tf.nn.separable_conv2d 用法
L~花海
博客等级 码龄10年 38粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值