小目标检测:使用去噪FPN的Transformer RCNN

导读

在本文中,我们提出了一种新的框架,即去噪特征金字塔网络结合Trans R-CNN(简称DNTR),以提升微小物体检测的性能。

c41a39fcd1b069b70de7f8d2da154f10.png

摘要

尽管计算机视觉领域取得了显著进展,但微小物体的精确检测仍然是一个重大挑战,这主要是由于这些物体在图像数据中的像素表示极为有限。这一挑战在地质科学和遥感领域尤为突出,因为高保真度的微小物体检测可以促进从城市规划到环境监测等一系列应用的发展。在本文中,我们提出了一种新的框架,即去噪特征金字塔网络结合Trans R-CNN(简称DNTR),以提升微小物体检测的性能。DNTR包括一个易于插入的设计——去噪特征金字塔网络(DN-FPN)和一种基于Transformer的有效检测器——Trans R-CNN。具体来说,特征金字塔网络中的特征融合对于检测多尺度物体非常重要。然而,在融合过程中可能会产生噪声特征,因为不同尺度的特征之间没有正则化机制。因此,我们引入了一个DN-FPN模块,该模块利用对比学习来抑制FPN自顶向下路径中每一层特征中的噪声。此外,基于两阶段框架,我们用新的Trans R-CNN检测器替换了过时的R-CNN检测器,以便通过自注意力机制专注于微小物体的表示。实验结果显示,我们的DNTR在AI-TOD数据集上的APvt指标至少比基线高出17.4%,在VisDrone数据集上的AP指标高出9.6%。我们的代码将在https://github.com/hoiliu-0801/DNTR 上发布。

86dcf9b9de9fa8479d0c39620578cbd0.png

1、介绍

随着深度学习的显著进步,过去十年中目标检测技术取得了重大进展。目标检测技术通常可以分为两类:两阶段检测器和单阶段检测器。虽然两阶段检测器通常具有更高的准确性,但单阶段检测器由于其更快的推理速度而更适合实时检测。然而,大多数先前的工作主要集中在一般目标检测上,而对于微小目标的检测方法尚未得到充分探索。事实上,微小目标在航空图像中普遍存在,并且对多种应用至关重要,例如交通监控、监视以及海上救援。鉴于此,我们将重点放在微小目标检测上,这类目标的量级通常小于小目标检测。微小目标被定义为小于16×16像素的对象,而在COCO数据集中,小目标是指小于32×32像素的对象。这种极小尺寸使得检测变得极具挑战性。例如,广泛使用的CNN模型将输入分辨率减少了32倍,导致了微小目标表示不足的问题。

传统上,为了准确地检测不同尺度的目标,特征金字塔网络(FPN)通过自顶向下的路径聚合多尺度特征以结合几何和语义信息,如图1所示。具体而言,自底向上路径的侧向特征提供了几何信息,而自顶向下路径的高层特征则提供了语义信息。不幸的是,双线性插值和最近邻方法等上采样方法会导致冗余信息的产生,而通道减少则会导致特征信息丢失。在这种情况下,FPN中的特征融合过程被视为噪声生成。如图1所示,通道减少可能在几何信息中引入噪声,而上采样操作可能在语义信息中产生噪声。因此,FPN的噪声特征图会对微小目标的检测造成不利影响,因为低分辨率特征更容易受到噪声的影响。

近期的研究致力于利用额外模块来增强特征融合并减少冗余特征的生成。例如,构建了一个特征反馈模块以实现自底向上与自顶向下特征之间的更好通信。然而,这些方法需要额外的模块来提高性能,从而导致模型变得复杂。此外,一些研究试图基于微小目标的特性将其从背景中召回。例如设计了基于高斯分布的新标签分配方法以替代IoU度量,因为IoU度量对于微小目标过于敏感。在其用于RPN和NMS的新损失函数中考虑了中心点距离和数据集的平均大小。尽管上述方法取得了一定的进步,但它们仅关注于通过增强微小目标的表现来抵消噪声的影响。没有任何一种方法直接在源头上抑制噪声,即在FPN融合过程中。因此,我们首次致力于最小化FPN的噪声问题以提升微小目标的检测性能。

在本工作中,我们提出了去噪特征金字塔网络(DN-FPN),利用对比学习来减少FPN的噪声问题。DN-FPN的目标是在融合特征中保持几何和语义信息,如图1所示。具体来说,我们首先使用几何和语义编码器从FPN的不同层提取表征。为了监督这些编码器,我们提出了一种新颖的对比损失,根据其固有特性学习FPN特征的几何和语义关系。因此,经过对比学习后,融合特征保留了与自底向上路径的侧向特征等效的几何信息,并且保留了与自顶向下路径的高层特征等效的语义信息。因此,由通道减少和上采样产生的噪声得以减少。

此外,两阶段检测器以其定位和识别的精确性而闻名。然而,由于微小目标的像素表示不足,它们往往难以精确检测微小目标。为了解决这一问题,我们引入了Trans R-CNN,这是一种两阶段新型检测器,融合了视觉Transformer的优势,促进了丰富长程依赖性的提取。具体来说,Trans R-CNN首先将每个候选区域分解为一系列补丁token。这些token代表了微小目标的不同方面,比传统的整个候选区域方法提供了更细致有效的表示。随后,我们提出了一种洗牌展开算法,旨在将周围的token聚合到展开的token中,以实现局部信息的整合,从而为微小目标提供更具区分力的表示。我们在这一领域所做的贡献,即DN-FPN模块和Trans R-CNN检测器,通过高效地提取无噪声干扰的多尺度特征,成为优化用于微小目标检测的更精确工具。如图2所示,我们将DNTR与传统框架进行了比较,以突出其优越性。虽然基于R-CNN的检测器在定位潜在目标区域方面表现出色,但在全局信息捕捉方面存在不足(图2(a))。此外,DETR类系统由于整体处理视觉特征时过度响应背景,容易产生较高的误报率(图2(b))。相比之下,我们的DNTR方法通过DN-FPN模块强调前景元素,通过创建去噪多尺度特征来强化这一效果(图2(c))。随后集成RPN和RoIAlign技术,再配合洗牌展开,通过与相邻token的协同作用,在感兴趣区域内形成了更丰富的局部信息池。Trans R-CNN检测器进一步通过提出的掩码Transformer编码器(MTE)在感兴趣区域内增强了全局信息捕获,从而提高了微小目标的可辨识度。

我们的贡献总结如下:

  • 我们提出了一种在航空影像中进行目标检测的突破性方法,该方法在AI-TOD和VisDrone数据集上的表现突出,我们的DNTR模型分别以26.2和33.1的AP得分超越了现有的最先进模型。

  • 我们提出了DN-FPN,这是通过几何-语义对比学习设计的一种技术,旨在缓解FPN中常见噪声特征融合带来的冗余特征问题。

  • 我们开发的Trans R-CNN在特征识别方面体现了创新,采用了一种新颖的洗牌展开技术、掩码Transformer编码器和任务token选择机制,促进了更全面和详细的特征提取,增强了局部和全局判别特征。

a4a6f6e3ee2b881acd1a793c9948342a.png

2、相关工作

分辨率增强与复杂网络架构

由于小目标模糊且缺乏细节信息,许多研究致力于利用超分辨率(SR)技术提高图像分辨率。另一方面,一些方法提出了复杂的网络结构,可以同时结合高低层次的特征。然而,这些方法由于使用更高分辨率的图像或更复杂的模型来提升小目标检测性能,导致额外的计算成本。

特征金字塔网络(FPN)的进步

考虑到多尺度概念对目标检测有很大的益处,许多研究旨在基于FPN优化网络。通过一种高效的融合因子来重新加权融合过程中的特征图,因为小目标的语义信息可以通过有效的融合因子减弱来自顶层的信息,从而减少信息稀释。此外将FPN的高层次语义特征旋转四个不同的角度,沿着通道维度拼接后通过卷积层。这样,不同视角下的高层次语义特征之间的交互可以进一步强化全局语义信息。通过应用自适应分层上采样生成FPN特征,这可以为低层次特征提供显著的语义补偿,从而防止FPN融合引起的稀释干扰问题。然而,上述变体FPN方法仍然需要额外的模块或更强的输入,如附加的高分辨率图像或附加模块。相比之下,我们提出的DN-FPN模块仅在训练阶段使用,并显著提升性能而不增加图像分辨率。

无人机影像检测中的粗到细图像分割

不同于一般目标检测,无人机影像检测遵循粗到细框架以获得更精确的检测结果,即先将输入图像分割成小块,然后使用调整尺寸后的图像块作为检测网络的输入。例如,将图像分成具有重叠部分的等尺寸块以消除边界处物体的不连续性。引入一种密度引导的训练方法来获取密度区域,然后放大以更好地检测小而密集的目标。利用马赛克打包合并多尺度图像,增加了前景比例并加速推理过程。尽管性能提升显著,但这些粗到细框架在后处理融合中需要额外的时间消耗,并且会产生许多部分目标。

小目标检测中的损失函数进展

在小目标检测中,通用的IoU度量对预测边界框与真实数据之间的轻微偏移过于敏感。因此,DotD关注中心点之间的相对距离,并考虑数据集中所有目标的平均大小作为新的度量。NWD进一步将边界框建模为二维高斯分布,并使用归一化的Wasserstein距离来减轻小目标位置偏差的敏感性。基于NWD,NWD-RKA不是设置固定的阈值,而是采样前K个高质量区域以避免分配大量负标签。还有引入了一种面积加权损失来强化小目标的学习,其中权重随着大小的减小而增加。

R-CNN用于小目标检测

受R-CNN启发,由RPN生成的建议框对于小目标而言过大,导致效果不佳。为此,他们使用了专门为检测较小目标定制的小锚框,符合数据集的统计特征。此外,观察到小目标容易与不同尺度的锚框不匹配,因为训练数据中小目标样本较少。因此,他们采用一种复制粘贴小目标至无重叠图像的方法来过采样并增强小目标的数量。此外,还有专注于通过超分辨率扩大建议框,以缓解小目标的低分辨率问题。

利用自注意力机制的目标检测中的变换器模型

视觉Transformer(ViT)在目标检测中引入了一个重要的转变,即将图像分解为非重叠的token并通过Transformer层进行分类任务。尽管该方法具有创新性,但由于相邻token间的关系减弱,通过使用展开操作来增强局部关系解决了这一问题。在此基础上,DETR启动了一个端到端的目标检测框架,依靠Transformer机制来识别物体边界,尽管它在检测小目标方面存在问题且训练周期较长。为解决此问题,将多尺度特征引入到可变形注意力模块中,提升了小目标检测性能并加快了收敛速度。通过部署对比去噪训练方法进一步改进,显著提高了在COCO数据集上的性能。

尽管Transformer模型能够更好地利用自注意力机制,但在处理极小目标时仍存在致命缺陷。由于目标的微小尺寸及其在图像中占的比例较小,通常会导致遥感图像中前景与背景不平衡。此外,极小目标模糊且容易与背景混淆,因为类似DETR的方法使用整个特征图作为输入,导致较高的假阳性率(FP)。更确切地说,自注意力层主要与背景进行相似性计算,效率低下且容易混淆。为克服这一障碍,我们的Trans R-CNN结合了RPN和自注意力的优势,能够在区域建议内更好地捕捉局部和全局信息。

3、方法

由于极小目标缺乏像素表示,其表示更加容易受到噪声的影响。此外,整合来自周围像素的局部和全局信息可以增强极小目标的表示。为此,我们提出了一种有效的检测框架——DNTR,专门用于极小目标检测。DNTR的核心理念是利用增强的几何和语义关系,有效地捕捉RoI特征内的局部和全局信息,从而提升极小目标的检测性能。通过这种方式,可以实现两个目标:(1) 通过保持纯净的几何和语义信息(DN-FPN),减少FPN特征融合过程中引入的噪声。(2) 更好地利用RoI特征捕捉局部和全局信息,从而实现更好的检测(Trans R-CNN)。

图3展示了DNTR的整体结构,其中图3(a)说明了所提出的DN-FPN,这是一种带有几何和语义编码器的FPN,并通过所提出的对比损失进行了优化。这部分旨在减少FPN融合过程中产生的噪声。之后,FPN特征经过RPN网络和RoIAlign以获得RoI。图3(b)展示了所提出的创新检测器Trans R-CNN,旨在增强局部关系并捕获更多RoI内的全局信息。我们将在接下来的部分详细介绍DN-FPN和Trans R-CNN。

732d7d5a66cbd6d723c3e55d14fe97ed.png

A. DN-FPN

FPN通过融合不同层次的特征极大地推动了目标检测的发展。FPN 在第 i 层的融合过程可以表示为:

826383d982b00fc640cbd4d26c40eec5.png

其中   表示自顶向下路径中的特征, 表示自底向上路径中的特征,即通过下采样产生的 ResNet50 主干网络的多尺度特征(参见图 1)。此外,L 表示 FPN 的层次数量。Conv(·) 是用于通道缩减的卷积操作,而 Up(·) 是上采样操作。作为 FPN 的共识,侧向特征包含强烈的低级信息,因为高分辨率特征图代表了几何表示。相反,高层特征由于更深的特征提取而具有丰富的语义表示。

由于通道缩减,几何信息经历了失真(称为噪声),而语义信息由于上采样也面临类似问题,我们将 FPN 的噪声问题表述为几何信息和语义信息损失问题。为了解决这些问题,我们提出了去噪 FPN(DN-FPN),这是一种对比学习方法,旨在消除由通道缩减 Conv() 和上采样 Up( ) 产生的噪声。DN-FPN 的目标是在融合特征 中消除噪声,同时保留来自侧向特征 的几何信息和来自上层特征的语义信息。

几何与语义表示。首先,我们采用几何编码器和语义编码器来从小批量内 FPN 每个层级的特征中提取几何信息和语义信息。具体来说,我们分别通过几何编码器和语义编码器将侧向特征 投影到几何表示和语义表示 ,其中i表示 FPN 的第i层,j表示小批量中不同样本的索引。同样地,上层特征 也分别通过几何编码器和语义编码器投影到几何表示和语义表示 。值得注意的是,在对比损失中我们考虑了不同层级和批次的几何表示和语义表示。给定 FPN 的L个层级和小批量内的B张图像,我们将 FPN 的特征图分解为几何表示集合 和语义表示集合 ,如图 4 所示。随后,我们努力减小融合特征的几何信息与侧向特征的几何信息之间的距离,因为侧向特征代表未受干扰的几何信息。类似地,我们也使融合特征与上层特征的语义信息更加接近。相反地,我们力求排斥来自不同层级和批次且与融合特征无关的几何信息和语义信息。

具体而言,我们利用 InfoNCE 损失来学习几何表示G之间的更好关系,称为几何关系,以及语义表示S之间的更好关系,称为语义关系。建立几何表示和语义表示之间更好的关系可以实现无噪声特征融合,从而使得 FPN 结构更可靠。几何关系和语义关系的正样本和负样本介绍如下:

几何关系。如图 4 所示,侧向特征 用于向融合特征提供几何信息。理想情况下,来自和的几何表示应该是相同的。然而,通道缩减破坏了自顶向下特征,导致其与侧向特征的几何信息不一致。

给定自顶向下的第k层和第b批次,我们将几何表示查询和(正样本)视为正样本对,因为在侧向方向上几何信息应该尽可能相似。相反,我们将来自小批量内不同图像的不同层级的所有几何表示定义为负样本,因为它们具有不同的几何信息。几何关系的负样本集可以表示为:

aebee3e5940bfb4ce6703f84a74d482d.png

因此,在第b批次的第k层的几何损失,记为 ,是由以下得出的:

908b20a5112f079061bbb87696c7805c.png

其中,温度参数 τ用于控制特征在表示空间中的集中程度。总体的几何损失可以按如下方式计算:

3b4d1003011ffcc9086c886e1676f6ca.png

语义关系。遵循FPN的概念,高层特征在自顶向下的路径中向下层特征传递丰富的语义信息,即融合特征。理论上,和应该具有相同的语义表示。然而,上采样操作可能会产生冗余噪声,从而丢失语义信息。在这种情况下,和不再等价。因此,给定自顶向下的路径的第k层和第b个批次,我们将语义表示(查询)和(正样本)视为一个正样本对。相比之下,我们将来自同一个小批量中不同图像的语义表示视为负样本。语义关系的负样本集可以表示为:

9fa655e473d79680f37b21f92bc51b9b.png

同样地,第(b)个批次中第(k)层的语义损失,记作,是由以下方式得出的:

92b7bf329e226dc8b6b5f57ad322c991.png

总的语义损失可以如下计算:

c406ba62494f45bdb30d806947784b40.png

总之,图4展示了几何表示和语义表示之间的详细关系。通过使用和,融合特征保持了与信息源(侧向和上层特征)的一致性。因此,由DN-FPN生成的特征能够更好地检测微小物体。

5c9c17c5eede4c9d70854eb5d47ffca1.png

B. Trans R-CNN

在DN-FPN获得增强的多尺度特征之后,下一步是更好地利用这些特征来进行微小物体检测。根据之前的两阶段检测方法,R-CNN提供了一种用于生成物体检测的RoI特征的有效方式,然而,通过全连接层难以捕捉长距离依赖关系。因此,我们引入了一个有效的检测器,即Trans R-CNN,它包括交错展开机制、掩码Transformer编码器和任务token选择机制,如图5所示。Trans R-CNN的目标是增强微小物体的表示,并增加关于这些表示的全局信息。因此,我们提出了交错展开机制来增加微小物体表示的多样性,并采用掩码Transformer编码器整合带有掩码的自注意力层以获取全局信息。为了扩大上述方法的优势,使用任务token选择机制来更好地处理检测头的任务特定token。

交错展开 图6展示了所提出的交错展开算法。该算法旨在对邻近的补丁token进行过采样,通过一个保持复杂空间细节的展开操作来累积它们,这一策略在微小物体检测中至关重要。

在通过RPN(区域提议网络)和RoIAlign生成RoI特征后,我们将每个RoI特征分成带有重叠的部分。这确保了每个标记与其周围标记保持连续的局部信息。随后,我们将滑动窗口内的标记串联起来作为一个展开标记,以便更好地利用空间信息。对于串联顺序,仅使用光栅扫描顺序可能会限制特征的多样性,因此我们提出交错顺序以增加特征的多样性。交错顺序通过随机串联展开标记来过采样它们的组合。由于展开标记是从周围标记串联而来的,增加特征多样性可以视为增强了局部信息。

具体来说,光栅扫描顺序只包含相同的展开token组合。相比之下,在交错顺序中,展开标记的组合数量与滑动窗口的大小成比例,可以超过光栅扫描顺序倍。然而,由于复杂性,我们使用过采样率r来控制生成的展开token的数量。例如,r=4代表标记数量增加了4倍,另外3个展开token(浅橙色)由原始token(橙色)通过交错生成。令表示第i个具有维度D的展开token。展开token序列可以保持RoI内部的空间相关性(token顺序),并通过变化的token组合获得丰富的空间信息。需要注意的是,在交错展开操作后,展开标记的顺序是固定的。后续的操作,如多头自注意力(MSA)层和全连接FC 层,保持这种顺序,从而保留了展开标记的空间关系。其次,为了获取全局信息,MTE通过多头自注意力MSA层将局部标记序列转换为全局标记序列。具体来说,通过MTE与和交互,形成全局标记序列,其公式表示为:

e007a928e0e735d19990c4e3a1a02fc0.png

其中 * 表示应用了一个掩码以忽略 和 之间的注意力分数计算,因为它们彼此无关。NM 表示 MSA 层的数量。通过应用这个掩码,自注意力层能够同时处理类别和框的信息。任务token选择。在获得全局token序列 后,我们设计了一种任务token选择算法,用于均匀地将全局展开的token序列分离为与类别相关的组 或与框相关的组 。选择机制基于展开的token对类别token  和框token 的重要性。具体来说,对于第i个展开的token,我们计算注意力分数 αα 如下。

ee1d241355d1b39c2820b38303e049d0.png

其中 和 分别表示类别的查询和框的查询。此外,是展开的token序列的键, 是键和查询的维度。对于每个展开的token,我们根据其注意力分数之和对其进行排序,并根据其α和α的值将其归类为类别相关组或框相关组。类别相关组用于分类任务,而框相关组用于回归任务。任务token选择算法的具体细节如算法 1 所示。

f85138380050f2b1c29210b805474664.png

C. 总体目标函数

使用交叉熵损失(LCE)来优化分类任务,并使用平滑 L1 损失(LSmoothL1)来进行边界框回归。此外,DN-FPN 通过联合使用几何损失(公式 4)和语义损失(公式 7)来优化特征。因此,总体损失函数如公式 12 所示,其中 λ = 0.1 用于经验性地平衡不同损失的影响。

2076cb46cc1cf31dd7f6578a3d00376f.png

899be4dd4c346087201c59ed0a794153.png

4、实验

我们在 AI-TOD 测试集上将 DNTR 的性能与其他强大的基线进行了比较:

e690b6f4acd039fdc9a6be222901b658.png

表 II 进一步研究了使用更大骨干网络和更高分辨率时的性能。

5ec26e0923cb2cd14e026545ef5067f7.png

使用不同分辨率时的性能。

96b07c7f547893704043bda1a819ca60.png

表 IV 显示了不同模型在 VisDrone val 集上的性能。

2a9c9f8474ee6acd968ae05e9d8a050e.png

DNTR 的 APL 依然在基于 CNN 和 DETR 类模型中具有竞争力。结果表明,所提出的方法对一般尺寸的目标是可行且有效的。

0189896e7c5590ce0bd19a8fd43710ef.png

表 VI 显示了在 AI-TOD 测试集上对 DNTR 不同组件的消融研究,包括 DN-FPN、Mask Transformer 编码器(MTE)和任务token选择(TTS)。

1a8e46056a9ea227fe54b6a266d75bdc.png

表 VII 在 AI-TOD 数据集上比较了所提出的 DN-FPN 与其他增强 FPN 模块的方法在 AP、模型大小和 FLOPs 方面的性能。

a5e0a6eb5a6f89707bdddba093db5339.png

表 VIII 显示了使用所提出的 DN-FPN 的不同检测方法的性能。结果表明,所提出的 DN-FPN 对不同的模型有益,包括单阶段模型(即 FoveaBox、ATSS、YOLOv8s)和两阶段模型(Faster R-CNN、Double Head R-CNN、DetectoRS)。

8c97daa9a484dabba3d00f0a1263bd93.png

考虑到准确性和推理速度之间的平衡,我们进一步将 DN-FPN 整合到 YOLOv8s 中,通过用我们的 DN-FPN 替换 PAN-FPN。整合结果如表 IX 所示,装备了 DN-FPN 的 YOLOv8s 不仅保持了 YOLOv8s 原有的速度,还在检测准确性方面有了显著提升,AP、AP50 和 APvt 分别提高了 61.2%、59.1% 和 97.1%。总之,所提出的 DNTR 在准确性方面为微小物体检测设定了新的基准,而整合了 DN-FPN 的修改版 YOLOv8s 则提供了不牺牲速度的竞争解决方案。

e48f55a796b179090a184f3886ede165.png

在训练过程中,我们观察到几何损失和语义损失的总和往往会主导整个损失函数,从而忽视分类和检测损失,导致 AP 下降。因此,我们采用了一个系数 λ 来限制几何和语义损失的影响,如表 X 所示。相应地,λ 的增加会导致 AP 的下降,但是系数 λ 的调整对整体性能表现出了较低的敏感性。

6fcd2265c4a5aeab7c354c1818783f58.png

表 XI 比较了光栅扫描顺序与所提出的洗牌顺序,结果显示这两种方法在基本token数量(1x)下获得了相似的 AP,即每个 RoI 特征内包含 16 个token。

3453472ab8af661b1ff74e40b5b06286.png

5、结论与未来工作

我们引入了 DNTR,一种专为小目标检测优化的两阶段模型。DN-FPN 模块的设计巧妙地通过几何语义对比学习减轻了噪声。同时,Trans R-CNN 方面通过掩码Transformer编码器在全球信息聚合方面表现出色,并通过创新的任务标记选择机制细化了判别特征提取。实验结果表明,所提出的 DNTR 在 AI-TOD 和 VisDrone 数据集上超越了当代方法,从而确立了其在该领域的领先地位。虽然我们的进展标志着小目标检测领域的一大步,但也凸显了全Transformer检测器在这个专门领域面临的挑战,例如类似 DETR 的技术在 AI-TOD 数据集上的相对欠佳表现。我们认为这是一个关键的研究前沿,并承诺在此方向上深化探索,期望进一步改进 DNTR。总之,DNTR 不仅为未来的研究开辟了一条有希望的道路,还在小目标检测中树立了一个基准,推动科学界朝着创新解决方案的方向前进,填补该领域的现有空白。

32d3e47be3fbd32624277257895c8264.png

—END—

论文链接:https://arxiv.org/pdf/2206.13996

d20847149cd6cdaf0e7ed216442688fd.jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值