论文笔记《ConvNeXt V2:Co-designing and Scaling ConvNets with Masked Autoencoders》

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

原文链接:论文笔记《ConvNeXt V2:Co-designing and Scaling ConvNets with Masked Autoencoders》 | Karl的博客

CSDN链接:论文笔记《ConvNeXt V2:Co-designing and Scaling ConvNets with Masked Autoencoders》-CSDN博客

论文链接:[2301.00808] ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders (arxiv.org)

代码链接:facebookresearch/ConvNeXt-V2: Code release for ConvNeXt V2 model (github.com)

Abstract

在改进的架构和更好的表示学习框架的推动下,视觉识别领域在本世纪20年代初经历了快速的现代化和性能提升。例如,以ConvNeXt[52]为代表的现代卷积神经网络已经在各种场景中展示了强大的性能。虽然这些模型最初是为使用ImageNet标签进行监督学习而设计的,但它们也可能受益于自监督学习技术,如掩码自动编码器(MAE)[31]。然而,我们发现简单地结合这两种方法会导致表现欠佳。在本文中,我们提出了一个全卷积掩码自编码器框架和一个新的全局响应归一化(GRN)层,该层可以添加到ConvNeXt架构中以增强信道间特征竞争。这种自监督学习技术和架构改进的共同设计产生了一个名为ConvNeXt V2的新模型家族,它显著提高了纯ConvNets在各种识别基准上的性能,包括ImageNet分类、COCO检测和ADE20K分割。我们还提供了各种大小的预训练ConvNeXt V2模型,从在ImageNet上具有76.7% top-1精度的高效3.7 M参数Atto模型,到仅使用公共训练数据即可实现最先进的88.9%精度的650M Huge模型。

1. Introduction

在前几十年研究突破的基础上[34, 44, 47, 60, 68],视觉识别领域迎来了大规模视觉表征学习的新时代。预训练的大规模视觉模型已经成为特征学习和实现广泛视觉应用的基本工具。视觉表示学习系统的性能在很大程度上受三个主要因素的影响:选择的神经网络架构、用于训练网络的方法和用于训练的数据。在视觉识别领域,这些领域的进步都有助于整体性能的提高。

神经网络架构设计的创新一直在表征学习领域发挥着重要作用。卷积神经网络架构(ConvNets)[34, 44, 47]对计算机视觉研究产生了重大影响,因为它允许在各种视觉识别任务中使用通用的特征学习方法[25, 33],而不是依赖于人工特征工程。近年来,最初为自然语言处理而开发的transformer架构[68]也因其在模型和数据集大小方面的强大缩放行为[21]而受到欢迎。最近,ConvNeXt[52]架构使传统的卷积网络现代化,并证明纯卷积模型也可以是可扩展的架构。然而,探索神经网络架构设计空间的最常见方法仍然是通过对ImageNet上的监督学习性能进行基准测试。

在另一项研究中,视觉表征学习的重点已经从有标签的监督学习转向有预训练目标的自我监督预训练。在许多不同的自监督算法中,掩码自编码器(mask autoencoders, MAE)[31]最近将掩码语言建模成功地引入了视觉领域,并迅速成为视觉表征学习的一种流行方法。然而,自监督学习中的一个常见做法是使用为监督学习设计的预定架构,并假设该设计是固定的。例如,MAE是使用视觉transformer[21]架构开发的。

将架构的设计元素和自监督学习框架结合起来是可能的,但是这样做可能会在使用带有掩码自编码器的ConvNeXt时带来挑战。一个问题是,MAE有一个特定的编解码器设计,该设计针对transformers的序列处理能力进行了优化,这使得计算量大的编码器能够专注于可见的小块,从而减少预训练成本。这种设计可能与使用密集滑动窗口的标准卷积神经网络不兼容。此外,如果不考虑体系结构和训练目标之间的关系,那么是否能够实现最佳性能可能是不清楚的。事实上,之前的研究表明,用基于掩码的自监督学习训练卷积神经网络可能很困难,而且经验证据表明,transformers和卷积神经网络可能具有不同的特征学习行为,从而影响表征质量。

为此,我们提出在同一框架下共同设计网络架构和掩码自编码器,目的是使基于掩码的自监督学习对ConvNeXt模型有效,并获得与使用transformers相似的结果。

在设计掩码自编码器时,我们将掩码输入视为一组稀疏小块,并使用稀疏卷积[28]只处理可见部分。这个想法的灵感来自于在处理大规模3D点云时使用稀疏卷积[15, 76]。在实践中,我们可以用稀疏卷积实现ConvNeXt,在微调时,权重被转换回标准的密集层,而不需要特殊处理。为了进一步提高预训练效率,我们将transformer解码器替换为单个ConvNeXt块,使整个设计完全卷积。我们观察到这些变化的混合结果:学习到的特征是有用的,并且在基线结果上有所改进,但是微调性能仍然不如基于transformer的模型好。

然后,我们对ConvNeXt的不同训练配置进行特征空间分析。当直接在掩码输入上训练ConvNeXt时,我们发现了MLP层特征崩溃的潜在问题。为了解决这个问题,我们建议增加一个全局响应规范化层来增强通道间的特征竞争。当模型用掩码自编码器预训练时,这种变化是最有效的,这表明重用来自监督学习的固定架构设计可能是次优的。

总之,我们介绍了ConvNeXt V2,当与掩码自编码器结合使用时,它展示了改进的性能。我们发现,该模型显著提高了纯卷积神经网络在各种下游任务上的性能,包括ImageNet分类[60]、COCO对象检测[49]和ADE20K分割[81]。ConvNeXt V2模型可用于各种计算机制,包括不同复杂性的模型:从3.7M参数的Atto模型,在ImageNet上达到76.7%的top-1精度,到使用IN-22K标签时达到最先进的88.9%精度的650M Huge模型。

ConvNets. 卷积神经网络的设计于20世纪80年代首次引入,并使用反向传播进行训练,多年来在优化、准确性和效率方面经历了许多改进[35, 36, 39, 44, 58, 61, 63, 75]。这些创新主要是通过在ImageNet数据集上使用监督训练发现的。近年来,人们在使用自监督的预训练任务(如旋转预测和着色)来执行架构搜索方面做出了一些努力,例如UnNAS[50]。最近,ConvNeXt[52]对设计空间进行了全面的回顾,并证明纯ConvNets可以像视觉transformers一样具有可扩展性[21, 51],这已经成为许多应用中的主导架构。ConvNeXt在需要较低复杂性的场景中表现尤为出色[7, 70, 71]。我们的ConvNeXt V2模型由自监督学习驱动,提供了一种简单的方法来升级现有模型,并在广泛的用例中实现性能的显著提升。

Masked Autoencoders. 以掩码自编码器[31]为代表的掩码图像建模是一种最新的自监督学习策略。掩码自编码器作为一种神经网络预训练框架,在视觉识别领域显示出广泛的影响。然而,原始的掩码自编码器由于其不对称的编解码器设计而不能直接应用于卷积神经网络。替代框架,如[3, 77]已经尝试将该方法用于卷积神经网络,但结果好坏参半。MCMAE[23]使用一些卷积块作为输入标记器。据我们所知,没有预训练的模型表明自监督学习可以提高最佳的ConvNeXt监督结果。

3. Fully Convolutional Masked Autoencoder

我们的方法在概念上很简单,并且以完全卷积的方式运行。学习信号是通过以高掩蔽比例随机掩蔽原始输入视觉效果并让模型在给定剩余上下文的情况下预测缺失部分来生成的。我们的框架如图2所示:

image-20240404145621488

现在我们将更详细地描述它的主要组件。

Masking. 我们使用随机掩蔽策略,掩蔽比例为0.6。由于卷积模型具有分层设计,其中在不同阶段对特征进行下采样,在最后阶段生成掩码并递归上采样以达到最佳分辨率。为了在实践中实现这一点,我们从原始输入图像中随机去除60%的$32 \times 32$块。我们使用最小的数据增强,只包括随机调整大小的裁剪。

Encoder design. 在我们的方法中,我们使用ConvNeXt[52]模型作为编码器。使掩码图像建模有效的一个挑战是防止模型学习允许它从掩码区域复制和粘贴信息的快捷方式。在基于transformer的模型中,这相对容易防止,因为它可以将可见的小块作为编码器的唯一输入。然而,使用卷积神经网络实现这一点更加困难,因为必须保留二维图像结构。虽然朴素的解决方案涉及在输入端引入可学习的掩码令牌[3, 77],但这些方法降低了预训练的效率,并导致训练和测试时间不一致,因为在测试时没有掩码令牌。当掩蔽比例很高时,这变得特别成问题。

为了解决这个问题,我们的新见解是从“稀疏数据视角”来看待被掩盖的图像,这是受到3D任务中稀疏点云学习的启发[15, 76]。我们的关键观察是,被遮挡的图像可以表示为二维稀疏的像素数组。基于这一见解,将稀疏卷积合并到我们的框架中以促进掩码自编码器的预训练是很自然的。在实践中,在预训练过程中,我们建议将编码器中的标准卷积层转换为子流形稀疏卷积,使模型仅对可见数据点进行操作[15, 27, 28]。我们注意到稀疏卷积层可以在微调阶段转换回标准卷积,而不需要额外的处理。作为一种替代方法,也可以在密集卷积操作之前和之后应用二进制掩蔽操作。该操作在数值上与稀疏卷积具有相同的效果,理论上计算强度更高,但在TPU等AI加速器上可能更友好。

Decoder design. 我们使用轻量级的、普通的ConvNeXt块作为解码器。这在整体上形成了一个不对称的编码器-解码器架构,因为编码器更重并且具有层次结构。我们还考虑了更复杂的解码器,如分层解码器[48, 59]或transformers[21, 31],但更简单的单个ConvNeXt块解码器在微调精度和显著减少预训练时间方面表现良好,如表1所示:

image-20240404151132387

image-20240404151211498

我们将解码器的尺寸设置为512。

Reconstruction target. 我们计算重建图像与目标图像之间的均方误差(MSE)。与MAE[31]类似,目标是原始输入的逐块归一化图像,并且损失仅应用于被掩蔽的补丁。

FCMAE. 我们现在结合上述建议提出了一个全卷积掩码自动编码器(FCMAE)。为了评估该框架的有效性,我们使用ConvNeXt-Base模型作为编码器,并进行了一系列消融研究。在整篇论文中,我们关注端到端微调性能,因为它在迁移学习中具有实际意义,并使用它来评估学习表征的质量。

我们使用ImageNet-1K(IN-1K)数据集分别进行800次和100次预训练和微调,并报告单个$224 \times 224$中心裁剪的前1个IN-1K验证精度。关于实验设置的更多细节可以在附录中找到。

为了理解在我们的FCMAE框架中使用稀疏卷积的影响,我们首先研究了它如何影响掩码图像预训练期间学习到的表示的质量。我们的实证研究结果表明,为了达到良好的效果,防止掩码区域的信息泄露是至关重要的。

接下来,我们将自我监督方法与监督学习方法进行比较。具体来说,我们获得了两个基线实验结果:使用相同配方的监督100 epoch基线和原始ConvNeXt论文[52]中提供的300 epoch监督训练基线。我们发现我们的FCMAE预训练提供了比随机基线更好的初始化(即$82.7 \to 83.7$),但它仍然需要赶上在原始监督设置中获得的最佳性能。

image-20240404152152273

这与最近使用基于transformer的模型的掩码图像建模的成功形成对比[3, 31, 77],其中预训练的模型显著优于有监督的模型。这促使我们研究ConvNeXt编码器在掩码自动编码器预训练期间面临的独特挑战,我们接下来将讨论。

4. Global Response Normalization

在本节中,我们将介绍一种新的全局响应归一化(GRN)技术,以使FCMAE预训练与ConvNeXt架构相结合更加有效。我们首先通过定性和定量特征分析来激励我们的方法。

Feature collapse. 为了更深入地了解学习行为,我们首先在特征空间中进行定性分析。我们可视化了FCMAE预训练的ConvNeXt-Base模型的激活,并注意到一个有趣的“特征崩溃”现象:有许多死的或饱和的特征图,并且激活在通道之间变得冗余。我们在图3中展示了一些可视化效果:

image-20240404152752530

这种行为主要在ConvNeXt块[52]的维度扩展MLP层中观察到。

Feature cosine distance analysis. 为了进一步定量验证我们的观察结果,我们进行了特征余弦距离分析。给定一个激活张量$X \in R^{H \times W \times C}$,$X_i \in R^{H \times W}$是第$i$个通道的特征图。我们将其重塑为$HW$维向量,并通过$\frac{1}{C^2}\sum_i^C\sum_j^C\frac{1 - \cos(X_i, X_h)}{2}$计算通道上的平均成对余弦距离。距离值越高表示特征越多样,距离值越低表示特征冗余。

为了进行分析,我们从ImageNet-1K验证集中随机选择1000张不同类别的图像,并从不同模型的每一层提取高维特征,包括FCMAE模型、ConvNeXt监督模型[52]和MAE预训练的ViT模型[31]。然后,我们计算每个图像的每层距离,并将所有图像的值平均。结果如图4所示:

image-20240404153255459

FCMAE预训练的ConvNeXt模型显示出明显的特征崩溃趋势,这与我们从之前的激活可视化中观察到的结果一致。这促使我们在学习过程中考虑如何使特征多样化,防止特征崩溃。

Approach. 大脑中有许多促进神经元多样性的机制。例如,侧抑制[6, 30]可以帮助增强激活神经元的反应,增加单个神经元对刺激的对比和选择性,同时也增加了神经元群体反应的多样性。在深度学习中,这种形式的横向抑制可以通过响应归一化[45]来实现。在这项工作中,我们引入了一个新的响应归一化层,称为全局响应归一化(GRN),旨在增加通道的对比度和选择性。给定输入特征$X \in R^{H \times W \times C}$,本文提出的GRN单元包括三个步骤:

  1. 全局特征聚合;
  2. 特征归一化;
  3. 特征校准。

首先,我们将空间特征映射$X_i$聚合为具有全局函数$\mathcal{G}(\cdot)$的向量$gx$:

这可以看作是一个简单的池化层。我们在表2a中实验了不同的函数:

image-20240404154320071

有趣的是,广泛使用的特征聚合器global average pooling[37, 72]在我们的案例中表现不佳。相反,我们发现使用基于范数的特征聚合,特别是使用L2范数,会产生更好的性能。这为我们提供了一组聚合值$\mathcal{G}(X) = gx = \{\Vert X_1 \Vert, \Vert X_2 \Vert, \cdots, \Vert X_C \Vert\} \in \mathcal{R}^C$,其中$\mathcal{G}(X)_i = \Vert X_i \Vert$是聚合第$i$个通道统计信息的标量。

接下来,我们对聚合值应用响应归一化函数$\mathcal{N}(\cdot)$。具体来说,我们使用标准的分裂归一化如下:

其中$\Vert X_i \Vert$是第$i$通道的L2范数(为了考虑更深层中通道数量的增加,在实践中,我们还通过通道计数$C$缩放规范化值)。直观地,对于第$i$个通道,$\mathcal{N}(\Vert X_i \Vert) := \Vert X_i \Vert \in \mathcal{R} \to \frac{\Vert X_i \Vert}{\sum_{j = 1, 2, \cdots, C} \Vert X_j \Vert} \in \mathcal{R}$计算其相对于所有其他通道的相对重要性。与其他形式的归一化类似[42, 45, 68],这一步通过相互抑制在渠道之间产生特征竞争。在表2b中,我们还研究了其他归一化函数的使用:

image-20240404154320071

发现简单的分裂归一化效果最好,尽管标准化$\frac{\Vert X_i \Vert - \mu}{\sigma}$在应用于相同的L2范数聚合值时产生类似的结果。

最后,我们使用计算的特征归一化分数校准原始输入响应:

核心GRN单元非常容易实现,只需要三行代码,并且没有可学习的参数。GRN单元的伪码在算法1中:

image-20240404155317540

1
2
3
4
5
6
# gamma, beta: learnable affine transform parameters
# X: input of shape (N, H, W, C)

gx = torch.norm(X, p=2, dim=(1,2), keepdim=True)
nx = gx / (gx.mean(dim=-1, keepdim=True) + 1e-6)
return gamma * (X * nx) + beta + X

为了简化优化,我们添加了两个额外的可学习参数,$\gamma$和$\beta$,并将它们初始化为零。我们还在GRN层的输入和输出之间添加了残差连接。最终得到的GRN块为$X_i = \gamma X_i \mathcal{N}(\mathcal{G}(X)_i) + \beta + X_i$。这种设置允许GRN层最初执行恒等函数,并在训练期间逐渐适应。残差连接的重要性如表2c所示:

image-20240404154320071

ConvNeXt V2. 我们将GRN层合并到原始的ConvNeXt块中,如图5所示:

image-20240404155853899

我们通过经验发现,当应用GRN时,LayerScale[65]变得不必要,并且可以删除。使用这种新的模块设计,我们创建了具有不同效率和容量的各种模型,我们将其称为ConvNeXt V2模型家族。这些模型的范围从轻量级(例如Atto[70])到计算密集型(例如Huge)。详细的模型配置可以在附录中找到。

Impact of GRN. 我们现在使用FCMAE框架对ConvNeXt V2进行预训练,并评估GRN的影响。从图3的可视化和图4的余弦距离分析中,我们可以观察到ConvNeXt V2有效地缓解了特征折叠问题。余弦距离值一直很高,表明特征多样性在各层之间保持不变。这种行为类似于MAE预训练的ViT模型[31]。总的来说,这表明ConvNeXt V2的学习行为可以类似于ViT,在类似的掩码图像预训练框架下。

接下来,我们评估微调性能。

image-20240404160212348

当配备GRN时,FCMAE预训练模型可以显著优于300 epoch监督模型。GRN通过增强特征多样性来提高表征质量,这在V1模型中是不存在的,但事实证明对于基于掩码的预训练至关重要。注意,这种改进是在不增加额外的参数开销或增加FLOPS的情况下实现的(附加的仿射参数$\frac{\gamma}{\beta}$可以忽略不计)。

Relation to feature normalization methods. 其他归一化层[2, 41, 45, 67, 73]的表现是否与全局响应归一化(GRN)层一样好?在表2d中:

image-20240404154320071

我们将GRN与三种广泛使用的归一化层进行了比较:局部响应归一化(LRN)[45],批归一化(BN)[41]和层归一化(LN)[2]。我们观察到只有GRN可以显著优于监督基线。LRN缺乏全局上下文,因为它仅对比附近通道。BN沿批量轴进行空间归一化,这不适合屏蔽输入。LN通过全局均值和方差标准化隐式鼓励特征竞争,但效果不如GRN。

Relation to feature gating methods. 另一种增强神经元间竞争的方法是使用动态特征门控方法[37, 56, 69, 72, 78]。在表2e中:

image-20240404154320071

我们将GRN与两个经典的门控层进行了比较:squeeze-and-excite(SE)[37]和convolutional block attention module(CBAM)[72]。SE侧重于通道门控,而CBAM侧重于空间门控。这两个模块都可以增加单个通道的对比度,类似于GRN的功能。GRN更简单、更有效,因为它不需要额外的参数层(如MLP)。

The role of GRN in pre-training/fine-tuning. 最后,我们研究了GRN在预训练和微调中的重要性。我们在表2f中给出了结果:

image-20240404154320071

其中我们从微调中删除GRN,或者仅在微调时添加新初始化的GRN。无论哪种方式,我们都观察到显著的性能下降,这表明在预训练和微调中保持GRN是重要的。

5. ImageNet Experiments

在本节中,我们提出并分析了两个关键的建议,FCMAE预训练框架和ConvNeXt V2架构,它们被共同设计以使基于掩码的自监督预训练成功。我们展示了这些设计协同良好,并为将模型缩放到各种尺寸提供了坚实的基础。此外,我们通过实验将我们的方法与以前的掩码图像建模方法进行了比较。不仅如此,我们展示了我们最大的ConvNeXt V2 Huge模型,使用FCMAE框架进行预训练并在ImageNet-22K数据集上进行微调,可以在ImageNet-1K数据集上实现88.9%的top-1精度,仅使用公开可用的数据。

Co-design matters. 在本文中,我们进行了一项独特的研究,包括共同设计自监督学习框架(FCMAE)和模型架构改进(GRN层),通过实证研究他们的学习行为。表3中的结果表明了这种方法的重要性:

image-20240404170509595

我们发现,在不修改模型架构的情况下使用FCMAE框架对表示学习质量的影响有限。同样,在监督设置下,新的GRN层对性能的影响相当小。然而,两者的结合会显著改善微调性能。这支持了模型和学习框架应该一起考虑的观点,特别是当涉及到自我监督学习时。

Model scaling. 在本研究中,我们评估了8种不同尺寸的模型,从低容量3.7M Atto模型到高容量650M Huge模型。我们使用提出的FCMAE框架对这些模型进行预训练,并将微调结果与完全监督的模型进行比较。

结果如图1所示:

image-20240404170927174

展示了强大的模型缩放行为,在所有模型大小的监督基线上始终如一地提高了性能。这是第一次在如此广泛的模型范围内证明掩码图像建模的好处,无论是在有效性还是效率方面。完整的表格结果可在附录中找到。

Comparisons with previous methods. 我们将我们的方法与之前的掩码自编码器方法[3, 31, 77]进行了比较,这些方法都是为基于transformer的模型设计的。结果总结在表4中:

image-20240404171108800

我们的框架在所有模型尺寸上都优于用SimMIM[77]预训练的Swintransformer。与使用MAE[31]预训练的普通ViT相比,尽管使用的参数少得多(198M vs 307M),但我们的方法在大型模型体系中的表现相似。然而,在庞大的模型体系中,我们的方法略显落后。这可能是因为一个巨大的ViT模型可以从自我监督的预训练中获益更多。正如我们接下来将看到的,这个差距可以通过额外的中间微调来缩小。

ImageNet-22K intermediate fine-tuning. 我们还展示了ImageNet-22K中间微调结果[3]。训练过程包括三个步骤:

  1. FCMAE预训练;
  2. ImageNet-22K微调;
  3. ImageNet-1K微调。

我们使用$384 \times 384$分辨率的图像进行预训练和微调[38]。我们将我们的结果与最先进的架构设计进行了比较,包括基于卷积的[52, 64],基于transformer的[22]和混合设计[20, 66]。所有这些结果都使用ImageNet-22K监督标签进行训练。结果总结在表5中:

image-20240404171500940

我们的方法使用基于卷积的架构,仅使用公开可用的数据(即ImageNet-1K和ImageNet-22K)达到了新的最先进的精度。

6. Transfer Learning Experiments

我们现在对迁移学习性能进行基准测试。首先,我们评估共同设计的影响,即比较ConvNeXt V1 + supervised与ConvNeXt V2 + FCMAE。我们还直接将我们的方法与SimMIM预训练的Swintransformer模型进行了比较[77]。训练和测试的细节在附录中提供。

Object detection and segmentation on COCO. 我们在COCO数据集[49]上微调Mask R-CNN[33],并在COCO val2017数据集上报告检测$\text{mAP}^\text{box}$和分割$\text{mAP}^\text{mask}$。结果如表6所示:

image-20240404172848277

随着我们的建议得到实施,我们看到情况在逐步改善。从V1到V2,新引入了GRN层,增强了性能。在此基础上,当从监督学习过渡到基于FCMAE的自监督学习时,模型进一步受益于更好的初始化。当两者同时应用时,可以获得最佳性能。此外,我们的最终提案,在FCMAE上预训练的ConvNeXt V2,在所有模型尺寸上都优于Swintransformer,在巨大的模型范围内实现了最大的差距。

Semantic segmentation on ADE20K. 综上所述,我们使用UperNet框架[74]对ADE20K[82]语义分割任务进行了实验。我们的结果显示出与目标检测实验相似的趋势,并且我们的最终模型比V1监督的对应模型显著改进。它在base和large模型系统中的性能也与Swintransformer相当,但在大型模型系统中优于Swin。

image-20240404190657722

7. Conclusion

在本文中,我们介绍了一个新的ConvNet模型家族,称为ConvNeXt V2,它涵盖了更广泛的复杂性。虽然体系结构的变化很小,但它是专门为更适合自监督学习而设计的。使用我们的全卷积掩码自动编码器进行预训练,我们可以显著提高纯卷积神经网络在各种下游任务中的性能,包括ImageNet分类、COCO对象检测和ADE20K分割。

Appendix

本附录提供了实现细节,包括模型配置,预训练和微调配方,以及FCMAE预训练的稀疏和密集编码方法(参见$\S$A)。在$\S$B中,我们在ImageNet 1K和22K上对ConvNeXt V1和V2进行了完整的微调精度比较。在$\S$C中,我们使用类选择性指数对稀疏编码和一般特征分析的效率进行了分析。最后,在$\S$D中,我们对掩蔽比和GRN成分分析进行了额外的消融研究。我们还比较了FCMAE(掩码图像建模)和MoCo V3(对比学习)。

A. Implementation Details

A.1. ConvNeXt V2 model configurations

基本模型,即Tiny(28M), Base(89M)和Large(198M),遵循与ConvNeXt V1[52]相同的stage、block(B)和通道(C)设置配置。

  • ConvNeXt V2-T: C = 96, B = (3, 3, 9, 3)
  • ConvNeXt V2-B: C = 128, B = (3, 3, 27, 3)
  • ConvNeXt V2-L: C = 192, B = (3, 3, 27, 3)

给定上述相同的定义,我们缩放模型以提供广泛的模型大小范围,针对多种场景。首先,为了得到有效的模型,我们按如下比例缩小:

  • ConvNeXt V2-A: C = 40, B = (2, 2, 6, 2)
  • ConvNeXt V2-F: C = 48, B = (2, 2, 6, 2)
  • ConvNeXt V2-P: C = 64, B = (2, 2, 6, 2)
  • ConvNeXt V2-N: C = 80, B = (2, 2, 8, 2)

A、F、P、N分别表示Atto(3.7M)、Femto(5.2M)、Pico(9.1M)和Nano(15.6M)模型,最初设计于[70]。接下来,为了引入大容量的变体,我们按以下方式进行扩展:

  • ConvNeXt V2-H: C = 352, B = (3, 3, 27, 3)

H为本文新提出的Huge(659M)模型。

A.2. ImageNet Experiments

Pre-training. 所有模型共享相同的预训练设置,如表8所示:

image-20240404191554554

我们使用线性$lr$缩放规则[26]:$lr = \frac{base_lr \times \text{batchsize}}{256}$。

ImageNet-1K fine-tuning. 由于学习能力因模型大小而异,我们对每个模型采用不同的微调配方。我们将它们总结在表9、10和11中:

image-20240404191829977

image-20240404191847071

image-20240404191907357

我们看到更长的微调周期有助于小模型。在这项工作中,我们采用了两种不同的学习率层衰减策略:

  1. group-wise[52],我们将三个连续的层视为单个“层”,并对它们使用相同的衰减值;
  2. layer-wise[3],我们为每层分配不同的值,两者都遵循标准衰减规则。

默认是layer-wise策略,但是我们将group-wise策略应用于Base和Large模型。

ImageNet-22K intermediate fine-tuning. 我们使用FCMAE预训练的ConvNeXt模型进行ImageNet-22K中间微调。我们使用nano,tiny,base,large和huge模型。表12和表13总结了这些设置:

image-20240404191930499

image-20240404191945731

类似地,对于小模型使用更大的layer-wise学习率衰减值是有帮助的。

Sparse encoding implementations. 我们提出了两种可能的实现来实现FCMAE预训练:

  1. 使用外部库支持的稀疏卷积[15, 27, 28]进行稀疏编码[15, 18];
  2. 用掩码密集卷积模拟稀疏编码,通过在标准卷积操作前后分别应用二进制掩码可以很容易地实现。

由于它们产生数字上相同的输出,因此可以根据不同的用例采用两者。在这项工作中,我们在GPU环境下采用稀疏编码,其中我们使用MinkowskiEngine库[15]和PyTorch框架[57];我们使用Jax[5]在TPU加速器上使用基于密集掩码转换的编码。主论文中的实验都是在TPU(v3-256)pods上进行的,但是我们发布了一个PyTorch的复制。

A.3. Object detection and segmentation on COCO

对于COCO实验,我们使用MMDetection[10]工具箱和ImageNet-1K预训练的最终模型权重作为网络初始化。所有模型都以3倍的时间表(36个epoch)和batch size为32进行训练。我们使用一个AdamW优化器[54],其学习率为1e-4,权值衰减为0.05,扫描层学习率衰减为$\{0.9, 0.95\}$,随机深度率衰减为$\{0.2, 0.3, 0.4, 0.5\}$。我们采用大规模抖动增强[24]($1024 \times 1024$分辨率,尺度范围$[0.1, 2.0]$)。我们在推理期间使用soft-NMS[4]进行单尺度测试。

A.4. Semantic segmentation in ADE20K

对于ADE20K实验,我们使用MMSegmentation[17]工具箱。我们使用具有以下超参数的AdamW优化器[54]:权重衰减为0.05,batch size为16,layer-wise衰减率为$\{0.8, 0.9\}$,学习率为$\{1\text{e-}4, 2\text{e-}4, 3\text{e-}4\}$,随机深度率$\{0.1, 0.2, 0.3, 0.4\}$。所有模型都训练了160K次迭代,输入分辨率为$512 \times 512$。在推理中,使用$512 \times 2048$的分辨率为$[0.75, 0.875, 1.0, 1.125, 1.25]$的多尺度检验。

与[77]类似,我们在ImageNet-1K上进行监督微调后使用模型权值初始化分割模型,因为我们发现它的性能优于直接使用自监督预训练权值。

B. Complete comparisons with V1

在表14和表15中,我们详细介绍了ConvNeXt V1[52, 70]和V2之间的实验水平比较:

image-20240404193157266

特别是,表14显示了使用八个模型的ImageNet-1K微调结果:Atto、Femto、Nano、Pico、Tiny、Base、Large和Huge,范围从低计算(Atto,3.7M)到大容量模型(Huge,660M)。我们在所有模型中都看到了一致和显著的改进。当结构从V1升级到V2并使用自监督学习框架FCMAE时,性能达到最佳,证明了协同设计的有效性。

image-20240404193233745

在表15中,我们给出了ImageNet-22K中间微调结果。预训练和微调过程包括三个步骤:

  1. FCMAE预训练;
  2. ImageNet-22K微调;
  3. ImageNet-1K微调。

在这里,我们专注于五种V2模型:Nano、Tiny、Base、Large和Huge。相比V1版本,我们看到了持续的改进。特别是,V2 Base(86.8%/87.7%)和Large(87.3%/88.2%)模型的性能优于V1的下一级模型尺寸,即Large(86.6%/87.5%)和XLarge(87.0%/87.8%)模型。V2 Huge模型也实现了一个新的最先进的性能为88.9%。我们的建议表明,纯卷积模型也可以通过基于掩码的预训练成为强大的、可扩展的视觉学习器。

C. Further Analyses

Sparse encoding efficiency. 我们的FCMAE框架的关键设计选择之一是在预训练期间使用稀疏卷积[15, 27, 28]。其主要目的是阻断来自掩码区域的信息流,方便掩码自编码器的预训练。作为副产品,它还在预训练期间提供了改进的计算和内存效率,因为内核仅适用于可见像素。然而,我们注意到稀疏卷积库[15, 18]并没有针对现代硬件进行高度优化,并且实现的效率通常取决于实践中使用的框架[1, 5, 57]。

为了更好地理解使用稀疏卷积实现的实际预训练效率,我们使用Minkowski Engine v0.5.4[15]和PyTorch[57]进行了基准测试。我们模拟了预训练掩码输入(图像大小$224 \times 224$,掩码比0.6,掩码大小$32 \times 32$),并比较了基于稀疏卷积和基于密集掩码卷积编码器之间的训练吞吐量(图像/s)和最大GPU内存使用量(G)。虽然结果可能因实验环境而有所不同(我们使用PyTorch V1.8.0,CUDA 11.1,CuDNN 8.2和NVIDIA RTX A6000 GPU),但我们观察到预训练效率适度增加,吞吐量平均增加1.3倍,最大内存使用量减少2倍。随着模型尺寸的增加,这种差距变得更加明显。

image-20240404193902909

Class Selectivity Index. FCMAE预训练的ConvNeXt V2与V1相比具有鲜明的特征特征。为了理解这一点,我们对ConvNeXt V1和V2的FCMAE预训练权值进行了类选择性指数分析。类选择指数是衡量最高类条件平均活动与所有其他类条件平均活动之间差异的度量标准。最终的规范化值介于0和1之间,1表示过滤器仅对单个类激活,0表示过滤器对所有类统一激活。在图7中,我们使用每个残差块的输出绘制了模型中所有中间层的类选择性指数分布:

image-20240404194014921

前期V1和V2的分布紧密匹配,但在较深层,如第3阶段第12层开始出现发散。随着层的加深,该图显示V2(双峰)倾向于包含比V1(单峰)更多的类通用特征。由于与类无关的特性更具可移植性,这将在下游任务中带来更好的微调性能。我们将更多的探索留给未来的研究。

D. Additional Experiments

GRN component analysis. 提出的全局关系网络(GRN)包括三个步骤:

  1. 全局特征聚合;
  2. 特征归一化;
  3. 特征校准。

本文主要论证了基于L2范数的聚合和分裂归一化的结合在实践中效果良好。表16使用ConvNeXt V2-Base作为编码器验证了这些组件的各自贡献:

image-20240404194210952

当任何一个组件被丢弃时,性能都会显著下降,并且如果在特征归一化之前没有进行全局聚合,训练将变得不稳定。这支持了这两种操作协同工作以使GRN有效的想法。

Masking ratios. 我们对掩码尺寸为$32 \times 32$的掩模比进行了超参数分析。如图8所示:

image-20240404194329282

结果表明,掩蔽比在0.50.7范围内会产生最好的结果,掩蔽比为0.6可以提供最高的性能。

Comparison with contrastive SSL. 在这项工作中,我们比较了两种主流的自监督学习(SSL)方法的性能:对比学习[8, 9, 12, 13, 14, 29, 32]和掩码图像建模[3, 31, 77]。具体来说,我们比较了MoCoV3[14]的端到端微调性能,MoCoV3[14]是目前最先进的对比学习方法,与我们提出的FCMAE框架使用相同的ConvNeXt V2-Base作为编码器。我们遵循每种方法的默认预训练和微调配方,并给出如下结果。

image-20240404194537499

我们使用300 epoch的监督学习基线作为参考。上表表明,FCMAE的表示质量优于MoCo V3,并且优于监督基线。这与最近的观察结果一致,即在端到端微调方面,掩膜图像建模比基于对比学习的SSL提供了更好的结果。在这项工作中,纯卷积神经网络也使这一成功成为可能。