视觉Transformer效率大比拼,45种模型的全面评估

Transformer模型自从在自然语言处理(NLP)领域取得突破性进展以来,迅速成为了机器学习和人工智能研究的热点。Transformer的核心在于其自注意力机制,这种机制能够捕捉输入数据中远距离依赖关系,使得模型在处理序列数据时表现出色。最初Transformer模型主要应用于语言任务,如机器翻译、文本生成和问答系统。随着研究的深入,Transformer模型的应用范围逐渐扩展到计算机视觉(CV)领域,特别是在图像分类、目标检测和图像生成等任务中。

在视觉任务中,Vision Transformer(ViT)是Transformer模型的一个重要变种。ViT通过将图像划分为一系列不重叠的补丁,并将这些补丁视为序列数据来处理,从而成功地将Transformer应用于图像分类任务。ViT在多个基准测试中表现优异,尤其是在ImageNet数据集上的表现,超越了传统的卷积神经网络(CNN)架构。然而Transformer模型的一个主要挑战在于其自注意力机制的计算复杂度。自注意力机制的计算复杂度为O(N²),其中N是输入序列的长度。这意味着随着输入序列长度的增加,计算成本会急剧上升,这在处理高分辨率图像或长序列时尤为明显。

为了应对这一挑战,研究人员提出了多种改进策略,旨在提高Transformer模型的效率。这些策略包括稀疏注意力机制、低秩注意力机制、混合注意力机制以及其他创新的token混合方法。这些方法在不同程度上降低了计算复杂度,使得Transformer模型在资源受限的环境中也能高效运行。然而由于实验条件和评估标准的多样性,不同研究之间的结果往往难以直接比较,这给模型选择带来了挑战。

为了弥补不同实验条件下结果不可比的缺陷,来自凯泽斯劳滕-兰道大学和德国人工智能研究中心(DFKI)的团队进行了大规模的基准测试,评估了45种图像分类模型的效率。研究的主要目的是提供一个标准化的基准,帮助从业者和研究人员在选择或开发高效Transformer模型时做出明智的决策。具体而言,本研究通过评估模型的准确性、速度和内存使用等关键效率指标,分析了不同模型在这些指标上的表现,并基于帕累托前沿(Pareto front)进行比较。

通过这种系统的评估方法,研究不仅揭示了ViT在多个指标上继续保持帕累托最优的事实,还发现了一些混合注意力-CNN模型在推理内存和参数效率方面的显著优势。研究还表明,使用更大的模型通常比使用更高分辨率的图像更有效率。这些发现为视觉Transformer的效率提供了一个集中资源,便于在实际应用中进行选择和开发。

图1。吞吐量和准确性的帕累托前沿(虚线)。标记形状和色调表示使ViT更高效的不同总体策略。帕累托最优模型有一个黑点,而其他模型则有一个白点。标记的大小表示研究团队是使用标准224px还是更大的384px分辨率进行微调。标记基线ViT-Ti@224A.ViT-Ti@384(B)以及ViT-S@224(C)并绘制高分辨率图像的帕累托前沿(虚线)。

本研究由来自凯泽斯劳滕-兰道大学和德国人工智能研究中心(DFKI)的Tobias Christian Nauen、Sebastian Palacio、Federico Raue、Andreas Dengel四位研究人员共同完成,他们在人工智能和计算机视觉领域具有丰富的研究经验和学术背景。凯泽斯劳滕-兰道大学位于德国莱茵兰-普法尔茨州的凯泽斯劳滕市,是一所以工程和自然科学为主的综合性大学。该校在计算机科学、工程学和自然科学领域享有盛誉,拥有多个世界领先的研究中心和实验室。德国人工智能研究中心(DFKI)是欧洲最大的人工智能研究机构之一,成立于1988年,总部位于德国凯泽斯劳滕市。DFKI专注于人工智能技术的研究和应用,涵盖了从基础研究到工业应用的广泛领域。通过凯泽斯劳滕-兰道大学和DFKI的紧密合作,本研究团队能够充分利用两大机构的资源和优势,在视觉Transformer模型的效率评估和优化方面取得了重要进展。这一合作不仅推动了学术研究的发展,也为实际应用提供了有力支持。

研究方法

测试平台设计:标准化的训练管道,避免引入偏差

为了确保对不同Transformer模型的公平比较,研究团队设计了一套标准化的训练管道。这一管道旨在消除由于不同训练设置和数据集带来的偏差,从而提供一个公正的评估平台。

数据集选择:所有模型均在相同的数据集上进行训练和评估。研究团队选择了ImageNet-21k进行预训练,并在ImageNet-1k上进行微调。这两个数据集在计算机视觉领域广泛使用,能够提供丰富的图像数据,确保模型在各种视觉任务中的表现具有代表性。

训练设置:为了避免引入偏差,研究团队采用了相同的训练设置。所有模型均在相同的硬件环境下进行训练,使用4或8个NVIDIA A100 GPU。此外,训练管道中不使用知识蒸馏等可能引入偏差的技术,确保所有模型在相同条件下进行比较。

训练周期:所有模型均训练140个epoch,其中在ImageNet-21k上预训练90个epoch,然后在ImageNet-1k上微调50个epoch。这样的训练周期设计能够确保模型充分学习数据中的特征,同时避免过拟合。

分辨率设置:模型在不同分辨率下进行训练和评估,以确保结果的全面性。具体来说,模型在224和192像素分辨率下进行预训练,然后在224和384像素分辨率下进行微调。这样的设置能够评估模型在不同图像分辨率下的表现,提供更全面的效率评估。

通过上述标准化的训练管道设计,研究团队能够在相同条件下对不同Transformer模型进行公平比较,确保评估结果的可靠性和可比性。

模型选择与分类:基于流行度、多样性和新颖性选择模型

为了全面评估Transformer模型的效率,研究团队选择了45种不同的图像分类模型。

  • 流行度:选择在学术界和工业界广泛使用和认可的模型。这些模型通常在多个基准测试中表现出色,具有较高的参考价值。

  • 多样性:选择具有不同架构和设计理念的模型,以确保评估结果的全面性和代表性。具体来说,研究团队选择了包括ViT、DeiT、Swin Transformer、XCiT等在内的多种模型,这些模型在自注意力机制、混合注意力机制、稀疏注意力机制等方面具有不同的实现方式。

  • 新颖性:选择一些最新提出的模型,这些模型在设计上具有创新性,可能在效率和性能上具有优势。例如,研究团队选择了EfficientFormerV2、NextViT、TokenLearner等新模型,这些模型在最近的研究中表现出色。

通过基于流行度、多样性和新颖性选择模型,研究团队能够全面评估不同Transformer模型在图像分类任务中的效率表现,提供具有广泛参考价值的评估结果。

效率评估指标:参数数量、FLOPS、训练和推理速度、内存需求等

为了全面评估Transformer模型的效率,研究团队设计了一套多维度的评估指标。这些指标包括理论指标和实证指标,能够全面反映模型的计算成本和性能表现。

  1. 参数数量:参数数量是衡量模型复杂度和计算成本的一个重要指标。参数数量越多,模型的计算成本和内存需求越高。研究团队通过比较不同模型的参数数量,评估其在计算资源上的需求。

  2. FLOPS:浮点运算次数(FLOPS)是衡量模型计算复杂度的另一个重要指标。FLOPS越高,模型的计算成本越大。研究团队通过计算不同模型的FLOPS,评估其计算复杂度。

  3. 训练速度:训练速度是衡量模型在训练过程中计算效率的一个重要指标。研究团队通过测量模型在相同硬件环境下的训练时间,评估其训练效率。

  4. 推理速度:推理速度是衡量模型在实际应用中计算效率的一个重要指标。研究团队通过测量模型在相同硬件环境下的推理时间,评估其推理效率。

  5. 内存需求:内存需求是衡量模型在计算过程中内存使用情况的一个重要指标。研究团队通过测量模型在训练和推理过程中的显存(VRAM)需求,评估其内存使用效率。

通过上述多维度的评估指标,研究团队能够全面评估不同Transformer模型的效率表现,提供具有广泛参考价值的评估结果。这些评估结果不仅能够帮助从业者和研究人员在选择或开发高效Transformer模型时做出明智的决策,还能够为未来的研究提供重要的参考依据。

通过设计标准化的训练管道、选择具有代表性的模型以及采用多维度的评估指标,研究团队能够在相同条件下对不同Transformer模型进行公平比较,提供全面的效率评估结果。这些结果为视觉Transformer的效率提供了一个集中资源,便于在实际应用中进行选择和开发。

核心元素与效率提升策略

1.ViT的核心元素:图像处理任务的适应版本,自注意力机制的计算复杂度

图2:高效 Transformer 列表(括号中为引用关键词)分为两个级别:1. 该方法在哪些方面改变了 ViT?2. 该方法如何改变 ViT?

Vision Transformer(ViT)是将Transformer模型应用于图像处理任务的一个重要变种。与传统的卷积神经网络(CNN)不同,ViT通过将图像划分为一系列不重叠的补丁,并将这些补丁视为序列数据来处理。这种方法使得ViT能够利用Transformer模型在处理序列数据方面的优势,捕捉图像中的长距离依赖关系。

ViT的核心元素包括以下几个方面:

  • 图像补丁:ViT将输入图像划分为一系列不重叠的补丁,每个补丁被线性嵌入为一个大小为d的token,并添加位置编码。这些token序列然后被输入到Transformer编码器中进行处理。

  • 自注意力机制:自注意力机制是Transformer模型的核心,能够计算输入序列中每对token之间的相似度。具体来说,自注意力机制通过查询(Q)、键(K)和值(V)矩阵计算注意力权重,并生成加权的输出序列。自注意力机制的计算复杂度为O(N²),其中N是输入序列的长度。这意味着随着输入序列长度的增加,计算成本会急剧上升。

  • 分类token:在ViT中,一个特殊的分类token [CLS] 被添加到输入序列中。经过Transformer编码器处理后,只有这个分类token的输出被用于最终的分类决策。

尽管ViT在多个基准测试中表现优异,但其自注意力机制的计算复杂度问题仍然是一个主要挑战。为了应对这一挑战,研究人员提出了多种改进策略,旨在提高ViT的效率。

2.效率提升的策略

为了降低自注意力机制的计算复杂度,提高ViT的效率,研究人员提出了多种策略。这些策略可以分为以下几类:

Token混合:低秩注意力、稀疏注意力、固定注意力等

  • 低秩注意力:低秩注意力机制利用查询(Q)和键(K)矩阵的低秩特性,通过降维减少计算量。例如,Linformer通过将K和V矩阵投影到较低维度,从而降低计算复杂度。Nystromformer则使用Nystrom方法进行矩阵分解,近似计算注意力权重。

  • 稀疏注意力:稀疏注意力机制通过固定大部分注意力权重为零,只计算最重要的部分,从而降低计算复杂度。例如,Swin Transformer在局部图像块内进行注意力计算,而HaloNet则让每个token只关注其邻居。

  • 固定注意力:固定注意力机制预先设置注意力值,仅依赖token位置,从而减少计算量。例如,Synthesizer通过固定注意力矩阵,避免了动态计算注意力权重的开销。

混合注意力机制将卷积与自注意力机制结合,利用卷积捕捉局部特征,利用自注意力机制捕捉全局特征。例如,EfficientFormerV2首先使用卷积关注局部交互,然后使用自注意力机制捕捉全局交互。CvT和ResT则在注意力机制内使用卷积,创建局部查询、键和值。

傅里叶注意力机制通过使用快速傅里叶变换(FFT)降低计算复杂度。例如,FNet直接利用FFT进行token混合,计算复杂度为O(N log N)。GFNet则利用FFT进行全局卷积,AFNO在傅里叶空间中使用多层感知器(MLP)。

非注意力混合机制通过其他方法捕捉token之间的交互,而不使用自注意力机制。例如,MLP-Mixer使用全连接层进行全局交互,FastViT使用深度卷积进行token混合。EfficientMod通过值矩阵调制卷积上下文,FocalNet通过卷积提取的层次上下文进行调制。

Token序列方法通过移除冗余信息,减少计算成本。例如,Dynamic ViT使用Gumbel-softmax确定token保留概率,EViT利用上一层的注意力矩阵避免引入额外参数。ToMe通过快速二分匹配算法合并相似token,CaiT通过交叉注意力在单个token上汇总全局信息。

MLP块方法通过将计算移到MLP块,降低计算复杂度。例如,Switch Transformer引入多个参数集,每个MLP块传递不同的token。HiViT则用额外的MLP块替换早期的注意力层。

通过上述多种策略,研究人员在不同程度上降低了ViT的计算复杂度,提高了其效率。这些策略为开发高效的视觉Transformer模型提供了多种路径,推动了Transformer在计算机视觉领域的广泛应用和发展。

实验设计与结果

1.训练管道:标准化训练管道的设计与验证

为了确保对不同Transformer模型的公平比较,研究团队设计了一套标准化的训练管道。这一管道旨在消除由于不同训练设置和数据集带来的偏差,从而提供一个公正的评估平台。

图3:按精度排序的模型的精度(红线,右侧 y 轴)和每个参数的精度(条形图,左侧 y 轴),分辨率为224px。47 个中等大小的模型中有 14 个被归入其他类别。请参阅补充材料以查看完整图表。

  • 数据集选择:所有模型均在相同的数据集上进行训练和评估。研究团队选择了ImageNet-21k进行预训练,并在ImageNet-1k上进行微调。这两个数据集在计算机视觉领域广泛使用,能够提供丰富的图像数据,确保模型在各种视觉任务中的表现具有代表性。

  • 训练设置:为了避免引入偏差,研究团队采用了相同的训练设置。所有模型均在相同的硬件环境下进行训练,使用4或8个NVIDIA A100 GPU。此外,训练管道中不使用知识蒸馏等可能引入偏差的技术,确保所有模型在相同条件下进行比较。

  • 训练周期:所有模型均训练140个epoch,其中在ImageNet-21k上预训练90个epoch,然后在ImageNet-1k上微调50个epoch。这样的训练周期设计能够确保模型充分学习数据中的特征,同时避免过拟合。

  • 分辨率设置:模型在不同分辨率下进行训练和评估,以确保结果的全面性。具体来说,模型在224和192像素分辨率下进行预训练,然后在224和384像素分辨率下进行微调。这样的设置能够评估模型在不同图像分辨率下的表现,提供更全面的效率评估。

通过上述标准化的训练管道设计,研究团队能够在相同条件下对不同Transformer模型进行公平比较,确保评估结果的可靠性和可比性。

2.效率指标的比较:参数数量、速度、内存、扩展行为等

为了全面评估Transformer模型的效率,研究团队设计了一套多维度的评估指标。这些指标包括理论指标和实证指标,能够全面反映模型的计算成本和性能表现。

图4:对于需要少于 50 小时进行微调的模型,微调时间和准确度的帕累托前沿。我们在补充材料中附上了完整的图表。

参数数量:参数数量是衡量模型复杂度和计算成本的一个重要指标。参数数量越多,模型的计算成本和内存需求越高。研究团队通过比较不同模型的参数数量,评估其在计算资源上的需求。

FLOPS:浮点运算次数(FLOPS)是衡量模型计算复杂度的另一个重要指标。FLOPS越高,模型的计算成本越大。研究团队通过计算不同模型的FLOPS,评估其计算复杂度。

训练速度:训练速度是衡量模型在训练过程中计算效率的一个重要指标。研究团队通过测量模型在相同硬件环境下的训练时间,评估其训练效率。

推理速度:推理速度是衡量模型在实际应用中计算效率的一个重要指标。研究团队通过测量模型在相同硬件环境下的推理时间,评估其推理效率。

内存需求:内存需求是衡量模型在计算过程中内存使用情况的一个重要指标。研究团队通过测量模型在训练和推理过程中的显存(VRAM)需求,评估其内存使用效率。

图5:在我们默认的批量大小下训练内存的帕累托前沿(虚线)2048(左)和最小批量大小为的推理内存(右)训练时 VRAM 少于 225GB、推理时 VRAM 少于 1.25GB 的模型的准确率。

通过上述多维度的评估指标,研究团队能够全面评估不同Transformer模型的效率表现,提供具有广泛参考价值的评估结果。这些评估结果不仅能够帮助从业者和研究人员在选择或开发高效Transformer模型时做出明智的决策,还能够为未来的研究提供重要的参考依据。

3.主要发现

通过对45种Transformer模型的全面评估,研究团队得出了一些重要的发现。这些发现不仅揭示了不同模型在效率上的表现,还提供了关于如何优化Transformer模型的重要见解。

ViT在多个指标上继续保持帕累托最优

尽管有许多新模型声称在效率上优于ViT,但研究结果表明,ViT在多个关键指标上仍然保持帕累托最优。具体来说,ViT在参数数量、训练速度和推理速度等方面表现出色,继续作为一个强有力的基准模型。这一发现表明,尽管有许多新模型在设计上进行了创新,但ViT的整体效率和性能仍然具有竞争力。

扩大模型规模比使用更高分辨率的图像更有效率

研究还发现,扩大模型规模通常比使用更高分辨率的图像更有效率。具体来说,增加模型的参数数量和层数能够显著提高模型的准确性,而不会显著增加计算成本。相比之下,使用更高分辨率的图像虽然也能提高模型的准确性,但计算成本的增加更为显著。这一发现与当前许多研究使用高分辨率图像进行评估的趋势相反,表明在实际应用中,优化模型结构可能比提高图像分辨率更为有效。

不同效率指标的相关性分析

通过对不同效率指标的相关性分析,研究团队发现了一些有趣的趋势。例如,微调时间与训练内存之间的相关性最高,表明这两个指标可能存在共同的瓶颈。此外,FLOPS与训练内存之间的相关性也较高,表明可以通过FLOPS对训练内存进行粗略估计。然而,对于其他指标,理论指标与实际计算成本之间的相关性较低,强调了实证测量的重要性。

图6:关于图像分类中哪种 Transformer 更受青睐的建议。首先,选择主要约束 (1.),速度或内存,以及要优化此约束的阶段 (2.):推理或训练。在此基础上,我们从基线、序列缩减、混合注意力、非注意力改组和稀疏注意力的分类类别中提供了关于哪种 Transformer 更受青睐的建议 (3.) 。请参阅补充材料,了解每个指标的帕累托最优模型的完整列表。

通过设计标准化的训练管道、选择具有代表性的模型以及采用多维度的评估指标,研究团队能够在相同条件下对不同Transformer模型进行公平比较,提供全面的效率评估结果。这些结果为视觉Transformer的效率提供了一个集中资源,便于在实际应用中进行选择和开发。

讨论与结论

在对45种视觉Transformer模型进行全面评估后,研究团队得出了一些重要的结论。这些结论不仅验证了ViT作为基准模型的有效性,还揭示了Token Sequence方法和混合注意力模型在效率提升方面的优势。

尽管有许多新模型声称在效率上优于ViT,但研究结果表明,ViT在多个关键指标上仍然保持帕累托最优。ViT在参数数量、训练速度和推理速度等方面表现出色,继续作为一个强有力的基准模型。这一发现表明,尽管有许多新模型在设计上进行了创新,但ViT的整体效率和性能仍然具有竞争力。

ViT的设计简单而有效,其自注意力机制能够捕捉图像中的长距离依赖关系,使其在多个基准测试中表现优异。尽管自注意力机制的计算复杂度较高,但通过合理的优化策略,ViT仍然能够在实际应用中保持高效。

Token Sequence方法通过移除冗余信息,显著减少了计算成本。例如,Dynamic ViT使用Gumbel-softmax确定token保留概率,EViT利用上一层的注意力矩阵避免引入额外参数。ToMe通过快速二分匹配算法合并相似token,CaiT通过交叉注意力在单个token上汇总全局信息。

这些方法在保持模型性能的同时,显著降低了计算复杂度,使得模型在资源受限的环境中也能高效运行。特别是在推理速度和内存使用方面,Token Sequence方法表现出色,成为高效Transformer模型的一个重要方向。

混合注意力模型将卷积与自注意力机制结合,利用卷积捕捉局部特征,利用自注意力机制捕捉全局特征。例如,EfficientFormerV2首先使用卷积关注局部交互,然后使用自注意力机制捕捉全局交互。CvT和ResT则在注意力机制内使用卷积,创建局部查询、键和值。这些方法在保持模型性能的同时,显著降低了计算复杂度,使得模型在资源受限的环境中也能高效运行。特别是在推理速度和内存使用方面,混合注意力模型表现出色,成为高效Transformer模型的一个重要方向。

通过本研究的全面评估和分析,研究团队为未来的视觉Transformer研究提供了一些重要的方向和建议。

研究通过设计标准化的训练管道、选择具有代表性的模型以及采用多维度的评估指标,提供了一个公平的基准。这一基准能够帮助从业者和研究人员在选择或开发高效Transformer模型时做出明智的决策。未来的研究可以基于这一基准,进一步优化和改进Transformer模型,探索新的效率提升策略。例如,可以结合不同的注意力机制和优化方法,开发出更加高效的模型架构。

研究的结果表明,通过合理的优化策略,Transformer模型在计算机视觉领域具有广泛的应用前景。特别是在资源受限的环境中,高效Transformer模型能够显著提高计算效率,降低计算成本。未来的研究可以进一步探索Transformer模型在其他视觉任务中的应用,如目标检测、图像生成、视频分析等。通过结合不同的优化策略和模型架构,开发出更加高效和高性能的视觉Transformer模型。

虽然研究主要集中在视觉Transformer模型的效率评估上,但其方法和结论同样适用于其他领域的Transformer模型研究。例如,在自然语言处理、语音识别、时间序列分析等领域,Transformer模型同样面临计算复杂度和效率问题。未来的研究可以基于本研究的方法和结论,探索不同领域的Transformer模型的效率提升策略,推动Transformer模型在各个领域的广泛应用和发展。

总之,通过本研究的全面评估和分析,研究团队不仅验证了ViT作为基准模型的有效性,还揭示了Token Sequence方法和混合注意力模型在效率提升方面的优势。未来的研究可以基于本研究的结果,进一步优化和改进Transformer模型,推动高效Transformer在计算机视觉和其他领域的广泛应用和发展。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值