RepVGG将训练推理网络结构进行独立设计,在训练时使用高精度的多分支网络学习权值,在推理时使用低延迟的单分支网络,然后通过结构重参数化将多分支网络的权值转移到单分支网络。RepVGG性能达到了SOTA,思路简单新颖,相信可以在上面做更多的工作来获得更好的性能。

论文: RepVGG: Making VGG-style ConvNets Great Again

resnet与VIT的结合 resnet与vgg对比_深度学习

Introduction


  目前,卷积网络的研究主要集中在结构的设计。复杂的结构尽管能带来更高的准确率,但也会带来推理速度的减慢。影响推理速度的因素有很多,计算量FLOPs往往不能准确地代表模型的实际速度,计算量较低的模型不一定计算更快。因此,VGG和ResNet依然在很多应用中得到重用。
  基于上述背景,论文提出了VGG风格的单分支网络结构RepVGG,能够比结构复杂的多分支网络更优秀,主要包含以下特点:

  • 模型跟VGG类似,不包含任何分支,无需保存过多的中间结果,内存占用少。
  • 模型仅包含resnet与VIT的结合 resnet与vgg对比_卷积_02卷积和ReLU,计算速度快。
  • 具体的网络结构(包括深度和宽度)不需要依靠自动搜索、人工调整以及复合缩放等复杂手段进行设计,十分灵活。

  当然,想要直接训练简单的单分支网络来达到与多分支网络一样的精度是很难的。由于多分支网络中的各个分支在训练时的权重变化不定,所以多分支网络可看作是大量简单网络的合集,而且其能够避免训练时的梯度弥散问题。虽然如此,但多分支网络会损害速度,所以论文打算训练时采用多分支网络,而推理时仍然使用单分支网络,通过新颖的结构性重参数化(structural re-parameterization)将多分支网络的权值转移到简单网络中。

Building RepVGG via Structural Re-param


resnet与VIT的结合 resnet与vgg对比_计算机视觉_03

Training-time Multi-branch Architecture

resnet与VIT的结合 resnet与vgg对比_卷积_04卷积的基础上添加ResNet-like的identity分支和resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05分支构成building block,然后堆叠成训练模型。假设多分支网络包含resnet与VIT的结合 resnet与vgg对比_卷积_06个building block,则其可以表达resnet与VIT的结合 resnet与vgg对比_卷积_07种简单网络结构。

Re-param for Plain Inference-time Model

  在开始描述最重要的权值转换之前,先进行以下定义:

  • 定义resnet与VIT的结合 resnet与vgg对比_卷积_02卷积为resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_09resnet与VIT的结合 resnet与vgg对比_神经网络_10卷积为resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_11
  • 定义resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_12resnet与VIT的结合 resnet与vgg对比_卷积_13resnet与VIT的结合 resnet与vgg对比_深度学习_14resnet与VIT的结合 resnet与vgg对比_深度学习_15为跟在resnet与VIT的结合 resnet与vgg对比_卷积_02卷积后面的BN层的累计均值、标准差、学习到的缩放因子和偏置,跟在resnet与VIT的结合 resnet与vgg对比_神经网络_10卷积后面的BN层的参数为resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_18resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_19resnet与VIT的结合 resnet与vgg对比_卷积_20resnet与VIT的结合 resnet与vgg对比_神经网络_21,跟在identity分支后面的BN层参数为resnet与VIT的结合 resnet与vgg对比_卷积_22resnet与VIT的结合 resnet与vgg对比_神经网络_23resnet与VIT的结合 resnet与vgg对比_计算机视觉_24resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_25
  • 定义输入为resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_26,输出为resnet与VIT的结合 resnet与vgg对比_卷积_27
  • 定义resnet与VIT的结合 resnet与vgg对比_卷积_28为卷积操作。

resnet与VIT的结合 resnet与vgg对比_计算机视觉_29resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_30以及resnet与VIT的结合 resnet与vgg对比_计算机视觉_31,则有:

resnet与VIT的结合 resnet与vgg对比_深度学习_32

resnet与VIT的结合 resnet与vgg对比_计算机视觉_33代表是推理时的BN函数,一般而言,对于resnet与VIT的结合 resnet与vgg对比_卷积_34,有:

resnet与VIT的结合 resnet与vgg对比_计算机视觉_35

resnet与VIT的结合 resnet与vgg对比_神经网络_36为从resnet与VIT的结合 resnet与vgg对比_卷积_37转换得到的核权值和偏置,则有:

resnet与VIT的结合 resnet与vgg对比_计算机视觉_38

  转换后的卷积操作与原本的卷积+BN操作是等价的,即:

resnet与VIT的结合 resnet与vgg对比_神经网络_39

resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05卷积。

resnet与VIT的结合 resnet与vgg对比_深度学习_41

resnet与VIT的结合 resnet与vgg对比_计算机视觉_42的情况下,将3个分支分别转换后得到1个resnet与VIT的结合 resnet与vgg对比_卷积_04卷积和两个resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05卷积,最终的卷积偏置由3个卷积的偏置直接相加,而最终的卷积核则是将两个resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05卷积核加到resnet与VIT的结合 resnet与vgg对比_卷积_04卷积核中心。需要注意的是,为了达到转换的目的,训练时的resnet与VIT的结合 resnet与vgg对比_卷积_04卷积分支和resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05卷积分支需要有相同的步长,而resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_05卷积的填充要比resnet与VIT的结合 resnet与vgg对比_卷积_04卷积的小一个像素。

Architectural Specification

resnet与VIT的结合 resnet与vgg对比_resnet与VIT的结合_51

resnet与VIT的结合 resnet与vgg对比_卷积_04卷积,但没有使用最大池化,而是使用步长为2的resnet与VIT的结合 resnet与vgg对比_卷积_04卷积作为替换。RepVGG共包含5个阶段,每个阶段的首个卷积的步长为2。对于分类任务,使用最大池化和全连接层作为head,而其它任务则使用对应的head。

resnet与VIT的结合 resnet与vgg对比_卷积_54

resnet与VIT的结合 resnet与vgg对比_神经网络_55resnet与VIT的结合 resnet与vgg对比_计算机视觉_56进行调整,通常resnet与VIT的结合 resnet与vgg对比_卷积_57,保证最后一个阶段能够提取更丰富的特征。为了避免第一阶段采用过大的卷积,进行了resnet与VIT的结合 resnet与vgg对比_神经网络_58的设置。
  为了进一步压缩参数,论文直接在特定的层加入分组卷积,从而达到速度和准确率之间的trade-off,比如RepVGG-A的3rd, 5th, 7th, …, 21st层以及RepVGG-B的23rd, 25th和27th层。需要注意,这里没有对连续的层使用分组卷积,主要为了保证通道间的信息交流。

Experiment


resnet与VIT的结合 resnet与vgg对比_深度学习_59

resnet与VIT的结合 resnet与vgg对比_深度学习_60

  SOTA分类在120epoch训练的性能对比。

resnet与VIT的结合 resnet与vgg对比_卷积_61

  200epoch带数据增强的分类性能对比。

resnet与VIT的结合 resnet与vgg对比_神经网络_62

  对比多分支效果。

resnet与VIT的结合 resnet与vgg对比_计算机视觉_63

  其它操作与结构重参数化的对比实验。

resnet与VIT的结合 resnet与vgg对比_深度学习_64

  作为分割任务的主干网络的表现。

Conclusion


  RepVGG将训练推理网络结构进行独立设计,在训练时使用高精度的多分支网络学习权值,在推理时使用低延迟的单分支网络,然后通过结构重参数化将多分支网络的权值转移到单分支网络。RepVGG性能达到了SOTA,思路简单新颖,相信可以在上面做更多的工作来获得更好的性能。