首篇!DiffBEV:更全面的BEV表示,BEV与Diffusion的完美碰撞!

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

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【BEV感知】技术交流群

后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!

1摘要

BEV 感知在自动驾驶领域具有重要意义,是规划、控制和运动预测的基础。BEV 特征的质量直接影响 BEV 感知的性能。然而,考虑到相机参数和 LiDAR 扫描中的噪声,通常得到有害噪声的 BEV 表示。扩散模型自然具有将噪声样本去除到理想数据的能力,这促使作者利用扩散模型来获得更好的 BEV 表示。在这项工作中,作者提出了一个端到端的框架,称为DiffBEV,以利用扩散模型的潜力,以生成一个更全面的 BEV 表示。据作者所知,这是第一个应用扩散模型的 BEV 感知。在实际应用中,设计了三种不同的条件来指导扩散模型的训练,该模型对粗样本进行去噪处理,并逐步细化语义特征。利用交叉注意力力模块融合 BEV 特征的上下文和条件扩散模型的语义内容。DiffBEV 在 nuScenes 数据集上达到了25.9% 的 mIoU,比现有的最佳方法高出6.2% 。通过对多个基准测试的定量和定性分析,验证了DiffBEV在 BEV 语义分割和3D目标检测任务中的有效性。

2介绍

在自动驾驶任务中,鸟瞰视图(BEV)感知起着至关重要的作用,它需要对现实世界进行紧凑而准确的描述。BEV 感知的一个重要组成部分是 BEV 特征的质量。以经典的 LSS [33]为例,首先从主干编码器中提取图像特征,然后沿着深度信息转到BEV空间。然而,由于平面世界假设并不总是有效,而且 BEV 中的特征分布通常是稀疏的,因此下游感知结果往往是扭曲的。如下图1所示,当使用 LSS [33]作为视图转换器时,最终的分割结果有三个缺陷:

  1. 动态目标边界的预测是模糊的,不同车辆的像素连接在一起;

  2. 对静态区域如行人穿越道和人行道的感知过于粗糙。尤其是,在 nuScenes 基准上有很多冗余的预测;

  3. LSS [33]对背景和前景像素的分辨能力很差。

54148c30084502e2343595021e1a53d0.png

在图1的最后两行,感兴趣的驾驶区域和车辆目标被错误地分类到背景中。

上述观察直观地激励作者探索更细粒度和更详细的 BEV 特征的下游感知任务。考虑相机参数和激光雷达扫描中的噪声,通常得到含有有害噪声的 BEV 表示。扩散模型自然具有对理想数据去噪的能力。近年来,扩散概率模型(DPM)在生成性任务中表现出了巨大的作用[5,22,25,31] ,但其在 BEV 感知任务中的潜力尚未得到充分的发掘。在这项工作中,作者提出了DiffBEV,一个新的框架,利用条件 DPM 来提高 BEV 特征的质量和推动 BEV 感知的边界。在DiffBEV 中,从视图变换器获得的深度分布或 BEV 特征是条件 DPM 的输入。DiffBEV 探索了条件扩散模型的潜力,并逐步细化了带噪 BEV 特征。然后,提出交叉注意力模块,融合条件扩散模型的细粒度输出和原始 BEV 特征。该模块自适应地建立了生成的特征与源 BEV 内容之间的内容关系,有助于获得更精确、更紧凑的感知结果。

DiffBEV 是一个端到端的框架,可以通过改变任务特定的解码器来轻松扩展。在本文中,作者评估了 BEV 语义分割在标准基准上的性能,即 nuScenes [6] ,KITTI Raw [11] ,KITTI Odometer [4]和 KITTI 3D Object [11]。DiffBEV 在 nuScenes 基准上达到了25.9% 的 mIoU,比之前表现最好的方法高出6.2% 。在驾驶区域、行人穿越道、人行道和汽车的划分方面,DiffBEV比其他方法有很大优势(分别为 +5.0% 、+10% 、 +6.7% 和 +11.6% IoU 得分)。定性可视化结果表明,DiffBEV 比已有的方法具有更清晰的边缘。此外,作者还比较了流行的 nuScenes 基准上的3D 目标检测和其他现代3D 检测器的性能。在没有trick的情况下,DiffBEV 为3D 目标检测提供了优势,并在 nuScenes 上提供了大约1% 的 NDS 改进。DiffBEV 在 BEV 语义分割和3D目标检测方面都取得了领先的表现。作者的贡献可以归纳为以下三个方面。

  1. 就作者所知,DiffBEV 是第一个利用条件 DPM 来辅助多个自动驾驶感知任务的工作。此外,DiffBEV 不需要额外的预训练阶段,并以端到端的方式与下游任务一起进行优化。

  2. 提出了条件 DPM 和注意力融合模块,以逐步完善原始 BEV 特征,可以无缝地扩展到不同的透视图Transformer,如 VPN [32] ,LSS [33] ,PON [34]和 PYVA [47]。

  3. 在多个测试基准上进行的大量实验表明,DiffBEV 的性能达到了最先进的水平,并且在语义分割和3D目标检测方面非常有效。DiffBEV 在 nuScenes 数据集上达到了25.9% 的 mIoU,比之前最好的方法[33]有很大的优势,即6.2% mIoU。

3相关工作

扩散模型

扩散模型广泛应用于人工智能生成内容(AIGC)中,在生成模型中占有重要地位。扩散模型在图像生成[14,18,36,45] ,检测[7] ,分割[1,3,8] ,图像到图像转换[23,24] ,超分辨率[38] ,图像修补[5] ,图像编辑[31] ,文本到图像[2,15,25] ,视频生成[17,40] ,点云[30,49,52]和人体运动合成[22,39]展现其超强能力。DDPM-Segmentation[3]是第一个将扩散模型应用于语义分割的工作,它预先训练扩散模型,然后为每个像素训练分类器。但是,预训练和微调这两个阶段的模型耗费了大量的训练时间,影响了模型的效率。DiffusionInst [16]将扩散模型应用于实例分割。一个通用框架[8]利用扩散模型生成全景分割结果。为此,作者进一步探讨了利用扩散模型为 BEV 感知任务生成高质量表征的可能性。与DDPM-Segmentation[3]相比,DiffBEV 是一个通用的端到端框架,它不需要额外的预训练阶段,可以与下游任务一起进行优化。

BEV 语义分割

BEV 语义分割是 BEV 场景理解的基础和关键的视觉任务,是路径规划和控制的基石。VPN [32]和 PYVA [47]分别通过可学习的全连接层和注意力机制呈现静态或动态目标的布局。LSS [33]利用相机参数将图像视觉特征提升到 BEV,在现代3D检测器中得到了广泛的应用。HFT [53]提出了一种同时利用无相机参数和基于相机参数的方法的优势的方法。CVT [51]从周围视图图像中提取内容,实现了一个简单而有效的设计。GitNet [12]遵循两阶段的模式,通过几何引导的预对齐模块和基于光线的转换器改善分割性能。然而,这些工作存在缺陷因素,如相机参数不准确造成的失真。在DiffBEV 算法中,作者提出了一种条件扩散模型来细化失真特征,并改善了以往 BEV 算法的语义分割性能。

3D目标检测

3D目标检测是自动驾驶研究者的一个主要研究课题。FCOS3D [42]提出了3D 中心并学习了3D 属性。PGD [41]探讨不同目标的几何关系,并改善深度估计。PETR [27]将多视图图像的相机参数投影到3D位置嵌入。BEVDet [20]显示了数据增强在图像视图和 BEV 中的积极作用。BEVDet4D [19]探索了空间和时间内容,以提高3D目标检测的性能。BEVDepth [26]利用多视图图像的显式深度监督,进一步拓展了3D目标检测的边界。BEVerse [50]提出了一个统一的框架,共同处理3D目标检测、地图构建和运动预测的任务。在作者的工作中,进一步利用了条件扩散模型处理3D目标检测的能力。

4方法

框架概述

下图2显示了DiffBEV 的总体结构,包括图像视图主干、视图转换器、条件扩散模型、交叉注意力模块和任务特定解码器。

7dbf4e6cbe89a4c9795717111ec2f0b2.png

DiffBEV 不需要一个独立的预训练阶段,并以端到端的方式进行训练。

图像视图主干提取图像特征,视图转换器将图像视图特征提升到 BEV。条件扩散模型对噪声样本进行细化,生成高质量的语义特征。交叉注意力模块负责合并 BEV 特征和条件扩散模型的输出。最后,将任务特定的解码器应用于下游的 BEV 感知任务,如分割和3D目标检测。在实际应用中,作者采用 LSS [33]作为默认的视图转换器。

条件扩散概率模型

扩散概率模型

作者在这一节中建立了条件扩散概率模型。将视图变换器生成的特征作为扩散模型的条件。噪声  服从标准正态分布 N (0,I)。扩散融合模型以渐进的方式将噪声  转换为原始样本 。作者将步长 t (0=<t<=T)的方差表示为 β。

以下方程给出了条件扩散模型的前向过程。

a959fec113d4bdaa1a96d3dc21e054b8.png

为方便起见,作者表示一系列常数。

92a1162633fb4e88fbc40f653e89bf13.png

变换步骤 t 的噪声样本通过方程3从输入数据进行转换。

72fc76ecbb98c541d63758e48430ff51.png

θ,是协方差预测器,εθ,是去噪模型。在作者的实验中,一个典型的 UNet [44]方差被用作去噪网络。在去噪过程中,扩散模型逐步细化噪声样本 。反向扩散过程用方程表示。

2f3617a64996a60b9b2d2f0f56b94f11.png
条件的设计

在实践中,有三种条件可供选择:

  1. 视图变换的原始 BEV 特征( ) ;

  2. 从深度分布中学到的语义特征(()) ;

  3.  和  的元素之和。

视图转换器将图像视图特征提升到 BEV 空间,得到原始的 BEV 特征 。对于每一点,视图变换器估计在不同预定深度范围内的分布,并生成相应的深度分布 。作者采用1 × 1卷积层将信道转换成与  相同大小的  插值成 。上述三个条件是 BEV 空间中的特征,在 BEV 空间中作者加入了高斯噪声。通过对样本进行逐步去噪,作者希望条件扩散模型有助于学习目标的细粒度内容,如精确的边界和高度详细的形状。作者严格遵循标准的 DPM 模型来添加 BEV 噪声,而不同之处在于作者采用了条件调制去噪,如上面图2所示。在给定噪声 BEV 特征  和条件  的时间步长 t 时, 进一步编码并通过元素相乘与  相互作用。为了减轻计算负担,作者对含噪 BEV 特征   的编码机制设置了一个灵活的选择,即自注意力机制或简单的卷积层,这将在第4.5节中讨论。一个 UNet 风格的结构,其组件包括一个编码器和一个解码器,作为去噪网络 εθ。

5交叉注意力模块

在获得条件扩散模型的输出之后,作者设计了一个交叉注意力模块(CA)来细化原始的 BEV 特征,如下图3所示。

91e5dc6e40f97fd0fd6be276457ee813.png

特别地,条件扩散模型的输出被视为 K 和 V 的源,而原始的 BEV 特征从透视图变换器投影到 Q。将两特征流的交叉注意力过程表述为:

8b6b122cb64afac0678660d4c8acc572.png

Q,K 和 V 线性映射以计算注意力矩阵 Attn,其中 ,,是  形状的投影层。然后,从输出层获得精化的 BEV 特征,以便于下游任务更好地学习。

训练Loss

深度损失: 给定内参数矩阵 ,旋转矩阵 ,平移矩阵 ,引入深度损失 来辅助模型训练。深度损失定义为预测的深度图  和  之间的二元交叉熵(BCE)。具体过程表示为:

c486104ff94b316e52a64799a8492b61.png

扩散损失: 作者把时间步长 t 的高斯噪声表示为 。其余符号的含义请参阅第3.2节。扩散损失  定义为:

ef0066a7900da1e5dfa3a18aaaf01618.png

任务特定训练损失: 分割和检测的训练损失可以写成 公式9。在实践中,作者经验地设置了损失权重 λ,λ。

1811955811f927a6823adbbd5244dfb0.png

任务特定解码器

作为 BEV 感知的通用框架,DiffBEV 可以通过改变任务特定解码器来推理不同的下游任务。语义分割采用残差式解码头,由8个卷积块和一个完全连通(FC)层组成。每个卷积块具有一个卷积层,其次是批归一化(BN)和ReLU层。至于3D目标检测任务,分类头和回归头分别由几个卷积层组成。有关3D 检测解码器的详细结构,请参阅 CenterPoint [48]。

6实验

数据集

作者比较了DiffBEV 与四个不同基准测试的现有方法的性能,即 nuScenes [6] ,KITTI Raw [11] ,KITTI Odometer [4]和 KITTI 3D Object [11]。NuScenes [6]数据集是自动驾驶领域的一个流行基准,它由6个周围的相机和1个激光雷达收集,包括多视图图像和1000个场景的点云。KITTI Raw[11]和 KITTI Odometry[4]提供静态道路布局的图像和 BEV 真值,而 KITTI 3D 目标[11]提供动态车辆的图像和标签。通过灵活地利用不同的特定于任务的解码器,DiffBEV 可以扩展到各种下游任务。在这项工作中,广泛的实验进行了 BEV 语义分割和3D目标检测任务。

实现细节

作者使用 AdamW 优化器[21]训练所有语义分割模型,学习率和权重衰减分别为2e-4和0.01。使用两个 NVIDIA GeForce RTX 3090,每个 GPU 的小批量设置为4个图像。对于 nuScenes,输入分辨率为800 × 600,对于 KITTI 数据集,输入分辨率为1024 × 1024。总的训练时间表包括20,000次迭代(nuScenes 的200,000次迭代)和warm-up策略[13]逐渐增加了前1500次迭代的学习率。然后,循环策略[46]在剩余的训练过程中将学习率从2e-4线性降低到0。对于3D目标检测,作者遵循 BEVDet [20]的实现细节。

对于图像主干,使用在 ImageNet [37]数据集上预先训练好的权值初始化 SwinTransformer [28]。VPN [32]、 PON [34]、 LSS [33]和 PYVA [47]的模型结构与原文相同。此外,作者主要采用 BEVDet [20]家族的方法来实现3D目标检测。训练和测试的细节与[20]和[19]是一致的。最后,条件扩散概率模型没有额外的预训练阶段,可以与下游任务一起以端到端的方式进行优化。

BEV 语义分割

基于 nuScenes 基准的评估 。在这一部分,作者比较了DiffBEV 和其他方法在像素级分割任务中的有效性。静态目标和动态目标的布局都是在 nuScenes 基准上估计的。如下表1所示,作者报告了DiffBEV 的分割性能以及第二部分介绍的一些改进方法。

8604cdaea33c609757406b7853eed85c.png

可以看出,与汽车、行人、自行车等相比,以前的最先进的方法 LSS [33]能够很好地预测广泛覆盖的静态目标,如可行区域、人行道和行人穿越道。这是因为动态目标通常占用较少的像素,在 BEV 中出现的频率较低。PYVA [47]和 PON [34]也可以观察到类似的性能,在可行驶区域类别中达到相当的准确性,但在卡车,公共汽车和拖车等罕见类别中表现较差。

相比之下,DiffBEV 在静态和动态目标的IoU评分方面有显著改善。如上表1所示。根据实际情况设计了三个条件。Diff-BEV,Diff-Dep 和 Diff-DepthBEV 的条件分别来源于原始 BEV 特征() ,从深度分布()学习的条件特征以及 和  的元素之和。DiffBEV-Dep 在大多数班级中表现领先,达到25.9% 的 mIoU分数,比之前的最佳表现方法高出6.2%[33]。特别值得一提的是,DiffBEV 提高了驾驶区域、行人穿越道、人行道和汽车的分割精度(分别为+5.0%、+10.0%、+6.7%和+11.6%IoU分数) ,这些都是自动驾驶系统安全性的关键类别。作者将这种改进归功于条件 DPM 减少了噪声,并补充了关于感兴趣目标的更多空间信息。DiffBEV 显著提高了模型在高频类和稀疏分布类中的像素级感知精度。

评估 KITTI Raw,KITTI Odometry,和 KITTI 3D Object benchmark。表2报告了 KITTI Raw数据集和 KITTI Odometry数据集静态场景布局估计的定量结果。

8f5c772211039417cf99b7dae0184683.png

通过对 KITTI 3D Object数据集的性能比较,给出了动态车辆的分割结果。三个条件的 Diff-BEV 比现有方法获得更高的 mIoU 和 mAP 分数。例如,区别 BEV-Dep 在 KITTI Raw,KITTI Odometry和 KITTI 3D Object数据集上超过第二好的模型 PYVA [47]0.71% ,1.51% 和7.97% mIoU,在所有评估基准实现了一致的最先进的感知准确性。

3D目标检测

作者在 nuScenes 基准和表3上进行3D目标检测实验。报告了官方评估指标: 平均平均精度(mAP)、平均平移误差(ATE)、平均尺度误差(ASE)、平均方向误差(AOE)、平均速度误差(AVE)、平均属性误差(AAE)和 NuScenes 检测得分(NDS)。注意,作者选择 LSS [33]作为缺省视图转换器,并使用从深度分布()学到的语义特征作为DiffBEV 的条件。图像视图和 BEV 的数据增强与 BEVDet [20]和 BEVDet4D [19]的数据增强是严格一致的。

4c7bd0415464ab24a0e7aa61caefd74d.png

应用条件扩散模型后,可以观察到3D目标检测的所有评价指标都得到了改进。这是因为DiffBEV 逐步完善了原有的 BEV 特征,并通过交叉注意力机制交互式地交换了语义上下文。没有Trick的 BEVDet4D [20]与DiffBEV 将 NDS 评分从38.7% 提高到39.8% ,而 BEVDet4D [19]与DiffBEV 将 NDS 评分从47.6% 提高到48.6% 。

消融研究

条件设计

为了发挥条件扩散模型的优势,作者在 KITTI 原始数据集上对不同的 DPM 条件进行消融实验,以估计静态道路的布局。具体来说,有三个 DPM 条件可供选择,即原始 BEV 特征() ,从深度分布中学习到的语义特征() ,以及 和 的元素总和( & )。

如表4所示。无论使用哪种条件,三种条件都可以引导 DPM 学习有区别的 BEV 特征。 和  &  比  具有更好的调制效果,而  的分割效果最好。这一观察结果证明了从深度分布中学习语义特征的有效性。

4490bd58997a9627f3f8d8adc4067137.png
特征交互机制

另一个消融研究是探索最有效的特征交互方式。具体地说,在作者的实验中探讨了三种机制,即连接机制(Concat)、加和机制(Add)和交叉注意力机制。如上表4所示、不论采用哪种特征交互机制,DiffBEV 的分割效果都优于基线模型,达到63.38% mIoU。研究结果表明,交叉注意力能够比其他两种简单的特征相互作用更好地学习 BEV 特征,这有利于下游感知任务的学习。综上所述,与交叉注意力特征交互机制的结合实现了最佳分割结果,基于 LSS [33]模型提高了2.48% mIoU。如果未指定,则DiffBEV 模型对应于具有交叉注意力机制的设置。

噪声 BEV 样本的编码机制

在这一部分,作者探讨了条件扩散模型中的内部编码机制。对于有噪声的 BEV 样本 ,作者计算自注意力语义图或通过一个简单的卷积层得到精化的亲和图。表5显示了计算量与分割性能之间的比较。使用自注意力机制的DiffBEV 模型可以获得较高的65.86% mIoU 和80.62% mAP。通过简化自我注意力到一个简单的卷积层,DiffBEV 模型达到64.23% mIoU 和78.34% mAP,同时降低 GFLOPs 从446.81到433.72。

057f8bc4dfc429c3b1dccb8d281e9c36.png

结合DiffBEV的更多视图变换器

在主要实验中,作者采用 LSS [33]作为视图变换器,将2D图像特征提升为BEV空间。为了研究DiffBEV 的通用性,作者还进行了更多视图Transformer的实验。如表6所示,配备 Diff-BEV 的模型在 mIoU 和 mAP 指标上都明显优于没有 DPM 的模型。VPN [32] ,PYVA [47]和 PON [34]模型受益于DiffBEV,提高了 mIoU 评分(分别 +1.19% ,+1.61% ,+0.59%)和 mAP 评分(分别 +10.14% ,+7.01% ,+10.11%)。这一观察说明,DiffBEV 不仅是有效的一个特定的视图转换器。实验结果表明,DiffBEV 为提高 BEV 语义分割质量提供了一种简单而有效的方法。

可视化分析

在这一部分,作者可视化一些图像和相应的语义图生成不同的方法,即 VPN [32] ,PYVA [47] ,PON [34] ,LSS [33]和 Diff-BEV。如下图4所示,以前的最先进的方法倾向于输出相对粗糙的预测,即不同目标的边界模糊和类别混淆。例如,应该是独立个体的汽车被连接到一个狭长的区域,驾驶区域被错误地分类为背景。人行道和行人穿越道的预测太失真,无法提供准确的位置信息。尽管 nuScenes 数据集上的街道布局复杂而富有挑战性,但DiffBEV 能够生成更精确的语义地图,并能够解决细粒度的细节,例如邻近车辆之间的空间分离,特别是在拥挤的自动驾驶场景中。如下图5所示,在 KITTI 数据集上也可以观察到类似的性能优势。对于 KITTI 原始数据集和 KITTI 测量数据集上的静态道路,DiffBEV 优于以前的方法,提供了边缘更清晰的语义地图,这证实了作者的方法能够有效地学习目标的结构信息。

9ca67aec499cb5dfbb4f58070e4c086f.png f2881f008b070992aef4bfa8e0063c63.png

7结论

本研究提出了一个新的框架,DiffBEV,该框架首次将条件扩散模型应用于 BEV 感知任务。扩散模型利用从深度分布中学到的 BEV 特征,或者这两个特征的总和作为扩散模型的条件,逐步改进噪声样本以产生高度详细的语义信息。然后,提出了一个交叉注意力模块,用于注意学习条件 DPM 输出与 BEV 特征之间的交互关系。对多个基准测试的大量实验表明,DiffBEV 在语义分割和3D目标检测任务方面都取得了令人满意的性能。例如,DiffBEV 在 nuScenes 基准上获得了25.9% 的 mIoU,比以前的最先进的方法表现好很多。对不同视角Transformer的可拓研究也证实了DiffBEV 的一般性。鉴于扩散模型的研究进展迅速,作者希望进一步挖掘DiffBEV 的潜力,并将其应用范围扩大到更多的 BEV 感知任务。

8参考

[1] DiffBEV: Conditional Diffusion Model for Bird’s Eye View Perception

『自动驾驶之心』联合『海天瑞声』

宣发自动驾驶平台新品发布会

欢迎扫描下方海报二维码预约直播!

下周二下午2点,敬请期待!

fc9951facf9ed95895f51af3493df91a.jpeg

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

d6b93210f0882c55a0b0ecd8891b393e.png

(扫码学习最新视频)

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

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

779876ae88de35de3d37ff4348bc39e6.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

8ba497debc90a951a7271a5ecb55999c.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值