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性能32,ViT后转向将卷积以或明显33或隐晦34的方式引入ViT。
局部Transformer注意力等效于非均匀动态深度卷积35,即将Swin中的MSA block替换为动态或常规深度卷积,性能不变。ConvMixer36表明在小规模设置中,深度卷积是一种有可行性的混合策略。GFNet37采用快速傅里叶变换(FFT)卷积,其具有 global kernel size和circular padding。
相关链接:ConvNeXt V2 论文笔记
ps:下为论文内文献索引,供拓展使用。
paper[7,81] ↩︎
paper[73] ↩︎
paper[45] ↩︎
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 ↩︎
PyTorch Vision Models.https://pytorch.org/vision/stable/models.html. Accessed: 2021-10-01. ↩︎
paper[28,65] ↩︎
paper[53,54] ↩︎
参考自ConvNeXt详解 ↩︎
paper[87] ↩︎
paper[61] ↩︎
paper[70,71] ↩︎
paper[49] ↩︎
paper[77] ↩︎
paper[18] ↩︎
paper[52] ↩︎
paper[32] ↩︎
paper[38] ↩︎
paper[90] ↩︎
paper[89] ↩︎
paper[14] ↩︎
paper[91] ↩︎
paper[37] ↩︎
paper[69] ↩︎
paper[74] ↩︎
paper[51] ↩︎
paper[6, 12] ↩︎
paper [3] ↩︎
paper[45] ↩︎
paper[85] ↩︎
paper[6] ↩︎
paper[2] ↩︎
paper[8, 55, 66, 79] ↩︎
paper[15, 16, 21, 82, 86, 88] ↩︎
paper[45] ↩︎
paper[25] ↩︎
paper[4] ↩︎
paper[56] ↩︎