VGG是一种经典的卷积神经网络。只堆叠卷积、ReLU、池化操作就在图像识别领域获得巨大成就。但随后的研究关注点转移到是否具有良好的网络结构设计,例如Inception、ResNet、DenseNet。这使得模型越来越复杂。这些复杂的卷积网络有明显的缺点。一是复杂的多分支设计让模型难以实现和自定义,拖慢推理速度和降低了内存利用率。二是一些随机混合操作增加了内存访问消耗,而且缺乏硬件设备支持。综合这些影响因素,理论FLOPs并不能精确的反映实际推理速度。

推理时RepVGG有以下VGG特征

1. 没有任何分支结构。即通常所说的plain或feed-forward架构。

2. 仅使用resnet和vit混合的网络模型 resnet和vgg区别_人工智能卷积。

3. 仅使用ReLU作为激活函数。

resnet和vit混合的网络模型 resnet和vgg区别_人工智能_02

多分支结构往往比plain结构表现要好。一个可能的解释是多分枝结构是一些浅层模型的一种隐式集成,所以避免了梯度消失的问题。鉴于此,文章提出解耦训练时架构和推理时架构。通过转换参数形式,来转换架构。

一个网络结构可以和一组参数对应,例如一个卷积层可以被一个4维核张量表示。在训练时RepVGG受到ResNet启发,用到了恒等(identity)分支和resnet和vit混合的网络模型 resnet和vgg区别_人工智能_03分支,但这些分支是可被结构性地重参数化。这种转换可以看作是代数问题。恒等变换可以被视为resnet和vit混合的网络模型 resnet和vgg区别_人工智能_04卷积,然后也可以进一步降级为resnet和vit混合的网络模型 resnet和vgg区别_人工智能卷积。于是训练时的恒等、resnet和vit混合的网络模型 resnet和vgg区别_人工智能_03resnet和vit混合的网络模型 resnet和vgg区别_人工智能分支和BN层就可以构筑为推理时的单独一个resnet和vit混合的网络模型 resnet和vgg区别_人工智能核。

特别地,推理时RepVGG只有唯一一种操作:resnet和vit混合的网络模型 resnet和vgg区别_人工智能卷积后跟ReLU。这样RepVGG在如GPUs等设备上运行非常快。在专门的设备上更是如此。

resnet和vit混合的网络模型 resnet和vgg区别_人工智能_10

要注意到,在每个分支汇总前,都会进行BN操作。用resnet和vit混合的网络模型 resnet和vgg区别_卷积_11表示resnet和vit混合的网络模型 resnet和vgg区别_resnet和vit混合的网络模型_12输入、resnet和vit混合的网络模型 resnet和vgg区别_深度学习_13输出的resnet和vit混合的网络模型 resnet和vgg区别_人工智能卷积核,resnet和vit混合的网络模型 resnet和vgg区别_神经网络_15表示1*1分支。resnet和vit混合的网络模型 resnet和vgg区别_卷积_16resnet和vit混合的网络模型 resnet和vgg区别_神经网络_17resnet和vit混合的网络模型 resnet和vgg区别_神经网络_18分别表示resnet和vit混合的网络模型 resnet和vgg区别_人工智能resnet和vit混合的网络模型 resnet和vgg区别_人工智能_03和恒等分支的BN层的累计平均、标准差、可学习缩放因子、偏置。用resnet和vit混合的网络模型 resnet和vgg区别_神经网络_21, resnet和vit混合的网络模型 resnet和vgg区别_深度学习_22表示输入和输出。用resnet和vit混合的网络模型 resnet和vgg区别_resnet和vit混合的网络模型_23表示卷积。假如有resnet和vit混合的网络模型 resnet和vgg区别_resnet和vit混合的网络模型_24,则模块可以描述为

resnet和vit混合的网络模型 resnet和vgg区别_神经网络_25

这里的bn是推理时BN函数,正常情况下,对于resnet和vit混合的网络模型 resnet和vgg区别_深度学习_26,有

resnet和vit混合的网络模型 resnet和vgg区别_resnet和vit混合的网络模型_27

为了将这些BN层和卷积层变换为可加的卷积和偏置,让resnet和vit混合的网络模型 resnet和vgg区别_神经网络_28作为变换resnet和vit混合的网络模型 resnet和vgg区别_卷积_29的结果,有

resnet和vit混合的网络模型 resnet和vgg区别_卷积_30

容易验证,有

resnet和vit混合的网络模型 resnet和vgg区别_人工智能_31

恒等分支可以视为单位矩阵作为核的resnet和vit混合的网络模型 resnet和vgg区别_人工智能_03卷积。而resnet和vit混合的网络模型 resnet和vgg区别_人工智能_03核可以放置在resnet和vit混合的网络模型 resnet和vgg区别_人工智能核的中心点,其余置零,从而作为一个resnet和vit混合的网络模型 resnet和vgg区别_人工智能核。三个分支的核相加形成一个resnet和vit混合的网络模型 resnet和vgg区别_人工智能核。三个分支的偏置直接相加。此时就获得单独一层卷积层,没有BN层。需要留意这种操作需要满足卷积层的步跨一致,边缘填充设置核resnet和vit混合的网络模型 resnet和vgg区别_人工智能要比resnet和vit混合的网络模型 resnet和vgg区别_人工智能核少1格的填充像素。

最终整个模型分为5个stage,RepVGG-A的5个stage分别有[1, 2, 4, 14, 1]层,RepVGG-B的5个stage分别有[1, 4, 6, 16, 1]层,宽度是[64, 128, 256, 512]的若干倍。

下图可以看到,相同推理速度下(每秒预测完成的样本数)RepVGG准确率高。同样准确率下RepVGG推理速度快

resnet和vit混合的网络模型 resnet和vgg区别_resnet和vit混合的网络模型_39