RepVGG网络学习记录

RepVGG是清华大学与香港科技大学合作提出的模型,它在训练时使用多分支结构提升表征能力,而在推理时转换为单路结构以提高效率和节省内存。通过卷积与BN融合、统一使用3*3卷积和结构重参数化,RepVGG在保持高性能的同时,简化了模型,便于剪枝和量化。这一创新思想已被应用于YOLOV7等模型,提升推理速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ResNet等被提出前,VGG可谓是风靡一时,但当ResNet等横空出世后,VGG便遭受了冷落,甚至一度被人所遗忘,但其影响依旧深远,VGG告诉我们一个道理,3X3卷积是最好的,这可能与nvidia的优化有关,而今天所要介绍的是由清华大学与香港科技大学联合提出了一个VGG的衍生模型,试图让曾经风光不再的VGG容光焕发。
之所以RepVGG能够一骑绝尘达到STOA水平,源于其提出了在训练时使用下图B的网络结构,而在推理时则采用下图C的网络结构,而为何能够如此转换,这就是论文提出的思想:结构冲参数化
在这里插入图片描述
经过发展得出的一个尝试,我们在完成卷积操作后都要进行一个批归一化操作(BN),这如同我们吃完饭要喝水一样,而RepVGG中提到可以将这两个过程同时进行,即在吃饭的过程中喝水,此外,其指出训练过程的网络结构与预测时的网络结构可以不同,这种想法是相当新颖的。因此,其指出要改进以下几点:
1.卷积与BN合并
2.全部转换为3*3卷积
3.多个卷积核再合并

RepVGGBlock讲解

在这里插入图片描述
在训练模式下的RepBlock分为两种,一种是左边的步长为2进行下采样的,另一种是右面步长为1的,我们主要看的是第二种。该网络结构分为三个分支结构,设置卷积核为3*3,步长为1,padding为1。
那么为何要采用多分支结构呢?事实上按照经验可知增加分支结构是能够增强模型的表征能力的。下面的消融实验给出了实验支撑:
在这里插入图片描述
那么为何我们在推理时却要将多分支转换为单路模型呢?
作者给出了理由:更快,更节省内存,更灵活
更快:在下图中,训练模型的这种并行结构不见得会速度更快,首先,其卷积核大小不同,操作不同所需要的计算时间也会不同,而相加操作必然会造成水桶短板效应,其次,每个分支都需要读取原始数据,这就要访问内存,这个时间成本也是需要考虑的。而采用这种单路结构后,便会节省大量时间。
在这里插入图片描述
省内存:每一个相加操作需要保留特征图,其会占用内存。其指出ResNet的问题,这种残差结构需要占用一半的显存
在这里插入图片描述
更灵活:进行优化单路更加方便,模型压缩(剪枝、量化)更容易。

关于模型剪枝

深度学习网络模型从卷积层到全连接层存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以表现出同样的模型表达能力,这种情况被称为过参数化,而对应的技术则被称为模型剪枝。
作者刚刚听到模型剪枝这个概念时有效困惑,这是新概念吗?其实我们从学习深度学习的第一天起就接触过,Dropout和DropConnect代表着非常经典的模型剪枝技术,看下图。
在这里插入图片描述

当然,模型剪枝不仅仅只有对神经元的剪枝和对权重连接的剪枝,根据粒度的不同,至少可以粗分为4个粒度。

细粒度剪枝(fine-grained):即对连接或者神经元进行剪枝,它是粒度最小的剪枝。
向量剪枝(vector-level):它相对于细粒度剪枝粒度更大,属于对卷积核内部(intra-kernel)的剪枝。
核剪枝(kernel-level):即去除某个卷积核,它将丢弃对输入通道中对应计算通道的响应。
滤波器剪枝(Filter-level):对整个卷积核组进行剪枝,会造成推理过程中输出特征通道数的改变。
接下来我们来看本篇论文的核心部分:结构重参数化

结构重参数化

在这里插入图片描述

在下方给出了设定,设定in_channel=out_channel=2,那么这就对应我们右面的参数矩阵个数,因为输出通道=2,那么就要有两个kernel使其有两个输出,而输入chanel=2,则表明每个channel中还也要有两个特征图(kernel)。这是两个过程所决定的。此外BN层参数个数是与输出通道个数保持一致的。
然后其将所有矩阵进行映射为3*3后进行融合。

卷积层与BN融合合并

卷积融合

卷积与BN融合
在这里插入图片描述
以上完成的便是下面的公式表达:
在这里插入图片描述
BN归一化的作用为保证卷积后的特征分布能够保持一个合理的状态,不会出现太离谱的特征
u均值,标准差由每个channel单独计算得出(求出的),y为缩放系数,B为平移系数(学习到的),但这个学到的参数到底为何会使特征更好,这一点人类是无法理解的,只是对于计算机而言这样学习更好。
将BN转换为卷积形式,卷积即为WX+b,则BN操作也可转换为该形式:
在这里插入图片描述

1X1与3X3的融合

很简单,只需要在1X1边上补零即可
在这里插入图片描述

啥也不连转换为3*3

也是很简单,需要两个通道,每个通道里面两个卷积核即可。在与输入特征图做卷积操作得到输出特征图。即虽然其啥也没有连接,但我们仍要使其变为33再与BN融合,即可可以通过这种固定形式的变为3X3结构。
在这里插入图片描述
注意:
三个分支都是做的卷积操作。
最终都是3
3,那么就可以融合了。

那么最后便是完成分支融合了:
在这里插入图片描述
在这里插入图片描述
才外,RepVGG有多个版本,区别在于深度不同,但其内部都是按照stage来划分,如RepVGG-A0,该网络模型共有 5 个阶段(stage),每个阶段的层数分别为 1,2,4,14,1。
在这里插入图片描述
该思想目前已经被应用到了YOLOV7模型中,使其训练与推理不同结构,提升了推理速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭祥.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值