Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >优Tech分享 | RM -R:等价去除模型中的残差连接

优Tech分享 | RM -R:等价去除模型中的残差连接

原创
作者头像
优图实验室
修改于 2022-03-09 08:49:00
修改于 2022-03-09 08:49:00
1.2K0
举报

ResNet是由一个个残差块堆叠而成的,每个残差块的数学表达式为:y=f(x)+x,其中f(x)叫残差,x叫残差连接(residual connection),或者直连通道(shortcut connection)。ResNet相较于VGG更受欢迎的一个关键原因,在于其使用的残差连接,能够将输入特征保留下来,在训练时只需要学习输出特征与输入特征的差值f(x),即残差。

残差连接使训练非常深的网络,成为了可能。然而,残差连接占用了ResNet50模型40%的显存[1],拖慢了模型的推理速度。因此,如何获得没有残差连接的“直筒型”模型 ,成为一个值得关注的课题。通常为了获得更好的表达能力,f(x)会使用非线性函数。然而Shang[4]认为非线性模块是限制直筒型模型的深度的罪魁祸首,并通过提出一种对称的非线性模块,能够训练198层的直筒型模型,不过在CIFAR10数据集上只有85%的准确率;DiracNet[3]在卷积层加上一个Dirac初始化的值,用于保留输入特征,从而只需要学习残差部分的值。

RepVGG[2]进一步改进这一方法,训练阶段显式地使用残差连接,推理阶段使用“重参数化”方法,将残差连接合并到残差中,从而得到直筒型的模型。并首次在ImageNet数据集上,获得了超过80%准确率。然而我们发现,重参数化只能用于去除线性模块两端的残差连接,非线性单元必须放在残差连接外面,这限制了模型训练的深度。本文我们将提出RM操作,能够等价的去除ResNet/MobileNetV2等模型的残差连接,可以轻易的得到1000层VGG、用在剪枝操作前,大幅提升剪枝效果、提升RepVGG在深层表现。文章与代码均已开源:

文章:https://arxiv.org/abs/2111.00687

代码:https://github.com/fxmeng/RMNet

01/重参数化的局限性

如下图a)是ResNet中的一个残差块,其中一个ReLU位于残差连接内部,另一个位于外部;而下图b)所示为RepVGG的连续两个残差块,ReLU均位于残差连接外部。

RepVGG这样设计是因为,重参数化技术并不能等价去除ResNet的中非线性操作两端的残差连接,而是利用乘法分配律,去除线性操作两端的残差连接:

Ensemble[5]把ResNet看作2ⁿ个模型的ensemble。然而RepVGG的每个残差块很容易就能被一个函数表达。残差块越多,两者表达能力的差距越大。此外,Shattered Gradients[6]认为,非线性函数是导致模型难以训练的原因,RepVGG的ReLU全部位于残差连接外面,梯度传播最多需要经过的ReLU数是ResNet两倍。

为了验证这一观点,在下图中对比RepVGG的效果,发现随着深度增加,RepVGG准确率逐渐下降。

从以上分析可知,相比ResNet,重参数化方法更像是VGG的升级版,用残差连接提升浅层模型的效果。因此一种能够等价去除ResNet中残差连接的方法,就显得很有价值。

02/RM 操作

RM Operation的发音和功能与remove相同:等价去除(remove)模型中的残差连接。同时RM是Reserving和Merging的缩写,接下来将详细介绍Reserving和Merging操作。

如上图a)所示,训练时使用正常的ResNet,残差连接将输入特征传递到残差的输出特征处(Reserving),将二者相加(Merging)。如图b)所示,为了在推理阶段去除残差连接,需要扩张其中每一层的通道数,使其能够允许输入特征通过且不改变其值(Reserving),然后在最后一层将其合并(Merging)。

Reserving:

• 根据Conv的性质:“每个输出通道功能相互独立”,我们可以在原Conv层基础上,增加一些新的输出通道。这些通道只在需要保留的通道处初始化为1,其余值均初始化为0(dirac初始化)。输入特征通过这样的通道,值不会改变。

• BN层表达式为:

时,

y=x,此时BN层也可以不改变输入特征。

• 由于每个残差块最后都有一个ReLU,每个残差块的输入和输出都为非负值。这一非负的特征,通过卷积和BN时都没有改变其值,ReLU也不会改变非负输入的值。

Merging:

特征被reserve到最后一层,是为了将其在最后一层Merging。根据Conv的性质:“所有的输入通道的乘积会相加到一起”,我们只需要在原Conv层的基础上,增加一些dirac初始化的输入通道,这样输入通道特征会被加到原Conv层的输出上。

从上面描述的过程可以看出,RM操作去除残差连接需要引入额外的通道。在下表中我们对比ResNet,RepVGG,和RMNet三种方法,其中RepVGG能够提升推理速度,付出的代价是训练开销大,准确率低。RMNet的训练开销和准确率都和ResNet一样,但是推理速度慢。我们往往更关注准确率和推理速度,因此我们提出接下来几种方法,最大化RM操作的优点,规避其缺点。

03/利用RM操作 将MobileNetV2变为V1

MobileNetV2有一些特性,是天然适合使用RM操作的。例如:1)两头窄,中间宽的可分离1*1卷积,只需要增加1/9T的Dirac初始化通道,就能Reserving和Merging输入特征图。其中T=6,为中间通道数与输入/输出通道的比例。2)中间一层为depthwise卷积,每个滤波器仅用9个参数提取一个输入通道的特征。只需要1/G的Driac初始化通道来Reserving输入特征图。其中G=C,为卷积分组数,Depthwise卷积的分组数等于通道数。3)将MobileNetV2的残差连接去除后,相邻残差块(如上图中虚线框所示)的输出通道和输入通道为依次为[Conv,BN,Conv,BN]。中间没有非线性操作,因此可以其合并为一个[Conv,BN]。正是这一性质,能够将MobileNetV2变为MobileNetV1。4)由于相邻两个卷积层可以合并,可以任意增大训练时输入输出通道,在Fuse操作后,可以得到同样的结构。

使用带残差、可以免费扩张通道、准确率高的MobileNetV2进行训练,再使用RM、Fuse操作将其等价变为速度更快的MobileNetV1。实验效果如下:

04/RM操作:剪枝的催化剂

残差连接将输入特征与输出特征相加到一起,因此要求剪枝前后,相邻残差块输入输出通道数量都必须保持一致。通常有三种处理残差连接的方式:1)不裁剪残差连接的输入输出通道,只裁剪中间的通道,如[7,8,9,10]。虽然避免了问题发生,但这种方式无疑存在大量无效通道没有被裁剪。2)将相邻的所有残差块的输入输出通道以相同的方式进行裁剪,如[11,12,13,14,15]。这种方式要求相邻所有残差块在相同位置同时为无效才能裁剪,这显然是一个较高的要求。有时不得不裁剪掉一些有用的通道。3)使用索引的方式,允许输入输出通道数量不等,如[16,17]。两个维度不同的矩阵,可以通过索引加到一起,因此剪枝可以不受残差连接的限制。但是带索引的模型结构不利于在通用硬件上使用,如ShuffleNetV2[18]指出,碎片化操作不利于高效的并行推理,再如torch.jit和TensorRT这些常用库不支持带索引的模型结构。

如上图所示,我们可以用RM操作将模型的残差去除,然后就可以随心所欲的进行剪枝了!

使用slim[16]方法对ResNet18进行剪枝(红色)对比先RM掉模型残差,再进行剪枝(绿色)。可以看出:(左图)在准确率相同时,RM操作使裁剪后的模型速度更快。(左右图)即使剪枝率接近,RMNet速度却快很多,这也归功于RMNet直筒型的结构更有利于推理加速。裁剪后的RMNet18,整个模型没有任何分支,每一层的输入输出通道都可以为任意数量。

同样,先使用RM操作将MobileNetV2变为MobileNetV1,然后使用AMC剪枝进行裁剪。使MobileNetV2在1.4倍真实硬件加速的情况下,比ImageNet的baseline准确率高出1.42%,比1.3倍加速的AMC剪枝高出2.27%!

在多种硬件环境下测试裁剪后的模型速度,RM操作均能显著提升剪枝后的模型速度。

05/利用RM操作 提升深层RepVGG的表现

如图所示,RM操作可以将一个带残差连接的网络变换为一个RepVGG,然后使用重参数化技术将其变化为VGG样式的网络。其中通过残差连接将输入通道保留到输出通道的比例叫做reserve ratio,当reserve ratio等于0时,模型就和RepVGG完全一致了。当reserve ratio增大时,会将RepVGG的一部分通道用于保留输入通道特征。

如上图所示分别为RepVGG在CIFAR10/100、ImageNet数据集上,随着深度增加的准确率。可以看出由于在训练过程中引入了跟ResNet一样,跨越非线性层的残差连接,RM操作能够使RepVGG在深层时表现更好。

06/总结

本文提出名为RM的操作,可以将ResNet等价变为VGG,将MobileNetV2变为V1。尽管引入更多参数,但是能够帮助剪枝得到更快的模型,帮助RepVGG训练的更深,相信未来还能有更多有意思的应用场景。

参考文献:

[1]. Residual distillation: Towards portable deep neural networks without shortcuts [2]. Repvgg: Making vgg-style convnets great again

[3]. Diracnets: Training very deep neural networks without skip-connections

[4]. Understanding and improving convolutional neural networks via concatenated rectified linear units

[5]. Residual Networks Behave Like Ensembles of Relatively Shallow Networks

[6]. The Shattered Gradients Problem: If resnets are the answer, then what is the question?

[7]. ThiNet: A Filter Level Pruning Method for Deep Neural NetworkCompression

[8]. Data-Driven Sparse Structure Selection for Deep Neural Networks

[9]. Discrimination-awareChannel Pruning for Deep Neural Networks

[10]. Neuron Merging:Compensating for Pruned Neurons

[11]. Pruning Filters forEfficient ConvNets

[12]. Gate Decorator: GlobalFilter Pruning Method for Accelerating Deep Convolutional Neural Networks

[13]. Neural Network Pruning with Residual-Connections andLimited-Data

[14]. GroupFisher Pruning for Practical Network Compression

[15]. AMC: AutoML for Model Compression and Acceleration on Mobile Devices

[16]. Learning Efficient Convolutional Networks through Network Slimming

[17]. Channel Pruning for Accelerating Very Deep Neural Networks

[18]. ShuffleNet V2: PracticalGuidelines for Efficient CNN Architecture Design

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RMNet推理去除残差结构让ResNet、MobileNet、RepVGG Great Again(必看必看)
自从AlexNet问世以来,CNN最先进的架构变得越来越深入。例如,AlexNet只有5层卷积层,很快VGG网络和GoogLeNet分别将其扩展到19层和22层。然而,简单叠加层的深度网络很难训练,因为梯度反向传播到后面比较深的层时梯度可能会消失和爆炸(重复乘法可能会使梯度无穷小或无穷大)。
集智书童公众号
2021/11/17
1.4K0
神操作!RM让ResNet等价转换为Plain架构
尽管残差连接有助于极深网络训练,但其多分支拓扑结构不利于在线推理 。这也就促使了诸多研究员设计推理时无残差连接的CNN模型。比如,RepVGG将训练时的多分支结构重参数为推理时的单分支类VGG结构,当网络相对浅时表现出了非常优异性能 。然而,RepVGG无法将ResNet等价转换为类VGG结构,这是因为重参数机制仅适用于线性模块 ,而将非线性层置于残差连接之外则会导致有限的表达能力,对于极深网络影响尤为严重。
AIWalker
2021/11/12
8800
神操作!RM让ResNet等价转换为Plain架构
说明!今日arXiv无更新!! 腾讯优图|基于模型剪枝的高效模型设计方法
深度神经网络推动了许多机器学习任务,包括语音识别、视觉识别和语言处理,是人工智能的有力工具。为了让深度神经网络得以更好地应用,就要让其有更高的准确率以及更快的速度,而剪枝技术可以满足这两点。
公众号-arXiv每日学术速递
2021/10/22
6170
图解RMNet 重参数化新方法
残差网络的出现允许我们训练更深层的网络,但由于其多分支的推理,使得在推理速度上不如无残差连接的直筒网络(Plain Model)。RepVGG通过重参数的思想,将三个分支融合到一个分支中。然而使用RepVGG是无法重参数化ResNet,因为重参数方法只能应用于Linear Blocks,并且ReLU操作需要放到外面。本文我们提出Reserving和Merging两个操作(RM),在ResBlock基础上去除残差连接。相比ResNet和RepVGG,RMNet在速度精度上更好,同时也对high-ratio的剪枝操作友好。
BBuf
2021/12/02
1K0
图解RMNet 重参数化新方法
模型压缩部署神技 | CNN与Transformer通用,让ConvNeXt精度几乎无损,速度提升40%
深度神经网络(DNNs)在各种任务上取得了显著的进展,在工业应用中取得了显著的成功。在这些应用中,模型优化的追求突出地表现为一个普遍的需求,它提供了提高模型推理速度的潜力,同时最小化精度折衷。这一追求包括各种技术,尤其是模型削减、量化以及高效模型设计。高效模型设计包括神经架构搜索(NAS)和手工设计方法。模型削减已成为工业应用中优化模型的主要策略。作为主要加速方法,模型削减关注于有意去除冗余权重,同时保持准确性。
集智书童公众号
2024/01/17
1.2K0
模型压缩部署神技 | CNN与Transformer通用,让ConvNeXt精度几乎无损,速度提升40%
从基础网络到NAS经典论文梳理
DeepAction八期飞跃计划还剩7个名额,联系小编,获取你的专属算法工程师学习计划(联系小编SIGAI_NO1)
SIGAI学习与实践平台
2019/08/20
8760
从基础网络到NAS经典论文梳理
【美团技术解析】模型加速概述与模型裁剪算法技术解析
作者简介:Michael,2017年加入美团无人配送部,负责无人配送车感知算法迭代工作。
美团无人配送
2019/04/26
2.8K1
【美团技术解析】模型加速概述与模型裁剪算法技术解析
模型部署系列 | 卷积Backbone量化技巧集锦
本文首发于 【集智书童】,白名单账号转载请自觉植入本公众号名片并注明来源,非白名单账号请先申请权限,违者必究。
集智书童公众号
2023/09/04
8820
模型部署系列 | 卷积Backbone量化技巧集锦
模型压缩
深度学习让计算机视觉任务的性能到达了一个前所未有的高度。但,复杂模型的同时,带来了高额的存储空间、计算资源消耗,使其很难落实到各个硬件平台。
机器学习AI算法工程
2021/09/02
1.3K0
模型压缩
深度学习算法优化系列一 | ICLR 2017《Pruning Filters for Efficient ConvNets》
这篇文章是深度学习算法优化系列的第一篇文章,主要解读一篇ICLR 2017年的《Pruning Filters for Efficient ConvNets》,关于通道剪枝策略的一篇论文。论文原地址见附录。
BBuf
2019/12/23
1.8K0
无处不在的残差网络
CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元素与医疗病例图像分割、视频实时人脸检测与表情识别、OCR等项目。
深蓝学院
2020/12/04
1.2K0
MobileNetV2:面向移动端的高效神经网络架构革新——突破轻量化模型的设计边界
我们倾向于将“移动”与更小、更高效的事物联系起来,所以我原本以为这个网络的设计会占用更少的计算资源,而这正是作者的目标。这篇论文描述了一种专为移动和资源受限环境量身定制的全新神经架构——MobileNetV2。
CoovallyAIHub
2025/04/24
6540
MobileNetV2:面向移动端的高效神经网络架构革新——突破轻量化模型的设计边界
MobileNetV1/V2/V3简述 | 轻量级网络
论文: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
VincentLee
2020/07/08
1.5K0
模型压缩和优化板块上线
模型优化与压缩涉及到紧凑模型的设计,量化与剪枝以及相关的工业界使用技巧共3个大方向。最近会集中上线一些内容,已有内容欢迎大家预览。
用户1508658
2019/08/26
7100
模型压缩和优化板块上线
轻量级神经网络MobileNet,从V1到V3
zhuanlan.zhihu.com/c_1113861154916601856
SIGAI学习与实践平台
2019/07/10
2.3K0
CNN 深度混合,融合静态剪枝与动态计算的高效神经网络优化技术 !
近年来,卷积神经网络(CNNs)在多种计算机视觉应用中取得了显著的进步,如图像识别[11, 34],目标检测[28, 29],和图像分割[23, 43]。尽管它们的性能表现非常出色,但CNNs通常需要大量的计算资源和庞大的内存,这在设备计算资源有限的情况下部署高级模型带来了巨大的挑战[19]。
未来先知
2024/10/10
3910
CNN 深度混合,融合静态剪枝与动态计算的高效神经网络优化技术 !
ICML2020 | Prune or Not to Prune?与其剪枝丢掉无用通道,不如将其激活?
本文介绍的是ICML 2020 论文《Channel Equilibrium Networks for Learning Deep Representation》,论文作者来自香港大学罗平组。
AI科技评论
2020/06/17
9610
ICML2020 |  Prune or Not to Prune?与其剪枝丢掉无用通道,不如将其激活?
Micro-YOLO:探索目标检测压缩模型的有效方法(附论文下载)
论文地址:https://www.scitepress.org/Papers/2021/102344/102344.pdf
计算机视觉研究院
2022/01/26
9290
Micro-YOLO:探索目标检测压缩模型的有效方法(附论文下载)
从AlexNet到残差网络,理解卷积神经网络的不同架构
该文介绍了神经网络模型压缩、加速和量化三个方面的研究进展。其中,压缩技术包括模型剪枝、知识蒸馏等方法,加速技术包括硬件加速、优化算法等方法,量化技术包括量化训练、量化推理等方法。这些技术在不同程度上减小了模型的大小、提高了推理的速度、降低了训练的能耗。
企鹅号小编
2018/01/04
1K0
从AlexNet到残差网络,理解卷积神经网络的不同架构
关于模型压缩,近一个月从模型精简,硬件实现,到模型剪枝
精简模型的设计是模型压缩中的第一步,而且是能够保证模型精度不下降的最有效的一种策略,最近我们分享了对特征图的冗余计算进行约减的GhostNet框架。
用户1508658
2020/04/23
1K0
关于模型压缩,近一个月从模型精简,硬件实现,到模型剪枝
推荐阅读
相关推荐
RMNet推理去除残差结构让ResNet、MobileNet、RepVGG Great Again(必看必看)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档