ConvNeXt 论文笔记

A ConvNet for the 2020s(Mar 2022.3.2-v2)

链接:   paper
      code


Abstract:将Transformer训练与设计技巧应用于ConvNet。在保持标准ConvNets的简单性和效率的同时,在ImageNet上top 1准确率达87.8%,并在COCO检测和ADE20K分割任务中优于Swin Transformers。

一、ConvNet的现代化

  用训练Transformer的技巧训练ResNet-50,获得基线模型。如下图所示(有裂纹的表示不该采用的方案),实验中一系列模型设计决策:1).宏观设计;2).ResNeXt;3).反向瓶颈;4).大内核大小;5).各种分层微观设计。实验证明许多Transformer架构都可以引入ConvNet中,从而带来愈加优越的性能。最终得到的模型——ConvNeXt,其性能优于Swin Transformer。

1.训练技术

  Transformer为视觉引入了新的训练技术(例如AdamW优化器)。优化策略和相关的超参数设置很关键。参考其他研究中,可以显著提高ResNet-50模型的性能的现代训练技术1。论文中使用了一种接近DeiT2和Swin Transformer3的训练技巧4,将模型的性能从76.1%5提高到78.8%(+2.7%)。

:实验数据为通过使用三个不同的随机种子进行训练获得的平均值。

2.宏观设计

  Swin Transformers遵循ConvNets6使用multi-stage设计,其中每个stage都有不同的特征图分辨率,设计因素:1).阶段计算比率;2).“stem cell”(干细胞)结构。Swin-T的阶段计算比例为1:1:3:1,大型则为1:1:9:1。论文中将ResNet-50从(3,4,6,3)调整为(3,3,9,3),FLOP与Swin-T对齐,acc从78.8%升至79.4%。(网络设计空间论文参考7

  Transformer模型需要低分辨率的输入,通常使用一个步长为4,大小为4的卷积(无覆盖卷积/Patchify(补丁化)卷积)进行降采样,即Swin-T中的stem层。论文中同样使用stem层对输入降采样,使acc从79.4%升至79.5%,GFLOPs从4.5降至4.4。有人指出使用覆盖的卷积(例如步长为4,卷积核大小为7的卷积)能够获得更好的表现8

3.ResNeXt-ify

  借鉴ResNeXt9中“使用更多组,扩展宽度”的思想。论文使用深度卷积,其类似于自注意中的加权和运算,它以每个通道为基础进行操作,仅在空间维度上混合信息。深度卷积和1×1卷积的组合导致空间和通道混合的分离,这是Transformer共有的特性。深度卷积降低了FLOPs,但也降低了精度。根据ResNeXt中提出的策略,论文中将网络宽度增加到与Swin-T的通道数相同(从64到96),acc达80.5%,FLOPs增至5.3G。

4.逆瓶颈(inverted bottleneck)

请添加图片描述
  逆瓶颈层是一个Transformer中重要设计架构,即MLP block 的隐藏维度比输入维度宽四倍(见上图)。其初被MobileNetV210推广,后在一些先进的ConvNet架构中使用11。论文中层参数改动如下图(a)–>(b)所示,acc由80.5%升至80.6%,FLOPs由5.3G降至4.6G,并在ResNet-200/Swin-B方案中有着更明显的效果。

请添加图片描述
              (a)ResNeXt Block;(b)ConvNeXt Block;(c)深度卷积上移

5.大卷积核

  Transformer有着非局部关注性,即每层都有一个全局感受野。参考Transformer将MSA层置于MLP层前的设计决策,论文中将深度卷积上移(上图©),acc降至79.9%,FLOPs降至4.1G。增加内核大小。对不同大小卷积核(3、5、7、9、11)进行实验,大核卷积增效在7×7时达到饱和点,acc从79.9%(3×3)提高到80.6%(7×7),且FLOP大致保持不变。

6.微观设计

重点关注激活函数正则化层的选择:
 (1).有许多激活函数已被开发,但ReLU12由于其简单高效,仍在ConvNets中广泛使用。在初始Transformer论文13中使用的激活函数ReLU,到谷歌的BERT14和OpenAI的GPT-215,以及ViT中使用的ReLU的平滑的变体GELU16。论文中用GELU代替ReLU,acc保持不变。
 (2).Transformer和ResNet层之间的一个小区别是Transformer的激活函数较少。参考设计(逆瓶颈设计中的图1),acc提高了0.7%(至81.3%),与Swin-T的性能相匹配。
 (3).Transformer通常normalization层更少。论文中移除了两个BatchNorm(BN)层,在conv1×1层之前只留下一个BN层,acc提高0.1%。
 (4).LN.BatchNorm17代替BN,acc提高0.1%。
 (5).在Swin Transformers中,在两个stage之间添加了一个单独的下采样层。论文中使用 stride为2的2×2对卷积进行空间下采样,前后各加一个LN。
请添加图片描述

二、实验评估

  论文构建了不同的ConvNeXt变体,即ConvNeXt-T/S/B/L,对应Swin-T/S/B/L。ConvNeX-T/B对应ResNet-50/200的“现代化”。此外,还构建了一个更大的ConvNeXt-XL,以进一步测试ConvNeXt的可伸缩性。变体只在通道数量C和每个stage的block数量B上有所不同。遵循ResNets和Swin Transformers的设计,每个新stage的通道数量翻倍。具体配置如下图所示:
请添加图片描述

1.Settings

  ImageNet-1K数据集有1.2M个训练图像。实验结果为验证集上的top-1accuracy。在ImageNet-22K(21841个类)上使用~14M的图进行预训练,参数设置如下表所示。
请添加图片描述
 (1).ImageNet-1K上的训练参数:300 epochs,batch size为4096,学习率为4e-3,optimizer选用AdamW,weight decay为0.05,20 epochs的linear warmup,cosine decaying学习率变化策略。数据增强,采用了Mixup18、Cutmix19、Ran dAugment20和Random Erasing21。使用 Stochastic Depth22 and Label Smooth-ing23进行网络正则化。Layer Scale24应用初始值1e-6,使用EMA25降低大模型的过拟合。

 (2).在ImageNet-22K上的预训练:90 epochs,warm up为5 epochs,不使用EMA,其他设置遵循ImageNet-1K。

 (3).在ImageNet-1K.上的微调:使用预训练模型,30 epochs,Weuse AdamW,学习率为5e-5,cosine学习率变化, layer-wise学习率衰减26,无warm up,batch size为512,weight decay为1e-8。(实验使用 22 4 2 224^2 2242 38 4 2 384^2 3842两组分辨率)

  与ViTs/Swin Transformers相比,ConvNeXts在不同分辨率下更容易进行微调。

2.Results

(1).Classification on ImageNet
  吞吐量在V100上测得。鲁棒性和域外泛化性(out-of-domain generalization)实验,见论文附录B。

请添加图片描述
  消融实验:ConvNeXt设计思想拓展到ViT上,训练内存占用量在每块V100中batch size为32基础上测得。详见论文3.3。
请添加图片描述
(2).Object detection and segmentation on COCO

  Mask R-CNN和Cascade Mask R-CNN的backbone替换为ConvNeXt进行微调。遵循Swin的训练策略,即multi-scale training,AdamW optimizer,3x schedule,详见附录3。 ‡ ‡ 表示模型在上ImageNet-22K预训练,ImageNet-1K上预训练的Swin结果来自Github27,ResNet-50和X101的AP参考28。FPS指标测自A100,FLOPs指标在(1280, 800)分辨率上测得。
请添加图片描述
(3).Semantic segmentation on ADE20K

  替换UperNet29的backbone进行实验。训练160K iterations,batch size为16,其他参数设置参考30(详见附录A.3)。 ‡ ‡ 表示模型在上ImageNet-22K预训练。Swin结果来自Github31。遵循Swin,在multi-scale testing下得到mIoU指标。FLOPs在IN-1K和IN-22K的指标,分别是基于(2048, 512)分辨率和(2560, 640)分辨率上计算的。
请添加图片描述

三、相关工作

  ViT前研究侧重于用self-attention/non-local modules或得long-range dependencies(远距离像素相关性)来提高ConvNet性能32ViT后转向将卷积以或明显33或隐晦34的方式引入ViT。
  局部Transformer注意力等效于非均匀动态深度卷积35,即将Swin中的MSA block替换为动态或常规深度卷积,性能不变。ConvMixer36表明在小规模设置中,深度卷积是一种有可行性的混合策略。GFNet37采用快速傅里叶变换(FFT)卷积,其具有 global kernel size和circular padding。



相关链接ConvNeXt V2 论文笔记

ps:下为论文内文献索引,供拓展使用。


  1. paper[7,81] ↩︎

  2. paper[73] ↩︎

  3. paper[45] ↩︎

  4. 1).epochs:90–>300;2).AdamW optimizer[46];3).数据增强(如Mixup[90]、Cutmix[89]、RandAugment[14]、RandomErasing[91]);4).正则化方案(包括Stochas-tic Depth[36]和Label Smoothing[69])。超参数详见附录A.1 ↩︎

  5. PyTorch Vision Models.https://pytorch.org/vision/stable/models.html. Accessed: 2021-10-01. ↩︎

  6. paper[28,65] ↩︎

  7. paper[53,54] ↩︎

  8. 参考自ConvNeXt详解 ↩︎

  9. paper[87] ↩︎

  10. paper[61] ↩︎

  11. paper[70,71] ↩︎

  12. paper[49] ↩︎

  13. paper[77] ↩︎

  14. paper[18] ↩︎

  15. paper[52] ↩︎

  16. paper[32] ↩︎

  17. paper[38] ↩︎

  18. paper[90] ↩︎

  19. paper[89] ↩︎

  20. paper[14] ↩︎

  21. paper[91] ↩︎

  22. paper[37] ↩︎

  23. paper[69] ↩︎

  24. paper[74] ↩︎

  25. paper[51] ↩︎

  26. paper[6, 12] ↩︎

  27. paper [3] ↩︎

  28. paper[45] ↩︎

  29. paper[85] ↩︎

  30. paper[6] ↩︎

  31. paper[2] ↩︎

  32. paper[8, 55, 66, 79] ↩︎

  33. paper[15, 16, 21, 82, 86, 88] ↩︎

  34. paper[45] ↩︎

  35. paper[25] ↩︎

  36. paper[4] ↩︎

  37. paper[56] ↩︎

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值