RevCol:可逆的柱状神经网络

news2024/11/16 11:31:44

文章目录

  • 摘要
  • 1、简介
  • 2、方法
    • 2.1、Multi-LeVEl ReVERsible Unit
    • 2.2、可逆列架构
    • 2.2.1、MACRo设计
      • 2.2.2、MicRo 设计
    • 2.3、中间监督
  • 3、实验部分
    • 3.1、图像分类
    • 3.2、目标检测
    • 3.3、语义分割
    • 3.4、与SOTA基础模型的系统级比较
    • 3.5、更多分析实验
      • 3.5.1、可逆列架构的性能提升
      • 3.5.2、可逆网络与非可逆网络
      • 3.5.3、使用中间监督的性能提升
      • 3.5.4、GPU内存消耗与模型大小
      • 3.5.5、卷积中核大小的消融实验
  • 4、相关工作
    • 4.1、分离表示学习和部分-整体层次
    • 4.2、可逆网络
  • 5、结论
  • A、MICRO 设计细节

摘要

https://arxiv.org/pdf/2212.11696v3.pdf
我们提出了一种新的神经网络设计范式可逆列网络(RevCol)。RevCol的主体由多个子网副本组成,这些子网之间采用多级可逆连接。这样的架构方案赋予RevCol与传统网络非常不同的行为:在前向传播过程中,RevCol中的特征在经过每一列时逐渐解纠缠,保留了列的总信息,而不是像其他网络那样压缩或丢弃。我们的实验表明,cnn风格的RevCol模型可以在图像分类、目标检测和语义分割等多个计算机视觉任务上取得非常有竞争力的性能,特别是在大参数预算和大数据集的情况下。例如,经过ImageNet-22K预训练,RevColXL获得了88.2%的ImageNet-1K准确率。给出更多的预训练数据,我们最大的模型RevCol-H在ImageNet-1K上达到90.0%,在COCO检测最小集上达到63.8% APbox,在ADE20k分割上达到61.0% mIoU。据我们所知,这是纯(静态)CNN模型中最好的COCO检测和ADE20k分割结果。此外,作为一种通用的宏观架构方式,RevCol也可以引入到变压器或其他神经网络中,这被证明可以提高计算机视觉和NLP任务的性能。我们在https://github.com/megvii-research/RevCol上发布代码和模型。

1、简介

信息瓶颈原则(IB)(Tishby等人,2000年;Tishby和Zaslavsky,2015年)统治着深度学习世界。考虑图1(a)中的典型监督学习网络:靠近输入的层包含更多低级信息,而靠近输出的特征则富含语义含义。换句话说,与目标无关的信息在逐层传播过程中逐渐被压缩。尽管这种学习范式在许多实际应用中取得了巨大的成功,但从特征学习的角度来看,它可能不是最佳选择-如果学习到的特征被过度压缩,或者学习到的语义信息与目标任务无关,特别是如果源任务和目标任务之间存在显著的领域差距,那么下游任务可能会受到较差的性能(Zamir等人,2018年)。研究者们已经付出了巨大的努力来使学习到的特征更加普遍适用,例如通过自监督预训练(Oord等人,2018年;Devlin等人,2018年;He等人,2022年;Xie等人,2022年)或多任务学习(Ruder,2017年;Caruana,1997年;Sener和Koltun,2018年)。
在这里插入图片描述

在这篇论文中,我们主要关注一种替代方法:构建一个网络来学习解耦表示。与信息瓶颈学习不同,解耦特征学习(Desjardins等人,2012年;Bengio等人,2013年;Hinton,2021年)的目的不是提取最相关的信息,同时丢弃不太相关的信息;相反,它的目的是将任务相关概念或语义词分别嵌入到几个解耦的维度中。同时整个特征向量大致保持与输入相同的信息。这与生物细胞中的机制非常相似(Hinton,2021年;Lillicrap等人,2020年)-每个细胞共享整个基因组的相同副本,但具有不同的表达强度。因此,在计算机视觉任务中,学习解耦特征也是合理的:例如,在ImageNet预训练期间调整高级语义表示,同时其他特征维度中也应维护低级信息(例如边缘的位置),以备下游任务(如目标检测)的需求。

图1(b)概述了我们的主要思想:可逆列网络(RevCol),该思想深受GLOM(Hinton,2021)的启发。我们的网络由N个子网络(称为列)组成,每个列的结构相同(然而其权重不一定相同),每个列接收输入的副本并生成预测。因此,多级嵌入,即从低级到高度语义表示,都存储在每个列中。此外,引入可逆变换将多级特征从第i列传播到第(i+1)列而不损失信息。在传播过程中,由于复杂性和非线性增加,所有特征级别的质量有望逐渐提高。因此,最后一列(图1(b)中的Col N)预测输入的最终解耦表示。
在这里插入图片描述

在RevCol中,我们的一个关键贡献是设计相邻列之间的可逆变换。这个概念借鉴了可逆网络家族(Chang等人,2018年;Gomez等人,2017年;Jacobsen等人,2018年;Mangalam等人,2022年);然而,传统的可逆结构,如RevNets(Gomez等人,2017年)(图2(a))通常有两个缺点:第一,可逆块内的特征图被限制为具有相同的形状;第二,RevNets中的最后两个特征图由于可逆性质而必须同时包含低级和高级信息,这可能很难优化,这与IB原则相冲突。在本文中,我们通过引入一个新型可逆多级融合模块克服了这些缺点。详情请参见第2部分。

我们构建了一系列基于CNN的RevCol模型,并在不同的复杂度预算下对其进行评估,用于主流计算机视觉任务,如ImageNet分类、COCO目标检测和实例分割,以及ADE20K语义分割。我们的模型在性能上可与先进的CNN或视觉Transformer(如ConvNeXt(Liu等人,2022b)和Swin(Liu等人,2021))相媲美,甚至更胜一筹。例如,经过ImageNet-22K预训练后,我们的RevCol-XL模型在ImageNet-1K上实现了88.2%的准确率,而无需使用Transformer或大型卷积核(Ding等人,2022b;Liu等人,2022b;Han等人,2021)。更重要的是,我们发现RevCol可以很好地扩展到大型模型和大型数据集。给定一个更大的私有预训练数据集,我们的最大模型RevCol-H在ImageNet-1K分类上获得了90.0%的准确率,在COCO检测minival集上获得了63.8%的APbox,在ADE20K分割上获得了61.0%的mIoU。据我们所知,它是这些任务上最好的可逆模型,也是COCO和ADE20K上最好的纯CNN模型,这两个任务只涉及静态核而不涉及动态卷积(Dai等人,2017;Ma等人,2020)。在附录中,我们进一步证明RevCol可以与Transformers(Dosovitskiy等人,2020;Devlin等人,2018)一起使用,并在计算机视觉和NLP任务上获得改进的结果。最后,与RevNets(Gomez等人,2017)类似,RevCol也具有可逆性节省内存的优势,这对于大型模型的训练尤其重要。

与先前作品的关系。尽管我们关于特征解耦的初步想法来自GLOM(Hinton,2021),但在RevCol中有很多简化和修改。例如,GLOM建议使用对比辅助损失来避免特征崩溃。对比训练方法需要额外的正负样本对,这很复杂且不稳定。在RevCol中,列之间的可逆变换提供了信息无损传播的自然方式。至于其他多尺度网格状架构,如HRNets(Wang等人,2020)、DEQ模型(Bai等人,2020)和FPNs(Lin等人,2017;Tan等人,2020),这些模型的设计目的是融合多尺度特征而不是学习解耦表示;因此,一般来说,它们仍然遵循图1(a)的模式——既没有多个入口/出口也没有可逆结构。基于这些网格状网络拓扑,基于NAS的工作(Ding等人,2021;Wu等人,2021;Liu等人,2019;Ghiasi等人,2019)针对特定数据集搜索网络架构的优化拓扑。然而,RevCol架构并不仅限于特定任务或数据集。由于其可逆性质,我们的方法保持了无损信息传播,并且不仅有利于预训练,也有利于其他下游任务。最近,RevBiFPN(Chiley等人,2022)提出了FPN的可逆变体,该变体进一步用在了HRNet类似的架构中。尽管我们的RevCol与RevBiFPN有相似的多尺度可逆变换思想,但我们的工作是独立完成的,它源于特征解耦的不同动机,并且具有更简单的架构(例如无需可逆上采样塔)和更高的性能。我们在第3部分比较了这些模型中的一些。

2、方法

在本节中,我们介绍了Reversible Column Networks (RevCol)的设计细节。图1(b)展示了顶层架构。请注意,对于RevCol中的每个列,为了简单起见,我们直接重用现有的结构,例如ConvNeXt(Liu等人,2022b)。因此,在以下子部分中,我们主要关注如何建立列之间的可逆连接。此外,我们在每个列的顶部引入了一个即插即用的中间监督,这进一步提高了训练收敛速度和特征质量。

2.1、Multi-LeVEl ReVERsible Unit

在我们的网络中,可逆变换在不损失信息的情况下在特征解耦中起着关键作用。其见解来自Reversible Neural Networks (Dinh等人,2014;Chang等人,2018;Gomez等人,2017;Jacobsen等人,2018;Mangalam等人,2022)。其中,我们首先回顾一下最具代表性的作品RevNet(Gomez等人,2017)。如图2(a)所示,RevNet首先将输入x分成两组,$ x_{0} 和 和 x_{1}$ 。然后在后面的块中,例如块t,它采用两个前块的输出 x t − 1 x_{t-1} xt1 x t − 2 x_{t-2} xt2 作为输入并生成输出x t 。块t的映射是可逆的,即x t-2 可以由两个后块 x t − 1 x_{t-1} xt1 x t x_{t} xt 重建。正式地,前向和反向计算遵循方程:
 Forward :  x t = F t ( x t − 1 ) + γ x t − 2  Inverse  : x t − 2 = γ − 1 [ x t − F t ( x t − 1 ) ] , (1) \begin{array}{l} \text { Forward : } x_{t}=\boldsymbol{F}_{t}\left(x_{t-1}\right)+\gamma x_{t-2} \\ \text { Inverse }: x_{t-2}=\gamma^{-1}\left[x_{t}-\boldsymbol{F}_{t}\left(x_{t-1}\right)\right], \end{array} \tag{1}  Forward : xt=Ft(xt1)+γxt2 Inverse :xt2=γ1[xtFt(xt1)],(1)
其中 F t \boldsymbol{F}_{t} Ft表示类似于标准ResNets中残差函数的任意非线性运算;\gamma是一个简单的可逆操作(例如,channel-wise缩放),其逆表示为 γ − 1 \gamma^{-1} γ1。如引言所述,上述公式对特征维度的约束太强,即 x t 、 x t + 2 、 x t + 4 、 x t + 4 x_{t}、x_{t+2}、x_{t+4}、x_{t+4} xtxt+2xt+4xt+4必须是相等大小的,这在架构设计上不灵活。这就是为什么RevNets (Gomez et al., 2017)在可逆单元之间引入了一些不可逆的下采样块,因此整个网络不是完全可逆的。更重要的是,我们发现没有明确的方法可以直接使用Eq. 1来桥接图1 (b)中的列。

为了解决这个问题,我们将方程1推广为以下形式:
 Forward :  x t = F t ( x t − 1 , x t − 2 , … , x t − m + 1 ) + γ x t − m  Inverse  : x t − m = γ − 1 [ x t − F t ( x t − 1 , x t − 2 , … , x t − m + 1 ) ] , \begin{array}{l} \text { Forward : } x_{t}=\boldsymbol{F}_{t}\left(x_{t-1}, x_{t-2}, \ldots, x_{t-m+1}\right)+\gamma x_{t-m} \\ \text { Inverse }: x_{t-m}=\gamma^{-1}\left[x_{t}-\boldsymbol{F}_{t}\left(x_{t-1}, x_{t-2}, \ldots, x_{t-m+1}\right)\right], \end{array}  Forward : xt=Ft(xt1,xt2,,xtm+1)+γxtm Inverse :xtm=γ1[xtFt(xt1,xt2,,xtm+1)],

其中m是指递归的阶数(m≥2)。显然,这种扩展仍然是可逆的。然后我们将每m个特征图分成一组:(x1,x2,…,xm),(xm+1,xm+2,…,x2m),…给定任何一组内的特征,我们可以很容易地根据方程2递归计算其他组的特征。与原始形式相比,方程2具有以下两个优点:

  • 如果m相对较大,则对特征图大小的约束大大放宽。请注意,方程1并不要求每个组内的特征图大小相等;这样的约束只存在于组之间。因此,我们可以使用不同形状的张量来表示不同语义级别或不同分辨率的特征。
  • 方程2可以很容易地与现有网络架构合作,即使后者不是可逆的。例如,我们可以将标准ResNet中的m个特征图分配给表示组 ( x t , x t + 1 , … , x t + m − 1 ) \left(x_{t}, x_{t+1}, \ldots, x_{t+m-1}\right) (xt,xt+1,,xt+m1)中的特征图,这仍然与方程2兼容,因为ResNet可以被视为 ( F t , F t + 1 , … , F t + m − 1 ) \left(\boldsymbol{F}_{t}, \boldsymbol{F}_{t+1}, \ldots, \boldsymbol{F}_{t+m-1}\right) (Ft,Ft+1,,Ft+m1)的一部分。因此,整个网络仍然是可逆的。

因此,我们可以将方程2重新组织成多列形式,如图2(b)所示。每一列由一个组内的m个特征图以及它们所属的母网络组成。我们将其命名为多级可逆单元,它是我们RevCol的基本组件,如图1(b)所示。

2.2、可逆列架构

2.2.1、MACRo设计

如引言中所述(参见图1(b)),我们的网络Rev Col由多个具有可逆连接的子网络组成,以执行特征解纠缠。图2(c)详细说明了体系结构的设计。遵循最近模型(Dosovitskiy等人,2020;Liu等人,2022b)的常见做法,首先将输入图像通过一个patch embedding模块拆分成不重叠的补丁。之后,将补丁馈送到每个子网络(列)。列可以用任何传统的单列架构实现,例如ViT(Dosovitskiy等人,2020)或ConvNeXt(Liu等人,2022b)。我们从每个列中提取四个级别的特征图,以传播列之间的信息;例如,如果列是由广泛使用的层次网络实现的(Liu等人,2021;He等人,2016;Liu等人,2022b),则我们可以简单地从每个阶段的输出中提取多分辨率特征。对于分类任务,我们仅使用最后一列的最后一级(第4级)的特征图以获取丰富的语义信息。对于其他下游任务,如目标检测和语义分割,我们使用最后一列中所有四个级别的特征图,因为它们同时包含低级和语义信息。

为了实现列之间的可逆连接,我们采用了方程2中提出的多级可逆单元,但以一种简化的方式:我们不是为每个非线性操作 F t ( ⋅ ) \boldsymbol{F}_{t}(\cdot) Ft()采用(m-1)个输入,而是仅采用当前列的1个低级特征x_{t-1}和前一列的1个高级特征 x t − m + 1 x_{t-m+1} xtm+1作为输入。这种简化并不破坏可逆属性。我们发现,更多的输入只能带来很小的精度提升,但会消耗大量的GPU资源。因此,方程2被简化为:
 Forward :  x t = F t ( x t − 1 , x t − m + 1 ) + γ x t − m  Inverse  : x t − m = γ − 1 [ x t − F t ( x t − 1 , x t − m + 1 ) ] . \begin{array}{l} \text { Forward : } x_{t}=\boldsymbol{F}_{t}\left(x_{t-1}, x_{t-m+1}\right)+\gamma x_{t-m} \\ \text { Inverse }: x_{t-m}=\gamma^{-1}\left[x_{t}-\boldsymbol{F}_{t}\left(x_{t-1}, x_{t-m+1}\right)\right] . \end{array}  Forward : xt=Ft(xt1,xtm+1)+γxtm Inverse :xtm=γ1[xtFt(xt1,xtm+1)].

与传统的架构相比,我们的RevCol的宏设计具有以下三个属性或优势:

特征解纠缠。在RevCol中,每个列的最低级别保持低级特征,因为它靠近输入,而最后一列的最高级别具有高度语义性,因为它直接连接到监督。因此,在列之间的(无损)传播过程中,不同级别的信息逐渐被解纠缠-一些特征图变得越来越语义化,一些保持低级。详细的分析在附录E中给出。该属性带来了许多潜在的优势,例如对同时依赖于高级和低级特征的下游任务更加灵活。我们认为可逆连接在解纠缠机制中起着关键作用-一些之前的工作如HRNet(Wang等人,2020)涉及多级特征融合,但没有可逆连接,这可能会导致信息损失,并在我们的实验中导致性能不佳(参见第3.5.2节)。

节省内存。传统网络的训练需要大量的内存足迹来存储前向传播过程中的激活,以满足梯度计算的需求。而在我们的RevCol中,由于列之间的连接是显式可逆的,因此在反向传播过程中,我们可以从最后一列到第一列重建所需的激活,这意味着我们只需要在训练过程中维护一个列的激活。在Section 3.5.4中,我们证明RevCol大约只需要\mathcal{O}(1)的额外内存,随着列数的增加。

大型模型的新缩放因子。在RevCol体系结构中,列数作为除深度(块数)和宽度(每个块的通道数)之外的一个新维度添加到普通单列CNN或ViT中。在一定范围内,增加列数与增加宽度和深度具有类似的收益。

2.2.2、MicRo 设计

我们默认使用ConvNeXt块(Liu等人,2022b)来实现我们网络中的每个列;其他架构,如transformer,也是适用的(详见附录B)。为了使ConvNeXt与我们的宏架构兼容,我们对它进行了一些修改:

Fusion模块。如图5所示,在原始ConvNeXt的每个级别中,输入首先在patch-merging块中被下采样。然后,输出通过一堆残差块。在RevCol中,我们引入了一个融合模块来融合来自当前列和前一列的特征映射(参见图2(c)中的绿色和蓝色连接)。我们对原始ConvNeXt中的patch-merging块进行了修改,将LayerNorm放在patch-merging卷积之后,而不是之前。patch-merging卷积的通道数加倍。我们还引入了一个上采样块,该块由线性通道映射层、LayerNorm归一化和特征图插值层组成。我们将线性通道映射层中的通道数减半。这两个块的输出相加,然后传递给残差块。

核大小。在RevCol中,我们将原始ConvNeXt(Liu等人,2022b)中的 7 × 7 7 \times 7 7×7卷积修改为 3 × 3 3 \times 3 3×3,主要是为了加速训练。增加核大小可以获得更高的准确性,但不会很多,部分原因是我们的多列设计扩大了有效感受野。有关更多详细信息,请参阅第3.5.5节。

可逆操作 γ \gamma γ。我们采用可学习的可逆通道缩放作为可逆操作 γ \gamma γ,以保持网络稳定。每次在式3的前向传播中,特征的幅度都会增大,这会使训练过程不稳定。使用可学习的缩放可以抑制特征的幅度。在训练期间,我们截断了 γ \gamma γ的绝对值,使其永远不会小于 1 e − 3 1 e^{-3} 1e3,因为当 γ \gamma γ太小时,数值误差可能在反向计算中变得很大。

2.3、中间监督

尽管多级可逆单元能够在列迭代过程中保持信息,但下采样块仍然可以丢弃列内的信息。前面几列末尾的特征太接近最终输出,因为可逆连接只进行缩放和求和。这种信息丢失会导致性能下降。类似的问题在使用深层监督方法(Lee等人,2015;Szegedy等人,2015)时也会发生。

为了缓解信息崩溃的问题,我们提出了一种中间监督方法,该方法在前面几列中添加了额外的监督。对于前面几列中的特征,我们希望尽可能保持特征与输入图像之间的互信息,这样网络在列内部丢弃的信息就会更少。考虑到RevCol逐渐分离语义和低级信息,提取和利用与任务相关的信息可以进一步提高性能。因此,我们需要最大化特征和预测之间互信息的下界。

受Wang等人(2021)的启发,我们在最后一级特征(第4级)中添加了两个辅助头。一个是解码器(He等人,2022),它重构输入图像,另一个是线性分类器。线性分类器可以按常规分类方式用交叉熵损失进行训练。解码器的参数通过最小化二元交叉熵重构损失进行优化。与常用的L1和L2损失相比,将重构的对数和输入图像的分布解释为比特概率(伯努利)输出更平滑的值,这使得它更兼容交叉熵损失。

对于某一列的中间监督,复合损失是上述两种损失的加权总和。需要注意的是,监督头可能不会添加到所有列中。对于所有变体的RevCol,我们通过经验将复合损失的数量设置为4(例如,对于8列的RevCol,监督头添加在第2、4和6列以及第8列)。

总损失 L \mathbf{L} L是所有复合损失的总和:
L = ∑ i = 1 n ( α i L B C E + β i L C E ) \boldsymbol{L}=\sum_{i=1}^{n}\left(\alpha_{i} \mathcal{L}_{\mathrm{BCE}}+\beta_{i} \mathcal{L}_{\mathrm{CE}}\right) L=i=1n(αiLBCE+βiLCE)

n 表示复合损失的总数。损失函数 L B C E \mathcal{L}_{\mathrm{BCE}} LBCE L C E \mathcal{L}_{\mathrm{CE}} LCE分别表示BCE损失和CE损失。\alpha_{i}和\beta_{i}的值随着复合损失数量的增加而线性改变。当复合损失被添加到前面的列时,我们使用较大的 α i \alpha_{i} αi值和较小的 β i \beta_{i} βi值来保持 I ( h , x ) I(\boldsymbol{h}, x) I(h,x)。在后面的列中,\alpha_{i}的值会减小,而 β i \beta_{i} βi的值会增加,这有助于提高性能。

3、实验部分

我们构建了不同的RevCol变体,包括RevCol-T/S/B/L,使其与Swin transformers和ConvNeXts的复杂度相当。我们还构建了一个更大的RevCol-XL和RevCol-H来测试扩展能力。这些变体采用不同的通道维度C、每个列的块数B和列数COL。这些模型变体的配置超参数如下:

  • RevCol-T: C=(64,128,256,512), B=(2,2,4,2), COL=4
  • RevCol-S: C=(64,128,256,512), B=(2,2,4,2), COL=8
  • RevCol-B: C=(72,144,288,576), B=(1,1,3,2), COL=16
  • RevCol-L: C=(128,256,512,1024), B=(1,2,6,2), COL=8
  • RevCol-XL: C=(224,448,896,1792), B=(1,2,6,2), COL=8
  • RevCol-H: C=(360,720,1440,2880), B=(1,2,6,2), COL=8

我们在ImageNet数据集上进行图像分类(Deng et al., 2009;Ridnik et al., 2021)。我们还在常用的MS-COCO (Lin et al., 2014)和ADE20k (Zhou et al., 2017b)数据集上对下游目标检测任务和语义分割任务进行了模型测试。训练和微调设置请参见附录d。此外,我们展示了带有transformer的RevCol在视觉和语言任务上的性能(见附录B)。

3.1、图像分类

在ImageNet(1.28M图像)数据集上,我们对RevCol进行了300个训练周期的训练,并采用了中间监督。超参数、数据增强和正则化策略遵循Liu等人(2022b)的方法。我们还使用更大的ImageNet-22K数据集(Ridnik等人,2021)对模型进行了预训练,该数据集包含14.2百万个图像。
在这里插入图片描述

在表1中,我们将RevCol变体与常见的最近Transformer和CNN在ImageNet-1k验证集上进行比较。我们的模型在具有相似复杂性的情况下优于大量的普通单列CNN和Transformer。例如,RevCol-S达到83.5%的Top-1准确率,比ConvNeXt-S高出0.4个点。当使用更大的ImageNet-22K数据集进行预训练时,RevCol-XL达到88.2%的Top-1准确率。由于RevCol在分类预训练中保留了一些与任务无关的低级别信息,放宽参数和FLOPs的约束并扩大数据集大小可以进一步提高我们模型的性能。为了进一步测试大型数据集的扩展效果,我们构建了一个168百万个图像的半标记数据集(参见附录C)。通过额外的数据预训练和ImageNet-1k微调,我们的RevCol-H达到90.0%的Top-1准确率。我们的结果进一步证明,使用RevCol,CNN模型也可以分享大型模型和大量数据预训练的红利。

3.2、目标检测

我们在目标检测任务上对所提出的RevCol进行了评估。实验使用级联掩模R-CNN (Cai & Vasconcelos, 2019)框架在MS-COCO数据集上进行。我们还使用HTC++ (Chen et al., 2019)和DINO (Zhang et al., 2022a)框架微调了我们最大的模型RevCol-H。

在这里插入图片描述

在表2中,我们将APbox和APmask与COCO验证集上的Swin/ConvNeXt进行比较,发现RevCol模型在类似计算复杂性的情况下优于其他同类模型。预训练中保留的信息有助于RevCol模型在下游任务中取得更好的结果。当模型大小增加时,这种优势变得更加明显。在Objects365(Shao等人,2019)数据集和DINO(Zhang等人,2022a)框架下进行微调后,我们最大的模型RevCol-H在COCO检测小型验证集上实现了63.8%的APbox。

3.3、语义分割

我们还使用UperNet(Xiao等人,2018)框架评估了RevCol主干在ADE20K语义分割任务上的表现。在下游微调过程中,我们没有使用中间监督。为了进一步探索我们模型的能力并达到领先的表现,我们采用了最近的分割框架Mask2Former(Cheng等人,2022),并采用了相同的训练设置。
在这里插入图片描述

在Tab. 3中,我们报告了验证集单尺度测试和多尺度翻转测试的mIoU。RevCol模型可以在不同模型容量上实现有竞争力的性能,进一步验证了我们架构设计的有效性。值得注意的是,当使用Mask2Former检测器和额外的预训练数据时,RevCol-H达到了61.0%的mIoU,这表明它在大规模视觉应用中具有可行的可扩展性。

3.4、与SOTA基础模型的系统级比较

基础模型(Kolesnikov等人,2020;Radford等人,2021;Yuan等人,2021b)是通用目的的主干网络,它们在大规模和多样化数据源上进行预训练,可以适应各种下游任务,只需使用有限的特定域数据。我们比较了各种公开的、最先进的(SOTA)基础模型,包括视觉转换器和视觉语言模型,即SwinV2(Liu等人,2022a)、BEiT3(Wang等人,2022)和Florence(Yuan等人,2021b)。如Tab. 4所示,尽管我们的RevCol-H是纯粹基于卷积的,并且是在单一模态数据集上进行预训练的,但它在不同任务上的结果都证明了RevCol具有出色的泛化能力,尤其是在具有大规模参数的情况下。
在这里插入图片描述

3.5、更多分析实验

3.5.1、可逆列架构的性能提升

在本节中,我们评估使用可逆列的性能增益。在第一个实验中,我们固定单个列的结构和FLOPs,然后简单地添加更多列来扩展大型模型并测试性能。同时,我们绘制了具有相似模型大小的原始单列模型。如图3所示,与单列模型相比,在相同的FLOPs约束下,使用多列可逆架构总是能获得更好的性能。此外,在一定范围内,与仅通过增加块数(深度)和通道数(宽度)扩展单列模型相比,通过增加列数来扩展RevCol具有相似的增益。在第二个实验中,我们将模型大小限制为约4.5G FLOPs,并测试了具有不同列数的模型变体。换句话说,我们逐渐添加更多列,同时逐渐减小单列的大小。结果如表5所示,我们注意到采用4到12之间的列数可以保持模型的性能,而进一步的更多列模型性能会下降。我们认为原因是单个列的宽度和深度过低,无法保持表示能力。
在这里插入图片描述

3.5.2、可逆网络与非可逆网络

在本节中,我们对可逆连接的不同设计模式进行消融实验。首先,我们使用HRNet的融合模块构建了一个非可逆的多列网络。其次,我们使用RevNet的设计构建了另一个单列可逆的ConvNeXt,如图2(a)所示。我们将这两种设计与我们的RevCol进行比较,评估结果如表6所示。非可逆多列网络在传播过程中存在信息损失,可能导致精度下降。可逆单列网络在传播过程中保持信息,但缺乏多级融合的优势。这个实验进一步表明将可逆设计与多列网络相结合的有效性。
在这里插入图片描述

3.5.3、使用中间监督的性能提升

在本节中,我们在ImageNet-1K上评估了使用和不使用中间监督的RevCol-T/S/B的性能。我们还评估了在MS-COCO数据集上使用1×训练计划的目标检测任务性能。其他设置保持不变。从表7中的验证结果可以看出,使用中间监督训练的模型取得了0.5%至0.9%的更好的top-1准确率。此外,中间监督也有利于下游任务,这进一步证明了其有效性。

3.5.4、GPU内存消耗与模型大小

图4绘制了GPU内存消耗与模型大小的关系。我们将单个列的计算复杂性固定为1G FLOPs,并增加列数。同时,我们测量了包括前向和后向传播在内的训练过程中的内存消耗。我们的实验是在Nvidia Tesla V100 GPU上进行的,批量大小为64,FP16精度和PyTorch实现。随着列数的增加,我们可以看到RevCol保持常数的GPU内存消耗,而非可逆架构的内存消耗随着列数的增加而线性增加。请注意,我们的RevCol并不严格保持相同的GPU内存消耗,因为可逆网络需要备份计算梯度所需的操作权重以及在反向传播中进行特征图的重建。
在这里插入图片描述

3.5.5、卷积中核大小的消融实验

在原始ConvNeXt中,使用大核卷积可以获得更好的性能。我们在RevCol-T中进行了实验。如表8所示,对于4列模型,使用5×5卷积使ImageNet-1k Top-1准确率提高了0.3%,使COCO AP_{box}提高了0.7%。进一步增加核大小可以在下游任务中获得更多准确度,但不会太多。我们认为RevCol设计已经扩大了有效感受野,这限制了使用大核卷积的准确度增益。另一方面,3×3卷积在(预)训练中具有效率和稳定性的优点。因此,我们在所有RevCol模型中采用核3。

4、相关工作

4.1、分离表示学习和部分-整体层次

分离表示通常被描述为一种将变化因素分离,明确表示数据的重要属性的方法(Desjardins等人,2012年;Bengio等人,2013年)。Desjardins等人(2012年);Kulkarni等人(2015年);Higgins等人(2017年);Chen等人(2016年);Karras等人(2019年)通过生成模型寻求学习分离表示。Locatello等人(2019年)指出,没有对所考虑的学习方法和数据集的归纳偏置,无监督学习分离表示从根本上来说是不可能的。最近的GLOM(Hinton,2021年)提议通过权重共享列来表示部分-整体层次。GLOM架构为深度神经网络提供了解释的部分-整体层次(Garau等人,2022年)。在RevCol中,我们采用了使用列的设计,但没有对形成岛屿的过程进行建模。相反,我们的列迭代过程维护了低级和高级信息,并逐渐将它们分离。RevCol可以使用端到端的监督进行训练,而不是使用自我监督的方法。

4.2、可逆网络

Gomez等人(2017)首次提出了可逆网络RevNet,可以在不保存中间激活的情况下进行反向传播。可逆设计显著节省了训练成本,因为它在模型深度扩展时保持O(1)的GPU内存消耗。Jacobsen等人(2018)提出了一种完全可逆的网络,可以在不损失任何信息的情况下返回到输入。Chang等人(2018)开发了一个关于深度神经网络稳定性和可逆性的理论框架,并推导出可以任意加深的可逆网络。Mangalam等人(2022)将可逆网络的范围从CNN扩展到了Transformer。我们的RevCol在RevBiFPN中将信息保留在每个列内,而不是整个BiFPN网络内。

5、结论

本文提出了一种基于可逆柱的基础模型设计范式RevCol。在通过列进行无损传播的过程中,学会了RevCol中的特征逐渐解纠缠,并且仍然保持总信息而不是压缩。我们的实验表明,RevCol可以在多个计算机视觉任务中获得具有竞争力的性能。我们希望RevCol能够在视觉和语言领域的各种任务中做出更好的贡献。

A、MICRO 设计细节

在本节中,我们将提供RevCol的架构设计细节。如图2和2.2节所示,我们的RevCol包含多个具有可逆连接的列。图5 (a)显示了ConvNeXt的架构。请注意,我们将ConvNeXt中的7 × 7深度卷积替换为3 × 3,如第2.2.2节所述。在图5 (b)中,我们详细展示了如何在ConvNeXt的基础上扩展到我们的RevCol。首先,我们用融合块替换下采样块,以融合当前列中的低级表示和前一列中的高级表示,图5 ©显示了融合块的细节,其中包含上采样和下采样操作,以处理不同的分辨率。其次,对于每个级别,来自前一列的相同级别表示被添加到当前级别的输出中,并准备作为一个整体传播。由于这两个修改,来自不同层次的特征映射聚合在一起形成中间表示。在图5 ©中,我们使用Linear-LayerNorm,然后使用最接近的插值来上采样低分辨率特征。一个步幅为2的2 × 2核Conv2d向下采样高分辨率特征,然后是一个LayerNorm来平衡两个输入的贡献。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1247697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UNETR++:深入研究高效和准确的3D医学图像分割

论文:https://arxiv.org/abs/2212.04497 代码:GitHub - Amshaker/unetr_plus_plus: UNETR: Delving into Efficient and Accurate 3D Medical Image Segmentation 机构:Mohamed Bin Zayed University of Artificial Intelligence1, Univers…

从Redis反序列化UserDetails对象异常后中发现FastJson序列化的一些问题

最近在使用SpringSecurityJWT实现认证授权的时候,出现Redis在反序列化userDetails的异常。通过实践发现,使用不同的序列化方法和不同的fastJson版本,异常信息各不相同。所以特地记录了下来。 一、项目代码 先来看看我项目中redis相关配置信息…

**QT与目标板联合调试_断点仿真**

原文地址: https://blog.csdn.net/u012851408/article/details/86715626

浅析电力电容器的防火防爆及改进措施

安科瑞 华楠 摘要:电容器着火爆炸的原因有管理上的疏忽、保养不到位、频繁投切、高次谐波、存在于易燃易爆的环境之中以及电容器选型、安装、保护不恰当等,电容器的防火防爆,应根据这些原因采取相应的措施。关键词:电力电容器&am…

保姆级 ARM64 CPU架构下安装部署Docker + rancher + K8S 说明文档

1 K8S 简介 K8S是Kubernetes的简称,是一个开源的容器编排平台,用于自动部署、扩展和管理“容器化(containerized)应用程序”的系统。它可以跨多个主机聚集在一起,控制和自动化应用的部署与更新。 K8S 架构 Kubernete…

如何开发有趣而富有创意的营销小游戏

在数字化时代,企业通过创意而独特的方式与目标受众互动,已成为提高品牌知名度和用户参与度的重要手段之一。其中,设计一款引人入胜的营销小游戏,不仅能吸引用户的眼球,还能有效传达品牌信息。以下是一些建议&#xff0…

软件测试还能找到工作吗?答案全在这...

观点:如果你还是以前的思维来学习测试,那你肯定是找不到工作 我做测试工作有将近8年的时间,蚂蚁金服做过2年,因为加班太多离职了。目前在一家国企上市公司,一年能拿三四十个左右,对比头部互联网公司来说&a…

Linux系统下脚本操作、host文件修改

1:Linux系统下给.sh添加可执行权限并运行 linux下的sh文件变成可执行文件(可执行文件有颜色(默认绿色)) chmod 777 xxx.sh 添加可执行权限 chmod ux xxx.sh 解释: chmod(change the permissions mode o…

【STM32单片机】LED点阵花样显示设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器,使用8*8LED点阵模块、按键模块等。 主要功能: 系统运行后,默认以静态模式显示,此时点阵左右循环切换图像。 当按下K…

GEE:kNN(k-最近邻)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行kNN(k-最近邻)分类的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行kNN(k-最近…

mysql 更改密码

由于两台设备的mysql数据库的密码不一样,开发时每次连接数据库都需要更改配置文件,所以想修改一下mysql数据库的密码。 mysql 修改密码千万不要直接修改,直接修改的话会出现两种情况: 1,修改成功,无法登录。…

UEditor编辑器实现上传图片自动加水印功能PHP源码

UEditor编辑器是百度旗下的免费开源富文本编辑器,使用很方便,但是也有缺点,比如,上传图片不能自动添加水印,下边我们就来说说如何在UEditor编辑器中自动实现上传图片添加水印功能,操作很简单。 首先找到UEditor/PHP目录下的Uploader.class.php的文件,打开该文件,找到以…

ThreeJs绘制仓库场景

之前有做过关于threejs开发的一些小功能项,最近正好在做一个仓库相关的3D场景,这里贴出核心代码和大家分享下。 首先要做3D场景,除了基础的组件要引入生成外,要先加入地板,在地板上添加一些3D模型达到各种各样的效果&a…

wiondow系统-python中缺少JDK安装(超详解)!!!

因为学习python中,用到Pysaprk,但因缺少JDK而报错,解决方法如下 下载新款且稳定的17版本(21不推荐)官网下载有限速设置,压缩包我已经放在下面了,注意提取 百度网盘链接:https://pan.baidu.com/…

Mobaxterm 使用lrzsz传输文件(rz/sz)

Mobaxterm 使用lrzsz传输文件报错 1. 现象 最近从xshell切换到Mobaxterm其他一切正常,就是使用rz传输文件时会出现错误,比较苦恼. 会出现以下错误 [rootcentos7 rpmbuild]# rz ▒CCCCCCCCCCC23be50ive.**B0100000023be502. 解决方法 去官网(https://mobaxterm.mobatek.net…

【技术分享】RK3399 Ubuntu通过Python实现录音和播放功能

​本文基于IDO-SBC3968 Ubuntu 系统通过Python脚本实现录音和播放功能。 IDO-SBC3968采用RK3399国产六核64位CPU高性能处理器,支持4K HDMI2.0显示,接口丰富,拥有千兆以太网,全协议TypeC接口,USB3.0 ,eDP 和…

Android : ListView + SimpleAdapter(简单适配器)-简单应用

示例图: MainActivity.java package com.example.mylistviewsimpleadapter;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import …

LangChain(0.0.339)官方文档一:快速入门

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、LangChain简介(v0.0.338)1.1 整体框架1.2 主要组件1.2.1 Model I/O1.2.2 Retrieval1.2.2.1 RAG1.2.2.2 Retrieval 1.2.3 Chain 1.3 其它组件1.3.1 …

windbg双机调试

1:虚拟机增加串行端口 2:操作步骤:编辑虚拟机设置 -> 添加 -> 串行端口 -> 完成 参数配置:使用命名管道 -> \\.\pipe\com_1 -> 该端是服务器,另一端是应用程序 -> 轮询时主动放弃CPU->确定 3 -b…

App Inventor 2 什么情况下需要使用字典?

介绍 字典在其他语言中称为映射、关联数组或列表,是一种将一个值(通常称为键)与另一个值关联的数据结构。 Q:App Inventor 2 什么情况下需要使用字典? A:列表能完成字典的绝大部分功能,不过字…