TransNeXt:昨日最强已不强,TransNeXt-Tiny刷新ImageNet!

作者 | AI视界引擎  编辑 | 极市平台

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【全栈算法】技术交流群

本文只做学术分享,如有侵权,联系删文

导读

 

TransNeXt在多个模型大小上都实现了最先进的性能。在的分辨率下,TransNeXt-Tiny在ImageNet上的准确率为84.0%,比ConvNeXt-B减少了69%的参数。

975ad46d5ab5f2447b5c6a23ae55c2ad.png

由于残差连接中的深度衰减效应,许多依赖堆叠层进行信息交换的高效视觉Transformer模型往往无法形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,本文提出了一种基于生物模拟的聚合注意力,这是一种模拟生物视杆细胞视觉和连续眼动的设计基础的Token混合器,它允许特征图上的每个Token都具有全局感知。


此外,作者还引入了可学习的Token,这些Token与传统的Query和Key相互作用,从而在依赖Query和Key相似性的基础上进一步多样化生成亲和矩阵的生成。作者的方法不需要堆叠进行信息交换,因此可以有效避免深度衰减,并实现自然视觉感知。此外,作者还提出了一种卷积GLU,这是一种连接GLU和SE机制的通道混合器,每个Token根据其最近邻图像特征具有通道注意力,增强局部建模能力和模型鲁棒性。作者将聚合注意力和卷积GLU相结合,创建了一个新的视觉背叫做TransNeXt。


大量实验表明,作者的TransNeXt在多个模型大小上都实现了最先进的性能。在的分辨率下,TransNeXt-Tiny在ImageNet上的准确率为84.0%,比ConvNeXt-B减少了69%的参数。作者的TransNeXt-Base在的分辨率下,ImageNet上的准确率为86.2%,在ImageNet-A上的准确率为61.6%。在的分辨率下,COCO目标检测mAP为57.1,ADE20K语义分割mIoU为54.7。

代码: https://github.com/DaiShiResearch/TransNeXt

1 Introduction

近年来,视觉Transformer(ViT)已成为各种计算机视觉任务的热门Backbone架构。ViT模型由两个关Key组件组成:自注意力层(Token混合器)和MLP层(通道混合器)。自注意力机制在特征提取中起着至关重要的作用,通过计算Query和Key之间的相似性动态生成亲和矩阵。这种全局信息聚合方法在无需像卷积那样的归纳偏差的情况下,展示了出色的特征提取潜力,并可以构建强大的数据驱动模型。然而,视觉Transformer的Transformer编码设计,最初是为了语言建模,在下游计算机视觉任务中表现出固有的限制。具体来说,自注意力中全局亲和矩阵的计算由于其平方复杂度和高内存消耗而面临挑战,这限制了其在高分辨率图像特征上的应用。

为了减轻自注意力机制中固有的平方复杂度和内存消耗带来的计算和内存负担,许多稀疏注意力机制在前人的研究中已经被提出。其中一种典型的方法是局部注意力,它限制了注意力在特征图上的一个窗口内。然而,由于其有限的感受野,这种方法通常需要交替堆叠与不同类型的Token混合器以实现跨窗口信息交换。另一种典型的方法是空间下采样注意力中的Key和值(例如,池化,网格采样)。由于它牺牲了Query对特征图的细粒度感知,这种方法也存在一定的局限性。最近的研究交替堆叠空间下采样注意力和局部注意力,取得了令人满意的表现结果。

然而,最近的研究和实验表明,具有残差块的深度网络类似于较浅的集成网络,表明堆叠块实现的跨层信息交换可能不如预期的那样有效。

另一方面,局部注意力和空间下采样注意力与生物视觉的工作方式有显著不同。生物视觉对视觉焦点附近特征的分辨率更高,而对远处特征的分辨率较低。此外,眼球移动时,生物视觉这种特性在图像中任何位置的像素上都保持一致,这意味着像素级的平移等价性。然而,在基于窗口分区的局部注意中,窗口边缘和中心的Token不被视为等价,这明显存在差异。

3312b7dadeb5f855a1b9f7f9e5d649a2.png

作者观察到,由于残差连接中的深度衰减效应,许多高效的视觉Transformer(ViT)模型在堆叠层时无法形成足够的信息混合。即使堆叠了很深的层,它们的窗口分区的痕迹也总是形成不自然的伪影,如图2所示。为了解决这个问题,作者研究了一种视觉建模方法,该方法与生物视觉非常接近,以减轻潜在的模型深度衰减,并实现接近人类视杆细胞视觉的信息感知。

为此,作者首先引入了像素聚焦注意力,它采用双路径设计。在一条路径中,每个Query具有对其最近邻居特征的细粒度注意力,而在另一条路径中,每个Query具有对空间下采样特征的粗粒度注意力,允许进行全局感知。这种方法是基于每个像素的,有效地模拟了眼球的连续移动。

此外,作者将Query嵌入和位置注意力机制引入到像素聚焦注意力中,从而提出了聚合像素聚焦注意力,作者简称为聚合注意力。这种方法进一步多样化地生成了亲和矩阵,而不仅仅是依赖Query和Key之间的相似性,从而在单个注意力层内聚合多个注意力机制。作者还重新评估了视觉Transformer中的通道混合器设计要求,并提出了名为卷积GLU的新型通道混合器。这种混合器更适合图像任务,并集成基于局部特征的通道注意力来增强模型的鲁棒性。

作者引入了TransNeXt,这是一种分层视觉Backbone网络,其中包含聚合注意力作为Token混合器和卷积GLU作为通道混合器。通过在图像分类、目标检测和分割任务上的全面评估,作者证明了这些混合组件的有效性。

dcbfa747377597aa7192acb734287bee.png

作者的TransNeXt-Tiny, 仅在ImageNet-1K上预训练, 在ImageNet上的准确率达到 , 超过了ConvNeXt-B。在COCO目标检测中, 它使用DINO检测头,在分辨率为  时,实现了55.1的框 mAP, 比在  分辨率下预训练的ConvNeXt-L提高了1.7。作者的TransNeXtSmall/Base, 仅在  分辨率下进行 5 个epoch的微调, 在ImageNet上的准确率达到了  , 比在30个epoch下微调的 previous state-of-the-art MaxViT-Base提高了  。

此外, 当在  分辨率的ImageNet-A 测试集上评估时, 作者的TransNeXt-Small/Base模型在 top-1准确率上达到了 , 显著优于ConvNeXt-L的7.6%/10.9%, 为ImageNet 有监督模型的鲁棒性树立了新的基准。

总之,贡献如下:

  1. 提出像素聚焦注意力, 这是一种与生物视杆细胞视觉高度一致的Token混合器,可以减轻模型的潜在深度衰减。这种新颖的注意力机制基于每个像素进行操作,有效地模拟了眼球的连续移动,并高度符合生物视觉的聚焦感知模式。它具有与卷积相当的视觉先验知识。

  2. 提出聚合注意力,这是像素聚焦注意力的增强版,进一步将两种非QKV注意力机制聚合到像素聚焦注意力中。值得注意的是,作者在这个框架内提出了一个非常高效的方法,其附加的计算开销仅占整个模型总计算开销的0.2%-0.3%,从而实现了在单个混合层中,QKV注意力、LKV注意力和QLV注意力的异常低成本统一。

  3. 提出长度缩放余弦注意力,以增强现有注意力机制对多尺度输入的扩展能力。这使得TransNeXt能够实现比纯卷积网络更好的大规模图像扩展性能。

  4. 提出卷积GLU,它利用最近邻图像特征实现通道注意力。与卷积前馈相比,它能够在更少的FLOPs下实现卷积混合器的注意化,从而有效提高模型的鲁棒性。

  5. 提出TransNeXt,这是一种视觉Backbone网络,在各种视觉任务如图像分类、目标检测和语义分割等相似大小的模型中,实现了最先进的性能。它还表现出最先进的鲁棒性。

2 Related Work

视觉Transformer: 视觉Transformer(ViT)是第一个将Transformer架构引入视觉任务,其中图像被分割成非重叠的Patch,然后线性投影到Token序列中,这些Token序列随后由Transformer编码器进行编码。在大型预训练数据或精心设计的训练策略下,ViT模型在图像分类和其他下游任务上超过了卷积神经网络(CNNs),表现出显著的性能。

非QKV注意力变体: 在自注意力中,动态亲和矩阵是通过Query和Key之间的相互作用生成的。最近,一些研究探索了使用可学习Token作为原始Query或Key的替代品来生成动态亲和矩阵的方法。Involution和VOLO等方法使用可学习Token替换原始Key,从而生成仅与Query相关的动态亲和矩阵。相比之下,QnA使用可学习Token替换Query,导致动态亲和矩阵仅与Key相关。这两种方法都显示出了有效性。

仿生视觉建模: 人类视觉对视觉焦点的特征具有更高的分辨率,而对远处特征的分辨率较低。这种仿生设计已经被集成到几种机器视觉模型中。

具体而言,Focal-Transformer根据这个概念设计了一种视觉注意力机制,但它基于窗口划分运行。位于窗口边缘的Token无法获得自然视杆细胞视觉,并且其窗口化的方式无法模拟人类眼球的连续移动。作者的方法有效地解决了这些问题。

3 Method

Aggregated Pixel-focused Attention

3.1.1 Pixel-focused Attention

受到生物视觉系统的工作原理的启发,作者设计了一种像素聚焦注意力机制,它在每个Query附近具有细粒度的感知,同时同时保持全局信息的粗粒度意识。为了实现眼球运动中固有的像素级平移等价性,作者采用了一种双路径设计,包括以Query为中心的滑动窗口注意力和池化注意力。

1cc4c0d959fce2edcbfe73bea17895cc.png

此外,为了在两个注意力路径之间诱导耦合,作者对两个路径的QueryKey相似度结果使用相同的softmax进行计算。这导致了细粒度和粗粒度特征之间的竞争,将像素聚焦注意力转化为多尺度注意力机制。作者现在关注输入特征图上单个像素的操作。作者定义输入特征图上以为中心的滑

作者现在关注输入特征图上单个像素的操作。作者定义输入特征图上以  为中心的滑动窗口中的像素集合为  。对于固定的窗口大小  。同时, 作者定义从特征图池化得到的像素集合为  。对于池化大小  。因此, 像素聚焦注意力 (PFA) 可以如下描述:

d46c5e40dcd5a9daad9a0ec3177cc2d3.png

激活与池化: 为了在后续应用中利用PFA的线性复杂度模式进行大规模图像推理,作者采用参数免费的适应性平均池化进行空间降采样。然而,平均池化操作会严重损失信息。因此,作者在特征图池化之前,使用单层神经网络进行投影和激活,以压缩和提取有用的信息,从而在降采样后提高信息压缩率。降采样后,作者再次使用层规范化来规范化输出,以确保  和 的方差一致性。作者提出的降采样操作称为“激活与池化”,可以用以下方程表示:

作者用作者的'激活与池化机制替换了PVTv2-li中的降采样模块,并设计了一个2M大小的模型用于在CIFAR-100上的ablation实验。作者的模块将PVTv2-li的top-1准确率从68.1%提高到了70.4%,证明了这种方法的有效性。

填充Mask: 在滑动窗口路径中,特征图边缘的像素不可避免地与边界外的零填充计算相似度。为了防止这些零相似度影响softmax操作,作者采用填充Mask将这些结果设置为。

3.1.2 Aggregating Diverse Attentions in a Single Mixer Query embedding

许多视觉语言模型利用来自文本模态的Query,对来自视觉模态的Key进行交叉注意力,从而实现跨模态信息聚合以完成视觉问答(VQA)任务。此外,已经证明在微调这些多模态模型以适应特定子任务时,合并并优化可学习的prefixQueryToken是有效且高效的。

将这种想法自然地扩展到将可学习的QueryToken集成到Backbone网络的注意力机制中,以进行像图像分类、对象检测和语义分割等明确定义的任务,并直接优化它们。这种方法已经通过以前的工作的有效性得到了验证。

这种方法与传统的QKV注意力不同,因为它不使用输入中的Query,而是根据当前任务学习一个Query来执行交叉注意力。因此,作者将这种方法归类为可学习的Key-Value(LKV)注意力,并与QKV注意力相平行。作者发现,将传统QKV注意力中所有QueryToken的Query嵌入(QE)添加起来,可以实现与Query无关的信息聚合效果,且额外开销可以忽略不计。作者只需要修改方程1如下:

位置注意力: 信息聚合的另一种替代方法是使用一组可学习的Key,这些Key与来自输入的Query相互作用以获得注意力权重,即Query-Learnable-Value(QLV)注意力。这种方法与传统的QKV注意力不同,因为它破坏了Key和值之间的一对一对应关系,导致为当前Query学习更多的隐式相对位置信息。

因此,它通常与滑动窗口相结合在视觉任务中使用。与静态的亲和矩阵(如卷积或相对位置偏差)不同,这种通过数据驱动建模方法生成的亲和矩阵考虑了当前Query的影响,并可以基于它动态适应。

作者观察到, 这种数据驱动建模方法比静态相对位置偏差更具鲁棒性, 并且可以进一步增强局部建模能力。利用这一特点, 作者在每个注意力头中引入一组可学习的Token , 允许这些Token与Query相互作用以获得额外的动态位置偏差并将其添加到  。使用这种增强只需要增加额外的计算开销  。作者只需要修改方程 4 如下:

3.1.3 Overcoming Multi-scale Image Input

长度缩放余弦注意力: 与缩放点积注意力不同,长度缩放余弦注意力使用了余弦相似度,已被观察到可以生成更适中的注意力权重,并有效地增强了大型视觉模型的训练稳定性。长度缩放余弦注意力通常将一个额外的可学习系数乘到Query和Key的余弦相似度结果上,使得注意力机制可以有效地忽略不重要的Token。

最近的研究发现,随着输入序列长度的增加,注意力输出的置信度会降低。因此,注意力机制的缩放因子应该与输入序列长度相关。进一步地,[52]提出了一个关于缩放点积注意力熵不变性的设计,以方便更好的泛化到未知长度。在[52]中,提供了当Query和Key被近似为具有大小的向量时,长度为的缩放点积注意力熵的估计:

对于余弦相似度, 作者定义Query和Key在其头维上进行  正则化后的向量分别为  和 , 它们的模长均为 1 。为了保持熵不变性并忽略常数项, 作者设置  。由于方程 8 仅是一个估计, 作者设置 , 其中  是每个注意力头初始化为  的可学习变量。作者提出长度缩放余弦注意力如下:

在这里,  表示每个Query与有效Key交互的次数, 不包括被 Mask Token的计数。具体来说,在Transformer解码器中应用时, 由因果 Mask 符 Mask 的未来Token不应计入  。在像素聚焦注意力的背景下,  的计算方式为 , 其中  表示位置  处的填充MaskToken集合。

为了进一步增强像素聚焦注意力的多尺度图像输入的扩展能力, 作者采用不同的方法计算两个路径上的  和  。在池化特征路径上, 作者使用对数间隔连续位置偏差 , 它是一个2层MLP, 其中使用 ReLU[47]从  和  之间的空间相对坐标  计算  。

在滑动窗口路径上, 作者直接使用可学习的  。一方面, 这是因为滑动窗口的大小是固定的, 不需要通过log-CPB对未知的相对位置偏差进行扩展, 从而节省计算资源。另一方面, 作者观察到使用  计算  会导致性能下降。作者认为这是因为  表示细粒度Token和粗粒度Token之间的空间相对坐标, 而  表示细粒度Token之间的空间相对坐标, 它们的数值含义不同。作者在附录中进一步讨论这些细节。

为了增强像素聚焦注意力的多尺度输入的扩展能力,作者提出了一种增强版像素聚焦注意力,称为聚合像素聚焦注意力,作者简称为聚合注意力(AA)。它可以描述如下:

3034fd50f4c1fb01eb14d775fcb18bb9.png

3.1.4 Feature Analysis

计算复杂度: 给定输入 , 池化大小 , 窗口大小 ,作者考虑'激活与池化操作和线性投影的影响。像素聚焦注意力和聚合注意力的计算复杂度如下:

3d39c4d80d4c05305c3e8f4ec600016a.png

作者观察到, 当池化大小  设置为与输入大小无关的值时,  和  的长度都线性地与输入序列的长度成正比。这意味着PFA和  都可以在线性复杂度模式下进行推理。

最优准确率-效率权衡:通过实证研究,作者观察到滑动窗口的大小对模型性能的影响可以忽略不计。因此,作者采用了最小形式的滑动窗口来捕获靠近视觉焦点的特征,这显著降低了计算和内存消耗。作者认为这是由于池化特征路径的存在,每个Query都具有全局感受野,从而大大减少了扩展滑动窗口大小以扩大感受野的需要。详细的消融研究结果和讨论可以在附录中找到。

Convolutional GLU

3.2.1 Motivation

ViT时代的门控通道注意力:以前的工作,由Squeeze-and-Excitation(SE)机制代表,首先将通道注意力引入计算机视觉领域,该机制使用一个带有激活函数的分枝来控制网络输出。在门控通道注意力中,门控分支具有比值分支更大的决策权,最终决定相应的输出元素是否为零。从这个角度来看,SE机制巧妙地使用全局平均池化后的特征作为门控分支的输入,实现更好的决策,同时解决了CNN结构中感受野不足的问题。然而,在ViT时代,全局感受野不再是稀缺的。

e72bfd8183bb44145a37db22000d7bf1.png

各种全局Token混合器由自注意力表示,已经比全局平均池化实现了更高的全局信息聚合质量。这使得SE机制使用的全局池化方法表现出一些缺陷,例如该方法使特征图上的所有Token共享相同的门控信号,导致其通道注意力缺乏灵活性并过于粗糙。尽管如此,ViT结构缺乏通道注意力。最近的研究发现,将SE机制集成到通道混合器中可以有效提高模型鲁棒性,如图4所示。

ViT时代的卷积:最近的研究表明,将的零填充卷积引入到视觉Transformer中可以被视为一种条件位置编码(CPE),它有效地捕获了零填充带来的位置信息。

3.2.2 Rethinking Channel Mixer Design

Gated Linear Unit (GLU) :GLU是一种通道混合器,已在各种自然语言处理任务中显示出比多层感知机(MLP)更好的性能。GLU由两个线性投影组成,其中一个是通过激活函数激活的元素乘法。与SE机制不同,每个Token的gating信号都来自Token本身,并且其感受野大小不超过值分支的感受野。

更优雅的设计:作者发现,在GLU的gating分支的激活函数之前,简单地添加一个最小形式的卷积,可以使它的结构符合基于最近邻特征的门控通道注意力的设计概念,并将其转换为门控通道注意力机制。作者称这种方法为卷积GLU,如图4所示。

特征分析:在卷积GLU(ConvGLU)中的每个Token都具有基于其最近精细特征的独特gating信号,这解决了全局平均池化在SE机制中的过于粗糙的问题。它也满足了某些没有位置编码设计的ViT模型,这些模型需要由卷积提供的位置信息。

此外,这种设计的值分支仍保持与MLP和GLU相同的深度,使其易于反向传播。当保持与卷积前馈 (ConvFFN) 的参数体积一致, 扩展比例为 , 卷积核大小为  时, 卷积GLU的计算复杂度为 , 小于卷积前馈的  。这些属性使得卷积GLU成为一个简单而更强大的混合器, 满足ViTs的多样化需求。

Architecture Design of TransNeXt

为了保证后续的消融实验4.2的一致性, TransNeXt采用与PVTv2相同的四阶段分层Backbone网络和重叠块嵌入。聚合注意力在1-3阶段的池化特征大小也设置为 , 与 PVTV2相同。在阶段4中, 由于特征图大小已减少到 , 特征池化模块无法正常工作。作者采用了一种修改后的多头自注意力 (MHSA) 版本, 它应用Query嵌入和长度缩放余弦注意力。这与 PVTv2在第四阶段使用MHSA一致。对于1-4阶段的通道混合器, 作者使用卷积GLU与 GELU[22]激活。扩展比也遵循PVTv2的  设置。

15fbe37b7b437f80b8474ba1860c523e.png

为了确保与典型MLP参数的一致性,卷积GLU的隐藏维数为的集合值。此外,作者将头维数设置为24,以在通道维度上被3整除。TransNeXt变体的具体配置可以在附录中找到。

4 Experiment

ImageNet-1K分类:作者的代码基于PVTv2实现,并遵循DeiT的训练方法。模型从 scratch 在ImageNet-1K数据集上进行300个epoch的训练,利用自动混合精度(AMP)在8个GPU上进行训练。训练过程中使用的具体超参数可以在附录中找到。

为了全面评估模型的鲁棒性,作者使用了几个额外的测试集。这些包括ImageNet-C,这是一个大小为的测试集,它对ImageNet-1K验证集进行了算法扭曲;ImageNet-A,这是一个包含对抗样本的测试集;ImageNet-R,这是一个包含ResNet-50无法正确分类的样本的扩展测试集;ImageNet-Sketch,其中包含手绘图像;以及ImageNet-V2,这是一个采用与ImageNet-1K相同的采样策略的扩展测试集。

实验结果:实验结果如表1所示,表明作者提出的模型在ImageNet-1K的准确性和鲁棒性方面均树立了新的基准。具体而言,作者的TransNeXt-Micro模型在ImageNet-1K上获得了**82.5%的Top-1准确率,比FocalNet-T(LRF)多使用了55%的参数。同样,作者的TransNeXt-Tiny模型在ImageNet-1K上获得了84.0%**的Top-1准确率,比ConvNeXt-B提高了69%的参数。

626ca14db0f1f4fd533334c425b0817e.png

值得注意的是, 在  的分辨率下, 作者的Trans NeXt-Small/Base模型仅用 5 个epoch的微调就超过了更大的MaxViT-Base模型,分别提高了  。在鲁棒性方面,作者的模型在五个附加测试集上表现出优越的性能。值得注意的是, 在最具挑战性的ImageNet-  测试集上, TransNeXt在模型扩展时表现出显著的优势。在  的分辨率下,作者的Trans NeXt-Base比 MaxViT-Base提高了  。在  的分辨率下, 作者的TransNeXt-Small/Base在ImageNet-A上的准确率达到了 , 比ConvNeXt-L提高了 , 同时它们的参数数量分别只有ConvNeXt-L的  和  。

目标检测和实例分割:作者使用了一个Mask R-CNN检测头,在的调度下进行训练,来评估在COCO数据集上的ImageNet-1K预训练TransNeXt在目标检测和实例分割方面的性能。实验结果如图1所示。与先前的最先进模型相比,作者的模型在各方面都具有全面的优越性。值得注意的是,即使作者的微型模型在方面也超过了FocalNet,InterImage和CSWin的基础模型。

同样,作者利用一个DINO检测头,在的调度下进行训练,进一步评估作者的模型在目标检测方面的潜力。作者的TransNeXt-Tiny模型在4尺度设置下达到了55.1,超过了ConvNeXt-L\(53.4在4尺度设置下\) 1.7,而后者只有后者的14\%的Backbone参数。作者的TransNeXt-Base模型在5尺度设置下达到了57.1,接近在ImageNet-22K上预训练的Swin-L\(57.2在5尺度设置下)的性能。

语义分割:作者使用UperNet和Mask2Former方法在分辨率下训练ImageNet-1K预训练的TransNeXt,进行了160k次迭代,并在ADE20K上评估其语义分割性能。在UperNet方法中,如图1所示,作者的TransNeXt在各方面都表现出全面的优越性。

在所有大小上都超过了以前的方法。作者的TransNeXtBase甚至超过了ConvNeXt-B(mIoU 52.6),它是在ImageNet-22K上预训练的,并在的分辨率下进一步训练。同样,在Mask2Former方法下,作者的TransNeXtSmall实现了54.1的mIoU,超过了在ImageNet-22K上预训练并在的分辨率下进一步训练的Swin-B(mIoU 53.9)。此外,作者的TransNeXtBase实现了54.7的mIoU。这些结果表明,作者的方法有潜力超越模型大小的限制,突破数据量障碍。

作者的模型在密集预测任务中相比分类任务表现出更显著的性能优势。作者认为这验证了聚合注意力的生物视觉设计的有效性,这种设计可以在比以前方法更早的阶段实现更自然的光学感知,如图2所示。

Multi-scale Inference

在推理过程中, Trans NeXt在正常模式下将  和  设置为输入大小的 , 而在线性模式下,它们固定为  。如图6 (左) 所示, Trans NeXt在正常和线性模式下都超过了纯卷积解决方案。大卷积核方案, 也被提出来解决深度衰减问题,在大图像推理时表现出显著的性能下降。这揭示了作者的方法在解决大核方案这个问题上的优势。例如, RepLKNet-31B在  分辨率下仅达到  的准确率。在传统观点中,纯卷积模型在多尺度适用性方面优于ViT模型,这些实验结果暗示着这种观点需要重新审视。大核方案的性能下降也值得研究界进一步调查。

cddbd26e23c1ba0f5ec63df77a782b4f.png

图6(右)说明了长度缩放余弦和插值对性能的影响。长度缩放余弦在的分辨率处变得显著,表明超过8倍的序列长度变化开始显著降低缩放余弦注意力的信心。使用插值对相对位置偏差进行应用导致性能显著下降,这强调了在多尺度推理中使用外推位置编码(log-CPB)的有效性。

A roadmap from PVT to TransNeXt

作者方法的有效性:作者的提出的卷积GLU(ConvGLU)、像素聚焦注意力(PFA)、位置注意力(PA)和Query嵌入(QE)的有效性通过从步骤4到8的消融实验进行验证。在步骤4到5、6和7到8中,作者分别用ConvGLU代替卷积前馈(ConvFFN),用像素聚焦注意力(PFA)代替空间降采样的注意力(SRA),用聚合注意力(Aggregated Attention)代替像素聚焦注意力(PFA)。这三种替换分别导致了ImageNet-1K上的准确率提高0.8%、0.9%和0.7%,以及在ImageNet-A测试集上的准确率提高4.3%、3.4%和3.0%,表明这三个组成部分对性能的贡献显著。

值得注意的是,在像素聚焦注意力中引入QLV和LKV机制只需要增加0.2%的参数(从12.78M到12.81M),以及0.3%的计算开销(从2.65G到2.66G),但性能提高显著,从而实现了成本效益的权衡。

此外,在步骤4中,用GLU代替ConvFFN导致了显著的性能下降,强调了使用的零填充卷积作为条件位置编码(CPE)的重要性,特别是因为PVTv2的SRA在这个阶段没有使用任何其他位置编码。因此,步骤5也证明了使用ConvGLU作为位置编码的有效性。

5 Conclusion

在这项工作中,作者提出了一种基于生物模仿视杆细胞视觉设计的Token混合器聚合注意力和一种具有门控通道注意力的通道混合器卷积GLU。作者将它们结合起来,提出一种强大的高度鲁棒的视觉模型TransNeXt,它在各种视觉任务如分类、检测和分割等方面都实现了最先进的性能。TransNeXt在多尺度推理的出色性能突显了它在解决深度衰减问题方面优于大型核策略的优势。此外,作者还提供了一个CUDA实现,在训练中实现了高达103.4%的加速,在推理中实现了60.5%的加速。更多详细的实验数据和讨论包括在附录中。

A Equivalent Form of Pixel-Focused Attention

在数学上,像素聚焦注意力可以表示为以下形式:

bbeb97a8f2b5179b48eee80c58eb98f8.png

这种形式在数学上更为简洁。然而, 在并行计算中, 将  和  在Key和值上合并, 形成  在  中, 会创建两个大的临时张量。这会导致显著的内存使用和内存访问压力, 严重减慢模型速度。因此, 在实际应用中, 作者使用分别计算两条路径的注意力, 只将结果相加的方法。从合并的相似度结果中计算注意力权重在相同的softmax中是至关重要的, 因为它确保了这两个形式的数学等价性。

Appendix B Comparative Analysis of Human Vision and Attention Visualization

人类的视觉系统具有视杆细胞和周边视网膜之间的二分法。视杆细胞视力只优化了中央视野的1到2度,对敏感度进行了优化,而周边视网膜具有更大的感受野,对广泛的视野进行了优化。这种二分法表明,人类主要利用周边视网膜进行对象定位和导航,但在细节上缺乏精度。为了弥补这一不足,人类的眼睛执行快速运动,称为扫视,允许处理来自多个视野的信息,并将这些信息后续集成。

最近关于生物视觉的研究表明,当有优秀的视杆细胞信息可用时,人类大脑并不会简单地丢弃周边视网膜信息,而是将两者输入进行比较,并对其相对可靠性进行权重,以完成信息的集成。这个过程是一种高度复杂的计算,称为跨扫视感知。

与人类视觉系统相比,像素聚焦注意力在许多设计方面保持了与人类视觉系统高度相似性。实证研究表明D.5,像素聚焦注意力的滑动窗口路径可以实现优越性能,仅使用最小窗口大小进行感知。这一实验结果与人类视杆细胞视野的极其窄覆盖范围非常接近。在高分辨率图像输入的背景下,滑动窗口覆盖的范围非常小。像素聚焦注意力的聚合路径,模拟人类周边视觉,保持全局图像感知,并重叠滑动窗口路径的细粒度感知区域。这两个窗口路径的特征在相同的softmax下竞争和关联。

这种设计使模型能够比较人类视杆细胞感知的详细特征与由周边视觉感知的对象的综合粗糙轮廓的相似性,从而在视野范围内集成和校准信息。从生物视觉的角度来看,像素聚焦注意力的当前设计可以有效地模拟人类视觉感知中的高度复杂的跨扫视感知。

相比之下,使用窗口分区的焦点Transformer无法模拟人类眼睛的连续移动。此外,其仅聚合周边窗口的方法阻止了模型完全感知对象的全面粗糙轮廓,从而增加了其与人类跨扫视感知的矛盾。

在Trans NeXt的第三阶段终端注意力层中, 作者使用位于特征图中心位置  的 QueryToken(后来用[center]子script表示),来计算  和  。这使得作者能够在图片的中心位置观察滑动窗口路径和池化路径上的图像特征感知注意力图, 如图7所示。

2d6f14e61c18a8e96311e65a5a59e374.png

可以观察到,在同一个头中,模拟视杆细胞视觉的滑动窗口路径始终关注特定的纹理、绒毛和高锐边,而模拟周边视觉的池化路径始终可靠地把握物体的粗糙轮廓。这两个路径的特征在相同的softmax下进一步匹配和校准,从而产生更准确的输出。作者认为这种工作方法与人类视觉研究中发现的融合方法非常相似,进一步证实了作者的仿生视觉设计与人类视觉的高一致性。

Appendix C Detailed Settings

Configurations of TransNeXt Variants

Training Settings for ImageNet-1K

为了确保可重复性和与先验工作的一致性, 作者采用PVTV2的训练策略, 该策略包括各种数据增强技术, 如随机增强, Mixup, CutMix和随机擦除。为了正则化作者的模型, 作者使用标签平滑和DropPath。作者使用AdamW优化器, 梯度范数为 1.0 , 权重衰减为 0.05 。所有模型的初始学习率设置为 , Warm up为 5 个epoch, 初始Warm up学习率为  。

c273283b73cdcdaf0b821ce9f6a0d9fb.png

作者使用余弦学习率调度器来衰减学习率。在训练期间, 作者随机裁剪图像到  的大小。在评估阶段, 对于分辨率小于  的图像, 作者应用中心裁剪, 裁剪比例为 0.875 。然而,对于较大大小的图像,作者不进行任何裁剪,遵循先前的研究。作者不使用EMA权重。每个模型的随机深度衰减率如表4所示。

Training Settings for Downstream Tasks

对于在ADE20K和COCO数据集上的实验,作者遵循Swin[40]的训练设置。作者使用了MMDetection和MMSegmentation工具箱进行训练。

对于COCO 2017 数据集, 作者将学习率设置为 , 权重衰减为 0.05 。在Mask R-CNN和 DINO方法的背景下, TransNeXt-Tiny、TransNeXt-Small和TransNeXt-Base的随机深度衰减率分别设置为 、 和 0.6 。模型在 16 个批量的标准  计划下训练了 12 个epoch。

对于ADE20K数据集, 在UperNet方法中, 作者将学习率设置为 , 权重衰减为 0.05 。TransNeXt-Tiny、TransNeXt-Small和TransNeXt-Base的随机深度衰减率分别设置为 0.4、0.6和 0.7 。对于Mask2Former方法, 作者将学习率设置为 , 权重衰减为 0.05 , TransNeXt-Tiny、 TransNeXt-Small和TransNeXt-Base的随机深度衰减率分别设置为 、 和 0.6 。所有模型在 ADE20K数据集上进行了  次迭代, 批次大小为 16 。

Appendix D Ablation Study

More Discussion on roadmap from PVT to TransNeXt

理解Query嵌入:Query嵌入具有非常独特的性质。将Query嵌入有效地提高了在ImageNet-1K验证集和ImageNet-V2测试集上的性能,但稍微降低了在ImageNet-A、ImageNet-R、ImageNet-Sketch测试集上的性能;对ImageNet-C的影响非常弱。值得注意的是,ImageNet-1K验证集、ImageNet-V2和ImageNet-C(使用与训练集相同采样策略的扭曲测试集)采用了与ImageNet-1K训练集相同的采样策略,而ImageNet-A、ImageNet-R和ImageNet-Sketch没有遵循这一原则。作者认为这些实验结果反映了Query嵌入限制了模型的响应范围,以提高当前任务性能,而不是影响对所有类型数据的泛化能力。

在学习过程中,模型优化这个可学习的QueryToken,隐式地学习每个注意力层中当前任务的最优问题(从视觉问答(VQA)的角度来看)。从这个角度来看,作者可以很好地解释为什么在这些超出分布的测试集中,Query嵌入对ImageNet-C测试集的影响非常弱。因此,作者认为这里存在一个潜在的权衡。在TransNeXt的情况下,即使有Query嵌入,作者的模型仍然实现了最先进的模型鲁棒性。

模型结构的影响:作者调整了PVTv2的宽度和深度以及注意头的数量,使其与TransNeXt-Micro在步骤1到3中的值相匹配,以避免模型结构的影响。在这段时间内,作者观察到更深、更窄的模型显著提高了性能。将头维数从48减少到24,只导致了0.04%的性能变化,表明增加注意头维度所带来的性能提升非常有限。

Detailed Data of Multi-scale Inference

在推理阶段, 作者观察到方程 15 和 16 中, 如果作者将  和  设置为与输入大小无关的固定值, 那么像素聚焦注意力和聚合注意力的计算复杂度都与输入序列的长度成线性增长。在这种情况下, 像素聚焦注意力和聚合注意力都可以在线性复杂度模式下运行。这种线性模式使得 TransNeXt在推理大型图像时的计算复杂度曲线接近纯卷积网络。作者在多个分辨率下测试了  大小经过训练的Trans NeXt和两种常见的纯卷积模型。在默认的正常模式下, 聚合注意力的  和  是输入图像大小的 , 而在线性模式下,  和  固定为训练图像大小的 , 即  。

结果与分析:如表5和图6所示,作者的TransNeXt-Tiny在正常模式和线性模式下都优于纯卷积模型在多尺度推理方面的表现。在最大分辨率处,线性模式相对于正常模式产生了0.5%到1.7%的性能衰减,但这种权衡仍然优于纯卷积模型。随着图像尺寸的增加,ConvNeXt-B的性能衰减大于TransNeXt线性模式。RepLKNet-31B的性能衰减更为夸张,在分辨率下,其Top-1精度仅为0.9%,这在一定程度上揭示了超大规模卷积核方案的局限性。在传统观点中,纯卷积模型在多尺度适用性方面优于ViT模型,这些实验结果也暗示着这种观点需要重新审视。

2ac8d26b300e70615e139240c14bf796.png

长度缩放余弦注意力的影响:作者在多尺度推理期间比较了长度缩放余弦注意力和常规缩放余弦注意力的性能。根据图6,长度缩放开始在分辨率达到时生效。这意味着当softmax中的序列长度变化超过8倍时,较长的序列长度开始显著降低缩放余弦注意力的信心。

外插与插值相对位置偏差:当在  分辨率的TransNeXt模型对其他尺寸进行推理时, 作者默认为使用对数余弦插值[41]来外插从空间相对坐标  在新分辨率下的  。然而, 生成  不能达到模型推理的速度。这在一般情况下不是问题, 因为当模型需要连续推理一个或几个新的尺寸时, 作者只需要预计算这些新的  并缓存它们。但是, 当新的推理分辨率未知且需要根据输入大小即时更改时, 作者需要使用传统的插值方案来插值相对位置偏差  。

f08c9023560b51c7139beb65db110099.png

如图6所示,输入分辨率的变化会导致相对位置偏差插值导致显著的性能下降,超过了线性模式。这强调了外插位置偏差的效用。

4ef04a21981926f9e46dd8f16d5c9e8d.png

在作者的UperNet多尺度和翻转增强(表14)的评估中,作者分别呈现了插值和外插的测试结果,以进行平衡比较,突显了不同方案对多尺度性能的影响。

Ablation on Positional Encoding

结果与分析:作者在聚合注意力中滑动窗口路径和池化特征路径所使用的相对位置偏差的设计进行了消融实验,结果如表6所示。当作者完全移除聚合注意力中使用的相对位置偏差时,模型的性能显著下降了0.8%。这表明使用零填充卷积来捕获全局Token的位置信息是不够的,不能代表全局Token之间的位置关系。

f1140057eb60d414faf972de9587e74c.png

当作者使用对数余弦插值(log-CPB)来计算滑动窗口的相对位置偏差时, 也导致了  的性能下降。这暗示由于特征尺度的不同, 池化特征路径和滑动窗口路径中空间坐标  和  的数值含义并不完全相同, 强调了在两个路径中使用不同的方法学习相对位置偏差的重要性。

另一个考虑因素是使用由位置注意力计算的动态相对位置偏差  来替代聚合路径中由对数余弦插值计算的 , 但这导致了  的显著性能下降。作者认为这是由于滑动窗口路径和池化路径的行为不一致导致的。池化路径中计算的对数余弦插值 是静态的, 而  会随着输入的变化动态变化, 两个路径在相同的softmax下耦合, 导致与 QKV注意力机制的干扰。

如果作者使用池化路径中计算的对数余弦插值  来代替聚合路径中计算的对数余弦插值 , 则不会影响模型性能, 但会导致模型失去对未知尺寸输入进行位置偏差外推的能力。这表明通过对数余弦插值计算的相对位置偏差与直接学习的相对位置偏差之间存在相似性, 也暗示了 log-CPB模块不是TransNeXt高性能的来源。

Ablation on the Design of Convolutional GLU

作者在CIFAR-100数据集上进行了卷积GLU的消融实验,使用了2M大小的模型。作者设计了三种可选变体,都使用GELU作为激活函数:

cf39d20f9079f506a9da1cdfac7c8e45.png

表7中的实验结果表明,作者遵循通道注意力设计理念的卷积GLU是最佳设计。在类型1中,将DWConv放在门控激活函数之后破坏了门控分支中将值置零的效果。在类型2中,将DWConv移动到值分支导致当一个门控分支具有较小的感受野控制一个具有较大感受野的值分支时,性能下降了0.7%,表明使用较大感受野的门控分支做出门控决策更为合理。

96ed3a3bdb6a95eb589c9b63e42cef54.png

在类型3中,在元素点乘结果之后添加一个DWConv导致GLU模块性能最差,表明仅仅通过添加DWConv来增强局部感知能力并不是提高卷积GLU模型性能的关Key。

Ablation on Window Size

作者在CIFAR-100数据集上进行了快速的消融实验,结果报告在表8中。作者的观察表明,窗口大小的增加并不一定会导致模型性能的增强。作者认为这些实验结果是由于池化特征提供了粗糙的全局感知能力,大大减少了单个Query感知滑动窗口场的需求。

22e95d1026a9d28f9593cd929ab3baff.png

此外,细粒度Token与粗糙Token重叠,导致额外的归纳偏差。由于Query与细粒度Token和粗糙Token之间的相似度结果在相同的softmax下竞争,这种方法在重叠区域受益于信息聚合。然而,随着窗口大小的增加,这种归纳偏差可能并不总是有益的。

Ablation on Model Architecture

为了进一步探索模型架构对性能的影响,作者基于TransNeXt-Micro进行了消融实验。作者试图在阶段1-3中用多头自注意力替换聚合注意力来观察其对模型性能的影响。实验结果如表9所示。

8242c34be3a9b909c8355c6c57ecddf3.png

作者观察到,当作者在阶段3中用多头自注意力替换聚合注意力,其中块的数量最高时,模型性能降低了0.5%。进一步替换在阶段2中导致了0.1%的性能下降。这表明作者的聚合注意力信息聚合方法优于全局自注意力。当作者试图在阶段1中替换聚合注意力时,模型在80GB内存,100A1的配置下出现了内存错误,导致无法训练该模型。

在  的分辨率下,  是最小的可以由整数下采样达到的尺寸。因此,为了保持与PVTV2的一致性, 作者的模型在每个阶段都选择了一个池化大小为  。然而, 在阶段 4 中, 输入分辨率已经降低到 , 使得聚合注意力的下采样模块变得无效。如果在这个阶段强制应用聚合注意力, 滑动窗口中的特征将通过池化路径输入softmax两次, 导致重要性计算的扭曲。

因此,作者在阶段 4 中选择了MHSA。在更大的分辨率, 如 , 作者可以在每个阶段使用  的池化大小来实现一个充分利用聚合注意力的模型。如表 9 所示, 一个完全使用聚合注意力的微型模型在 256 ^ 2 的分辨率下达到了 ImageNet-  的  的准确率。

CUDA Implementation

在原生PyTorch实现中,滑动窗口路径上的特征提取通过展开操作实现。展开操作涉及两个阶段:

  1. 通过索引访问在滑动窗口内提取张量

  2. 显式地创建一个大型张量副本以提取的张量。这种显式特征提取操作生成一个巨大的临时张量,并导致内存访问压力,这显著降低了模型的速度

为了解决这个问题,作者引入了一个CUDA算子实现,用于在滑动窗口路径中计算QK相似度并聚合值,通过注意力权重。这个实现避免了显式地从滑动窗口中提取张量,从而显著提高了模型的吞吐量和训练速度。

如表10所示,作者的CUDA实现提供了最多60.5%的推理加速,最多103.4%的训练加速,并节省了最多16.8%的训练内存。

8e36cd638626951772ded2317a4ead61.png

另一方面,作者的当前实现仅基于原生CUDA,没有引入显著的优化。因此,它无法匹配高度优化的密集GPU算子效率。作者按照Swin的方法,在V100 16G 32位精度下,以64个batch size评估模型吞吐量。

ecee5eb026e28c43303f755c8ef46a87.png

如表11所示,作者的仿生视觉实现显著优于Focal Transformer方法,在效率和准确性方面。此外,在类似的吞吐量条件下,作者的模型在ImageNet-1K上的Top-1精度与之前的最先进模型(如MaxViT、BiFormer和QuadTree)具有竞争力。

尽管当前模型的吞吐量仍与受益于密集算子实现的模型存在一定差距,但TransNeXt的性能预计会随着进一步的工程努力而提高。作者承诺在将来提供更高效的算子优化,以增强TransNeXt的竞争力。

Appendix E Downstream Experimental Results

Appendix F Visualization Based on Effective Receptive Field

作者使用有效的感受野(ERF)方法作为可视化工具来分析TransNeXt的信息聚合方法。在图8中,作者可视化了六个模型(TransNeXt-Tiny,ConvNeXt-T,Swin-T,CSWin-T,BiFormer-S和Slak-T)在六个阶段的ERF。在图9中,作者对在ImageNet-A,ImageNet-Sketch和ImageNet-C数据集上的模型第四阶段的ERF进行了全面的比较。

作者观察到以下几点:

如图8所示,在多阶段输出的ERF比较可视化中,TransNeXt-Tiny在第三阶段的ERF覆盖率上超过了其他五个模型,展现出更自然和更平滑的视觉感知。这可以部分解释TransNeXt在检测和分割任务上的性能优势,因为这些任务更依赖于较低阶段的输出。

de2b78fa9517813b321db77d54a4f363.png

相比之下,ConvNeXt,Swin和CSWin在ERF上呈现出明显的分块模式,这归因于它们Token混合器设计中的伪影。尽管存在多个层,但这些Token混合器无法消除由窗口本地注意或卷积核导致的伪影,从而导致信息混合不自然。最新的ViT和卷积模型在这一点上有所改进。BiFormer采用了一种数据驱动的方法,使窗口ViT模型能够自主选择窗口组合,从而避免了手动窗口设计中产生的不自然痕迹。

SLaK采用了一种超大的卷积核方案,以实现全局感知,从而减轻卷积模型中深度衰减引起的感觉野缩小。作者观察到,这些方法在某种程度上减轻了由手动窗口设计或卷积核堆叠产生的不自然视觉感知,但窗口划分和卷积核堆叠引起的分块伪影仍然没有完全消除。这个观察结果支持了深度网络带有残差模块的行为类似于浅层网络的集成,突显了单个Token混合器在实现局部-全局建模方法方面的重要性,这种方法更类似于生物视觉。TransNeXt的ERF代表了一种信息感知方法,它更接近生物视觉,实现了自然视觉感知并验证了其仿生设计的效果。

8e5c24aa036ddf2bc5b4a5e6df4272d0.png

如图9所示,在多个异构测试集的综合可视化评估中,TransNeXt-Tiny展示了更适应的信息感知方法。其有效感受野的信息感知方法随着不同的数据集而发生显著变化。这种变化可以在ImageNet-C上的多个严重级别上明显观察到。

与此同时,Swin-T的ERF在所有测试集上表现出相似的模式,而ConvNeXt-T的ERF则介于两者之间。作者认为,更适应的ERF反映了模型的鲁棒性,而这样的可视化比较结果与表1中的鲁棒性评估结果一致。

参考

[1].TransNeXt: Robust Foveal Visual Perception for Vision Transformers.

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

556fa66f8b75a56149c9664542251ce2.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

9611c62c151d9cd8a5db80cdebec0ee5.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

c643aa043d9e0cca00d057eefc8e032e.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

107f00af25ef526e3fe142a0130ac208.jpeg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值