【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again

论文:https://arxiv.org/pdf/2101.03697.pdf
code:https://github.com/DingXiaoH/RepVGG
北京信息科学与技术国家研究中心,旷视,香港科技大学等

我们提出了一个简单但功能强大的卷积神经网络架构,该架构具有类似于VGG的推理时间主体,该主体仅由3×3卷积和ReLU的堆栈组成,而训练时间模型具有多分支拓扑。训练时间和推理时间体系结构的这种解耦是通过结构性重新参数化技术实现的,因此模型是名为RepVGG。在ImageNet上,RepVGG达到80%以上top-1精度,这是普通模型的第一次,据我们所知。在NVIDIA 1080Ti GPU上,RepVGG模型的运行速度比ResNet-50快83%或101%与诸如EfficientNet和RegNet的最新模型相比,它具有比ResNet-101更快的速度和更高的精度,并显示出令人满意的精度-速度折衷。

1. 简介

cnn的设计有很多系列:

  • VGG
  • inception
  • resnet
  • densenet
  • 自动/手动的模型结构设计

但是越来越复杂的模型结构也有很多缺点:

  • 复杂的多分支设计,降低了推断,内存利用率,
  • 一些组件(如:dconv, channel shuffle)等增加了内存访问成本。所以现在新的模型虽然FLOP低了,但是推理速度,并没有提升。(网上有一篇博客对比了ghost,shufflenet)

文章提出了RepVGG,相比现有的一些模型,效果更好:

  • RepVGG和VGG的结构很相似。没有分支结构,每一层的输出作为下一层的输出
  • 模型只用了3*3的卷积,和relu
  • 模型的深度、宽度不采用自动搜索,手动优化等设计(感觉像是大力出奇迹
    【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again_第1张图片
    网络在训练的时候,采用多resnet类似的多分支残差结构,在推理的时候,转换成一个串联的单分支的结构,所以这里的如何转换就很关键
  • 在训练的时候,采用1*1,短接的多分支结构
  • 在推理的时候,将33卷积+短接+11+bn = 3*3卷积

【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again_第2张图片

2. 相关工作

2.3 Model Re-parameterization
论文通过转换其参数将架构从一种转换为另一种,提高模型推理速度。比如最简单的conv bn 融合

2.4 Winograd Convolution
论文中的模型只使用了33的卷积,是因为33的卷积作为最小的深度学习模块被做了最好的优化。

3. RepVGG

3.2 多分支的训练
训练的时候,参考resnet,采用1*1的卷积做了一个短连接层,还有一个 + 操作,如何输入输出tensor的维度一样。然后就只是简单的堆叠了。对比resnet的2n分支,RepVGG有3n

3.3 重定义推理模型
【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again_第3张图片
这里具体看代码之后再解读

3.4 网络具体设计

  • 在第一个stag,只有 1 个layer,因为处理的分辨率更大
  • 最后的stag,也只有1 个layer

4. 实验

4.1 分类

【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again_第4张图片

4.3 语义分割

【论文阅读】——RepVGG: Making VGG-style ConvNets Great Again_第5张图片

  • 比resnet101 提高了 0.37 in mIoU and runs 62% faster,但是相对resnet50提高不是很明显

你可能感兴趣的:(深度学习,repvgg)