[论文翻译]FlowNet3D++: Geometric Losses For Deep Scene Flow Estimation(WACV 2020)

FlowNet3D++是一种改进的深度场景流估计网络,通过引入点到平面损失和余弦距离损失,提高了预测精度和稳定性。这些几何约束帮助网络更好地理解和捕捉3D运动。此外,通过动态3D重建任务,FlowNet3D++展示出在场景流估计和重建错误方面的显著提升,超过FlowNet3D和KillingFusion。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文翻译:

FlowNet3D++: Geometric Losses For Deep Scene Flow Estimation

摘要:

提出了一种深度场景流估计网络FlowNet3D + +。受经典方法的启发,FlowNet3D + +在FlowNet3D中融入了以点到平面距离以及流场中各个向量之间角度对齐的几何约束[ 21 ]。我们证明了这些几何损失项的加入将之前最先进的FlowNet3D精度从57.85 %提高到63.43 %。为了进一步证明我们的几何约束的有效性,我们在动态3D重建的任务上提出了一个流量估计的基准,从而提供了一个比以前用于评估场景流的单个指标更全面和实用的性能度量。通过这个新方法可以将基于点的场景流预测集成到一个全局稠密的体积成为可能。FlowNet3D + +比FlowNet3D的重建误差降低了15.0 %,比KillingFusion [ 32 ]提高了35.2 %。我们将在后面发布我们的场景流估计代码。

1、引言

场景流被定义为一个3D向量场,提供了3D运动的底层表示。它类似于光流,描述二维图像平面上的像素运动。光流可以认为是场景流向二维的投影。目标检测、目标跟踪、点云配准、对应估计和运动捕捉等应用都可以从这些底层信息中获益,从而获得更好的性能。

虽然矢量场表示简单,但场景流估计远非易事。这是由于需要精确的深度估计,同时也需要处理遮挡问题。传统上,场景流估计是通过优化光度误差[ 21 ]或通过匹配手工设计的特征[ 3 ]来计算的,每个特征应用于多个视图几何或RGB - D图像。随着深度学习的快速发展,一些工作将CNN引入场景流估计。这使得场景流估计能够受益于语义信息和强大的深度特征提取。最近,PointNet[ 5 ]和PointNet+ + [ 29 ]实现了面向深度学习的直接点云处理。这些工作特别有趣,因为它们是基于点云的网络,可以直接处理丰富的三维几何信息,而不是从二维图像中隐式地学习三维几何。FlowNet3D [ 21 ]建立在PointNet+ +的基础上,直接处理点云数据上的场景流估计问题,得到了目前最先进的场景流估计结果。尽管FlowNet3D的结果令人印象深刻,但基于点云的场景流估计仍然处于发展的初期。FlowNet3D用一个朴素的监督信号训练网络,该信号是预测流和真实向量之间的L2损失。

在这项工作中,我们应用了经典点云配准算法中的几何原理,以便在预测和地面真值之间超越简单L2范数的深度场景流估计。特别地,我们研究了两个几何约束:1 )点到平面的距离2 )预测流向量与真实向量之间的余弦距离。点到平面的距离是迭代最近点( ICP ) [ 2,26]算法中常见的损失项,以收敛速度快著称。余弦距离可以直接惩罚两个向量之间的夹角。因此,余弦距离鼓励我们预测的场景流向量的正确对齐,而不仅仅是它们位于L2范数曲面上。这些几何原理约束的应用不仅提高了训练的精度,而且提高了收敛速度和稳定性。

进一步,我们通过动态3D重建的代理任务,引入了一个新颖的基准来研究场景流估计器的实际性能。将场景流应用到动态重建中,提供了对以前用于评估三维流估计的各个指标的整体组合。我们提出了一种新的方法,用于将基于点的场景流集成到一个全局稠密的体中。

综上所述,我们的主要贡献是:

1、通过结合点到平面损失、余弦距离损失和L2损失,将基于点云的场景流估计精度从57.85 %提高到63.43 %。

2、我们提出了一个平均角度误差度量来评估流向偏差,以补充端点误差( End Point Error,EPE )不足以单独评估两个向量之间角度差异的缺点。

3、我们提出了动态3D重建和一个新的动态集成方法,作为场景流估计的基准任务。三维重建为流量估计性能提供了一个整体的和内在的几何度量。在可变形场景流基准任务中,FlowNet3D + +比FlowNet3D的重建误差减少了15.0 %,比KillingFusion的重建误差减少了35.2 %。

论文的其余部分安排如下:在第二节中,我们简要介绍了相关工作.第3节介绍了我们对Flow Net3D的修改,以及我们在稠密动态重建中融合稀疏场景流向量场的方法。在实验部分,我们使用多个公开数据集评估了在场景流估计中添加不同几何约束的效果以及我们的动态重建结果。第6节总结了本文的工作,并对未来的工作进行了展望。

2、相关工作

2.1 传统场景流估计

场景流是场景中点的三维运动的低层表示。它是二维光流的三维扩展[ 3 ],其本身描述了二维图像平面上的像素运动。许多工作集中于利用多视图几何[ 35 ]通过关联显著图像关键点来估计场景流。后来的工作[ 27,11,37,36]通过图像配准和运动估计的联合变分优化来解决这个问题。[ 37 ]计算来自立体相机的稠密场景流,并在CPU上实现了5fps。Sphere Flow [ 10、15]是第一个使用RGB - D输入的实时场景流估计系统。文献[ 16 ]提出对刚性段和非刚性段进行不同的处理。

2.2 深度流估计

最近深度神经网络的发展为解决形变深度图上的点关联问题提供了一种替代方案。其中一组深度方法可以看作是经典二维光流方法的继承者。例如Flow Net [ 7 ]及其变体[ 12 ]。这些方法不使用手工设计的特征来跟踪像素位置,而是依靠学习到的深度特征进行跟踪,然后反投影到深度图中获取三维场景流。为了更好的训练和评估,Mayer等人[ 24 ]创建了三个合成场景流数据集。他们还提出了一个用于视差和场景流估计的网络。Zhang等[ 30 ]假设一个动态场景包含前景物体和背景,并在前景上应用实例分割掩膜来区别对待前景和背景。

类似地,文献[ 31 ]开发了一个神经网络,从连续的两个RGB - D帧中联合估计对象分割、对象轨迹和对象场景流。Ilg等[ 13 ]提出了一种基于FlowNet [ 7 ]的网络来同时估计遮挡和视差。文献[ 23 ]整合了三种视觉线索来估计自动驾驶任务中刚性物体的场景流。这三个视觉线索分别是分割掩膜、视差图和光流,它们由现有的网络提取,即。Mask R-CNN [ 9 ]、Psmnet [ 4 ]和Pwc - net [ 34 ]。

以上所有的方法大多是基于图像的,因此可以方便地使用2D卷积提取外观特征。然而,一些感官数据如激光扫描仪是非结构化的,因此传统的卷积并不适用。针对该问题,Behl等[ 1 ]评估了集成边界框和将像素级分割集成到场景流估计管道时场景流估计的性能。[ 1 , 22 , 8]用于点云上的场景流估计。Point FlowNet [ 1 ]提出同时估计场景流、自运动和刚体运动。与Point Flow Net相比,Flow Net3D [ 22 ]和HPLFlow Net [ 8 ]是不依赖刚体假设的更通用的场景流估计框架。具体来说,Flow Net3D使用Point Net + + [ 29 ]提取特征,使用流嵌入层混合特征并计算粗场景流,使用set - upconv层将粗场景流传播到更精细的层次。HPLFlowNet没有使用PointNet + +,而是使用了置换网格[ 20 ]和双边卷积层( BCL ) [ 17 ],可以提高全局信息提取和更快的性能。

3、方法

FlowNet3D是一个神经网络,用于估计给定两个点云的三维场景流Vts,即源点云Xs和目标点云Xt,其中Xs和Xt是两组无序的三维点。为不失一般性,两个点云的数量不必相同,即| Xs | | Xt |,但预测的向量场始终与源点云具有相同的维数。Flow Net3D采用Siamese架构,首先使用Point Net + +提取每个点云的下采样点特征,然后在流嵌入层中混合特征。最后,对流嵌入的输出特征进行正则化,并上采样到与Xs相同的维度。使用预测‖Vts-Vgt‖2之间的L2范数损失函数训练网络,其中Vgt为真实场景流场。

图1。我们采用FlowNet3D结构,并使用蓝色方框来突出我们添加的损失项。

Flow Net3D已成功应用于刚性场景。在本文中,我们进一步探索了其应用于非静态场景,甚至可变形物体主导的场景时的潜力。更重要的是,我们引入了两个损失项,在保持刚性场景(使用KITTI数据集进行测量)性能的同时,提高了两种动态场景下的预测精度。新的损失项也加快和稳定了训练过程。图1展示了FlowNet3D的总体思路和我们使用的损失项。关于原始FlowNet3D结构的更多细节可以在其论文中找到。

3.1 几何约束

点到面损失。点到平面损失受到点云配准中流行的点到平面距离度量的启发,如迭代最近点( Iterative Closest Point,ICP )算法。具体来说,我们可以用集合X n l和X n w来表示第n帧的两个三维点云,其中标签l和w分别表示相机和世界坐标系。每个点x∈X n w为三维齐次坐标。点xnw可以通过xn l = Tn clxnw从世界坐标转换到相机坐标,其中Tn lw∈SE ( 3 )是三维刚性变换。

给定Xnl和Xnw,Tcnw可以通过最小化以下典型ICP算法的误差函数来估计[ 26 ]

其中n ( xcn )是计算xcn处曲面法线的函数,xcn是Tcnwxnw的闭点。曲面法线与紧致距离的点积度量了Tcnwxnw到由xcn及其法线定义的平面的距离,因此被称为点到平面的度量。

受点到平面度量的启发,我们引入一种新的损失来训练FlowNet3D,其定义如下:

其中xt是目标集合Xt中距离源点xs∈Xs最近的点。场景流可能编码任何刚性变换或简单的非静态运动场,最终由训练时提供的样本决定。在对FlyingThings进行训练时,Xs和Xt都在同一坐标系下,因此训练好的模型自然地学习表示刚体运动场片段。有趣的是,我们发现相同的模型可以很好地推广到从变形物体的连续帧中提取的点云,从而优于最新的动态融合算法。

余弦距离损失。余弦距离损失旨在约束预测流场与真实值之间的夹角。从FlowNet3D的场景流预测中,我们注意到一些预测的运动矢量在方向上与实际情况有很大的差异。因此,我们引入余弦距离损失,其目的是最小化预测和真实值之间的夹角。我们直接计算预测向量与其真实值之间的余弦距离。这就为偏离真实方向的向量提供了额外的惩罚,即使它们具有相同的L2损失。图2说明了L2损失和余弦距离共同作用的效果。

图2。红色圆圈表示L2损失相等惩罚的能量等值线。蓝色圆圈表示L2和Lcos合并后的能量等值线。Lcos显式惩罚具有大角度偏差的向量。在该图中,加入Lcos后v1受到的惩罚大于v0。

组合损失。组合损失包括所有三个不同的损失项,使用加权求和:

其中,λ p和λ cos是平衡损失项的权重,L2 = 1 | V′ts |∑v∈V′ts‖v-vgt‖2和Lcos = 1 | V′ts |∑v∈V′ts v · vgt‖v‖vgt‖。V′ts为预测向量场,vgt为与v对应的个体真值向量。值得注意的是,余弦损失和L2损失分别权衡预测向量场的角度和长度。

3.2 用于动态三维重建的场景流

动态场景下的流场估计性能通常通过内点计数来评估,内点计数通过设定的阈值来确定。然而,这种评估方案严重依赖于阈值,必须启发式地设定阈值。我们提出基于最先进的动态三维重建系统来测试场景流框架,以便通过查看三维模型来评估场景流。这为3D流估计提供了更全面的性能度量,以及实际应用。

动态三维重建最近被引入用于恢复非静态物体,包括可变形物体,如运动的动物或人类[ 25、14、32、33、18、19]。KillingFusion [ 32 ]及其变体SobolevFusion [ 33 ]代表了直接估计两个TSDF体之间稠密向量场的最新动态融合方法。但这种变分优化过程在搜索空间较大时容易陷入局部最小值。我们的基准框架也可以被认为是一个动态重建系统,在质量方面显著优于KillingFusion,平均误差降低了35.2 %。

特别地,我们的基准框架采用一系列具有相应场景流预测的点云来恢复三维模型。与地面真值模型相比,重建误差可以可视化。在实验中,与FlowNet3D相比,FlowNet3D + +在动态重建任务中减少了高达15.0 %的误差。

整个方法的概况如图1所示,我们展示了以下基本步骤:

1、使用点到面的ICP算法[ 2 ]计算点云与正则模型之间的刚性SE ( 3 )变换,如公式(1)所示。它通过将目标物体吸收到当前相机位姿来补偿目标物体的整体运动。

2、预测实景与规范点云之间的场景流。本文对Flow Net3D [ 21 ]和我们的Flow Net3D + +进行了实验。

3、利用上一步计算的场景流对点云进行变形,并将变形后的点云投影到补偿后的相机位姿中,生成合成深度图。

4、使用广泛使用的深度到体积分方法从合成深度图中构造一个实时的TSDF体φ n,该方法首先在KinectFusion [ 26 ]中介绍。

5、使用一个简单的基于变分体素的场景流细化来细化活动体和正则体之间的向量场Ψ V。

6、通过对TSDF值在φ n和φ global之间进行体素加权平均并累加权重来更新φ global [ 6 ]。

步骤2引入深度场景流对实景点云进行扭曲,形成更易于KillingFusion优化的虚拟TSDF体,降低恢复模型的计算复杂度和质量。步骤3、4和5构成了我们的新型场景流积分器,它将点云分辨率的场景流整合到完全的TSDF体分辨率上,并且几乎没有人为操作。

场景流积分器场景流积分器将多个点云合并为单一的三维体表示,可以从中提取三维模型。具体来说,假设Xnl表示摄像机坐标系下的实时帧的点云,Xng表示来自规范模型的光线投射点云,场景流预测器计算一个将Xnl和Xng关联的场景流场Ψ nS。从Xnl到Xng的翘曲可以表示为如下形式:

其中xnl∈Xnl .注意到Ψ n S和X n l具有相同的分辨率,而X n′g和X n g则不同。因此,我们的目标是将X n′g光滑地积分到正则体积φ global中.

将X n′g自然地集成到全局TSDF体积中似乎是一个合理的解决方案,然而,在我们的实验中,我们发现这会导致明显的伪迹。这是因为在点云上计算的场景流仅能推断物体表面或零水平集上的运动。为了使体积型TSDF变形,向量场必须覆盖截断区域内的整个3D区域,同时保持TSDF是一个精确的水平集函数的性质,以使工件最小化。

因此,我们通过以下方法来解决这个问题:1 )通过将X n′g投影到深度图" Dn "上,创建一个合成深度图" Dn " = { " d ( u , v) | ( u , v)∈Ω },其中Ω是深度图上的像素位置集合。2 )由' Dn生成一个合成活体积φ n。这相当于将深度图集成到一个空的TSDF体中。

通过将变形点云X n′g转换为TSDF体φ n,我们获得了φ n和φ global之间的粗对齐。下一步将通过简单的变分向量场精化来精化这种粗对齐。

基于体素的矢量场精化:直接在TSDF体上运行变分优化的概念最早在KillingFusion [ 32 ]中提出,并在SobolevFusion [ 33 ]中进行了简化。它通过迭代地将源TSDF演化为目标TSDF来求解向量场。这种方法的优点是能够处理拓扑变化,缺点是容易陷入局部极小。这是因为它缺乏关联水平集函数的显式对应关系。通过从我们的深度场景流估计器中提供良好的初始解,只需要基于体素的向量场精化的几个迭代。具体来说,对于位置x∈V的体素以及与该体素相关联的三维向量v = v ( x ),我们的能量被简单定义为:

其中φ ( x )表示体素中心x处的TSDF值,能量可以很容易地通过梯度下降进行优化:

其中v ( k )∈Ψ ( k ) V表示第k次迭代时的向量场Ψ n V,E′( v )是关于v的梯度,可以通过下面的变分法有效计算:

式中:∂φ n( x + v)为活体量φ n中体素位置( x + v)处的空间梯度。

值得注意的是,上述优化计算得到的向量场仅在局部区域有意义,其目的有两个:( i )将一个大致对齐的活体积注册到正则模型;( ii )去除粗略非刚性点云配准中引入的伪影。得益于深度场景流估计器的质量,我们不再需要正则化项,如KillingFusion和SobolevFusion中的正则化项。

上述能量将为每个SDF体素产生一个场景流矢量。一般来说,这个向量场的量级应该很小,因为当将活点云扭曲为典型点云时,主要的演化已经得到了补偿。因此,在较少的迭代次数下,通常在3 ~ 70之间,我们可以调解场景流预测器引入的伪影和噪声。

我们知道,进行变分精化可能会影响深度场景流基准化结果。然而,这种变分细化对于动态重构等复杂任务是必要的。如果不存在,由于累积误差较大,跟踪可能在几帧后失败。为了消除基准测试中这种变分精化的影响,我们显式地为所有实验设置了固定的迭代次数。对于Snoopy和Duck数据集,我们对所有的深度场景流基准测试使用30次迭代。

4、实验

在本节中,我们评估了我们对Flow Net3D的修改,并分两个小节定量地验证了它们的有效性。在第一小节中,我们使用FlowNet3D提供的经过预处理的现有场景流数据集FlyingThings和KITTI对FlowNet3D + +结果进行了基准测试。对于预处理细节,我们参考了FlowNet3D补充材料。我们还提供了一个图表来分析训练收敛所需的时间。在第二小节中,我们定量地评估了Flow Net3D + +在我们新的动态重建基准中的性能。这在KillingFusion [ 32 ]提供的两个重建数据集(史努比和鸭)上进行。进一步的定性结果可以在我们的补充材料中找到。

为了在方程2中启用点到面的损失项。我们也为FlyingThings数据集预先计算了每个点的表面法线,但是我们并没有使用表面法线作为输入特征。

我们的模型使用FlyingThings数据集的训练片段从头开始训练,并在测试片段上进行测试。我们直接将在FlyingThings上训练好的模型迁移到KITTI上,无需任何微调。对于动态重建基准,我们也直接将在FlyingThings数据集上训练好的模型部署到管道中,同样不需要微调。对于超参数,在大多数实验中,我们使用了与Flow Net3D完全相同的超参数来展示我们的损失项的有效性。对于表4.2所示的最佳结果,我们训练了200个历元。

表1。F3D是FlowNet3D的简称。我们在两种输入设置下对Flow Net3D + +进行评估。输入设置xyz意味着我们只使用点位置作为输入特征。输入设置rgb意味着点位置和颜色特征都被输入网络。对于EPE和ADE,越低越好。

4.1 度量

我们使用3D端点误差( End-Point-Error,EPE )和具有两个阈值的精度度量( ACC )来报告结果。在FlowNet3D中也使用了这三个指标来提供公平的比较。我们还提出了该任务的平均角度偏差误差( ADE )来评估预测的场景流向量的方向。EPE:EPE是估计的流向量与其真值向量之间的L2范数。ADE:我们定义ADE为arccos(①N∑cos ( vp , vgt )) ),其中vp和vgt是预测向量和它的真值向量。

4.2 FlyingThings 数据集

在Flow Net3D + +中,除了使用原始的L2损失外,还使用了余弦距离损失和点到面损失。表4.2列出的结果表明,我们的修改改进了我们测试的所有指标。事实上,仅有几何图形的XYZ - FlowNet3D + +甚至优于RGB - FlowNet3D,可以包含颜色信息。我们使用λ pp = 1.3和λ cos = 0.9进行测试,但是我们发现λ pp,cos∈[ 0.5、1.5]在一般情况下产生了很好的结果。由于FlowNet3D没有对ADE进行评估,我们使用文献[ 21 ]提供的预训练模型计算FlowNet3D的ADE。

4.3 KITTI数据集

由于KITTI场景流数据集只提供了无色的LiDAR扫描点云,因此我们只展示了纯几何模型的结果。

表2 . KITTI场景流基准。我们报告,我们的模型在所有测试的误差指标中都有显著较低的误差。

我们在KITTI数据集上提出了比文献[ 21 ]更简单的评估过程。我们将KITTI点云数据调整为FlyingThings场景的大小,即x∈[ - 15m , + 15m],y∈[ - 8m、+ 8m],z∈[ 0m、35m],然后将其送入网络。虽然这与文献[ 21 ]中的结果不同,但我们通过在FlyingThings上同时训练FlowNet3D和FlowNet3D + +,并在不进行微调的情况下转移到我们调整的KITTI中,确保了公平的比较。我们在表2中报告了我们的结果。

4.4 动态稠密重建

在本节中,我们在我们提出的动态稠密重建基准中证明了Flow Net3D + +的有效性。

4.4.1 配置

我们的纯深度动态重建系统是在Infini TAM [ 28 ]的基础上实现的,该系统是一个开源的RGBD稠密SLAM系统,具有现代CUDA支持。所有实验的体积分辨率设置为2563,体素大小为3mm或5mm。具体来说,我们对Snoopy和Duck数据集[ 32 ]等小场景使用3mm,对VolumeDeform数据集[ 14 ]使用5mm。截断距离δ设置为体素大小的± 4倍。优化器的步长α设置为0.1。我们还实现了一个SobolevFusion系统用于对比(对比图像见附录)。与KITTI场景类似,将FlowNet3D + +应用于不同摄像机拍摄的视频,需要将场景调整到FlyingThings数据集的范围内,即x∈[ - 15m , + 15m],y∈[ - 8m、+ 8m],z∈[ 0m、35m]。缩放因子的选择取决于不同的体素大小、SDF体积大小和相机内参数。然而,在实际应用中,我们发现标度因数的粗略估计对于所有的实验都是有效的。特别地,对于Snoopy序列,缩放因子设置为sx = 25,sy = 25,sz = 30。通过这种缩放方法在动态重建中取得的良好效果,提供了缩放在KITTI评估中同样有效的证据。

4.4.2 结果

图3。平均Mesh - To - Mesh误差。蓝色区域表示误差较小。我们用红色表示大于1cm的误差。顶端:地面真值网格。第2行和第3行:KillingFusion和VolumeDeform (图像复制自)的结果。第四行:我们的重建结果与未经修改的FlowNet3D。底行:应用FlowNet3D + +后的重建结果。可以看出,我们的模型大部分表现为蓝色,表明整体误差较低。下方两行显示FlowNet3D + +比FlowNet3D有所改进。定量上,我们在Snoopy和Duck场景上的平均误差比KillingFusion重建分别降低了35.2 %和34.3 %。

KillingFusion数据集(史努比和鸭)提供了一个真实网格。因此,我们可以定量分析在动态重建中加入深度场景流估计的好处。我们还展示了在VolumeDeform数据集上运行我们的系统的更多图像和我们在附录中记录的视频序列,以定性地说明我们的管道的好处。我们的Snoopy和Duck评价结果报告在表3和图3中。

表3 . Flow Net3D和Flow Net3D + +在我们的动态重建基准中的评估

5、消融实验

为了验证从我们的每个几何约束以及它们的组合中得到的个体效益,我们对几何模型和彩色模型进行烧蚀试验。除非另有说明,我们使用与[ 22 ]完全相同的训练过程。

结果见表4和表5。表4和表5的下列结果中,我们训练了200个历元,而不是150个历元。

除了几何损失项的整体表现外,还值得注意的是,在RGB设置中,简单地结合Lpp + Lcos在训练150个历元后并没有得到最好的ACC和EPE。相反,在这个调度之后得到的最好的结果是用Lpp训练的模型。然而,我们发现Flow Net3D + Lpp的精度在150历元后出现平台,而同时使用Lpp和Lcos的模型精度直到200历元仍在增长。因此,RGB设置中几何损失的组合提供了我们的最佳配置。然而,在XYZ设置中,即使在150历元调度之后,几何损失项的组合也提供了最好的结果。

表4 .针对FlowNet3D纯几何模型的消融研究。最后一行是训练200个历元的结果。包括原始FlowNet3D在内的其他行均训练150个历元。

表5 .针对FlowNet3D彩色模型的消融研究。最后一行是训练200个历元的结果。包括原始FlowNet3D在内的其他行均训练150个历元。

6、结论

在本文中,我们引入了Flow Net3D + +,据我们所知,这是目前最先进的基于点云的深度场景流估计器。我们提供了两个原则性的几何约束,分别将基于点云的深度场景流的精度从57.85 %提高到63.43 %。我们还在动态重建场景中贡献了一个新颖的基于几何的场景流基准管道。在我们的可变形场景流基准中,我们的FlowNet3D + +比FlowNet3D减少了高达15.0 %的重建误差,比单独的KillingFusion提高了高达35.2 %。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值