21世纪20年代的第一年是哪一年(21世纪20年代的ConvNet——ConvNeXt)
21世纪20年代的ConvNet
本文发表于2022年的CVPR ,在Transformer于CV领域大放异彩时 ,本文通过借鉴 swin TransForm 精心构建的 tricks重新使大家关注起卷积在图像领域的应用 。主要是希望基于ResNet-50结构 ,并参考Swin-T中的思想来升级改透ResNet ,最终得到ResNext结构 ,并实现了新的准确率 ,并进一步探索了它的可扩展性 。
文章收货:
调参工作 、调参顺序; 这个实验工作量极其巨大 、望洋兴叹 、望而却步; 源代码写得很有参考意义 ,实现网络就用了200多行代码 ,认识到了“人生苦短 ,我用python ”的内涵;ConvNeXt结构:stem茎层(数据预处理层) ,四个stage(处理层 ,每层中都会重复很多block ,每层block都叫做depth即深度)——res2 、3 、4 、5,池化层(下采样层 、用于对数据进行分类); 绘图技巧在论文中也很有作用 ,更突出的图像更好的表达主题; 训练代码可以其他的项目代码去做 AdamW优化器:AdamW即 Adam + weight decate ,效果与 Adam + L2正则化相同,但是计算效率更高,因为L2正则化需要在loss中加入正则项,之后再算梯度,最后在反向传播,而Adamw直接将正则项的梯度加入反向传播的公式中,省去了手动在loss中加正则项这一步 。 仔细看过论文的调参工作和细节之后 ,论文原文中的简要叙述不知道尝试过了多种排列组合,印象尤为深刻 ,尽管有些模糊 ,但我音乐感觉到 ,以卷及网络为核心的诸如ConvNeXt正在被淘汰 。或许情况没有如此严重 ,但可想而知的是 ,深入卷积神经网络这一方向的研究会非常的枯燥和苦涩 ,至少对于我是如此 。也渐渐有所体悟前辈口中的调参工程师的由来 。 虽然本文确实证明了ConvNext卷积网络的潜力不止于此 ,但确实不适合我深入研究 。 有没有需要读论文的引用原论文 。意识到认真吃透一篇文章是需要花很多时间的 ,总是以为自己懂了之后 ,细看又有新的疑惑和收货 。 SwinTransformer借鉴了卷积网络的归纳偏差 论文取名其他:图4补充 ,Swin Transformer的块由于存在多个专门模块和两个剩余连接而更加复杂 。为了简单起见 ,我们将Transformer MLP块中的线性层也称为“1×1 convs ” ,因为它们是等效的 。
源码链接:ConvNeXt源码
摘要
视觉识别的“呼啸疾驰的20年代 ”始于视觉Transformer(ViTs)的引入,它迅速取代ConvNets成为最先进的图像分类模型 。另一方面 ,普通的ViT在应用于一般的计算机视觉任务(如物体检测和语义分割)时面临困难。正是分层Transformer(例如SwinTransformer)重新引入了几个ConvNet先验 ,使Transformer作为通用视觉主干实际上可行,并在各种视觉任务中表现出出色的性能 。然而 ,这种混合方法的有效性在很大程度上仍然归功于Transformer的内在优势 ,而不是卷积的固有归纳偏差 。在这项工作中 ,我们重新检查了设计空间 ,并测试了纯ConvNet所能达到的极限。我们逐步将标准ResNet“现代化 ” ,使其朝着视觉Transformer的设计方向发展 ,并在此过程中发现了导致性能差异的几个关键组件 。这一探索的结果是一系列被称为ConvNeXt的纯ConvNet模型 。ConvNeXts完全由标准ConvNet模块构建 ,在精度和可扩展性方面与transformer竞争 ,实现了87.8%的ImageNet top-1精度 ,在COCO检测和ADE20K分割方面优于Swin transformer ,同时保持了标准ConvNets的简单性和效率 。
总结:Transformer目前在CV火热 ,但 ViT在下游视觉任务不太行 ,SwinTransformer在CV各任务应用很好,虽然Swin Transformer借鉴了卷积网络的归纳偏差 ,但还是由于Transformer的特性 。本文旨在探讨卷积网络的极限 。 文笔逻辑清晰 ,背景 、引入本文目的 、介绍细节 、和效果 。
1引言
回顾21世纪10年代,深度学习取得了巨大的进步和影响 。主要的驱动力是神经网络的复兴 ,特别是卷积神经网络(ConvNets) 。在过去的十年中 ,视觉识别领域成功地从工程特征转移到设计(ConvNet)架构 。虽然反向传播训练ConvNets的发明可以追溯到20世纪80年代 ,但直到2012年底 ,我们才看到它在视觉特征学习方面的真正潜力 。AlexNet的问世 ,催生了“ImageNet时刻 ” ,开启了计算机视觉的新纪元 。自那以后 ,这一领域迅速发展 。具有代表性的convnet ,如VGGNet 、Inceptions 、ResNe(X)t、DenseNet 、MobileNet 、EfficientNet和RegNet ,侧重于准确性、效率和可扩展性的不同方面 ,并推广了许多有用的设计原则。
ConvNets在计算机视觉领域的完全主导地位并非巧合:在许多应用场景中 ,“滑动窗口 ”策略是视觉处理的固有策略 ,特别是在处理高分辨率图像时 。ConvNets有几个内置的归纳偏差,使它们非常适合各种各样的计算机视觉应用 。最重要的一个是平移同变性 ,这对如目标检测类的任务是可取的属性。由于以滑动窗口方式使用时 ,计算是共享的,因此ConvNets固有的效率也很高 。几十年来 ,这一直是ConvNets的默认用法 ,通常用于有限的数据集类别 ,如数字 、人脸和行人 。进入2010年代 ,基于区域的探测器进一步将ConvNets提升到视觉识别系统中基本构建模块的位置 。
大约在同一时间 ,用于自然语言处理(NLP)的神经网络的设计变迁之旅走了一条与众不同的道路 ,因为Transformer取代了循环神经网络 ,成为了主要的backbone架构 。尽管语言和视觉领域之间的任务重点存在差异 ,但随着视觉Transformer(ViT)的引入完全改变了网络架构设计的格局 ,这两种趋势在2020年惊人地融合在一起 。除了最初的“补丁 ”层 ,它将图像分割成一系列patches ,ViT没有引入特定于图像的归纳偏差 ,并且只对原始NLP Transformer进行了最小的更改 。ViT的一个主要关注点是缩放行为:借助更大的模型和数据集大小,transformer的性能可以大大超过标准ResNets 。这些图像分类任务的结果是鼓舞人心的 ,但计算机视觉并不局限于图像分类 。如前所述 ,在过去十年中,许多计算机视觉任务的解决方案严重依赖于滑动窗口 ,全卷积范式 。如果没有ConvNet归纳偏差 ,vanilla ViT模型在被采用为通用视觉backbone时面临许多挑战 。最大的挑战是ViT的全局注意力设计 ,它的复杂度与输入大小有关 。对基于ImageNet的分类来说 ,这可能是可以接受的 ,但对于更高分辨率的输入则容易变得棘手 。
分层Transformers采用混合方法来弥补这一差距。例如 ,“滑动窗口 ”策略(例如局部窗口内的注意力)被重新引入Transformer ,使它们的行为更类似于Convnet卷积网络 。Swin Transformer是这一方向的里程碑式工作 ,首次证明Transformer可以作为通用视觉backbone ,并在图像分类以外的一系列计算机视觉任务中都取得了最先进的性能 。Swin Transformer的成功和快速采用也揭示了一件事:卷积的本质并没有变得无关紧要;相反 ,它仍然备受渴望 ,从未褪色。
在这种观点下 ,Transformer在计算机视觉方面的许多进步都是为了恢复卷积 。然而,这些尝试是有代价的:一个简单的实现滑动窗口的自我关注可能是昂贵的;采用循环换挡等先进方法 ,速度可以得到优化 ,但系统在设计上就需要更费心思 。另一方面,具有讽刺意味的是 ,ConvNet已经满足了许多想要的特性 ,尽管是以一种简单 、简单的方式 。ConvNets似乎正在失去动力的唯一原因是(分层)Transformer在许多视觉任务中超过了它们 ,而性能差异通常归因于Transformer优越的缩放行为 ,其中多头自注意(multi-head self-attention)机制是关键组件 。
与ConvNets在过去十年间不断改进不同 ,采用视觉Transformer是一个飞跃 。在最近的文献中 ,系统级的比较(例如Swin Transformer vs. ResNet)通常在比较两者时采用 。ConvNets和分层视觉Transformer同时变得不同和相似:它们都设置了类似的归纳偏差 ,但在训练过程和宏观/微观层面的架构设计上有显著差异 。本文中 ,我们研究了ConvNets和transformer之间的架构差异 ,并尝试在比较网络性能时识别混淆变量 。我们的研究旨在弥合前ViT和后ViT时代ConvNets之间的差距 ,以及测试纯ConvNet所能实现的极限 。
为了做到这一点 ,我们从一个经过改进过程训练的标准ResNet(例如ResNet50)开始 。我们逐渐将架构“现代化 ” ,以构建一个分层的视觉Transformer(例如Swin-T) 。我们的探索是由一个关键问题引导的:“Transformer中的设计决策如何影响ConvNets的性能? ” 。在此过程中,我们发现了导致性能差异的几个关键组件。因此 ,我们提出了一个纯ConvNet家族 ,称为ConvNeXt 。我们在各种视觉任务上评估ConvNeXts,如ImageNet分类 ,COCO上的对象检测/分割 ,以及ADE20K上的语义分割 。令人惊讶的是 ,完全由标准ConvNet模块构建的ConvNeXts在所有主要基准测试中的准确性 、可伸缩性和健壮性方面均可与Transformer相媲美。ConvNeXt保持了标准convnet的效率 ,并且训练和测试的全卷积性质使其实现非常简单 。
我们希望新的观察和讨论可以挑战一些常见的信念 ,并鼓励人们重新思考卷积在计算机视觉中的重要性 。
总结:
2现代化ConvNet的路线图
在本节中 ,我们提供了一个从ResNet到ConvNet的轨迹路线 ,它与Transformer有相似之处 。我们根据FLOPs考虑两种模型尺寸 ,一种是ResNet-50 / Swin-T体系 ,FLOPs约为4.5×109 ,另一种是ResNet-200 / Swin-B体系 ,FLOPs约为15.0 ×109 。为了简单起见 ,我们将使用ResNet-50 / Swin-T复杂性模型来展示结果 。高容量模型的结论是一致的,结果可以在附录C中找到 。
在较高的层次上 ,我们的探索旨在研究和遵循来自Swin Transformer的不同层次的设计 ,同时保持网络作为标准ConvNet的简单性 。我们的探索路线图如下 。我们的起点是ResNet-50模型 。我们首先用类似于训练视觉变形金刚的训练技术来训练它,并获得了与原始ResNet-50相比有很大改善的结果 。这是我们的基线 。然后 ,我们研究了一系列设计决策 ,我们将其总结为1)宏观设计 ,2)ResNeXt, 3)反向瓶颈 ,4)大内核尺寸 ,以及5)各种分层的微观设计 。在图2中 ,我们展示了“网络现代化 ”的每个步骤所能实现的过程和结果。由于网络复杂性与最终性能密切相关 ,flop在探索过程中大致受控 ,尽管在中间步骤 ,flop可能高于或低于参考模型 。所有模型都在ImageNet-1K上进行训练和评估 。
2.1训练技巧除了网络架构的设计外 ,训练过程也会影响最终的性能。 视觉Transformer不仅带来了一套新的模块和架构设计决策 ,还为视觉引入了不同的训练技术(例如AdamW优化器) 。这主要涉及优化策略和相关的超参数设置 。因此 ,我们探索的第一步是使用vision Transformer训练程序训练基线模型(baseline model,基准模型) ,在本例中为ResNet50/200 。最近的研究表明 ,一套现代训练技术可以显著提高简单ResNet-50模型的性能 。在我们的研究中,我们使用了一个接近DeiT和Swin Transformer的训练方法 。 ResNets的训练从原来的90个epoch扩展到300个epoch 。我们使用AdamW优化器 ,数据增强技术如Mixup , Cutmix , RandAugment ,RandomErasing ,以及正则化方案包括StochasticDepth随机深度和LabelSmoothing标签平滑 。我们使用的完整超参数集可以在附录A.1中找到 。就其本身而言 ,这种增强的训练方案将ResNet-50模型的性能从76.1%提高到78.8%(+2.7%) ,这意味着传统ConvNets和Vision Transformer之间的很大一部分性能差异可能是由于训练技巧的不同 。 我们将在整个“现代化 ”过程中使用这个具有相同超参数的固定训练方案 。在ResNet-50系统中 ,每个报告的准确度都是由三种不同的随机种子(训练参数)训练获得的平均值 。
总结:ViT本身就引入了新的训练技巧 ,如AdamW优化器 。
2.2宏观设计我们现在分析Swin transformer的宏观网络设计。Swin transformer遵循ConvNets使用多级设计 ,其中每个阶段具有不同的特征映射分辨率 。有两个有趣的设计考虑因素:阶段计算比例和“干细胞”结构(the stage compute ratio ,the “stem cell ” structure) 。
Changing stage compute ratio:改变阶段计算比率。ResNet中跨阶段计算分布的原始设计很大程度上是已经被实证过的 。繁重的“res4 ”阶段是为了兼容下游任务 ,如对象检测,其中探测器头在14×14特征平面上操作 。另一方面 ,Swin-T遵循同样的原则 ,但阶段计算比例略有不同,为1:1:3:1 。对于较大的Swin Transformer ,比例为1:1:9:1 。根据设计 ,我们将每个阶段的块数量从ResNet-50中的(3,4,6,3)调整为(3,3,9,3) ,这也使FLOPs(浮点运算量)与Swin-T对齐 。模型精度由78.8%提高到79.4% 。值得注意的是 ,研究人员已经彻底研究了计算的分布 ,并且可能存在更优化的设计 。(说明有后续研究)
于是乎从现在开始 ,我们将使用这个阶段计算比率 。Changing stem to “Patchify”
:将stem层改为“Patchify ” 。一般来说 ,stem cell的设计主要考虑的是在网络的初始阶段如何处理输入图像 。由于自然图像固有的冗余 ,一个普通的stem cell会在标准ConvNets和视觉Transformer中积极地将输入图像下采样到适当的特征映射大小 。标准ResNet中的stem cell包含一个7×7卷积层 ,stride为2 ,后面是一个最大化池 ,这导致输入图像的4×下采样 。在vision Transformer中 ,常将更激进的“patchify ”策略被用作stem cell,即一个大的内核大小(例如核大小为14或16)和非重叠卷积(non-overlapping convolution)。Swin Transformer使用了类似的“Patchify ”层 ,但patch大小较小 ,为4,以适应架构的多阶段(stage)设计 。我们用使用4×4, stride 4卷积层实现的Patchify层取代Resnet风格的stem cell 。准确率从79.4%提高到79.5%。这表明ResNet中的stem cell可能被更简单的“Patchify ”层à la ViT所取代 ,这将导致类似的性能 。
我们将在网络中使用“patchify stem ”(4×4非重叠卷积) 。 2.3ResNeXt-ify在这一部分中 ,我们尝试采用ResNeXt的思想 ,它比普通ResNet具有更好的FLOPs(运算量)/准确性权衡 。核心部分是组卷积 ,其中卷积滤波器被分成不同的组 。在高层次上 ,ResNeXt的指导原则是“使用更多的组 ,扩大宽度 ” 。更准确地说 ,ResNeXt为bottleneck block中的3×3 conv层使用了分组卷积 。由于这大大降低了flop ,因此可以通过扩展模型网络宽度来弥补容量损失 。
在我们的例子中我们使用depthwise卷积 ,这是分组卷积当组数等于通道数的一种特殊情况 。depthwise conv已经由MobileNet和Xception发扬光大 。我们注意到 ,深度卷积类似于自注意中的加权机制 ,它在每个通道的基础上运算 ,即只在空间维度上混合信息 。深度卷积和1 × 1卷积的组合导致了空间和通道混合的分离,这是vision transport共有的属性 ,其中每个操作要么跨空间维度混合信息 ,要么跨通道维度混合信息,但不是同时混合 。深度卷积的使用有效地降低了网络FLOPs浮点运算量 ,并如预期的那样提高了精度 。根据ResNeXt中提出的策略 ,我们将网络宽度增加到与Swin-T相同的通道数量(从64增加到96)。这使得网络性能达到80.5% ,FLOPs增加(5.3G) 。
我们现在将采用ResNeXt设计 。 2.4Inverted Bottleneck每个Transformer块中的一个重要设计是它创建了一个反向瓶颈 ,即MLP块的隐藏维度是输入维度的四倍宽(参见图4)。有趣的是 ,这个Transformer设计连接到ConvNets中使用的扩展比为4的反向瓶颈设计 。该想法由MobileNetV2推广 ,随后在几个先进的ConvNet架构中获得了支持 。
这里我们将探讨反向瓶颈设计 。图3 (a)到(b)说明了这些配置 。尽管深度卷积层的FLOPs增加了 ,但由于下采样残差块的捷径1×1 conv层的FLOPs显著降低 ,这一变化将整个网络的FLOPs降低到4.6G 。有趣的是 ,这导致性能略有提高(80.5%到80.6%) 。在ResNet-200 / Swin-B机制中 ,这一步骤带来了更多的收益(81.9%至82.6%) ,同时降低了FLOPs 。
现在我们将使用反向瓶颈 。 2.5Large Kernel Sizes在这一部分的探索中 ,我们主要关注大型卷积核的行为 。Vision Transport最显著的特点是其非局部的自注意力机制,这使得每一层都有一个全局的接受域 。虽然拥有大卷积核的ConvNets在过去已经被使用 ,但黄金标准(golden standard)(由VGGNet推广)是堆栈小内核大小(3×3)的conv层 ,这些层在现代gpu上具有高效的硬件实现 。尽管Swin transformer将本地窗口重新引入到self-attention块中,但窗口大小至少为7×7 ,明显大于3×3的ResNe(X)t内核大小 。在这里 ,我们重新讨论ConvNets中大内核大小卷积的使用。
Moving up depthwise conv layer:向上移动的深度conv层 。要探索大型内核 ,一个先决条件是向上移动深度conv层的位置(图3 (b)到©) 。这是一个设计决策 ,在Transformer中也很明显:MSA块放置在MLP层之前。由于我们有一个反向瓶颈块 ,这是一个自然的设计选择-复杂/低效模块(MSA Window based self-Attention ,大内核conv)将有更少的通道 ,而高效 、密集的1×1层将做繁重的工作 。这个中间步骤将flop降低到4.1G ,导致性能暂时下降到79.9% 。(真就究极炼丹啊)
Increasing the kernel size:通过所有这些准备工作 ,采用更大内核大小的卷积的好处是显著的 。我们尝试了几种内核大小 ,包括3 、5 、7 、9和11 。网络的性能从79.9% (3×3)增加到80.6% (7×7) ,而网络的FLOPs基本保持不变 。此外 ,我们观察到较大内核大小的好处在7×7处达到饱和点 。我们也在大容量模型中验证了这种行为:当我们将内核大小增加到7×7以上时,ResNet-200状态模型不会显示出进一步的增益 。我们将在每个块中使用7×7深度conv 。至此 ,我们已经结束了在宏观尺度上对网络架构的研究 。有趣的是 ,在视觉转换器中进行的设计选择的很大一部分可能映射到ConvNet实例化 。 2.6微观设计在本节中,我们将在微观尺度上研究其他几个架构差异——这里的大多数探索都是在层这一级别上完成的 ,重点是激活函数和归一化层的特定选择 。
Replacing ReLU with GELU:用GELU代替ReLU 。NLP(自然语言处理)和视觉架构之间的一个差异是使用哪些激活函数的细节。随着时间的推移 ,已经研究出了许多激活函数 ,但由于其简单和高效 ,线性整流单元(ReLU)仍然广泛用于ConvNets 。在Transformer的原始论文中 ,ReLU也被用作激活函数 。高斯误差线性单元(也作GELU) ,可以被认为是ReLU的更平滑的变体 ,被用于最先进的Transformer中 ,包括谷歌的BERT和OpenAI的GPT-2 ,以及最近的ViTs。我们发现 ,在我们的ConvNet中 ,ReLU也可以被GELU取代 ,尽管准确度保持不变(80.6%) 。
Fewer activation functions.
:更少的激活函数 。Transformer和ResNet块之间的一个小区别是Transformer的激活函数更少 。考虑一个在MLP(多层感知机)块中具有键/查询/值线性嵌入层(key/query/value linear embedding layers) 、投影层(the projection layer)和两个线性层的Transformer块 。在MLP块中只存在一个激活函数 。相比之下,通常的做法是将激活函数附加到每个卷积层 ,包括1 × 1卷积 。在这里 ,我们将研究当我们坚持相同的策略时,性能是如何变化的 。如图4所示 ,我们从剩余块中消除所有GELU层 ,只保留两个1 × 1层之间的一个 ,复制Transformer块的样式 。该过程将结果提高了0.7% ~ 81.3% ,与Swin-T的性能基本相当 。
现在 ,我们将在每个块中使用单个GELU激活 。
Fewer normalization layers:Transformer块通常也有更少的归一化层 。在这里 ,我们删除了两个BatchNorm (BN)层 ,只在conv 1 × 1层之前留下一个BN层 。这进一步提高了性能 ,达到81.4% ,已经超过了Swin-T的结果。请注意 ,我们每个块的归一化层甚至比Transformer更少 ,因为根据经验 ,我们发现在块的开始添加一个额外的BN层并不能提高性能 。
Substituting BN with LN:用LN(层归一化)替代BN 。BatchNorm是ConvNets中的一个重要组成部分,它提高了收敛性 ,减少了过拟合。然而 ,BN也有许多复杂性,可能会对模型的性能产生不利影响 。人们曾多次尝试开发替代的归一化技术 ,但在大多数视觉任务中 ,BN仍是首选 。另一方面 ,Transformer中使用了更简单的层归一化(LN) ,从而在不同的应用场景中获得了良好的性能 。
在原来的ResNet中直接用LN代替BN会导致性能次优 。随着网络架构和训练技术的所有修改 ,在这里我们重新审视使用LN取代BN的影响 。我们观察到我们的ConvNet模型用LN训练没有任何困难;实际上 ,性能略好 ,准确率达到81.5% 。
从现在开始 ,我们将在每个剩余块中使用一个LayerNorm作为规范化的选择 。
Separate downsampling layers:独立的下采样层 。在ResNet中 ,空间下采样是由每个阶段开始的残差块实现的 ,使用3×3 conv与stride 2(在快捷连接处使用1×1 conv与stride 2) 。在Swin Transformer中 ,在stage之间添加了一个单独的下采样层 。我们探索了一个类似的策略 ,我们使用2×2 conv层与stride 2进行空间下采样 。这种修改令人惊讶地导致了训练的发散 。进一步的研究表明,在空间分辨率改变的地方添加归一化层有助于稳定训练。这些包括Swin Transformer中也使用的几个LN层:一个在每个下采样层之前 ,一个在stem之后 ,一个在最终的全局平均池化之后 。我们可以将准确率提高到82.0%,大大超过了Swin-T的81.3% 。
我们将使用单独的下采样层。这就引出了我们的最终模型 ,我们称之为ConvNeXt 。
ResNet 、Swin和ConvNeXt块结构的比较可以在图4中找到 。ResNet-50 、Swin-T和ConvNeXt-T的详细架构规范的比较见表9 。如下图:
Closing remarks:闭幕词 。我们已经完成了我们的第一个“通关 ” ,并发现了ConvNeXt ,一个纯粹的ConvNet ,它可以在ImageNet-1K分类中任务下胜过Swin Transformer 。值得注意的是 ,到目前为止讨论的所有设计选择都改编自Vision Transformer 。此外 ,即使在ConvNet文献中 ,这些设计也并不新颖——在过去十年中 ,它们都是单独研究的 ,而不是集体研究的 。我们的ConvNeXt模型有大致相同的FLOPs , #params 。使用Swin转换器 ,但不需要专门的模块 ,如转移窗口注意或相对位置偏差 。这些发现令人鼓舞,但还不完全令人信服——到目前为止 ,我们的探索仅限于小范围 ,但vision transformer的缩放行为才是真正区别它们的地方 。此外,ConvNet能否在目标检测和语义分割等下游任务上与Swin transformer竞争是计算机视觉从业者关注的核心问题 。在下一节中 ,我们将从数据和模型大小两方面扩展ConvNeXt模型 ,并在一系列不同的视觉识别任务上评估它们 。
ImageNet实验评估
我们构建了不同的ConvNeXt变体ConvNeXtT/S/B/L ,使其具有与Swin-T/S/B/L相似的复杂性。ConvNeXt-T/B分别是ResNet-50/200制度上的“现代化 ”作业的最终产品 。此外 ,我们还构建了一个更大的ConvNeXt- xl ,以进一步测试ConvNeXt的可伸缩性 。这些变量只在通道C的数量和每个阶段的块B的数量上有所不同。在ResNets和Swin transformer之后 ,每个新阶段的通道数量都翻倍 。我们总结如下配置:
3.1设置ImageNet-1K数据集由1000个对象类和1.2M训练图像组成 。我们报告了ImageNet-1K在验证集上的top-1精度 。我们还在ImageNet-22K上进行预训练 ,ImageNet-22K是一个更大的数据集 ,有21841个类(1000个ImageNet-1K类的超集) ,有14M张图像用于预训练 ,然后在ImageNet-1K上对预训练的模型进行微调以进行评估 。我们总结了我们的训练设置如下 。更多的细节可以在附录A中找到 。
Training on ImageNet-1K:ImageNet-1K上的训练 。我们使用AdamW作为优化器训练了ConvNeXts300个epoch(300个周期迭代) ,学习率为4e-3 。我还还采用了参数为20epoch的线性预热和余弦衰减计划用以控制学习率 。我们使用的batch大小为4096 ,权重衰减为0.05 。对于数据增强,我们采用的常见方案包括Mixup 、Cutmix 、RandAugment和Random Erasing 。我们用随机深度和标签平滑对网络进行正则化 。采用初始值1e-6的Layer Scale。
我们使用指数移动平均(EMA) ,因为我们发现它缓解了较大模型的过拟合 。
Pre-training on ImageNet-22K:在ImageNet-22K上进行预训练 。我们在ImageNet-22K上预训练ConvNeXts 90个epoch ,其中预热(warmup)5个epoch。
我们不使用EMA 。其他设置遵循ImageNet-1K 。
Fine-tuning on ImageNet-1K对ImageNet-1K进行微调 。我们在ImageNet-1K上对ImageNet22K预训练模型进行了30个epoch的微调 。我们使用AdamW,学习率为5e-5 ,余弦学习率表 ,分层学习率衰减 ,不进行预热 ,batch大小为512 ,权重衰减为1e-8 。默认的预训练、微调和测试分辨率是224224 。此外 ,我们对ImageNet-22K和ImageNet-1K预训练模型进行了384384的大分辨率微调 。
与ViTs/Swin transformer相比 ,ConvNeXts更容易在不同分辨率下进行微调 ,因为网络是全卷积的 ,不需要调整输入补丁大小或插值绝对/相对位置偏差 。 3.2结果ImageNet-1K
:表1(上部)显示了与最近的两个Transformer变体DeiT和Swin Transformer ,以及来自架构搜索的两个convnet (RegNets , EfficientNets和EfficientNetsV2)的结果比较 。ConvNeXt与两个强大的ConvNet基线(RegNet和EfficientNet)在精度-计算权衡以及推理吞吐量方面竞争有利 。在具有相似复杂度时ConvNeXt也优于Swin Transformer ,有时有很大的差距(例如ConvNeXt- t的差距为0.8%) 。没有专门的模块,如移动窗口或相对位置偏差 ,ConvNeXts也享受与Swin Transformer相比更高的吞吐量 。
结果中的一个亮点是ConvNeXt-B在处理384384分辨率处:它比Swin-B高出0.6%(85.1%对84.5%) ,但推理吞吐量高出12.5%(95.7对85.1 image/s)。我们注意到,当分辨率从224224增加到384384时 ,ConvNeXt-B相对于Swin-B的FLOPs/吞吐量优势会变得更大 。此外 ,当进一步扩展到ConvNeXt-L时 ,我们观察到结果提高了85.5% 。
ImageNet-22K
:我们在表1(下部分)中展示了通过ImageNet-22K预训练微调模型的结果。这些实验很重要 ,因为人们普遍认为Vision Transformer的归纳偏差更少 ,因此在大规模预训练时可以比ConvNets表现得更好 。我们的结果表明 ,当使用大型数据集进行预训练时 ,适当设计的ConvNets并不逊于vision transformer——ConvNeXts的性能仍然与相似大小的Swin Transformer相同或更好 ,吞吐量略高 。此外 ,我们的ConvNeXt-XL模型达到了87.8%的精度——比ConvNeXt-L的384*384有了很大的提高 ,这表明convnext是可扩展的架构 。
在ImageNet-1K上 ,通过搜索结构(如squeeze -and dexcitation[35])和渐进式训练程序实现了最高的性能 。然而 ,通过ImageNet-22K预训练,ConvNeXt能够优于EfficientNetV2 ,进一步证明了大规模训练的重要性 。
在附录B中 ,我们讨论ConvNeXt的鲁棒性和域外泛化结果 。
5相关工作
Hybrid models
:混合模型 。在前和后vViT时代,将卷积和自注意力机制相结合的混合模型得到了积极的研究 。在ViT之前 ,重点是应用自注意/非局部模块扩充ConvNet ,以获得长期依赖关系 。最初的ViT首先研究了一种混合结构 ,大量后续工作集中于以显式或隐式方式将卷积先验重新引入ViT 。
Recent convolution-based approaches:最近的基于卷积的方法 。Han等表明 ,局部Transformer注意相当于非均匀动态深度卷积(inhomogeneous depthwise conv) 。然后Swin中的MSA块被动态或规则的深度卷积取代 ,达到与Swin相当的性能。最新的文章ConvMixer表明 ,在小范围设置下 ,深度卷积可以作为一种有前途的混合策略 。ConvMixer使用更小的补丁大小来实现最佳结果 ,使得吞吐量比其他基线低得多 。GFNet采用快速傅里叶变换(FFT)进行token混合。FFT也是卷积的一种形式 ,但具有全局核大小和圆形填充 。
与许多最近的Transformer或ConvNet设计不同 ,我们研究的一个主要目标是深入了解标准ResNet的现代化过程并实现最先进的性能 。6结论
在21世纪20年代 ,视觉Transformer ,特别是像Swin Transformer这样的分层Transformer,开始取代ConvNets ,成为通用视觉backbone的首选 。
人们普遍认为 ,视觉Transformer比ConvNets更准确 、更高效 、更可扩展 。我们提出ConvNeXts,一个纯ConvNet模型 ,可以在多个计算机视觉基准上与最先进的分层视觉Transformer竞争 ,同时保留标准ConvNets的简单性和效率 。在某些方面 ,我们的观察结果令人惊讶 ,而我们的ConvNeXt模型本身并不是全新的——在过去十年中 ,许多设计选择都是单独检查的 ,但并不是共同检查的 。我们希望这项研究报告的新结果将挑战几个广泛持有的观点 ,并促使人们重新思考卷积在计算机视觉中的重要性 。创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!