视觉识别的快速发展始于Visiontransformer(ViT)的引入,它很快取代了传统的卷积神经网络(ConvNet),成为最先进的图像分类模型。.另一方面,ViT模型在包括目标检测和语义分割在内的一系列计算机视觉任务中面临着许多挑战。因此,一些研究人员提出了分层的Transformer(如SwinTransformer),他们重新引入了ConvNetprior,这使得Transformer作为通用视觉主干具有实际可行性,并在各种视觉任务上表现出优异的性能。然而,这种混合方法的有效性在很大程度上仍然是由于Transformers的固有优势,而不是卷积固有的归纳偏差。在这项工作中,来自加州大学伯克利分校FAIR的研究人员重新审视了设计空间并测试了纯ConvNet可以达到的极限。研究人员逐渐将标准ResNet“现代化”为视觉Transformer的设计,并在此过程中发现了导致性能差异的几个关键组件。论文地址:https://arxiv.org/pdf/2201.03545.pdf代码地址:https://github.com/facebookresearch/ConvNeXt研究人员将这一系列的纯Co??nvNet模型命名为ConvNeXt。ConvNeXt完全由标准的ConvNet模块构建,ConvNeXt在准确性和可扩展性方面实现了与Transformer的竞争。87.8%ImageNettop-1准确率,在COCO检测和ADE20K分割方面优于SwinTransformer,同时保持了标准ConvNet的简单性和有效性。值得一提的是,这篇论文作为刘庄(ZhuangLiu),是大名鼎鼎的DenseNet的合著者。凭借论文《Densely Connected Convolutional Networks》获得CVPR2017最佳论文奖。作者谢赛宁是ResNeXt的作品。升级卷积神经网络。研究梳理了从ResNet到Transformer-like体积积神经网络的发展轨迹。该研究考虑了两种基于FLOPs的模型尺寸,一种是ResNet-50/Swin-T机制,其FLOPs约为4.5×10^9,另一种是ResNet-200/Swin-B机制,其FLOPs约为15.0×10^9。为简单起见,本研究使用ResNet-50/Swin-T复杂性模型呈现实验结果。为了探索SwinTransformer的设计和标准卷积神经网络的简单性,本研究从ResNet-50模型开始,首先使用与训练visualTransformer相似的训练方法对其进行训练,结果与原始ResNet相比-50说明性能有了很大的提升,将提升后的结果作为基线。该研究随后做出了一系列设计决策,总结为1)宏观设计,2)ResNeXt,3)反演瓶颈,4)卷积核大小,以及5)各种逐层微观设计。下图2展示了“升级网络”每一步的实现过程和结果。所有模型都在ImageNet-1K上进行训练和评估。由于网络复杂性和最终性能密切相关,因此本研究大致控制了探索过程中的FLOPs。训练方法除了网络架构的设计,训练过程也会影响最终的表现。VisionTransformer不仅带来了一些新的架构设计决策和模块,还将多种训练方法(如AdamW优化器)引入到视觉领域。这主要与优化策略和相关的超参数设置有关。因此,本研究的第一步是使用VisionTransformer训练器训练基线模型(ResNet50/200)。2021年RossWightman等人。论文《 An improved training procedure in timm 》提出了一组显着提高ResNet-50模型性能的训练方法。在这篇论文中,研究人员使用了类似于DeiT和SwinTransformer的训练方法。训练从ResNet原来的90个epochs扩展到300个epochs。该研究使用了AdamW优化器、Mixup、Cutmix、RandAugment、RandomErasing等数据增强技术,以及随机深度和标签平滑等正则化方案。这种改进的训练方案将ResNet-50模型的性能从76.1%提高到78.8%(+2.7%),这意味着传统ConvNet和视觉Transformer的性能差异很大一部分可能是由训练技巧造成的。宏观设计本研究的第二步分析了当前SwinTransformer的宏观网络设计。SwinTransformer使用类似于卷积神经网络的多阶段设计,每个阶段具有不同的特征图分辨率。两个重要的设计考虑因素是相位计算比和骨干架构。一方面,ResNet中跨阶段计算分布的原始设计在很大程度上受到实验的影响。另一方面,Swin-T遵循相同的原则,但阶段计算比率略有不同。本研究将每个阶段的块数从ResNet-50中的(3,4,6,3)调整为(3,3,9,s3),以便FLOPs与Swin-T对齐。这将模型准确率从78.8%提高到79.4%。通常,骨干架构侧重于网络如何处理输入图像。由于自然图像中固有的冗余,vanilla架构在标准ConvNets和VisionTransformers中积极地将输入图像下采样到适当的特征图大小。一个标准的ResNet由一个步幅为2的7×7卷积层和一个最大池化组成,它允许将输入图像下采样4倍。VisionTransformer使用“patchify”策略,而SwinTransformer使用一个类似的“patchify”层,但使用较小的补丁大小来适应架构的多阶段设计。该研究用步幅为4的4×4卷积层实现的patchify层取代了ResNet骨干架构,将准确度从79.4%提高到79.5%。这表明ResNet的骨干架构可以用更简单的patchify层代替。第三步ResNeXt-ify本研究尝试采用ResNeXt[82]的思想,它比普通的ResNet有更好的FLOPs/accuracytrade-off。核心组件是分组卷积,其中卷积滤波器被分成不同的组。ResNeXt的指导原则是“使用更多的组,扩大宽度”。更准确地说,ResNeXt对瓶颈块中的3×3卷积层采用分组卷积。这扩展了网络宽度以补偿由于显着降低的FLOPs而导致的容量损失。该研究使用分组卷积的一个特例——深度卷积,其中组数等于通道数。Depthwise卷积已被MobileNet[32]和Xception[9]使用。研究人员注意到,depthwiseconvolution类似于self-attention中的weightedsum操作,以per-channel为基础进行操作,即只在空间维度上混合信息。深度卷积的使用有效地减少了网络的FLOPs。按照ResNeXt中提出的策略,本研究将网络宽度增加到与Swin-T相同的通道数(从64增加到96)。随着FLOPs(5.3G)的增加,网络性能达到80.5%。反转瓶颈Transformer中的一个重要设计是反转瓶颈的产生,其中MLP块的隐藏维度比输入维度宽四倍,如下图4所示。有趣的是,Transformer的这种设计与卷积神经网络中使用的扩展比为4的逆瓶颈设计有关。因此,本研究的第四步探索反演瓶颈的设计。如下图3所示,虽然depthwise卷积层的FLOPs增加了,但是由于下采样残差块的shortcut1×1卷积层的FLOPs明显减少,整个网络的FLOPs减少到4.6G。有趣的是,这将性能从80.5%略微提高到80.6%。在ResNet-200/Swin-B方案中,这一步带来了更多的性能提升——从81.9%到82.6%,同时还减少了FLOPs。KernelSizeStep5这项研究探讨了大卷积核的作用。VisionTransformer最显着的特性是它的非局部自注意力,每一层都有一个全局感受野。尽管大卷积核已用于卷积神经网络,但黄金标准(VGGNet[62])是将卷积层与小卷积核(3×3)堆叠在一起。尽管SwinTransformer将局部窗口重新引入到自注意力块中,但窗口大小至少为7×7,明显大于3×3ResNe(X)t内核大小。因此,本研究重新审视了在卷积神经网络中使用大卷积核的作用。向上移动深度卷积层。要探索大卷积核,前提是将深度卷积层的位置上移(如图3(c)所示)。同样,MSA块也放在Transformer中的MLP层之前。由于设置了反转瓶颈块,复杂、低效的模块(MSA、大卷积核)的通道较少,而高效、密集的1×1层将承担繁重的工作。所以这个中间步骤将FLOPs减少到4.1G,导致性能暂时下降到79.9%。增加卷积核。经过以上准备工作,使用更大的卷积核具有显着的优势。该研究尝试了几种卷积核大小:3、5、7、9、11。网络的性能从79.9%(3×3)提高到80.6%(7×7),而网络的FLOPs大致保持不变相同的。此外,我们观察到更大内核的好处是饱和点为7×7,并在大容量模型中验证了这种行为。当内核大小超过7×7时,ResNet-200机制模型没有显示出进一步的增益。因此,本研究在每个块中使用7×7深度卷积。至此,宏观网络架构升级调整工作已经完成。Micro-DesignNext研究人员在微尺度上探索了一些架构差异——这里的大部分探索都是在层面上进行的,重点关注激活函数和归一化层的具体选择。将ReLU替换为GELU。随着时间的推移,研究人员开发了许多激活函数,但ReLU因其简单有效的特点,在ConvNet中仍被广泛使用。ReLU也被用作原始Transformer中的激活函数。GELU可以被认为是ReLU的一种更平滑的变体,被用于最先进的Transformers,包括Google的BERT和OpenAI的GPT-2,以及ViT等。研究发现ReLU也可以被GELU替代在具有相同精度(80.6%)的ConvNet。更少的激活函数。Transformer和ResNet块之间的一个小区别是Transformer的激活函数更少。如图4所示,本研究从残差块中消除了所有GELU层,除了两个1×1层之间的GELU层,它复制了Transformer块的样式。这个过程将结果提高了0.7%到81.3%,这实际上与Swin-T性能相当。更少的归一化层。Transformer块通常还具有较少的归一化层。在这里,该研究删除了两个BatchNorm(BN)层,在conv1×1层之前只留下一个BN层。这进一步将性能提升至81.4%,已经超过了Swin-T的结果。请注意,该研究的每个块的归一化层数少于Transformer,研究人员发现在块的开头添加一个额外的BN层并没有提高性能。将BN替换为LN。BatchNorm(BN)是ConvNet中的重要组成部分,因为它可以提高收敛性并减少过度拟合。但是,BN也有许多复杂性,可能会对模型的性能产生不利影响。研究人员已多次尝试开发替代方法,但BN仍然是大多数视觉任务的首选方法。在原始ResNet中直接用LN替换BN性能较差。随着网络架构和训练技术的改进,本研究重新审视了使用LN代替BN的影响,并得出结论,ConvNet模型使用LN进行训练没有困难;事实上,性能有所提高,达到了81.5%的准确率。单独的下采样层。在ResNet中,空间下采样是通过每个阶段开始时的残差块实现的,使用stride=2的3×3卷积。在SwinTransformer中,在阶段之间添加了一个单独的下采样层。本研究探索了一种类似的策略,在该策略中,研究人员使用stride=2的2×2卷积层进行空间下采样。令人惊讶的是,这种变化导致了不同的训练结果。进一步的研究表明,在空间分辨率发生变化的地方添加归一化层有助于稳定训练。这项研究可以将准确率提高到82.0%,大大超过了Swin-T的81.3%。该研究采用了拆分下采样层,从而产生了最终模型ConvNeXt。图4显示了ResNet、Swin和ConvNeXt块结构的比较。表9显示了ResNet-50、Swin-T和ConvNeXt-T的详细架构规范的比较。实验ImageNet实验评估本研究构建了一个不同的ConvNeXt变体,ConvNeXtT/S/B/L,它具有与Swin-T/S/B/L相似的复杂性,可以根据基准进行评估。此外,该研究还构建了一个更大的ConvNeXt-XL来进一步测试ConvNeXt的可扩展性。不同变体模型之间的区别在于通道数和模块数。详情如下:ResultsImageNet-1K:下表比较了ConvNeXt和Transformer变体DeiT、SwinTransformer以及RegNets和EfficientNets的结果。从结果中可以得出:ConvNeXt在精度-计算权衡和推理吞吐量方面取得了与ConvNet基线(RegNet和EfficientNet)有竞争力的结果;ConvNeXt的性能也优于具有相似复杂度的SwinTransformer;与Swin相比,ConvNeXts与Transformers相比也具有更高的吞吐量,无需专门的模块,例如移动窗口或相对位置偏置。ImageNet-22K:ImageNet-22K预训练fine-tuned的模型结果如下表所示(header参考上表)。这些实验很重要,因为人们普遍认为VisionTransformers的归纳偏差较小,因此在进行大规模预训练时可以比ConvNet表现更好。该研究表明,在使用大型数据集进行预训练时,正确设计的ConvNets并不逊色于VisionTransformers——ConvNeXt的性能仍然与类似大小的SwinTransformer相当或更好,吞吐量略高。此外,研究中提出的ConvNeXt-XL模型达到了87.8%的准确率——比ConvNeXt-L的384^2有了相当大的改进,证明了ConvNeXt是一个可扩展的架构。各向同性ConvNeXt与ViT:在消融实验中,我们使用与ViT-S/B/L(384/768/1024)相同的特征尺寸构建各向同性ConvNeXt-S/B/L。深度设置为18/18/36以匹配参数和FLOP的数量,块结构保持不变(图4)。ImageNet-1K在224^2分辨率下的结果如表2所示。结果表明,ConvNeXt的性能与ViT相当,表明ConvNeXt块设计在用于非分层模型时仍然具有竞争力。DownstreamTaskEvaluationObjectDetectionandSegmentationResearchonCOCO:本研究使用ConvNeXt作为主干,在COCO数据集上微调MaskR-CNN和CascadeMaskR-CNN。表3比较了SwinTransformer、ConvNeXt和传统ConvNets(如ResNeXt)在对象检测和实例分割方面的结果。结果表明,在不同的模型复杂度下,ConvNeXt的性能与SwinTransformer相当或更好。基于ADE20K的语义分割:在表4中,该研究报告了使用多尺度测试的验证mIoU。ConvNeXt模型可以在不同的模型容量上取得有竞争力的性能,进一步验证了ConvNeXt设计的有效性。
