ConvNeXt V2学习笔记

这篇具有很好参考价值的文章主要介绍了ConvNeXt V2学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ConvNeXt V2学习笔记

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

Abstract

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

1. Introduction

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

ConvNeXt V2学习笔记

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

在另一条研究线上,视觉表征学习的重点已经从带有标签的监督学习转向带有借口目标的自我监督预训练。在许多不同的自监督算法中,蒙面自编码器(MAE)[31]最近在视觉领域的蒙面语言建模中取得了成功,并迅速成为一种流行的视觉表示学习方法。然而,自监督学习的常见做法是使用为监督学习设计的预定架构,并假设设计是固定的。例如,MAE是使用视觉转换器[21]架构开发的。

可以将架构和自监督学习框架的设计元素结合起来,但在使用ConvNeXt和蒙面自编码器时,这样做可能会带来挑战。其中一个问题是MAE有一个特定的编解码器设计,该设计针对变压器的序列处理能力进行了优化,这允许计算量大的编码器专注于可见补丁,从而降低了预训练成本。这种设计可能与使用密集滑动窗口的标准convnet不兼容。此外,如果不考虑架构和训练目标之间的关系,可能不清楚是否能实现最佳性能。事实上,之前的研究已经表明,使用基于掩模的自监督学习训练ConvNets可能很难[43],并且经验证据表明,变压器和ConvNets可能具有不同的特征学习行为,这些行为可能会影响表示质量

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

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

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

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

2. Related Work

ConvNets

ConvNets的设计于20世纪80年代首次引入,并使用反向传播进行训练,多年来在优化、精度和效率方面经历了许多改进[35,36,39,44,58,61,63,75]。这些创新主要是通过在ImageNet数据集上使用监督训练发现的。近年来,已经做出了一些努力,使用自监督的前文本任务(如旋转预测和着色)执行体系结构搜索,例如UnNAS[50]。最近,ConvNeXt[52]对设计领域进行了全面审查,并证明纯ConvNets可以像视觉转换器[21,51]一样可扩展,后者已成为许多应用程序的主导架构。ConvNeXt在要求较低复杂度的场景中特别出色[7,70,71]。我们的ConvNeXt V2模型由自监督学习提供支持,提供了一种简单的方法来升级现有模型,并在广泛的用例中实现性能的显著提升。

Masked Autoencoders

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

3. Fully Convolutional Masked Autoencoder

我们的方法在概念上很简单,并以完全卷积的方式运行。学习信号是通过以高掩蔽率随机屏蔽原始输入视觉,并让模型在给定剩余上下文的情况下预测缺失部分来生成的。我们的框架如图2所示,现在我们将更详细地描述它的主要组件。

ConvNeXt V2学习笔记

Masking.

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

Encoder design.

在我们的方法中我们使用ConvNeXt[52]模型作为编码器。使蒙面图像建模有效的一个挑战是防止模型学习允许它从蒙面区域复制和粘贴信息的快捷方式。在基于变压器的模型中,这是相对容易防止的,它可以将可见的补丁作为编码器的唯一输入。然而,使用ConvNets实现这一点比较困难,因为必须保留2D图像结构。虽然朴素解决方案涉及在输入端引入可学习的掩码令牌[3,77],但这些方法降低了预训练的效率,并导致训练和测试时间不一致,因为在测试时没有掩码令牌。当掩蔽比很高时,这尤其成问题

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

Decoder design.

我们使用一个轻量级的普通ConvNeXt块作为解码器。这在总体上形成了非对称编码器-解码器体系结构,因为编码器更重有等级制度。我们还考虑了更复杂的解码器,如分层解码器[48,59]或变压器[21,31],但更简单的单一ConvNeXt块解码器在微调精度方面表现良好,并大大减少了预训练时间,如表1所示。我们将解码器的尺寸设置为512。

ConvNeXt V2学习笔记

Reconstruction target.

我们计算重建图像与目标图像之间的均方误差(MSE)。与MAE[31]类似,目标是原始输入的patch-wise归一化图像,并且损失仅应用于被屏蔽的patch。

FCMAE

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

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

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

ConvNeXt V2学习笔记

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

ConvNeXt V2学习笔记

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

4. Global Response Normalization

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

Feature collapse

为了更深入地了解学习行为,我们首先在特征空间中进行定性分析。我们可视化了一个FCMAE预训练的ConvNeXt-Base模型的激活,并注意到一个有趣的“特征崩溃”现象:有许多死的或饱和的特征映射,激活在通道之间变得多余。我们在图3中显示了一些可视化效果。这种行为主要是在一个ConvNeXt块[52]的维度扩展MLP层中观察到的。

ConvNeXt V2学习笔记

Feature cosine distance analysis

为了进一步定量地验证我们的观察结果,我们进行了特征余弦距离分析。给定激活张量 X ∈ R H × W × C X∈R^{H×W ×C} XRH×W×C X i ∈ R H × W X_i ∈ R^{H×W} XiRH×W是第i个通道的特征映射。我们将其重塑为HW维向量,并计算平均的对方向余弦距离通过通道 1 C 2 ∑ i C ∑ j C 1 − cos ⁡ ( X i , X j ) 2 \frac{1}{C^{2}} \sum_{i}^{C} \sum_{j}^{C} \frac{1-\cos \left(X_{i}, X_{j}\right)}{2} C21iCjC21cos(Xi,Xj)距离值越大,特征的多样性越强;距离值越小,特征的冗余性越强

为了进行分析,我们从ImageNet-1K验证集中的不同类别中随机选择1000张图像,并从不同模型的每一层中提取高维特征,包括FCMAE模型、ConvNeXt监督模型[52]和MAE预训练的ViT模型[31]。然后,我们计算每个图像的每层距离,并对所有图像的值求平均值。结果如图4所示。FCMAE预训练的ConvNeXt模型表现出明显的特征崩溃趋势,与我们从之前的激活可视化中观察到的一致。这促使我们考虑在学习过程中使特征多样化并防止特征崩溃的方法

Approach

大脑中有许多促进神经元多样性的机制。例如,横向抑制[6,30]可以帮助增强被激活神经元的反应,增加单个神经元对刺激的对比度和选择性,同时还可以增加整个神经元群体的反应多样性。在深度学习中,这种形式的横向抑制可以通过响应归一化[45]来实现。在这项工作中,我们引入了一种新的响应归一化层,称为全局响应归一化(GRN),其目的是提高信道的对比度和选择性。给定一个输入特征 X ∈ R H × W × C X∈R^{H×W ×C} XRH×W×C,所提出的GRN单元包括三个步骤:1)全局特征聚合,2)特征归一化,3)特征校准

首先,我们聚合了一个空间特征图 X i X_i Xi转化为具有全局函数G(·)的向量gx:

ConvNeXt V2学习笔记

这可以看作是一个简单的池化层。我们在表2a中尝试了不同的函数。有趣的是,全球平均池,一个广泛使用的特征聚合器[37,72],在我们的例子中表现不佳。相反,我们发现使用基于范数的特征聚合,特别是使用l2范数,可以获得更好的性能。这给了我们一组聚合值$G(X) = gx ={||X_1||, ||X_2||, . . . , ||X_C||} ∈ R^C $ 这里的$ G(X)_i = ||X_i||$是聚合第i个通道的统计信息的标量

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

ConvNeXt V2学习笔记

直观地,对于第i个通道,Eqn. 2计算了它相对于所有其他通道的相对重要性。与其他形式的归一化相似[42,45,68],这一步通过相互抑制在通道间形成特征竞争。在表2b中,我们还检查了其他归一化函数的使用,发现简单的除法归一化效果最好,尽管标准化 ( ∣ ∣ X i ∣ ∣ − µ) / σ (||Xi ||−µ)/σ ∣∣Xi∣∣µ/σ在应用于相同的L2形式聚合值时会产生类似的结果。

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

ConvNeXt V2学习笔记

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

ConvNeXt V2学习笔记

为了简化优化,我们添加了两个额外的可学习参数,γ和β,并将它们初始化为零。我们还在GRN层的输入和输出之间添加了一个残余连接。最终生成的GRN区块为 X i = γ ∗ X i ∗ N ( G ( X ) i ) + β + X i Xi=γ*Xi*N(G(X)i)+β+Xi Xi=γXiN(G(X)i)+β+Xi。此设置允许GRN层最初执行身份识别功能,并在训练期间逐渐适应。残余连接的重要性如表2c所示。

ConvNeXt V2学习笔记

ConvNeXt V2

我们将GRN层合并到原始ConvNeXt块中,如图5所示。我们根据经验发现,当应用GRN时,LayerScale[65]变得不必要,并且可以移除。使用这种新的模块设计,我们创建了各种不同效率和容量的模型,我们称之为ConvNeXt V2模型系列。这些型号的重量轻(例如Atto[70])来计算密集型(例如巨大型)。详细的型号配置见附录。

ConvNeXt V2学习笔记

Impact of GRN

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

ConvNeXt V2学习笔记

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

ConvNeXt V2学习笔记

当配备GRN时,FCMAE预训练模型可以显著优于300历元监督模型。GRN通过增强特征多样性来提高表示质量,这在V1模型中是不存在的,但已证明对于基于掩码的预训练至关重要。注意,这种改进是在不增加额外参数开销或增加FLOPS的情况下实现的。2

Relation to feature normalization methods

其他标准化层[2,41,45,67,73]的性能是否与全局响应归一化(GRN)层?在表2d中,我们将GRN与三个广泛使用的归一化层进行了比较:局部响应归一化(LRN)[45]、批处理归一化(BN)[41]和层归一化(LN)[2]。我们观察到,只有GRN能够显著优于监督基线。LRN缺乏全球背景,因为它只对比附近邻居的频道。BN沿着批处理轴在空间上归一化,这不适用于屏蔽输入。LN隐含地通过全球均值和方差标准化来鼓励特征竞争,但其效果不如GRN。

Relation to feature gating methods

增强神经元间竞争的另一种方法是使用动态特征门控方法[37,56,69,72,78]。在表2e中,我们将GRN与两个经典选通层进行了比较:挤压和排斥(SE)[37]和卷积块注意力模块(CBAM)[72]。SE侧重于信道门控,而CBAM侧重于空间门控。两个模块都可以增加与GRN所做的相似。GRN更加简单和高效,因为它不需要额外的参数层(如MLP)。

The role of GRN in pre-training/fine-tuning

最后,我们检验了GRN在预训练和微调中的重要性。我们在表2f中给出了结果,其中我们要么从微调中删除GRN,要么仅在微调时添加新初始化的GRN。无论哪种方式,我们都观察到了显著的性能下降,这表明在预训练和微调中保持GRN都很重要。

5. ImageNet Experiments

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记

6. Transfer Learning Experiments

ConvNeXt V2学习笔记

ConvNeXt V2学习笔记

7.Conclusion

在本文中,我们介绍了一个新的ConvNet模型族,称为ConvNeXtV2,它涵盖了更广泛的复杂性。虽然体系结构的变化很小,但它是专门为更适合自我监督学习而设计的。使用我们的完全卷积掩码自动编码器预训练,我们可以在各种下游任务中显著提高纯ConvNets的性能,包括ImageNet分类、COCO对象检测和ADE20K分割。文章来源地址https://www.toymoban.com/news/detail-427031.html

到了这里,关于ConvNeXt V2学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小白Cadence学习笔记<3> (Allegro & Design entry CIS & Pad_design)

    上一节分享了在使用 Design entry CIS过程中怎么由一个元器件一步步画出整个原理图。画好原理图之后我们就要开始导出网表了,目的是给我们画PCB的软件Allegro输出网表文件,这个过程可以比喻一下,画好的原理图相当于你做菜时脑海里构思的菜谱,我们现在要把需要的食材(

    2024年02月07日
    浏览(37)
  • ASIC设计学习笔记——使用Design Compiler进行综合

    综合是ASIC的前端设计中极为重要的步骤,所谓的综合过程,是指将行为级描述的电路、RTL级的电路转换到门级网表的过程。本文介绍使用Synopsys公司的Design Compiler作为工具完成综合的过程。 在ASIC开发中,当使用verilog等硬件描述语言完成对所需要的功能的代码编写和仿真后,

    2024年02月07日
    浏览(24)
  • PyQt5学习笔记--加载Qt Designer设计的ui文件

    目录 1--直接加载ui文件 2--动态加载ui文件及其属性 3--绑定槽函数测试 4--登录程序实例练习 ① Qt Designer 下载地址​​​​​ ② 设计ui并保存导出   ③ 直接加载代码 ​ ① 在Qt Designer设计ui文件:   ② 源程序: ③ 结果测试  

    2024年02月10日
    浏览(37)
  • PyQt5学习笔记--基于Qt Designer加载、播放和保存视频

    目录 1--基于Qt Designer设计ui文件 2--代码 3--结果 4--补充 5--加载、播放、转换和保存视频的实例 ① 上述代码只实现了加载视频和播放视频的功能,缺少暂停、进度移动等常见功能。 ② 上述代码将 QVideoWidget 通过一个layout布局的形式内嵌到自定义的 QOpenGLWidget 中,但播放测试视

    2024年02月15日
    浏览(33)
  • 深度学习(目标检测):YOLO网络学习笔记(YOLO v1,YOLO v2和 YOLO v3)

    两种进行目标检测任务的深度学习方法 : 分类 :深度学习的目标检测的方法可以分为两类,分别是一阶段方法和二阶段方法。 一阶段方法 :YOLO系列模型都是一阶段方法,这一类方法可以一步到位地使用卷积神经网络进行特征提取并输出标注框。 两阶段方法 :两阶段阶段

    2023年04月11日
    浏览(33)
  • 24 深度卷积神经网络 AlexNet【李沐动手学深度学习v2课程笔记】(备注:含AlexNet和LeNet对比)

    目录 1. 深度学习机器学习的发展 1.1 核方法 1.2 几何学 1.3 特征工程 opencv 1.4  Hardware 2. AlexNet 3. 代码 2001 Learning with Kernels 核方法 (机器学习) 特征提取、选择核函数来计算相似性、凸优化问题、漂亮的定理 2000 Multiple View Geometry in computer vision 抽取特征、描述集合、(非)凸

    2024年03月12日
    浏览(64)
  • 【IC设计】ICC1 workshop lab guide 学习笔记——Lab 2 Design Planning Task5-9

    In the task following this one you will use “Power Network Synthesis” (PNS) to automate the creation of power/ground core and individual macro rings, as well as vertical and horizontal straps. If you want to create rings around groups of macros, that is done prior to PNS, which is what this task will accomplish. 在接下来的任务中,你将使用电源

    2024年02月13日
    浏览(27)
  • [足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-8 状态观测器设计 Linear Observer Design

    本文仅供学习使用 本文参考: B站:DR_CAN

    2024年02月02日
    浏览(45)
  • 【深度学习每日小知识】Co-occurrence matrix 共现矩阵

    共生矩阵或共生分布(也称为:灰度共生矩阵 GLCM)是在图像上定义为共生像素值(灰度值或颜色)分布的矩阵)在给定的偏移量处。它被用作纹理分析的方法,具有多种应用,特别是在医学图像分析中。 给定灰度图像 ,共生矩阵计算具有特定值和偏移量的像素对在图像中出

    2024年01月25日
    浏览(36)
  • 《综合与Design_Compiler》学习笔记——第一章综合综述 第二章verilog语言结构到门级的映射 第三章 使用DC进行综合

    2023.6.25 2023.6.27 和之前学的芯动力mooc中很多内容相似,这篇整理的逻辑更好些 将RTL代码转换到基于工艺库的门级网表。一般分为如下三个步骤。 (1)逻辑级综合 设计被描述成 布尔等式 的形式,触发器、锁存器这样的基本单元采用元件例化(instantiate)的方式表达出来,下面是

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包