一、引言
在计算机视觉领域,卷积神经网络(Convolutional Neural Networks,简称 CNN)长期以来一直是核心技术,自诞生以来,它在图像分类、目标检测、语义分割等诸多任务中都取得了令人瞩目的成果。然而,随着 Vision Transformer(ViT)的出现,计算机视觉领域的格局发生了重大变化。ViT 通过自注意力机制,打破了传统卷积神经网络的局部感知局限,能够捕捉长距离依赖关系,在图像分类等任务中展现出强大的性能,迅速成为研究热点 。
在这样的背景下,ConvNeXt 应运而生。它并不是对传统卷积神经网络的简单修补,而是一次全面的升级。ConvNeXt 的研究者们深入剖析了 Transformer 成功背后的设计理念,如大 kernel size、层归一化位置、MLP 结构等,并巧妙地将这些理念融入到卷积神经网络架构中 。通过这种方式,ConvNeXt 在保持卷积神经网络高效性的同时,极大地增强了其对图像中长距离依赖关系的理解能力,实现了性能的飞跃 。在 ImageNet 图像分类任务中,ConvNeXt 达到了令人惊叹的准确率,甚至超越了一些基于 Transformer 的模型;在 COCO 目标检测和 ADE20K 语义分割等复杂任务中,ConvNeXt 也展现出了卓越的性能,为计算机视觉任务的发展提供了新的思路和方法。
ConvNeXt_font_6">二、ConvNeXt 诞生背景
在计算机视觉的发展历程中,卷积神经网络(CNN)长期占据着主导地位。从早期的 LeNet 用于手写数字识别,到后来在 ImageNet 竞赛中大放异彩的 AlexNet,再到 VGGNet、ResNet、Inception 等经典架构的相继问世,CNN 在图像分类、目标检测、语义分割等众多任务中取得了显著的成果 。CNN 的成功源于其独特的卷积层设计,能够自动提取图像的局部特征,并且通过权值共享大大减少了模型的参数数量,降低了计算复杂度,使得模型能够高效地处理大规模图像数据 。
然而,随着自然语言处理领域 Transformer 的成功,其独特的自注意力机制开始被引入计算机视觉领域。2020 年,Vision Transformer(ViT)的出现,开启了视觉领域的新篇章 。ViT 打破了传统 CNN 基于局部卷积的处理方式,通过将图像分割成多个小块(patches),并将这些小块视为序列中的元素,利用自注意力机制对图像进行全局建模,能够捕捉长距离依赖关系 。在大规模数据集上预训练后,ViT 在图像分类任务中展现出了超越传统 CNN 的性能,迅速成为研究热点。
尽管 ViT 在图像分类任务中表现出色,但在一些复杂的视觉任务,如目标检测和语义分割中,由于其缺乏对图像局部细节的精细处理能力,以及计算复杂度较高等问题,应用受到了一定的限制 。为了克服这些问题,层次化的 Transformer,如 Swin Transformer 应运而生 。Swin Transformer 重新引入了一些 CNN 的设计元素,如层次化结构和局部窗口注意力机制,使得 Transformer 能够更好地适应不同尺度的视觉任务,在多个视觉任务中取得了优异的性能 。
在 Transformer 不断发展的背景下,卷积神经网络的发展似乎陷入了瓶颈。但 ConvNeXt 的出现,为卷积神经网络的发展注入了新的活力。ConvNeXt 的研究者们并没有盲目地追随 Transformer 的潮流,而是深入思考卷积神经网络的潜力。他们认为,虽然 Transformer 在某些方面具有优势,但卷积神经网络的固有归纳偏差,如平移不变性和局部性,仍然是其在视觉任务中的独特优势 。通过对 Transformer 成功背后的设计理念进行深入分析,如大 kernel size、层归一化位置、MLP 结构等,ConvNeXt 尝试将这些理念融入到卷积神经网络中,探索卷积神经网络的新设计空间 。
ConvNeXt_font_16">三、ConvNeXt 设计策略
3.1 Macro Design
3.1.1 Changing stage compute ratio
在传统的 ResNet50 中,每个阶段的计算模块比例为 (3:4:6:3) ,这是基于经验设计的,旨在与下游任务(如目标检测)相兼容 。而 Swin-Transformer 中,小模型(Swin-T)的阶段比例大致为 (1:1:3:1),大模型(Swin-L)的比例为 (1:1:9:1) 。
ConvNeXt 参考了 Swin-Transformer 的设计,将 ResNet50 每个阶段的 block 数从 (3,4,6,3) 调整为 (3,3,9,3),使其与 Swin-T 的计算比例更为接近 。这一调整使得模型的准确率从 78.8% 提升到了 79.4% 。虽然模型的 GFLOPs 从 4.1 增加到了 4.5,有部分原因是模型参数量的增加带来了准确率的提升,但这种阶段计算比例的调整确实为模型性能的提升做出了贡献 。对于更大的模型,ConvNeXt 也采用了类似 Swin-L 的 (1:1:9:1) 比例,即 block 数为 (3,3,27,3) ,进一步优化了模型在不同规模下的性能表现 。
3.1.2 Changing stem to “Patchify”
在标准的 ResNet 中,stem 层用于在网络开始时处理输入图像,它包含一个 kernel_size = 7x7、strides = 2 的卷积层,随后是一个最大池化层,共同对输入图像进行 4 倍下采样 。这种设计通过卷积和池化操作,快速聚合输入图像的信息,将其转换为适合后续网络处理的特征尺寸 。
而在 Vision Transformer(ViT)中,采用了 “Patchify” 策略,即将图像分割成多个不重叠的小块(patches),并将这些小块视为序列中的元素进行处理 。Swin Transformer 则使用了 kernel_size = 4x4、strides = 4 的卷积来进行 4 倍下采样,实现了类似的 “Patchify” 效果 。
ConvNeXt 将 ResNet 的 stem 层替换为与 Swin Transformer 类似的 patchify stem,即使用一个 kernel_size = 4x4、strides = 4 的卷积层 。这一替换使得模型的准确率从 79.4% 提升到了 79.5%,同时 GFLOPs 从 4.5 略微下降到 4.4 。这表明,ResNet 中较为复杂的 stem 层可以被一个更简单的 “patchify” 卷积层所取代,且在减少计算量的同时,还能提升模型的性能 。这种简单而有效的设计调整,体现了 ConvNeXt 对传统卷积神经网络结构的创新优化 。
3.2 ResNeXt-ify
ResNeXt 的核心思想是 “使用更多的组,扩大宽度”,通过分组卷积(将通道分组,然后以组为单位进行卷积)的方式来提升模型的计算速度,在 FLOPs 和 accuracy 之间做到了更好的平衡 。
ConvNeXt 进一步借鉴了 ResNeXt 的思想,采用了更为激进的 depthwise convolution(深度可分离卷积),即分组数等于输入通道数 。这种卷积方式使得每个卷积核只负责输入特征矩阵的一个通道,卷积核的个数等于输入特征矩阵的通道数,从而使得输出特征矩阵的通道数也等于输入特征矩阵的通道数 。与传统卷积相比,深度可分离卷积大大减少了计算量,但同时也可能导致模型表达能力的下降 。
为了弥补这一不足,ConvNeXt 将最初的通道数由 64 调整为 96,使其与 Swin Transformer 保持一致 。通过这一调整,模型在减少计算量的同时,能够保持较高的准确率,最终准确率达到了 80.5% 。这种对通道数和卷积方式的优化,展示了 ConvNeXt 在提升模型效率和性能方面的探索 。
3.3 Inverted Bottleneck
在传统的 ResNet 中,采用的是瓶颈结构(Bottleneck),其结构特点是两头粗中间细,即先通过 1x1 卷积减少通道数,再进行 3x3 卷积,最后通过 1x1 卷积恢复通道数 。这种结构在一定程度上减少了计算量,但可能会导致信息的丢失 。
而在 MobileNetV2 中,使用了反瓶颈结构(Inverted Bottleneck),即两头细中间粗 。Transformer block 中的 MLP 模块也具有类似的结构,其隐藏维度比输入维度宽四倍 。ConvNeXt 借鉴了这种反瓶颈结构,将其应用到模型中 。
具体来说,ConvNeXt 将传统的 1x1 Conv -> DwConv -> 1x1 Conv 结构调整为 DwConv -> 1x1 Conv -> 1x1 Conv 。在作者的实现中,还将 1x1 的卷积用全连接来替代,在 Pytorch 计算时会更快,即 DwConv -> Linear -> GELU -> Linear 。这种结构调整使得模型在较小的模型上准确率由 80.5% 提升到了 80.6%,在较大的模型上准确率由 81.9% 提升到 82.6% 。反瓶颈结构的应用,有效地避免了信息流失,提升了模型的性能 。
3.4 Large Kernel Sizes
在常见的卷积神经网络中,如 VGGNet,通常使用小卷积核(如 3x3),通过堆叠多个小卷积核来代替大卷积核,以获得较大的感受野 。然而,Swin-Transformer 重新引入了较大的卷积核,其窗口大小至少为 7x7,明显大于 ResNe (X) t 的 3x3 卷积核 。
ConvNeXt 为了探索大卷积核的效果,首先将 depthwise conv 模块上移,原来是 1x1 conv -> depthwise conv -> 1x1 conv,现在变成 depthwise conv -> 1x1 conv -> 1x1 conv 。这一调整是因为在反瓶颈结构中,将复杂 / 低效的模块(大内核 conv)放在通道数较少的位置,而让高效、密集的 1x1 层完成主要的计算工作,是一种更合理的设计选择 。但这一中间步骤导致模型的准确率暂时下降到了 79.9%,同时 FLOPs 也减小了 。
随后,ConvNeXt 增大了 depthwise conv 的卷积核大小,从 3x3 逐渐增大到 5、7、9、11 。实验结果表明,当卷积核大小增加到 7x7 时,模型的准确率从 79.9% 提升到了 80.6%,且网络的 flop 基本保持不变 。进一步增大卷积核大小,模型的性能提升逐渐达到饱和,在更大容量的模型中,当卷积核大小超过 7x7 时,ResNet-200 模型不再显示出进一步的增益 。这说明,在合适的结构设计下,7x7 的卷积核能够在不增加过多计算量的情况下,有效提升模型的性能 。
3.5 Micro Designs
在激活函数方面,ConvNeXt 将传统的 ReLU 激活函数替换为 GELU 激活函数 。GELU 函数在 Transformer 中被广泛使用,它能够更好地模拟人类神经元的激活过程,具有更好的非线性表达能力 。虽然在替换激活函数后,模型的准确率没有明显变化,但 GELU 激活函数为模型的性能提升提供了潜在的支持 。
在归一化层方面,ConvNeXt 进行了多方面的调整 。首先,减少了激活函数和归一化层的使用数量 。在一般的卷积网络中,每个卷积后通常会添加一个激活函数和一个归一化层,而在 Transformer 中,每个模块后添加一个激活函数 。ConvNeXt 仿照 Transformer 的设计,只在 Depthwise Convolution 后保留了一个 Normalization 层,结果发现这样的调整反而带来了 0.7 个点的准确率提升,从 80.6% 提升到 81.3% 。这表明,过于频繁地进行非线性投影和归一化操作,可能会对网络特征的信息传递产生负面影响 。
其次,ConvNeXt 将 BN(Batch Normalization)替换为 LN(Layer Normalization) 。由于 Transformer 中使用了 LN,且一些研究发现 BN 会对网络性能带来一些负面影响,ConvNeXt 将所有的 BN 替换为 LN,使得准确率从 81.4% 提升到 81.5% 。LN 能够对每个样本的所有特征进行归一化,而 BN 是对一个批次内所有样本的同一特征进行归一化,在某些情况下,LN 能够更好地适应不同样本的特征分布,从而提升模型的性能 。
最后,在 Swin Transformer 中,下采样层是单独的,而标准 ResNet 的下采样层通常与其他层保持相似的计算策略 。ConvNeXt 仿照 Swin Transformer,使用 stride = 2 的 2x2 卷积进行下采样,并在每个下采样层前面增加了 LN 来稳定训练 。这一调整使得模型的准确率从 81.5% 提升到 82.0% 。通过这些微观设计的调整,ConvNeXt 在细节上不断优化模型,进一步提升了模型的性能 。
ConvNeXt_font_68">四、ConvNeXt 网络结构与特点
4.1 网络结构概览
ConvNeXt 整体采用了分层结构,类似于经典的 ResNet 网络 。它主要由 stem 层、多个 ConvNeXt Block 以及分类头组成 。
-
stem 层:负责对输入图像进行初步处理,将输入图像下采样为合适的尺寸 。在 ConvNeXt 中,stem 层使用了一个 kernel_size = 4x4、strides = 4 的卷积层,这种设计类似于 Swin Transformer 中的 “Patchify” 操作,能够快速将图像转换为适合后续网络处理的特征图 。
-
ConvNeXt Block:是网络的核心组件,多个 ConvNeXt Block 按照不同的阶段进行堆叠 。每个阶段的 Block 数量和通道数逐渐增加,通过这种方式逐步提取图像的高级特征 。例如,在 ConvNeXt-Tiny 模型中,四个阶段的 Block 数量分别为 3、3、9、3,通道数分别为 96、192、384、768 。每个 ConvNeXt Block 内部包含了深度可分离卷积(Depthwise Convolution)、层归一化(Layer Normalization)、多层感知机(MLP)等模块,通过这些模块的协同工作,实现对特征的有效提取和融合 。
-
分类头:位于网络的最后,用于对提取到的特征进行分类预测 。通常采用全连接层,将最后一个阶段输出的特征映射到类别空间,得到图像属于各个类别的概率 。
4.2 关键特点解析
-
大核卷积:ConvNeXt 引入了大核卷积层,如 7x7 的深度可分离卷积 。大核卷积能够扩大感受野,使模型能够捕捉更广泛的上下文信息,类似于 Transformer 中的多头自注意力机制,有助于提高模型对图像中长距离依赖关系的理解能力 。例如,在图像分类任务中,大核卷积可以更好地捕捉图像中物体的整体结构和上下文信息,从而提升分类的准确性 。
-
层归一化:与传统 CNN 中常用的批量归一化(Batch Normalization)不同,ConvNeXt 在每个卷积块之后使用层归一化(Layer Normalization) 。层归一化对每个样本的所有特征进行归一化,而不是像批量归一化那样对一个批次内所有样本的同一特征进行归一化 。这种方式有助于稳定训练过程,特别是在处理小批量数据时,能够加速模型的收敛 。
-
MLP 结构:采用了类似于 ViT 中的 MLP(多层感知机)结构,即由两层全连接层组成,中间夹带一个 GELU 激活函数 。这种结构代替了传统的卷积 - 归一化 - 激活函数的组合,增强了模型的非线性表达能力,使得模型能够学习到更复杂的特征表示 。
-
深分层结构:类似于 ResNet 等经典网络,ConvNeXt 采用深度分层的设计,通过逐步下采样和增加特征维度来构建多尺度特征表示 。这种设计有助于模型学习从低级到高级的视觉特征,在不同尺度上对图像进行分析和理解,从而更好地适应各种视觉任务的需求 。
ConvNeXt_font_92">五、ConvNeXt 性能表现
5.1 与 Swin Transformer 对比
在相同的 FLOPs(浮点运算数)下,ConvNeXt 展现出了比 Swin Transformer 更为出色的性能 。从推理速度上看,ConvNeXt 由于其独特的设计,尤其是对卷积结构的优化,使得它在处理图像时能够更高效地进行计算,推理速度更快 。例如,在一些实时性要求较高的应用场景,如自动驾驶中的目标检测,更快的推理速度意味着车辆能够更及时地对周围环境做出反应,提高行驶的安全性 。
在准确率方面,ConvNeXt 同样表现优异 。在 ImageNet 图像分类任务中,ConvNeXt-XL 达到了 87.8% 的准确率 ,超越了 Swin Transformer 在相同数据集上的表现 。这表明 ConvNeXt 在对图像特征的提取和分类能力上具有明显优势,能够更准确地识别图像中的物体类别 。这种高准确率使得 ConvNeXt 在对精度要求极高的领域,如医学图像诊断中,能够为医生提供更可靠的诊断依据,有助于提高疾病的诊断准确率 。
5.2 在 COCO 目标检测和 ADE20K 语义分割任务中的表现
在 COCO 目标检测任务中,ConvNeXt 展现出了卓越的性能 。它能够准确地定位图像中的多个目标,并对其进行分类,平均精度(AP)达到了较高的水平 。这得益于 ConvNeXt 强大的特征提取能力,它能够捕捉到目标物体的各种细节特征,从而提高检测的准确性 。例如,在复杂的场景中,ConvNeXt 能够准确地检测出不同大小、不同姿态的物体,为后续的分析和决策提供了有力支持 。
在 ADE20K 语义分割任务中,ConvNeXt 同样表现出色 。它能够将图像中的每个像素点准确地分类到相应的语义类别中,分割精度高 。通过对图像中不同区域的特征进行深入分析,ConvNeXt 能够清晰地划分出不同物体的边界,实现对图像的精细语义分割 。这在场景理解、图像编辑等领域具有重要的应用价值,例如在智能城市监控中,能够帮助分析人员更准确地了解场景中的各种元素和活动 。这些结果表明,ConvNeXt 在不同的视觉任务中都具有良好的适用性和强大的性能 。
六、应用领域
6.1 图像分类
在图像分类任务中,ConvNeXt 表现出色,已被广泛应用于各种场景 。例如,在医疗图像分类领域,它可以帮助医生快速准确地识别 X 光、CT 等医学影像中的病变类型,为疾病的诊断提供有力支持 。在农业领域,通过对农作物图像的分类,ConvNeXt 能够识别农作物的品种、生长状态以及病虫害情况,为精准农业提供数据依据 。在安防监控中,ConvNeXt 可以对监控视频中的人员、车辆等目标进行分类识别,提高监控效率和安全性 。
6.2 物体检测
在物体检测任务中,ConvNeXt 能够准确地定位图像中的目标物体,并识别其类别 。以智能交通系统为例,它可以实时检测道路上的车辆、行人、交通标志等物体,为自动驾驶提供关键的感知信息 。在工业生产中,ConvNeXt 可以用于检测产品的缺陷,确保产品质量 。在智能物流中,能够对包裹、货物等进行检测和分类,提高物流效率 。
6.3 语义分割
在语义分割任务中,ConvNeXt 能够将图像中的每个像素点分类到相应的语义类别中,实现对图像的精细理解 。在城市规划领域,通过对卫星图像的语义分割,能够识别出建筑物、道路、绿地等不同的地物类型,为城市规划提供数据支持 。在环境监测中,ConvNeXt 可以对遥感图像进行语义分割,分析土地利用变化、植被覆盖情况等 。在虚拟现实和增强现实中,语义分割能够帮助系统更好地理解场景,实现更自然的交互 。
七、总结与展望
ConvNeXt 的出现,为计算机视觉领域带来了新的曙光 。它通过深入剖析 Transformer 的设计理念,并将其巧妙地融入卷积神经网络中,实现了卷积神经网络的全面升级 。在设计策略上,从宏观的阶段计算比例调整、stem 层的 “Patchify” 化,到微观的激活函数、归一化层的选择,每一个细节都经过精心设计,使得 ConvNeXt 在性能上实现了质的飞跃 。
在与 Swin Transformer 的对比中,ConvNeXt 在相同的计算资源下,展现出了更快的推理速度和更高的准确率 。在 COCO 目标检测和 ADE20K 语义分割等复杂任务中,ConvNeXt 也表现出色,证明了其强大的通用性和有效性 。在实际应用中,ConvNeXt 已经在图像分类、物体检测、语义分割等多个领域得到了广泛的应用,为解决各种实际问题提供了有力的支持 。
未来,ConvNeXt 有望在更多的领域发挥重要作用 。随着硬件技术的不断发展,ConvNeXt 可能会在资源受限的设备上得到更广泛的应用,如移动设备、嵌入式系统等 。通过进一步的优化和改进,ConvNeXt 有望在性能上取得更大的突破,为计算机视觉领域的发展带来更多的惊喜 。同时,ConvNeXt 的成功也为其他卷积神经网络的发展提供了新的思路和方向,推动整个计算机视觉领域不断向前发展 。
延伸阅读