ConvNeXt: A ConvNet for 2020s
Tags: Backbobe
作者: Zhuang Liu, Hanzi Mao
发表日期: 2022
引用量: 184
星级 : ★★★★★
模型简写: ConvNeXt
精读: Yes
Introduction
Hierarchical Transformers (Swin Transformer)相较于传统ViT重新引进了convnet的特性,使得vision transformer成为一个通用的backbone。而作者认为这种混合方法的有效性很大程度上是Transformer架构的内在优势,而非是卷积网络的归纳偏置。
在这篇论文中,作者根据vision transformer的设计思路,从resnet50/200开始逐渐的“modernize”一个标准的ResNet网络,并测试了一个pure ConvNet可以达到的极限。
作者探索历程:
Method
1. Training Techniques
- 训练轮数从初始的90轮提高到300轮
- 采用AdamW optimizer
- Data augmentation: Mixup, Cutmix, RandAugment, Random Erasing
- Regularization shcemes: Stochastic Depth, Label Smoothing
ResNet-50准确率从76.1%提升到了78.8%(+2.7%)
2. Macro Design
- Change stage compute ratio (3, 4, 6, 3) → (3, 3, 9, 3)
最初的resnet的计算分布是完全凭经验的,res4阶段计算量最大,因为要兼容于各种downstream任务。 Swin-T 遵循相同的计算分布,但是为1 : 1 : 3 : 1,Swin-L为1 : 1 : 9 : 1。参考swin设计,将resnet-50的(3, 4, 6, 3)改为(3, 3, 9, 3)
准确率由78.8%提升至79.4%
- Changing stem to “Patchify”
标准 resent stem cell: 7x7 conv with stride 2, max pool (4倍下采样)
ViT: stem cell对应于一个打大的arge kernel size(14或者16)
Swin Transformer: samller patch size of 4
将Resnet stem cell变为4x4 stride 4 无重叠的卷积层
准确率由79.4%提升至79.5%
3. ResNeXt-ify
ResNeXt的核心是grouped convolution(组卷积),即使用更多的groups,扩展网络宽度。
本文作者使用depthwise convolution,是一种特殊的grouped convolution(groups数量等于通道数)。作者通过增加网络的宽度到与Swin-T一样。
准确率由79.5%提升至80.5%
4. Inverted Bottleneck
Transformer block的一个重要设计是inverted bottleneck,MLP中间隐藏层的维度是输入层的4倍宽。
本文也采用了这种设计,如上图中(a)到(b)的转换。
准确率由80.5%提升至80.6% (Resnet-200: 81.9%提升至82.6%)
5. Large Kernel Sizes
- Moving up depthwise conv layer’
如上图中的(b)到©的转换
准确率降低至79.9%
- Increasing the kernel size
卷积核大小由(3x3)提升至(7x7)
准确率由79.9%提升至80.6%
5. Micro Design
- 激活函数由ReLU变为GELU
准确率保持不变(80.6%)
- Fewer activate functions
如下图所示,参考swin transformer block, 除两个1x1的卷积层之间使用GELU外,其他部分均不使用激活函数
准确率提升至81.4%
- 用LN层替代BN层(Layer Normalization替换Batch Normalization)
直接在resnet中使用LN,会导致负优化,但基于上述architecture和training techniques的修改后,在convnet中使用LN,训练没有任何困难
准确率提升至81.5%
- Separate downsampling layers
分离降采样层,且在特征图大小变化的时候,添加一个normalication layers,有助于训练稳定
准确率提升至82.0%
Author
作者主页: