backbone核心详解系列——RepVGG

主要贡献

    设计了重参数化的模块,将训练和推理解耦,并且设计了两个系列的整体网络结构和相应的缩放方法,可以适应不同的精度性能需求,结果显示在GPU上推理速度高于renset系列。
    PS:这个网络主要考虑的是提升GPU(不是移动端)的计算密度(计算量除以计算时间),追求高速度、省内存,较少关注参数量和理论计算量。在低算力设备上,可能不如 MobileNet 和 ShuffleNet 系列适用。主要借鉴了ACNet、VGG和resnet的思想。
   

核心模块

    做的核心操作就是在VGG的基础上,在训练时加入旁路如1*1卷积以及shotcut层,在推理的时候将常规的3*3卷积和1*1卷积以及shotcut层的操作进行合并,但是和ResNet的不同就变成了,除了shotcut层中间层不再使用除3*3以外的任何卷积,且shotcut融合的时候也不是使用的concat操作而是使用的对应位置相加的方式。对比resnet如下图:
    我们需要理解的两个关键点就是:1)为什么训练的时候要加旁路;2)推理时如何合并的旁路。

    训练为何要加旁路

    不加旁路的lain式架构模型(如VGG)由于梯度爆炸和消失等原因导致无法做的很深,精召性能也比较差。而带旁路(典型shotcout分支)的模型(典型resnet)一定程度上解决了梯度问题,精召性能也更高。有研究表示 ResNet 的分支结构(shortcut)产生了一个大量子模型的隐式 ensemble(因为每遇到一次分支,总的路径就变成两倍),单路直连架构显然不具备这种特点。因此repvgg在训练时也保持了1*1卷积核identity分支(恒等映射,但是论文对比几种机制后增加了BN层,并且该分支只能出现在前后层维度一样的两层间)。

    推理如何合并旁路

    具体的原理如下图(重点看如何合并卷积层以及如何合并的BN层),输入和输出层宽度(特征图channel数)均为2,因此其实是有4个3*3卷积参数矩阵和1*1卷积参数矩阵。 注意三个分支都有BN(batch normalization)层,其参数包括累积得到的均值及标准差和学得的缩放因子及bias。这并不会妨碍转换的可行性,因为推理时的卷积层和其后的BN层可以等价转换为一个带bias的卷积层(也就是通常所谓的“吸BN”)。 如果能很快看懂该图,那么基本就已经理解了合并原理。
    
    如果看完有点懵,这里面主要涉及三点:1)对卷积的理解。2)对BN原理和实现的理解。3)简单的数学乘法结合率。

    卷积理解

    计算我们这里不再讨论(就是简单的乘法和加法),主要是要理解一个卷积的定义,其实是个4维矩阵(对应上面的图,其实1*1卷积论文中将黄色色四个块也用空白分成4个1*1 更直观,然后我们假设竖向分割,左边2个3*3、1*1和identify对应输出第一个特征图,右边两个对应第二个特征图。这样就很好理解3*3、1*1和identify是如何通过扩充0转变为3组3*3进而通过对应点加转换为1组3*3了)。比如pytorch定义卷积
    

    BN理解

    首先BN存在的意义是尽可能将每一层拉回0点附近(深度学习模型的独立同分布假设),使得梯度跟敏感,可是使用更大的学习率训练模型。然后BN相关其实有四个变量u、v、γ、β,训练时u、v分别是针对一个输出特征图统计的均值和方差(一个batch或者通过动量统计多个batch)是不断变化的,γ、β是两个可学习参数,目的是二次将归一化的特征值一定程度拉回高效的学习区间(自己理解);然后重点来了,推理时u、v、γ、β其实大多数网络都已经是定值(u、v是通过统计训练样本的均值和方差来定的,因为一般推理场景的batch都比较小,会不抖动大)。所以可以一个特征图合并为一个偏置量(结合后面的数学推理来看就明了了)
    

    简单的数学乘法结合率

    主要在论文中的3.3. Re-param for Plain Inference-time Model介绍。
    

整体网络结构

主要是通过两个模板模型+缩放系数设计了一系列模型,由于是plain结构,所以这里不再赘述。

结果

对于分类而言(分割见论文)
参考链接:
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TigerZ*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值