[RepVGG] RepVGG:Making VGG-style ConvNets Great Again(CVPR.2021)

image-20210304185411566

paper:https://arxiv.org/abs/2101.0369
code:

1. Motivation

​ 如今更复杂的卷积网络可以取得更大的精度,但是相对于简单的卷积网络来说,也有2种缺点,首先是多分支结构中复杂的设定,以及复杂卷积网络的计算资源的开销。

​ 同时,其他simple ConvNets的性能并不能比得过complicated ConvNets。

2. Contribution

本文的贡献如下:

  • 本文提出了RepVGG,一种简单,实现速度与精度平衡的SOTA 网络结构。

  • 本文提出了structural re-parameterization 结构化重参数来解耦训练多分支拓扑以及测试单分支plain结构。

  • 本文显示了VGG在图像分类以及语义分割上的实用性,高效并且利于实现。

RepVGG有以下优点:

  • RepVGG模型是一种VGG-like 结构,没有许多分支,每一层的输入就是上一层的输出。
  • RepVGG模型的body部分只包含了3x3卷积以及ReLU。
  • RepVGG模型具体的结构没有automatic search,manual refinement人为加工,compound scaling 混合比例等设定。

3. Building RepVGG via Structural Re-param

3.1 Simple is Fast, Memory-economical, Flexible

​ 使用simple ConvNets的原因在于快速,省内存以及灵活。

  • Fast
image-20210304204249099
  • Memory-economical
image-20210304205452203
  • Flexible

    多分支的拓扑结构暴露了网络结构上的局限性,例如输出的shape,res-block的最后一个卷积必须保持相同的shape,否则就无法实现short-cut;以及限制了channel purning通道剪枝的应用。

3.2 Traing-time Multi-branch Architecture

​ 作者收到ResNet启发,并且通过相关的研究发现,ResNet之所以性能比VGG好的原因,ResNet的分支结构shortcut,可以使得模型具有一种大量子模型的隐式ensemble。确切来说,假如模型有n个blocks,模型可以被表示为 2 n 2^n 2n的ensemble模型(根据作者的解释,每遇到一次分支,总的路径救护变成2倍),单路架构显然不具备这种特点。

image-20210304212256348

​ 由于多分支拓扑在inference过程存在缺点,但又利于训练,因此作者构建了一种只使用多分支结构用于training-time的模型。这样就可以同时利用多分支模型训练时的优势(性能高)和单路模型推理时的好处(速度快、省内存),如图2所示。这里的关键显然在于这种多分支模型的构造形式和转换的方式(3.3小节叙述)。ResNet中的Res-Block的计算公式为:
y = x + f ( x ) i f ( x . s i z e ( ) ≠ f ( x ) . s i z e ( ) ) : y = g ( x ) + f ( x ) y= x +f(x)\\ if ( x.size() \not= f(x).size()):\\ y = g(x) + f(x) y=x+f(x)if(x.size()=f(x).size()):y=g(x)+f(x)

​ 受到ResNet的启发,RepVGG设计为三分支的结构,本文的实现方式为:在训练时,为每一个3x3卷积层添加平行的1x1卷积分支和恒等映射分支,构成一个RepVGG Block。这种设计是借鉴ResNet的做法,区别在于ResNet是每隔两层或三层加一分支,而RepVGG是每层都加。公式如下:
y = x + g ( x ) + f ( x ) y= x+g(x)+f(x) y=x+g(x)+f(x)
​ 在训练过程中, f ( x ) f(x) f(x)表示的是和ResNet一样的1x1的shortcut分支,而$g(x) = y , , g(x)$为恒等映射,不经过卷积核,因此模型就成为了 3 n 3^n 3n的ensemble模型。

3.3 Architectural Specification

由公式1~公式5,可以得到由多分支结构转换为单分支卷积结构。

​ 多分支结构中,通过3个卷积核以及各自的bn层,得到最终的feature map M,由公式1表示:

image-20210304212448221

​ 接着对于公式1中的每一项,由BN层的公式进行展开得到公式2:

image-20210304212455284

​ 将公示2进行展开,得到新的 W i ′ W_i' Wi b i ′ b_i' bi

image-20210304212525575

​ 接着可以得到经过Conv以及BN层后的 y = W x + b y =Wx+b y=Wx+b的形式:

image-20210304212532351

​ 由于卷积的线性(可加性),假设三个3x3的卷积分别是W1,W2,W3,最终,有以下等式成立:
C o n v ( x , W 1 ) + B i a s 1 + C o n v ( x , W 2 ) + B i a s 2 C o n v ( x , W 3 ) + B i a s 3 = C o n v ( x , W 1 + W 2 + W + B i a s ) (5) Conv(x, W_1) +Bias_1+Conv(x, W_2) +Bias_2 Conv(x, W_3)+Bias_3=Conv(x, W_1+W_2+W+Bias) \tag{5} Conv(x,W1)+Bias1+Conv(x,W2)+Bias2Conv(x,W3)+Bias3=Conv(x,W1+W2+W+Bias)(5)
​ 因此,可以对模型进行等价的转换,最后,三分支得到的卷积核和bias分别相加即可。这样,每个RepVGG Block转换前后的输出完全相同,因而训练好的模型可以等价转换为只有3x3卷积的单路模型, 将多分支模型等价转换为单路模型,得到部署的模型并且使用。

​ 作者给出了一个非常例子以及图示,如图4所示,假设 C 1 = C 2 = 2 C_1 =C_2=2 C1=C2=2,那么对于 3 × 3 3 \times 3 3×3以及 1 × 1 1 \times 1 1×1的Kernel,它们的size分别为 3 × 3 × 2 × 2 3\times3\times2\times2 3×3×2×2以及 1 × 1 × 2 × 2 1\times1\times2\times2 1×1×2×2。也就是说,它们分别有 4 × 3 × 3 4\times 3 \times 3 4×3×3 2 × 2 2 \times 2 2×2的卷积矩阵,对于identity本身来说,可以理解为是一种identity matrix的 1 × 1 1 \times 1 1×1的单位矩阵。对于每一个分支,都有BN层的4个参数 [ μ , σ , γ , β ] [\mu,\sigma,\gamma,\beta ] [μ,σ,γ,β]

​ RepVGG Blcok转换为一个卷积的方式为: 1 × 1 1 \times 1 1×1的矩阵可以看成是只有中心位置是有参数其他位置的值都是0的 3 × 3 3\times3 3×3 卷积核;同样,恒等映射是一种以单位矩阵为卷积核的 1 x 1 1x1 1x1卷积,同时进一步的转换为 3 × 3 3\times 3 3×3 卷积。

An explanation for the success of ResNets is that such a multi-branch architecture makes the model an implicit ensemble of numerous shallower models

image-20210304203949739

从这一转换过程中,我们看到了“结构重参数化”的实质:训练时的结构对应一组参数,推理时我们想要的结构对应另一组参数;只要能把前者的参数等价转换为后者,就可以将前者的结构等价转换为后者。

4.Experiments

4.1 RepVGG for ImageNet Classification

image-20210304203921268

​ 训练200个epochs的实验结果:

image-20210304203932242

4.2 Structural Re-parameterization is the Key

​ 表6消融实验证明了3分支结构的重要性,Identity branch 和 1 x 1 branch。

image-20210304203818635

​ 基于RepVGG-B0 baseline的实现比较,需要注意的是加入了ReLU 虽然可以提升性能,但是这样就无法在inference-time 转换为single branch的形式(由于加入了非线性的操作,卷积的可加性就无法使用了)。

image-20210304203803333

4.3 Semantic Segmentation

image-20210304203744361

Reference

https://zhuanlan.zhihu.com/p/344324470

猜你喜欢

转载自blog.csdn.net/weixin_43823854/article/details/114378642