| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> ConvNext 原文翻译 -> 正文阅读 |
|
[人工智能]ConvNext 原文翻译 |
摘要:????????视觉识别的“兴盛的20年代”始于Vision Transformer(VITS)的引入,它很快取代了ConvNets,成为最先进的图像分类模型。另一方面,当应用于一般的计算机视觉任务时,例如对象检测和语义分割,普通的VIT面临困难。正是层次化的Transformers(如Swin Transformers)重新引入了几个ConvNet先例,使Transformers实际上可以作为通用视觉主干,并在各种视觉任务中表现出卓越的性能。然而,这种混合方法的有效性仍然在很大程度上归功于transformer的内在优势,而不是卷积固有的归纳偏向(inductive biases)。在这项工作中,我们重新检查设计空间,并测试纯ConvNet所能实现的极限。我们逐步对标准ResNet进行“现代化”,以实现视觉转换器的设计,并发现了导致性能差异的几个关键组件。这一探索的结果是一系列被称为ConvNeXt的纯ConvNet模型。完全由标准ConvNet模块构建,ConvNeXts在准确性和可扩展性方面与Transformers竞争,达到87.8%的ImageNet TOP-1准确率,在COCO检测和ADE20K分段方面优于Swin Transformers,同时保持标准ConvNet的简单性和效率。 结论????????在2020年代,Vision Transformer,特别是层次化的Transformer,如Swin Transformers,开始超越ConvNets,成为通用视觉骨干的首选。人们普遍认为,Vision Transformer比ConvNets更准确、更高效、更可扩展。我们提出了ConvNeXts,一个纯ConvNet模型,它可以在多个计算机视觉基准中与最先进的分层视觉Transformer竞争,同时保留了标准ConvNets的简单性和效率。在某些方面,我们的观察结果令人惊讶,而我们的ConvNeXt模型本身并不是全新的--许多设计选择都在过去十年中被分别研究过,但没有集体研究过。我们希望本研究报告的新结果将挑战几个广泛持有的观点,并促使人们重新思考计算机视觉中卷积的重要性。 引言:????????回顾2010年代,这十年的特点是深度学习取得了巨大的进步和影响。主要的驱动力是神经网络的复兴,特别是卷积神经网络(ConvNets)。在这十年中,视觉识别领域成功地从工程特征转向设计(ConvNet)架构。虽然反向传播训练的ConvNets的发明可以一直追溯到20世纪80年代[42],但直到2012年底,我们才看到它在视觉特征学习方面的真正潜力。AlexNet的引入催生了“ImageNet时刻”[59],开启了计算机视觉的新纪元。自那以后,该领域发展迅速。VGGNet[64],Inceptions[68],ResNe(X)t[28,87],DenseNet[36],MobileNet[34],EfficientNet[71]和RegNet[54]等具有代表性的ConvNet侧重于精度、效率和可扩展性的不同方面,并推广了许多有用的设计原则。 图 1. ConvNets 和Transformer 的 ImageNet-1K 分类结果。每个气泡的面积与模型族中变体的 FLOP 成正比。这里的 ImageNet-1K/22K 模型分别采用 2242/3842 张图像。ResNet和ViT的结果是在原论文的基础上通过改进训练程序获得的。我们证明了一个标准的ConvNet模型可以达到与Swim Transformer相同的可扩展性水平,而在设计上却要简单得多。 ????????ConvNets在计算机视觉领域的完全主导地位并不是巧合:在许多应用场景中,“滑动窗口”策略是视觉处理的固有策略,特别是在处理高分辨率图像时。ConvNet有几个内置的归纳偏差,使它们非常适合各种计算机视觉应用。最重要的是平移不变性,这是像目标检测这样的任务的理想属性。由于以滑动窗口的方式使用时,计算是共享的,因此ConvNets本身也是高效的[62]。几十年来,这一直是ConvNets的默认用法,一般用于有限的对象类别,如数字[43]、人脸[58, 76]和行人[19, 63]。进入2010年代,基于区域的检测器[23, 24, 27, 57]进一步提升了ConvNets的地位,成为视觉识别系统的基本构件。 ????????大约在同一时间,用于自然语言处理(NLP)的神经网络设计的奥德赛走了一条非常不同的道路,因为transformer取代了递归神经网络,成为了主流的骨干架构。尽管语言和视觉领域的兴趣任务不尽相同,但这两股潮流在2020年出人意料地融合在一起,因为视觉变形器(ViT)的引入完全改变了网络架构设计的格局。除了最初的 "patchify "层(将图像分割成一连串的patch),ViT没有引入特定于图像的感应偏差,并且对原始的NLP Transformers进行了最小的改动。ViT的一个主要重点是扩展行为:在更大的模型和数据集规模的帮助下,Transformers可以在很大程度上超越标准ResNets。这些关于图像分类任务的结果是鼓舞人心的,但计算机视觉并不限于图像分类。如前所述,在过去十年中,许多计算机视觉任务的解决方案在很大程度上取决于滑动窗口、完全卷积的范式。如果没有ConvNet的归纳偏差,虚构的ViT模型在被采用为通用视觉骨干时面临许多挑战。最大的挑战是ViT的全局注意力设计,它的复杂度与输入大小成二次方。这对于ImageNet分类来说可能是可以接受的,但对于更高分辨率的输入来说很快就变得难以解决了。 ????????分层Transformer采用了一种混合方法来弥补这一差距。例如,"滑动窗口 "策略(例如在局部窗口内的注意力)被重新引入Transformer,使其行为与ConvNets更加相似。Swin Transformer[45]是这个方向上的一个里程碑式的工作,它首次证明了Transformer可以作为一个通用的视觉骨干,在图像分类之外的一系列计算机视觉任务中取得最先进的性能。Swin Transformer的成功和快速采用也揭示了一件事:卷积的本质并没有变得不重要;相反,它仍然备受期待,从未褪色。 ????????从这个角度来看,Transformers 在计算机视觉方面的许多进步都旨在恢复卷积。然而,这些尝试是有代价的:滑动窗口自注意力的原始实现可能会开销很大 [55];使用循环移位等先进方法[45],可以优化速度,但系统在设计上变得更加复杂另一方面,具有讽刺意味的是,ConvNet 已经满足了许多所需的属性,尽管是以一种直接、简洁的方式。ConvNets 似乎失去动力的唯一原因是(分层的)Transformers 在许多视觉任务中超过了它们,而性能差异通常归因于 Transformers 卓越的缩放行为,其中多头自注意力是关键组成部分。 ????????与在过去十年中逐渐改进的 ConvNet 不同,Vision Transformers 的采用是一个跨大步的进步。在最近的文献中,在比较两者时通常采用系统级比较(例如 Swin Transformer 与 ResNet)。 ConvNets 和分层视觉 Transformer 同时变得不同和相似:它们都配备了相似的归纳偏差,但在训练过程和宏观/微观层次的架构设计上存在显着差异。在这项工作中,我们研究了 ConvNets 和 Transformer 之间的架构区别,并在比较网络性能时尝试识别混杂变量。我们的研究旨在弥合 ConvNet 的前 ViT 和后 ViT 时代之间的差距,并测试纯 ConvNet 所能达到的极限。 ????????为此,我们从经过改进程序训练的标准 ResNet(例如 ResNet50)开始。我们逐渐将架构“现代化”为构建分层视觉 Transformer(例如 Swin-T)。我们的探索是由一个关键问题引导的:Transformers 中的设计决策如何影响 ConvNets 的性能?我们发现了几个导致性能差异的关键组件。因此,我们提出了一类称为ConvNeXt的纯ConvNet。我们在各种视觉任务上对ConvNeXts进行了评估,例如ImageNet分类[17],CoCo[44]上的目标检测/分割,以及ADE20K[92]上的语义分割。令人惊讶的是,完全由标准ConvNet模块构建的ConvNeXts在所有主要基准的准确性、可扩展性和健壮性方面都能与Transformers竞争。ConvNeXt保持了标准ConvNet的效率,并且训练和测试的完全卷积性质使其非常容易实现。 ????????我们希望新的观察和讨论能够挑战一些共同的信念,并鼓励人们重新思考卷积在计算机视觉中的重要性。 2.ConvNet 现代化:路线图????????在本节中,我们提供了从 ResNet 到类似于 Transformer 的 ConvNet 的轨迹。我们根据 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模型。我们首先用用于训练vision Transformer的类似训练技术来训练它,并获得了比原始ResNet-50更好的结果。这将是我们的基线。然后我们研究一系列的设计决策,我们总结为:1)宏观设计,2)ResNeXt,3)倒瓶颈,4)大内核尺寸,5)各种层级的微设计。在图2中,我们展示了 "网络现代化 "的每个步骤的程序和我们能够实现的结果。在图2中,我们展示了 "网络现代化 "的每一步的程序和我们能够实现的结果。由于网络的复杂性与最终的性能密切相关,在探索的过程中,FLOPs被大致控制,尽管在中间步骤,FLOPs可能比参考模型高或低。所有模型都是在ImageNet-1K上训练和评估的。 ???????? 图2. 我们将一个标准的ConvNet(ResNet)现代化,以设计一个分层的视觉转化器(Swin),而不引入任何基于注意力的模块。前景条(蓝色)是 ResNet-50/Swin-T 相同FLOP 机制下的模型精度; ResNet-200/Swin-B 方案的结果用灰色条显示。带斜条子意味着不采用该修改。两种制度的详细结果都在附录中。许多Transformer架构的选择都可以被纳入ConvNet中,而且它们会带来越来越好的性能。最后,我们的纯ConvNet模型,名为ConvNeXt,可以超过Swin Transformer。 ?2.1. 训练技术????????除了网络架构的设计,训练程序也会影响最终的性能。Vision Transformer不仅带来了一套新的模块和架构设计决策,而且还为视觉引入了不同的训练技术(如AdamW优化器)。这主要涉及优化策略和相关的超参数设置。因此,我们探索的第一步是使用Vision Transformer训练的程序训练基线模型,在本例中为ResNet50/200。最近的研究[7, 81]表明,一套现代的训练技术可以显著提高简单的ResNet-50模型的性能。在我们的研究中,我们使用了与DeiT的[73]和Swin Transformer的[45]接近的训练配方。训练将从ResNet最初的90个epochs扩展到300个epochs。我们使用AdamW优化器[46]、数据增强技术,如Mixup[90]、CutMix[89]、RandAugment[14]、Random Erasing[91],以及包括Stochastic Depth[36]和Label Smoothing[69]的正则化方案。 ????????我们使用的全套超参数可以在附录A.1中找到。就其本身而言,这一增强的训练配方将ResNet-50模型的性能从76.1%[1]提高到78.8%(+2.7%),这意味着传统ConvNet和Vision Transformers之间的性能差异的很大一部分可能是由于训练技术。我们将在整个“现代化”过程中使用这个固定的训练方式,并使用相同的超参数。ResNet-50方案的每个报告准确率都是用三个不同的随机种子训练获得的平均值。 2.2. 宏观设计????????我们现在分析一下Swin Transformers的宏观网络设计。Swin Transformers跟随ConvNets[28, 65]使用多阶段设计,每个阶段有不同的特征图分辨率。有两个有趣的设计考虑:the stage compute ratio 和“stem cell”结构。 ????????改变stage compute ratio(就是网络各阶段的比例,例如Resnet50是3:4:6:3)。ResNet中跨阶段计算分布的原始设计主要是经验的。复杂的的“res4”阶段是为了与下游任务兼容,如物体检测,其中探测器头在14×14特征平面上操作。另一方面,Swin-T遵循同样的原则,但阶段计算比例略有不同,为1:1:3:1。对于较大的Swin Transformers,比例为1:1:9:1。按照设计,我们将每个阶段的块数从ResNet-50的(3,4,6,3)调整为(3,3,9,3),这也使FLOPs与Swin-T一致。这使模型的准确性从78.8%提高到79.4%。值得注意的是,研究人员已经彻底调查了计算的分布情况[53, 54],而且很可能存在一个更理想的设计。从现在开始,我们将使用这个阶段的计算比率。 ????????改变stem to “Patchify”(我理解的大概就是图像送入网络最开始的处理方式,例如Resnet是送入7X7卷积,而Vit和Swim都是将其分为各种patch进行处理)。通常,stem cell 设计关心的是如何在网络开始时处理输入图像。由于自然图像固有的冗余性,常见的stem cell将在标准ConvNet和Vision Transformers中积极地对输入图像进行下采样,以获得合适的特征图大小。标准ResNet中的stem cell包含一个7×7的卷积层,跨度为2,然后是最大池化,将输入图像的4倍下采样。在Vision Transformer中,一个更积极的 "patchify "策略被用作stem cell,它对应于一个大的内核尺寸(如kernel size=14或16)和非重叠卷积。Swin Transformer使用了类似的 "patchify"层,但patch尺寸较小,为4,以适应该架构的多级设计。我们用一个使用4×4、跨度为4的卷积层实现的patchify层取代了ResNet式的干细胞。准确率从79.4%变为79.5%。这表明ResNet中的stem cell可以用更简单的 "patchify "层来代替,就像ViT一样,这将产生差不多的表现。我们将在网络中使用 "patchify stem"(4×4非重叠卷积)。 2.3. ResNeXt-ify????????在这一部分中,我们尝试采用ResNeXt[87]的思想,它比普通的ResNet具有更好的浮点/精度权衡。核心部件是分组卷积,其卷积滤波被分成不同的组。在高层次上,ResNeXt的指导原则是 "多用分组,扩大宽度"。更确切地说,ResNeXt对瓶颈块中的3×3 卷积层采用了分组卷积。由于这大大减少了FLOPs,网络宽度被扩大以补偿能力的损失。 ????????在我们的例子中,我们使用depthwise?卷积,这是分组卷积的一种特殊情况,其中组的数量等于通道的数量。depthwise卷积已经被MobileNet[34]和Xception[11]所普及。我们注意到,depthwise卷积类似于self-attention中的加权求和运算,它基于每个通道进行操作,即仅在空间维度上混合信息。depthwise卷积和1×1卷积的结合导致了空间和通道混合的分离,这是Vision Transformer所共有的特性,每个操作要么在空间或通道维度上混合信息,但不能同时混合。depthwise卷积的使用有效地减少了网络的FLOPs,并且正如预期的那样,降低了精度。按照ResNeXt提出的策略,我们将网络宽度增加到与Swin-T的通道数量相同(从64到96)。这使网络性能达到80.5%,FLOPs增加(5.3G)。我们现在将采用ResNeXt设计。 2.4. Inverted Bottleneck每个Transformer块中的一个重要设计是,它创造了一个倒瓶颈,即MLP块的隐藏维度比输入维度宽四倍(见图4)。有趣的是,这种Transformer设计与ConvNets中使用的扩展率为4的倒瓶颈设计有联系。这个想法被MobileNetV2[61]所推广,随后在一些先进的ConvNet架构中得到了推广[70, 71]。 图4. 一个ResNet、一个Swin Transformer和一个ConvNeXt的模块设计。由于存在多个专门的模块和两个残差连接,Swin Transformer的模块更加复杂。为了简单起见,我们把Transformer MLP块中的线性层也记为 "1×1 convs",因为它们是等同的。 图3.Block的改进和最终的样式。(A)是ResNeXt块;在(B)中,我们创建倒置的瓶颈块,并且在(c)中,depthwise卷积层的位置向上移动。 ????????在此,我们探讨倒瓶颈设计。图3(a)到(b)说明了配置情况。尽管depthwise卷积层的FLOPs增加了,但由于下采样残差块的shortcut 1×1卷积层的FLOPs大幅减少,这种改变使整个网络的FLOPs减少到4.6G。有趣的是,这样做的结果是性能略有提高(80.5%到80.6%)。在ResNet-200/Swin-B系统中,这一步带来了更多的收益(81.9%到82.6%),也减少了FLOPs。我们现在将使用倒置的瓶颈。我们现在将使用倒置瓶颈。 ?2.5. Large Kernel Sizes????????在这一部分的探索中,我们重点关注大型卷积核的表现。Vision Transformer最突出的一个方面是它们的非局部self-attention,这使得每一层都有一个全局的感受野。虽然过去在ConvNets[40, 68]中使用了大内核尺寸,但黄金标准(由VGGNet[65]推广)是堆叠小内核尺寸(3×3)的conv层,这在现代GPU上有高效的硬件实现[41]。尽管Swin Transformers将局部窗口重新引入了自注意块,但窗口大小至少是7×7,明显大于3×3的ResNe(X)t内核大小。在此,我们重新审视大核尺寸的卷积在ConvNets中的使用。 ????????上移depthwise卷积层。要探索大的内核,一个先决条件是向上移动depthwise层的位置(图3(B)至(C))。这一设计决定在Transformer中也很明显:MSA块被放置在MLP层之前。由于我们有一个倒置的瓶颈块,这是一个自然的设计选择——复杂/低效的模块(MSA、大内核卷积)将具有更少的通道,而高效、密集的 1×1 层将完成繁重的工作。这个中间步骤将 FLOP 减少到 4.1G,导致性能暂时下降到 79.9%。 图3.Block的改进和最终的样式。(A)是ResNeXt块;在(B)中,我们创建倒置的瓶颈块,并且在(c)中,depthwise卷积层的位置向上移动。 ????????增加内核大小。通过所有这些准备工作,采用更大内核大小的卷积的好处是显着的。我们尝试了几种内核大小,包括 3、5、7、9 和 11。网络的性能从 79.9% (3×3) 提高到 80.6% (7×7),而网络的 FLOPs 大致保持不变。此外,我们观察到较大内核尺寸的优势在 7×7 处达到饱和点。我们也在大容量模型中验证了这种行为:当我们将内核大小增加到 7×7 以上时,ResNet-200 机制模型没有表现出进一步的增益。我们将在每个块中使用 7×7 depthwise卷积。至此,我们已经结束了对网络架构的宏观考察。耐人寻味的是,在Vision Transformer中采取的相当一部分设计选择可以映射到ConvNet实例中。 2.6. 微观设计????????在本节中,我们在微观上研究了其他几个架构上的差异--这里的大部分探索是在层级上进行的,重点是激活函数和规范化层的具体选择。 ????????用GELU代替ReLU:NLP和视觉架构之间的一个差异是使用何种激活函数的具体问题。随着时间的推移,许多激活函数已经被开发出来,但整流线性单元(ReLU)[49]由于其简单和高效,仍然被广泛用于ConvNets。ReLU也被用作最初Transformer论文[77]中的激活函数。高斯误差线性单元,即GELU[32],可以被认为是ReLU的平滑变体,在最先进的Transformer中被利用,包括谷歌的BERT[18]和OpenAI的GPT-2[52],还有最近的ViTs。我们发现在我们的ConvNet中也可以用GELU来代替ReLU,尽管准确率保持不变(80.6%)。 ????????更少的激活函数。Transformer和ResNet块之间的一个小区别是Transformer的激活函数较少。考虑一个带有Key/Query/Value线性内嵌层、投影层和 MLP 块中的两个线性层的 Transformer 块。 MLP 块中只有一个激活函数。相比之下,ConvNet通常的做法是在每个卷积层(包括 1×1 卷积)后附加一个激活函数。在这里,我们研究了当我们坚持使用相同的策略时,性能如何变化。如图4所示,我们从残差块中消除了所有的GELU层,除了两个1×1层之间的一层,复制了Transformer块的风格。这个过程将结果提高了0.7%,达到81.3%,实际上与Swin-T的性能相匹配。 图4. 一个ResNet、一个Swin Transformer和一个ConvNeXt的模块设计。由于存在多个专门的模块和两个残差连接,Swin Transformer的模块更加复杂。为了简单起见,我们把Transformer MLP块中的线性层也记为 "1×1 convs",因为它们是等同的。 现在我们将在每个区块中使用单一的GELU激活。 ????????更少的规范化层。Transformer块通常用较少的规范化层。在这里,我们去掉了两个BatchNorm(BN)层,在Conv1×1层之前只留下一个BN层。这进一步将性能提升到81.4%,已经超过了Swin-T的结果。请注意,我们每个Block的归一化层数比Transformers还要少,因为根据经验,我们发现在Block的开头增加一个额外的BN层并不能提高性能。 ????????用LN代替BN。BatchNorm[38]是ConvNets中的一个重要组成部分,因为它可以提高收敛性并减少过拟合。然而,BN也有许多错综复杂的问题,会对模型的性能产生不利的影响[84]。人们曾多次尝试开发可供选择的归一化技术,但在大多数视觉任务中,BN仍然是首选选项。另一方面,在Transformers中使用了更简单的层标准化[5](LN),从而在不同的应用场景中产生了良好的性能。 ????????在原ResNet中直接用LN代替BN会导致次优的性能[83]。随着网络结构和训练技术的所有修改,这里我们重新审视了使用LN来代替BN的影响。我们观察到,我们的ConvNet模型在使用LN训练时没有任何困难;事实上,性能略好,获得了81.5%的准确性。 ????????从现在开始,我们将使用一个LayerNorm作为我们在每个残差块中的归一化选择。 ????????独立的下采样层。在ResNet中,空间下采样是由每个阶段开始时的残差块实现的,使用3×3 conv with stride 2(在shortcut连接处使用1×1 conv with stride 2)。在Swin Transformers中,在各阶段之间增加了一个单独的下采样层。我们探索了一种类似的策略,即使用stride为2的2×2 conv层进行空间下采样。这种修改出人意料地导致了不同的训练。进一步的调查表明,在空间分辨率发生变化的地方添加归一化层有助于稳定训练。这些包括在Swin Transformers中也使用的几个LN层:一个在每个下采样层之前,一个在stem层之后,一个在最后的全局平均池化之后。我们将精度提高到82.0%,大大超过Swin-T的81.3%。 ????????我们将使用单独的下采样层。这将我们带到我们的最终模型,我们将其命名为ConvNeXt。 ????????ResNet、Swin 和 ConvNeXt 块结构的比较可以在图 4 中找到。ResNet-50、Swin-T 和 ConvNeXt-T 的详细架构规范的比较可以在表 9 中找到。 Table 9. ResNet-50、ConvNeXt-T 和 Swin-T 的详细架构规范。 ?Closing remarks.闭幕致辞????????我们已经完成了我们的第一次“演练”,并发现了 ConvNeXt,一个纯 ConvNet,它在这个计算机制中的 ImageNet-1K 分类性能优于 Swin Transformer。值得注意的是,到目前为止讨论的所有设计选择都改编自Vision Transformer。此外,即使在ConvNet文献中,这些设计也不是新奇的--在过去的十年里,它们都被单独研究,但不是整体研究。我们的ConvNeXt模型具有与Swin Transformer大致相同的FLOPS、#参数、吞吐量和内存使用,但不需要特殊的模块,如移位窗口注意力或相对位置偏差。 ????????这些发现令人鼓舞,但还不能完全令人信服--迄今为止,我们的探索仅限于小规模,但Vision Transformer的尺度变换表现才是它们真正的区别所在。此外,ConvNet是否能在下游任务(如物体检测和语义分割)中与Swin Transformers竞争,是计算机视觉从业者关注的核心问题。在下一节中,我们将在数据和模型大小方面扩大我们的ConvNeXt模型,并在一组不同的视觉识别任务中对它们进行评估。 3.对ImageNet的验证评估????????我们构建了不同的ConvNeXt变体,ConvNeXtT/S/B/L,与Swin-T/S/B/L的复杂程度相似[45]。ConvNeXt-T/B分别是ResNet-50/200上 "现代化 "程序的最终结果。此外,我们建立了一个更大的ConvNeXt-XL来进一步测试ConvNeXt的可扩展性。这些变体只在通道数C和每个阶段的块数B上有差异。在ResNets和Swin Transformers之后,通道的数量在每个新阶段都会增加一倍。我们将这些配置总结如下: ? ConvNeXt-T: C = (96, 192, 384, 768), B = (3, 3, 9, 3) ? ConvNeXt-S: C = (96, 192, 384, 768), B = (3, 3, 27, 3) ? ConvNeXt-B: C = (128, 256, 512, 1024), B = (3, 3, 27, 3) ? ConvNeXt-L: C = (192, 384, 768, 1536), B = (3, 3, 27, 3) ? ConvNeXt-XL: C = (256, 512, 1024, 2048), B = (3, 3, 27, 3) 3.1. 设置????????ImageNet-1K数据集由1000个物体类别和120万张训练图像组成。我们报告了ImageNet-1K在验证集上的最高准确性。我们还在ImageNet-22K上进行了预训练,这是一个更大的数据集,包含21841个类(1000个ImageNet-1K类的超集),有1400万张图像用于预训练,然后在ImageNet-1K上微调预训练模型进行评估。我们在下面总结了我们的训练设置。更多的细节可以在附录A中找到。 ????????在ImageNet-1K上进行训练。我们使用AdamW[46]对ConvNeXts进行了300个epochs的训练,学习率为4e-3。之后有一个 20 epoch 的线性预热(tips:利用训练预热(Warmup)学习率的方法,使得前几个周期内的学习率较小,在较小的学习率的预热下模型将逐步趋于稳定,当模型较为稳定后便使用预先设置的学习率进行训练,这有利于加快模型的收敛速度,模型效果更佳。)和一个余弦衰减时间表(tips:余弦函数值先缓慢下降,然后加速下降,再减速下降)。我们使用 4096 的批量大小和 0.05 的权重衰减。对于数据增强,我们采用常见的方案,包括 Mixup [90]、Cutmix [89]、RandAugment [14] 和 Random Erasing [91]。我们使用Stochastic Depth? [37] 和Label Smoothing[69] 对网络进行正则化。应用初始值 1e-6 的层尺度 [74]。我们使用指数移动平均(EMA)[51],因为我们发现它可以减轻较大的模型的过拟合。 ????????在ImageNet-22K上进行预训练。我们在ImageNet-22K上对ConvNeXts进行了90个epochs的预训练,并进行了5个epochs的预热。我们不使用EMA。其他设置遵循ImageNet-1K。 ????????在ImageNet-1K上进行微调。我们在ImageNet-1K上对ImageNet22K预训练的模型进行了30个epochs的微调。我们使用AdamW,学习率为5e-5,余弦学习率计划,层级学习率衰减[6, 12],无预热,批处理大小为512,权重衰减为1e-8。默认的预训练、微调和测试分辨率是2242。此外,我们对ImageNet-22K和ImageNet-1K的预训练模型都以3842的较大分辨率进行微调。与ViTs/Swin Transformers相比,ConvNeXts在不同分辨率下的微调更简单,因为网络是完全卷积的,不需要调整输入补丁大小或插值绝对/相对位置偏差。 3.2. 结果Table 1.ImageNet-1K上的分类准确度。与Transformers类似,ConvNeXt也显示了在更高容量的模型和更大的(预训练)数据集下有更好的扩展行为。按照[45],推理吞吐量是在V100 GPU上测量的。在A100 GPU上,ConvNeXt的吞吐量可以比Swin Transformer高得多。见附录E。(T)ViT结果与90个周期的AugReg[67]训练见附录E。 ????????ImageNet-1K。表1(上)显示了与最近的两个Transformer变体Deit[73]和Swin Transformers[45]以及来自架构搜索的两个ConvNet-RegNets[54]、EfficientNets[71]和EfficientNetsV2[72]的结果比较。在精度计算权衡以及推理吞吐量方面,ConvNeXt与两个强大的ConvNet基线(RegNet[54]和EfficientNet[71])竞争非常有利。ConvNeXt在所有方面的表现也超过了类似复杂程度的Swin Transformer,有时差距很大(例如ConvNeXt-T的0.8%)。与Swin Transformers相比,ConvNeXts没有特殊的模块,如移位窗口或相对位置偏差,也享有更高的吞吐量。 ????????结果中的一个亮点是输入尺寸为3842的ConvNeXt-B:它比Swin-B高出0.6%(85.1%对84.5%),但推理吞吐量高出12.5%(95.7对85.1图像/秒)。我们注意到,当分辨率从2242增加到3842时,ConvNeXt-B比Swin-B的FLOPs/吞吐量优势变得更大。此外,我们观察到,在进一步扩展到ConvNeXt-L时,结果提高了85.5%。 ????????ImageNet-22K.我们在表1(下图)展示了从ImageNet-22K预训练中微调的模型结果。这些实验是很重要的,因为一个广泛的观点是,Vision Transformer有较少的归纳偏差,因此在更大规模的预训练中,可以比ConvNets表现得更好。我们的结果表明,恰当设计的ConvNets在用大型数据集进行预训练时并不逊于Vision Transformer--ConvNeXts的性能仍然与类似规模的Swin Transformers相当或更好,而且吞吐量略高。此外,我们的ConvNeXt-XL模型达到了87.8%的准确率--比ConvNeXt-L的3842的准确率有相当大的提高,表明ConvNeXts是可扩展的架构。 ????????在ImageNet-1K上,EfficientNetV2-L,一个配备了先进模块(如Squeeze-and Excitation[35])和渐进式训练程序的搜索架构取得了顶级性能。然而,在ImageNet-22K的预训练下,ConvNeXt能够超越EfficientNetV2,进一步证明了大规模训练的重要性。 ????????在附录 B 中,我们讨论了 ConvNeXt 的鲁棒性和域外泛化结果。 3.3. ConvNeXt 与 ViT????????在这次消融中,我们研究了我们的ConvNeXt块设计是否可以推广到ViT-style[20]的各向异性架构,这些架构没有下采样层,在所有深度都保持相同的特征分辨率(如14×14)。我们使用与ViT-S/B/L相同的特征尺寸(384/768/1024)构建各向同性的ConvNeXt-S/B/L。深度被设置为18/18/36,以匹配参数和FLOPs的数量。块状结构保持不变(图4)。我们对ViT-S/B使用DeiT[73]的监督训练结果,对ViT-L使用MAE[26]的监督训练结果,因为它们采用了比原始ViTs[20]更好的训练程序。ConvNeXt模型的训练设置与之前相同,但预热时间更长。表2列出了2242分辨率的ImageNet-1K的结果。我们观察到ConvNeXt的性能总体上可以与ViT持平,这表明我们的ConvNeXt块设计在用于非层次模型时具有竞争力。 Table 2.比较各向同性的ConvNeXt和ViT。训练内存是在V100 GPU上测量的,每个GPU的批次大小为32。 4. 下游任务的验证评估????????COCO上的物体检测和分割。我们在COCO数据集上用ConvNeXt骨干对Mask R-CNN[27]和Cascade Mask R-CNN[9]进行微调。在Swin Transformer[45]之后,我们使用了多尺度训练、AdamW优化器和 3×时间表。进一步的细节和超参数设置可以在附录A.3中找到。 ????????表3显示了Swin Transformer、ConvNeXt和ResNeXt等传统ConvNet的物体检测和实例分割结果的比较。在不同的模型复杂度下,ConvNeXt的性能与Swin Transformer相当或更好。当扩大到在ImageNet-22K上预训练的更大的模型(ConvNeXt-B/L/XL)时,在许多情况下,ConvNeXt在box和mask AP方面明显优于Swin Transformer(例如+1.0 AP)。 Table 3. COCO目标检测和分割结果 .使用Mask-RCNN和Cascade Mask-RCNN。?表示该模型是在ImageNet-22K上预训练的。ImageNet-1K的预训练Swin结果来自他们的Github资源库[3]。ResNet-50和X101模型的AP编号来自[45]。我们在A100 GPU上测量FPS。FLOPs是以图像大小(1280,800)计算的 ADE20K上的语义分割。非研究领域,跳过。 5. 相关工作????????混合模式。在ViT之前和之后的时代,结合卷积和self-attentions的混合模型一直被积极研究。在ViT之前,重点是用self-attention/non-local模块来增强ConvNet[8, 55, 66, 79],以捕捉长距离的依赖关系。最初的ViT[20]首次研究了一种混合配置,大量的后续工作集中在将卷积先验重新引入ViT,无论是以显式[15, 16, 21, 82, 86, 88]或隐式[45]的方式。最初的ViT[20]首次研究了一种混合配置,大量的后续工作集中在将卷积先验重新引入ViT,无论是以显式[15, 16, 21, 82, 86, 88]或隐式[45]的方式。 ????????最近基于卷积的方法。Han等人[25]表明,局部Transformer注意力等同于不均匀的动态depthwise?卷积,然后用动态或常规depthwise卷积取代Swin中的MSA块,取得与Swin相当的性能。同时进行的一项工作ConvMixer[4]表明,在小规模的设置中,depthwise卷积可以作为一种有前途的混合策略。ConvMixer使用较小的patch尺寸来达到最佳效果,使得吞吐量比其他基线低很多。GFNet[56]采用快速傅里叶变换(FFT)进行标记混合。FFT也是卷积的一种形式,但有一个全局内核尺寸和循环填充。与许多最近的Transformer或ConvNet设计不同,我们研究的一个主要目标是深入研究标准ResNet的现代化过程并实现最先进的性能。 附录在这个附录中,我们提供了进一步的实验细节(A),稳健性评估结果(B),更多的现代化实验结果(C),以及详细的网络规范(D)。我们进一步对A100 GPU上的模型吞吐量进行了基准测试(E)。最后,我们讨论了我们工作的局限性(F)和社会影响(G)。???????? A. 实验设置A.1. ImageNet (Pre-)training????????我们在表5中提供了ConvNeXts的ImageNet-1K训练和ImageNet-22K预训练设置。这些设置用于我们在表1(第3.2节)的主要结果。所有的ConvNeXt变体都使用相同的设置,只是随机深度率是为模型变体定制的。 ????????在 "ConvNet现代化"(第2节)的实验中,我们也使用了表5对ImageNet-1K的设置,只是EMA被禁用,因为我们发现使用EMA会严重伤害带有BatchNorm层的模型。 ?????????对于各向同性的ConvNeXts(第3.3节),也采用了表A中ImageNet-1K的设置,但预热时间延长到50个epochs,并且对于各向同性的ConvNeXt-S/B,禁用了层级比例。各向同性的ConvNeXt-S/B/L的随机深度率为0.1/0.2/0.5。 A.2. ImageNet Fine-tuning????????我们在表6中列出了ImageNet-1K的微调设置。微调是从预训练中得到的最终模型权重开始的,没有使用EMA权重,即使在预训练中使用了EMA,并且报告了EMA精度。这是因为如果使用EMA权重进行微调,我们并没有观察到改进(与[73]中的观察一致)。唯一的例外是在ImageNet-1K上预训练的ConvNeXt-L,由于过拟合,其模型精度明显低于EMA精度,我们在预训练中选择其最佳EMA模型作为微调的起点。 ????????在微调中,我们使用层级学习率衰减[6, 12],每3个连续的块形成一个组。当模型在3842分辨率下进行微调时,我们在测试过程中使用1.0的裁剪率(即不裁剪),而不是2242分辨率下的0.875。 A.3. 下游任务????????对于ADE20K和COCO的实验,我们遵循BEiT[6]和Swin[45]中使用的训练设置。我们还使用MMDetection[10]和MMSegmentation[13]工具箱。我们使用ImageNet预训练的最终模型权重(而不是EMA权重)作为网络初始化。 ????????我们对CoCo进行了轻量级扫描实验,包括学习率{1e-4,2e-4},分层学习率衰减[6]{0.7,0.8,0.9,0.95},以及随机深度率{0.3,0.4,0.5,0.6,0.7,0.8}。我们使用相同的扫描对Coco上的ImageNet-22K预训练Swin-B/L进行了微调。我们使用官方代码和预先训练好的模型权重[3]。 ????????我们为ADE20K实验扫过的超参数包括学习率{8e-5,1e-4},分层学习率衰减{0.8,0.9},以及随机深度率{0.3,0.4,0.5}。我们使用多尺度测试报告验证MIU结果。其他单尺度测试结果见表7。 B.鲁棒性评估?????????表8中列出了ConvNeXt模型的其他鲁棒性评估结果。我们直接在几个鲁棒性基准数据集上测试我们的ImageNet-1K训练/微调分类模型,如ImageNet-A [33], ImageNet-R [30], ImageNet-Sketch [78] 和ImageNetC/ˉC [31, 48] 数据集。我们报告了ImageNet-C的mean corruption error(mCE),ImageNet-ˉC的mean corruption error,以及所有其他数据集的top-1准确率。 ????????ConvNeXt(尤其是大规模模型的变体)表现出了很好的鲁棒性行为,在一些基准测试上超过了最先进的鲁棒性转化器模型[47]。利用额外的ImageNet-22K数据,ConvNeXtXL展示了强大的领域泛化能力(例如,在ImageNetA/R/Sketch基准上分别达到69.3%/68.2%/55.0%的精度)。我们注意到,这些鲁棒性评估结果是在没有使用任何专门模块或额外微调程序的情况下获得的。 C. 现代化的ResNets:详细结果????????这里我们提供了在ResNet-50 / Swin-T和ResNet-200 / Swin-B两个制度下的现代化实验的详细表格结果。表10和11显示了ImageNet-1K每一步的最高准确率和FLOPs。ResNet-50制度的实验是用3个随机种子运行的。 ???????? ????????对于ResNet-200,每个阶段的初始块数是(3, 24, 36, 3)。在改变阶段比例的步骤中,我们将其改为Swin-B的(3, 3, 27, 3)。这大大减少了FLOPs,所以同时,我们也将宽度从64增加到84,以保持FLOPs在一个类似的水平。在采用depthwise卷积的步骤后,我们进一步将宽度增加到128(与Swin-B的相同),作为一个单独的步骤。 ????????对ResNet-200系统的观察与主论文中描述的ResNet-50系统的观察基本一致。一个有趣的区别是,与ResNet-50系统相比,倒置尺寸带来了更大的改进(+0.79% vs. +0.14%)。与ResNet-50系统相比,使用较少的归一化层也有更大的收益(+0.46% vs. +0.14%)。 D. 详细的架构????????我们在表9中列出了ResNet-50、ConvNeXt-T和Swin-T之间的详细结构比较。对于不同大小的ConvNeXts,只有每个阶段的块数和通道数与ConvNeXt-T不同(详见第三节)。ConvNeXts享有标准ConvNets的简单性,但在视觉识别方面与Swin Transformers的竞争很有利。 F. 局限性:?????????我们证明了ConvNeXt,一个纯粹的ConvNet模型,在图像分类、目标检测、实例和语义分割任务中可以与分层视觉转换器一样好地执行。虽然我们的目标是提供广泛的评估任务,但我们认识到计算机视觉应用更加多样化。ConvNeXt可能更适合某些任务,而Transformers可能对其他任务更灵活。一个恰当的例子是多模式学习,其中交叉注意模块可能更适合于跨许多模式的特征交互建模。此外,当用于需要离散、稀疏或结构化输出的任务时,Transformers可能会更灵活。我们认为,架构选择应该满足手头任务的需要,同时努力做到简单性。???????? G. 社会影响:????????在本世纪20年代,视觉表征学习的研究开始对计算资源提出了巨大的需求。虽然更大的模型和数据集全面提高了性能,但它们也带来了一系列挑战。Vit、Swin和ConvNeXt都在其庞大的模型变体中表现最好。调查这些模型设计不可避免地会导致碳排放的增加。我们论文的一个重要方向和动机是争取简单性--随着模块更复杂,网络的设计空间极大地扩展,掩盖了导致性能差异的关键组件。此外,大型模型和数据集在模型稳健性和公平性方面存在问题。进一步研究了ConvNeXt与Transformer将是一个有趣的研究方向。在数据方面,我们的发现表明,ConvNeXt模型受益于大规模数据集的预训练。虽然我们的方法使用公开可用的ImageNet-22K数据集,但个人可能希望获取自己的数据用于预训练。需要对数据选择采取更加谨慎和负责任的方法,以避免对数据偏差的潜在担忧。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:43:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |