论文:Network Slimming----阅读笔记

低秩分解(Low-Rank Decomposition) 低秩分解技术旨在将高维矩阵或张量近似分解为低秩因子的乘积,从而达到降维、压缩和提取数据主要信息的目的。该方法在深度学习模型压缩、推荐系统、自然语言处理和图像处理等领域具有广泛应用。 阅读详情

这篇文章利用通道稀疏化这样一个简单但很有效的方法,可以有效解决CNN网络在现实应用中部署时面临的三大挑战:

1.模型大

2.推理时占用内存开销大

3.计算量大

在这篇论文中,提出了网络瘦身,它解决了前面提到的所有挑战。方法是将L1正则化施加到BN层的缩放因子上,L1正则化推动BN层的缩放因子趋向于零,因为每一个缩放因子都和一个特定的CNN卷积通道(或者全连接层的一个神经元)相关联,这样就能够鉴别出不重要的通道或者神经元,利用这点可以进行后续的通道剪枝,另外正则化也很少损伤性能,甚至一些情况下它会导致更高的泛化准确率,剪掉不重要的通道有时候虽然会暂时降低性能,但是通过之后对剪枝网络的微调可以对精度补偿。在剪枝之后,更窄的网络会在模型大小、运行阶段的内存占用、计算量方面都会更显得紧凑。将上面的过程重复几次,就可以通过多阶段的网络瘦身获得更紧凑的模型。

related work:

1.低秩分解:“Exploiting linear structure within convolutional networks for efficient evaluation”这篇工作中使用像奇异值分解(SVD)这样的低秩近似技术,但是这种方法主要是在全连接层的表现比较好,可以将模型大小压缩3倍,但是没有明显的速度加速,因为CNN的计算量主要是来自卷积层。

2.权重量化:“Compressing neural networks with the hashing trick”这篇工作中的HashNet提出了量化网络权重,在训练之前,网络权重被分为不同的组,在每一个组内的权重共享权值。按照这种方法,只有共享的权重值和哈希索引需要被存储,因此可以节省大量的存储空间。在深度压缩中使用提高的量化技术在AlexNet和VGGNet上实现了 35x-49x 的压缩比。然而,这些技术既不能节省运行时的内存,又不能节省推理时间,因为在推理期间,共享的权重需要被恢复到原来的位置(相当于还多了个解码的过程)。

3.权重剪枝/稀疏化:韩松之前的“Learning both weights and connections for efficient neural network”这篇工作中,提出了在训练网络中剪枝掉不重要的连接关系,这样的话网络中的权重大多数变成了0,可以使用一种稀疏的模式存储模型。然而,这些方法需要专门的稀疏矩阵运算库或硬件来做加速,运行时的内存占用节省非常有限,因为产生的激活值仍然是密集的。韩松的这篇工作在训练期间没有给稀疏化任何指导,“Training sparse neural networks”这篇工作中通过给每个权重引入额外的门变量强加了稀疏约束,实现了更高的压缩比率。但是其仍然没有解决上面的缺点。

4.结构剪枝/稀疏化:目前,"Pruning filters for efficient convnets"提出了在训练CNNs时剪枝通道,然后通过微调来恢复精度;"The power of sparsity in convolutional neural networks"在训练之前,通过随机抛弃channel-wise的连接引入稀疏化,也得到了一个更小的网络;与这些网络相比,network slimming是在训练过程中将channel-wise稀疏化强加到优化目标函数中,导致了一种更平滑的通道剪枝过程和比较的小的精度损失。"Towards compact cnns"在训练期间引入神经元级别的稀疏化,因此一些神经元会被剪掉从而获得紧凑的网络。"Learning structured sparsity in deep neural networks"提出了一种SSL方法来对结构的不同层级稀疏化。这两种方法都在训练时使用了"组稀疏正则化"来获得结构稀疏化,与前面的方法不同,network slimming的方法将简单的L1稀疏化强加到channel-wise的缩放因子上,优化目标更加简单。由于这些方法都是对网络结构的(channels,neurons等)一部分做剪枝或稀疏化,而不是对个别权重,因此它们不太需要特别的库来实现推理加速和运行时的内存节省。network slimming就属于这个类别,完全不需要其他的特定库支撑。

5.神经结构学习:最先进的模型比如VGG、GoogleNet、ResNet等通常都是由专家设计的,也有一些在自动学习网络结构方面的探索,"Neural network architecture optimization through submodularity and supermodularity"在有限的资源预算下,为网络结构搜索引入了子模块/超模块;"Neural architecture search with reinforcement learning"和"Designing neural network architectures using reinforcement learning"这两篇工作提出了使用强化学习自动学习神经网络结构,这些方法的搜索空间非常大,因此常常需要从上百个模型中辨别好坏,网络瘦身可以看作是一种结构学习的方法,尽管对于每个层的宽度选择非常有限,然而,与前面的方法相比,network slimming仅通过单个训练过程就学习到网络结构,这是十分高效的。

channel-wise稀疏化的优势:正如之前讨论的,稀疏化可以在不同级别实现(weight-level,kernel-level,channel-level,layer-level)。细粒度的稀疏化(weight-level)由最高的灵活性和泛化性能,也能获得更高的压缩比率,但是它通常需要特殊的软硬件加速器才能在稀疏模型上快速推理。相反,粗粒度 layer-level稀疏化不需要特殊的包做推理加速,但是它灵活性上不如细粒度。事实上,只有深度足够深(超过50层),移除某些层才会很高效。相比之下,channel-wise稀疏化在灵活性和实现上做了一个平衡,它可以被应用到任何典型的CNN或者全连接层(将每个神经元看作一个通道),由此得到的网络本质上也是一个瘦的网络,可以在卷积CNN平台上快速推理。

challenge:实现通道稀疏化需要将和一个通道有关联的所有输入和输出的连接都剪掉。这使得在预训练的模型上修剪权重是不太有效的。比如对预训练好的ResNet做通道剪枝,在不损伤准确率的情况下,只能减少10%的参数量。"Learning structured sparsity in deep neural networks"这篇文章中通过将稀疏正则化强加到训练目标函数中,具体来讲,就是采用group Lasso来使得所有filters的同一个通道在训练时同时趋于0。然而,这个方法需要额外计算新引入的和所有filters有关的梯度项,这是一个问题。

缩放因子和稀疏性惩罚:network slimming是对每一个通道都引入一个缩放因子 [公式] ,然后与通道的输出相乘。接着联合训练网络权重和这些缩放因子,最后将小缩放因子的通道直接剪除,微调剪枝后的网络。特别地,将目标函数定义为:

preview

(x,y)是训练输入和目标,W是网络中可训练参数,第一项是CNN网络的训练损失函数,g(.)是在缩放因子上的惩罚项, λ 是两项的平衡因子。在我们的实验中,我们选择g(s)=|s|,即L1-正则化,被广泛地用于稀疏化。

剪掉一个通道的本质是要剪掉所有与这个通道相关的输入和输出连接关系,这样可以直接获得一个窄的网络,而不需要借用任何特殊的稀疏计算包。缩放因子扮演的是通道选择的角色,因为缩放因子的正则项和权重损失函数联合优化,网络自动鉴别不重要的通道,然后移除掉,几乎不影响网络的泛化性能。

利用BN层的缩放因子:BN层已经被大多数现代CNN网络采用,作为一种标准的方法来使得网络快速收敛并获得更好的性能。BN归一化激活值的方法给了我们设计一种简单高效的方法的灵感,即与channel-wise缩放因子的结合。尤其是,BN层使用mini-batch的统计特性对内部激活值归一化。 z_{in} 和 z_{out} 分别是BN层的输入和输出,B指代现在的minibatch,BN层执行下面的转换:

通常的做法是在卷积层之后插入一个BN层,引入channel-wise的缩放/平移参数。因此,我们直接将BN层的γ参数作为network slimming的缩放因子,这样做的一个优势在于没有给网络带来额外的花销。事实上,这也可能是能够学习到的最有意义的做通道剪枝的缩放因子:

       1.如果不使用BN层,而在卷积层之后加入一个缩放层,缩放因子的值对于评估一个通道的重要性没有任何意义,因为卷积层和缩放层就是一种线性变换而已。可以通过一方面降低缩放因子的值一方面方法卷积层的权重来使最终的结果保持不变;
        2.如果在BN层之前插入一个缩放层,缩放层的影响将完全被BN层所掩盖;
        3.如果在BN层之后插入一个缩放层,那么对于每个通道将会有两个连续的缩放因子;
通道剪枝和微调:引入缩放因子正则项之后,得到的模型中许多缩放因子都会趋于0。然后剪掉接近零的缩放因子对应的通道,这里说的再清楚一点,假设经过卷积之后的feature map 的维度为 h x w x c,h和w分别为特征图的高和宽,c为通道数,将其送入BN层会得到归一化之后的特征图,c个feature map中的每一个都对应一组γ和λ ,前面所说的剪掉小的γ 对应的通道实质上就是直接剪掉这个feature map对应的卷积核。至于什么样的 γ算小的呢?这个取决于为整个网络所有层设置的一个全局阈值,它被定义为所有缩放因子值的一个比例,比如剪掉整个网络中70%的通道,那么先对缩放因子的绝对值排个序,然后取从小到大排序的缩放因子中70%的位置的缩放因子为阈值,通过这样做,就可以得到一个较少参数、运行时占内存小、低计算量的紧凑网络。

Learning Efficient Convolutional Networks Through Network Slimming论文阅读笔记 作者:张松 论文链接:https://arxiv.org/abs/1708.06519 代码:https://github.com/liuzhuang13/slimming 概述: 此方法基于channel-wise,提出将L1正则化施加到BN层的缩放因子上,L1正则化推动BN层的趋向于零,这使得能够鉴别出不重要的通道或者神经元,因为每一个都和一个特定的CNN卷积通道(或者全连接层的一个神经元)相关联。这有助于后续的通道剪枝,另外正则化也很少损伤性能,甚至一些情况下它会导致更高的泛化准确率,剪掉不重要的通道 阅读详情

相关推荐

网络模型剪枝-论文阅读-Network Slimming

论文地址:Learning Efficient Convolutional Networks through Network Slimming 这篇论文是在2017年的ICCV发表的,可以看做是之前讲过的channel pruning方法的变种,但是更加简单有效。 简单来说,这篇论文的剪枝方式是,给每个通道加上权重,在训练的过程中使用L1正则化对通道权重进行稀疏化,然后对于最终通道权重低于阈值的通道剪枝,最后重新训练得到剪枝模型。论文非常聪明的就是对batch normliization(BN)层的γ\ga

AManFromEarth的博客 1981

深度网络剪枝与轻量化

常见模型剪枝方法 Low-rank Decomposition:低秩分解。将权值矩阵分解为低秩矩阵 Weight Quantization:权值量化。HashNet 提出去量化网络的权值。在训练之前,网络的权值被hash到不同的组,并且组内的权重是共享的。这样只有共享的权重和hash indices需要被储存,可以节省很大一部分存储空间。然而,这些技术既不能节省运行时的内存,又不能节省推理时间,因为在推理期间,共享的权重需要被恢复到原来的位置(相当于还多了个解码的过程) Weight Pruning /

weixin_45424997的博客 2198

【论文阅读】【综述】网络的剪枝方法

文章目录非结构化的Learning both Weights and Connections for Efficient Neural NetworksDEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN CODING结构化的 本文记录一下对model pruning方法的学习,我只是挑了一些代表性的论文阅读一下,了解pruning的思路。 首先推荐一篇博客,闲话模型

麒麒哈尔的博客 4914

笔记 RASL: Robust Alignment by Sparse and Low-Rank Decomposition for Linearly Correlated Images

本文是这篇 PAMI 期刊论文的笔记,主要是对文中的理论方法进行展开详解。本人学术水平有限,文中如有错误之处,敬请指正。

Xue Shengke 博客 4013

YOLOv9【第九章:模型压缩与极致优化篇·第2节】结构化剪枝——基于 BN Gamma 的通道裁剪!

如上创作中断了,请根据创作内容,按照一样的文章结构,继续续上创作,只给出中断之后续上的内容,所给出的创作一定要上下文连贯,不能衔接不上,且所给出的内容务必保证与上述所给的创作要求一致,一切不确定的按你的建议来写。

**My Coding Family** 608

YOLOv8模型剪枝实战:从稀疏化训练到端侧部署的完整链路

深度学习模型在边缘设备上部署时,常面临体积大、推理慢的瓶颈。模型剪枝作为一种结构化模型压缩技术,通过剔除卷积层中的冗余通道,在保持精度的同时显著降低计算量。其核心原理是利用BN层的缩放因子gamma评估通道重要性,配合稀疏化训练使不重要通道趋于零,再通过剪枝计划同步删除关联层参数。剪枝后的模型需经过增量训练与知识蒸馏恢复精度,最终可导出为TensorRT等格式,适配Jetson、RK3588等边缘硬件。这一技术路线广泛应用于YOLOv8等目标检测模型的轻量化,在COCO子集上可剪掉50% FLOPs而mAP

weixin_30607125的博客 249

低秩分解

十岁的小男孩   本文为终端移植的一个小章节。 目录   概念   1. 奇异值(SVD)分解   2. 张量分解     2.1CP 分解( Canonical Polyadic Decomposition (CPD)     2.2 TD 分解( Tucker Decomposition )     2.3 BTD 分解(block term decomposition) ...

weixin_30650859的博客 1897

Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台

Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。将Apache Ignite集成到Spring Boot应用中,可以显著提高应用的性能和可扩展性。Spring Boot的简单配置和Ignite的强大功能相结合,使得开发和部署更加高效。首先,创建一个新的Spring Boot项目。可以通过Spring Initializr(https://start.spring.io/)

九天的专栏 2142

DL | YOLO模型剪枝方法简介

文章目录1. CNN模型model slimming常用方法1.1 Low-rank Decomposition1.2 Weight Quantization1.3 Weight Pruning / Sparsifying1.4 Structured Pruning / Sparsifying1.5 Neural Architecture Learning1.6 参考资料2. YOLO V3 剪枝思路2.1 主要思路2.2 参考文献3. YOLO V3剪枝开源项目简介3.1 [tanluren/yolov3

南瓜派三蔬 4779

DFT设计绪论

DFT设计的主要目的是为了将defect-free的芯片交给客户。 产品质量,通常使用Parts Per million(PPM)来衡量。 但是随着IC从SSI到VLSI的发展,在test上花销的时间越来越多,test的quality却很难提高,这使得DFT的engineer不断的发展着DFT的技术。 DFT engineer面对的第一个问题是设计内部的状态的可测试性问题。在...

ahr7882的博客 1195

ESP32连接OneNet云平台实现多设备联动控制完整示例

通过esp32连接onenet云平台,实现远程设备间的智能联动控制,利用MQTT协议完成数据通信,esp32连接onenet云平台后可高效稳定地上传与下发指令,提升物联网系统响应速度与自动化水平。

weixin_42360733的博客 547

【论文阅读笔记】Learning Efficient Convolutional Networks through Network Slimming

论文地址:Network Slimming 论文总结   本文提出了一种channel-level的裁剪方案,可以通过稀疏化尺度因子(BN层的scaling factor)来裁掉“不重要”的channel。   文中的方案为: 在训练时,对BN层的scaling factor施加L1L_1L1​正则化,在训练网络的同时得到稀疏化的尺度因子; 裁掉低于指定阈值的channel;【(1)设定裁剪的百分比;(2)依据百分比找到所有尺度因子对应的值作为阈值;(3)逐层进行裁剪】 对得到的模型进行fine-tune

时光机 °的博客 1万+

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 903

【论文阅读】Learning Efficient Convolutional Networks through Network Slimming

1 论文地址

luolinll1212的专栏 2644

单细胞数据分析实战:用scDblFinder快速搞定异质性双细胞检测(附完整R代码)

本文详细介绍了如何使用scDblFinder工具在单细胞RNA测序数据中精准识别异质性双细胞。通过完整的R代码示例,从环境准备、数据加载到核心分析流程和结果可视化,帮助研究人员高效解决双细胞检测问题,提升单细胞数据分析的准确性。scDblFinder的集成算法和鲁棒性设计使其成为处理单细胞数据中技术噪音的理想选择。

weixin_29098117的博客 423

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7237

【论文阅读】【剪枝】Learning Efficient Convolutional Networks through Network Slimming

【论文阅读】【剪枝】Learning Efficient Convolutional Networks through Network Slimming

weixin_50862344的博客 2600

【GPT】Coze使用开放平台接口-【7】Dify 比较篇

coze 用于社交,dify 用来内部构建。抛开工作流,机器人,工具,coze 最大的区别在于可以直接发布到社交媒体上。所以,coze 对操作体验上也花了不少功夫,而 dify 就专注在帮助使用者打磨工作流。coze 各个大模块之前可以联动的机制也比较多,所以侧重点各不相同。

非晓为骁的博客 7613

阅读笔记——Learning Efficient Convolutional Networks through Network Slimming

目录概述方法实验及指标实验细节实验指标 概述 CNN 模型在许多方面都取得了进展,但要将一些高精度 CNN 模型应用到实际场景中,还是面临一些问题: 模型大小:模型参数和结构需要保存在硬盘上,对于一些嵌入式系统来说是一个不小的负担; 运行时内存需求:推理时产生的中间变量需要地方存储; 计算操作次数:一个比较大的 CNN 网络在移动设备上的处理时间可能可以达到数分钟,这使得应用于实时应用不现实。 这些实际问题使得人们考虑对模型大小进行压缩。这篇文章提出,可以对 BN 层的尺度因子使用 L1 正则化,将 B

哇哇的博客 706

PTP(确时间协议,Precision Time Protocol)时间同步

主时钟定期发送带预估发送时间 t1 的报文(若支持硬件时间戳,实际 t1​ 由后续的Follow_Up报文携带)。所有设备启动后通过协商选举出唯一主时钟(Grandmaster),其余设备自动成为从时钟(Slave)。:从时钟记录接收时间 t2,随后向主时钟发送Delay_Req并记录发送时间 t3​。若使用支持PTP的交换机,可修正报文在交换机内的驻留时间,进一步提升精度。从时钟根据offset调整本地时钟,实现与主时钟同步。动态调整本地时钟,抵消传输延迟和时钟漂移。(或通过BMCA自动当选)。

努力努力努力 1303

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

模型压缩:Networks Slimming-Learning Efficient Convolutional Networks through Network Slimming

Network Slimming-Learning Efficient Convolutional Networks through Network Slimming(Paper) 2017年ICCV的一篇paper,思路清晰,骨骼清奇~~ 创新点: 1. 利用batch normalization中的缩放因子γ 作为重要性因子,即γ越小,所对应的channel不太重要,就可以裁剪(pru

人工智能技术学习与分享 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

论文阅读【模型剪枝(二)】

1. Learning Efficient Convolutional Networks through Network Slimming 论文地址:https://arxiv.org/abs/1708.06519 论文代码:https://github.com/talebolano/yolov3-network-slimming

Rock的博客 594

革命性剪枝教程DeepLearning-500-questions:模型压缩终极指南

深度学习模型在人工智能领域取得了巨大成功,但庞大的计算和内存开销严重限制了其在资源受限环境中的应用。《DeepLearning-500-questions》作为深度学习领域的经典问答集,在第十七章详细阐述了模型压缩与加速技术,为开发者提供了从理论到实践的完整指南。本文将聚焦其中的剪枝技术,带你掌握模型精简的核心方法。 ## 为什么模型剪枝是深度学习部署的关键? 随着神经网络深度和宽度的增加,模

gitblog_01420的博客 626

知识蒸馏-Yolov3

知识蒸馏概述 知识蒸馏(Knowledge Distilling)是模型压缩的一种方法,是指利用已经训练的一个较复杂的Teacher模型,指导一个较轻量的Student模型训练,从而在减小模型大小和计算资源的同时,尽量保持原Teacher模型的准确率的方法。即用一个复杂网络(teacher network)学到的东西去辅助训练一个简单网络(student network)。 背景 引用知乎相关问题的回答粘贴如下,将KD方法的motivation讲的很清楚。 Knowledge Distill是一种简单弥补分

AI人工智能的海洋 4932

模型剪枝

目录模型剪枝一. 基础回顾二. Pruning Filters for Efficient ConvNets三. Learning Efficient Convolutional Networks through Network Slimming四. Rethinking the Value of Network Pruning模型剪枝 一. 基础回顾 首先回顾一下卷积的过程,输入:\(x=...

寂寞的小乞丐 541

模板驱动型文档自动化:零代码实现多格式专业文档批量生成

文档自动化是企业内容运营提效的核心路径,其本质是将重复性排版与结构化输出任务从人工操作中解耦。基于模板驱动的自动化方案,依托可复用的原子组件、条件逻辑引擎和样式继承体系,实现PDF/DOCX/HTML等多格式一键生成,兼顾品牌一致性与业务合规性。相比AI全文生成,模板方案在可控性、结构处理能力及系统集成性上更具工程落地优势,尤其适用于销售提案、客户案例、合规报告等高频标准化文档场景。本文深入解析模板语法设计、动态区块编排与三级分层架构,揭示如何让模板真正成为承载业务规则的数字执行体。

weixin_33938733的博客 373
上一篇: 1*1卷积的作用
下一篇: torch2trt工具转换模型
GeneralJing
博客等级 码龄15年 17粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值