Correlate-and-Excite: Real-Time Stereo Matching viaGuided Cost Volume Excitation(CoEx)(一)论文翻译

题目:

关联与激励:基于引导代价体激励的实时立体匹配

目录:

题目:

摘要:

1.介绍:

2.相关工作:

3.方法:

4.实验:

A. 数据集和评估指标

B.实施细节

C. CoEx的性能

D. 消融研究

5.结论:

6.附录:

A.详细架构

B.邻域聚合


摘要:

       立体匹配的体素深度学习方法使用三维卷积从输入的左图像和右图像计算代价体。最近的工作表明,利用提取的图像特征和空间变化的代价体补充了三维卷积。然而,具有空间变化操作的现有方法是复杂的,花费大量计算时间,并且导致内存消耗增加。在这项工作中,我们构造了引导代价体激励(GCE),并证明了图像引导代价体的简单通道激励可以显著提高性能。此外,我们为最终视差估计计算还提出了一种使用top-k选择优先的方法做soft-argmin视差回归的新方法。结合我们的新贡献,我们提出了一个端到端网络,我们称之为关联和激励(CoEx)。在SceneFlow、KITTI 2012和KITTI 2015数据集上对我们的模型进行的大量实验证明了我们模型的有效性和效率,并表明我们的模型优于其他基于速度的算法,同时也与其他最先进的算法具有竞争力。代码将在以下位置提供:https://github.com/antabangun/coex

1.介绍:

       立体匹配的目的在于评估一对图像的深度,这对于机器人、自动驾驶以及计算机视觉等领域都是一个至关重要的的任务。该任务有各种具有挑战性的问题,如遮挡、无纹理的区域、有重复纹理的区域、薄的或小的物体等。随着深度学习算法的发展,立体匹配算法的精度也得到显著提高;然而,许多精确的最先进的模型对于实时应用程序[3]-[7]并没有快速的处理速度。专注于快速计算的算法存在,但经常牺牲精度来获得这一优势,这可能是立体相机在[8],[9]应用中没有更频繁地使用的主要原因,如自动驾驶,快速计算是必要的。如果立体匹配算法的效率可以从目前的标准中得到提高,那么基于立体摄像机的深度感知就可以替代目前在许多自动驾驶算法[10]中使用的昂贵的激光雷达传感器。

       最近的一系列基于学习的立体匹配算法[5]、[11]、[12]使用左右输入图像,通过计算两幅图像之间特征的相关性或连接来构建一个成本量。基于相关性的方法将输入图像之间的特征向量降低为余弦相似度的值,这给予了模型更低的内存使用和更快的运行速度。然而,这降低了神经网络的表征能力,并往往导致与基于连接的代价体相比会有较差的性能。

       在体积方法中,计算出的代价体使用三维卷积层[13]进行聚合。然而,三维卷积的深度堆栈是计算成本昂贵和内存效率低的[14]。最近的研究试图利用空间变化的聚合[3]、[5]、[15]来提高代价聚合步骤的效率。虽然这些工作显示了在准确性方面的提高,但计算成本和内存消耗显著增加,以及所提出的方法的实现增加了复杂性。

        我们提出了一种有效和直接的方法,利用基于注意力的方法(该方法已被证明可以改善图像分类网络[16],[17])提取的图像特征来提高代价聚合。给定一个代价体特征图,引导代价体激励(GCE)用从参考图像特征计算出的权重来激发代价体通道。计算出的权值在视差通道之间共享,因此该操作具有轻量级性,易于实现。该模块允许三维神经网络层从代价体和图像引导的权值中提取几何特征,以激发相关特征。我们的经验表明,该操作显著提高了性能,而没有任何显著的额外计算成本。我们认为,该模块允许基于相关性的成本量来利用图像信息,并以与基于连接的模型相似的精度执行,这允许我们构建了一个快速而精确的基于相关性的立体匹配模型。

       在基于体积的立体匹配模型中,soft-argmin是计算最终视差估计的标准方法,而改进soft-argmin回归的工作很少。soft-argmin函数从代价体聚合得到的每个像素处的视差分布中计算期望值。然而,在许多情况下,视差分布可以有多个峰,如在边缘边界上,甚至是一个几乎均匀的分布,如无纹理区域。由于这个原因,当分布不是单峰分布时,取期望值可能不是估计差异的最佳选择。相反,我们建议只使用分布中的top-k值来计算视差图。我们表明,这个简单而新颖的想法提供了更准确的深度估计,并可以应用于任何基于体积的模型。

       根据我们提出的想法,我们构建了一个端到端实时立体匹配网络,我们称之为CoEx(相关性和激发)。我们总结了我们的贡献,并列出了它们如下:

(1)我们提出了引导代价体激发(GCE),利用从图像中提取的特征图作为成本聚合的指导,以提高性能。

(2)我们提出了一种新的视差回归方法,代替soft-argmax(argmin)从top-k匹配代价值计算视差,结果表明该方法可靠地提高了性能。

(3)通过这些方法,我们建立了一个实时立体匹配网络CoEx,它优于其他面向速度的方法,并显示了其与最先进的模型相比的竞争力。

2.相关工作:

       最近的工作主要集中在使用深度卷积神经网络(CNN)来提高立体匹配性能。在[18]-[20]中,cnn用于获取用于特征匹配的左右图像的特征表示,但成本聚合仍然采用传统的方法进行。DispNet [12]实现了这个想法,它训练端到端深度模型通过引入一个相关层来构造成本量来实现对立体图像进行深度预测。在此之后,人们提出了更多的端到端工作,它们主要可以分为直接回归和体积方法[21]。基于直接回归的方法利用成本量上的二维卷积来直接计算视差图[22]-[24]。另一方面,基于体积的方法使用三维卷积来聚合代价体,通过考虑几何约束[11]、[13]、[14]、[21]和在沙漏架构中叠加三维卷积。

       近年来,更多的工作都集中在提高聚合步骤中三维卷积的效率上。两个值得注意的工作是,GANet [5]和CSPN [3]使用空间依赖的滤波器来聚合成本。这些方法通过使用空间依赖的三维聚合技术获得了更高的精度,但代价是需要更高的计算时间。受这些方法的优缺点的启发,我们的模型基于空间依赖的3D操作,但重点关注速度和效率。另一方面,StereoNet[25]专注于建立实时立体匹配模型,和其他许多模型一样,通过牺牲其准确性。近年来,[26]、[27]作品在实时立体匹配模型上的精度越来越接近性能最佳的模型。

       上述基于体积的方法输出每个像素的每个视差水平上的匹配代价值的分布。最终的视差估计是通过使用一个soft-argmin操作取分布的期望值来计算的。因此,该网络只被间接训练以产生视差分布,并可能在模糊区域失效。改进soft-argmin视差回归的研究很少。最近的研究表明,AcfNet [28]和CDN [29]通过引入新的损失函数来训练网络产生更好的单峰分布。本文提出了一种建立在soft-argmin操作本身基础上的新方法,并改进了整体视差回归。 

3.方法:

       这是一种基于深度学习的端到端立体匹配网络,包括匹配成本计算、成本聚合和视差回归。我们提出了一种新的GCE和top-k的soft-argmin视差回归模块,它可以集成到基于体积的立体匹配算法baseline中,两者都不给立体匹配模型baseline增加显著的计算成本。利用所提出的模块建立了一个实时的端到端立体匹配模型,如图2所示,达到了与最先进的竞争性能。我们将在下面的小节中详细描述每个部分。

A.匹配成本计算

        给定一个左右输入立体图像对3×H×W,使用共享的特征提取模块从两者中提取特征映射。为了保证轻量化的属性,我们使用MobileNetV2 [30]作为我们的主要特性提取器,并构建了一个U-Net [31]类型的上采样模块,在每个尺度级别上都有长跳转连接。从这个特征提取模块中,提取每个尺度上的特征,用作空间变化的成本聚合的指导信号。为了构建成本量,在左右图像的1/4尺度上提取的特征图将被用于与相关性层[12]一起输出一个D/4×H/4×W/4的代价体,其中D = 192是我们网络的最大视差集。

B.引导代价体激励(GCE)

       在现代体系结构中,使用三维卷积来聚合所构建的成本量,以允许神经网络从数据中捕获几何表征。最近的工作[5],[32]使用空间变化的模块来补充3D卷积产生了更好的性能。具体来说,权重是从参考图像特征图中计算出来的,以聚合从代价体中计算出的三维特征表示。这些模块计算每个感兴趣的像素及其周围相邻的每个位置的权重,以便以空间依赖的方式进行邻域聚集。

       我们认为,体积代价聚合中的三维卷积已经捕获了邻域信息。在不进行邻域聚合的情况下,对代价体特征图进行空间变化的更新是足够的,而且效率显著提高。为了构建它,对于具有c个特征通道的代价体,我们将一个相同尺度的图像特征图传递到一个引导子网络中,输出每个像素的c个权值。利用该结构,三维卷积从代价体中获取几何信息,从而引导权值激发了相关的几何特征。按照代价体的尺度(s):

其中F2D 是使用二维逐点卷积实现的,其中σ为sigmoid函数。引导权值在视差维度上共享,(1)中的乘法是一个广播乘法。该流程如图2的左下角所示。因此该模块表明代价体特征的激励使用了从参考图像特征图中计算出的权重作为指导,因此我们将该模块称为引导代价体激发(GCE)。该模块非常简单和直接,只向整个网络添加了少量操作;然而,我们在表IV-D.1可以看出添中加GCE模块可以显著提高模型的精度。在我们的CoEx模型中,成本聚合架构遵循GC-Net [13],采用三维卷积的沙漏架构,但减少了通道数量和网络深度,以降低计算成本。然后在成本量的每个尺度上添加所提出的GCE模块(图2)。所有采用GCE的代价聚合模块详见表六。该模块输出的四维代价体为原始图像分辨率的1/4。

C. top-k视差回归

       在前面的步骤中产生的4D代价体为我们提供了每个像素的每个视差级别的匹配置信值,它可以通过在视差值上取一个Softmax来转换为一个概率分布。在以前的工作中,使用soft-argmax操作来计算视差,通过在这个分布的[13]上取期望值:

 其中,d是一组预先确定的视差指数。

       只有一个峰的视差分布可以为视差预测给出更好的估计。然而,在某些情况下,可能会有多个峰,甚至是一个相对均匀的分布。在这些情况下,匹配代价分布的期望值可能与实际的ground truth真实值有显著的偏离。        

       为了缓解这个问题,我们不使用整个分布的期望值,而是只使用每个像素的聚合代价体的top-k值。我们称这种回归策略为top-k soft-argmax(argmin)视差回归。具体来说,在每个像素处,我们使用top-k权值来计算期望的视差值。

       当k等于感兴趣的视差数D时,top-k回归只是一个简单的soft-argmax操作[13]。当D > k > 1时,每个像素只使用像素的top-k值来计算视差估计。这是通过屏蔽top-k值,并对这些值执行softmax来归一化它们,这样就可以得到求和为1的权重。然后,将这些权重与它们相应的视差指数相乘,而其余的值将被掩盖起来。这些值的和是top-k视差候选项的加权平均值。这个操作可以看作是类似于k-max池化[33]。在k等于1的情况下,top-k回归变成了一个argmax,因为最大指数的权重在1时变成了一个常数。在这种情况下,该操作是不可训练的,这就是为什么以前的工作通常采用了使用soft-argmax。虽然很简单,但我们通过实验证明了top-k soft-argmax回归的有效性。

       使用top-k回归来计算全分辨率下的视差图需要大量额外的计算时间,如Sec.IV-D所示。为了减轻这种情况,我们设计了我们的模型在输入图像分辨率的1/4处来计算视差回归。最后,将输出视差预测上采样到原始输入图像的分辨率。根据文献[34]的做法,在上采样分辨率中的每个像素上获得最终的视差估计是其周围是一个的3×3“超像素”的加权平均值。另一个CNN分支预测每个超像素的权值。

       我们使用平滑L1损失函数以全监督的端到端方式训练网络。我们的最终损失函数如下:

式中,N为标记像素数,dGT和dˆ分别为ground truth真实值和预测视差。 

4.实验:

       在本节中,我们将详细解释我们的Correlate-and-Excite(CoEx)网络的实现细节和训练,通过广泛的实验和消融来显示我们的方法的有效性,并包括对我们的方法的详细讨论。

A. 数据集和评估指标

        为了测试我们的方法CoEx的有效性,我们在以下数据集上进行了实验和评估:SceneFlow [12], KITTI Stereo 2012 [35], 和 KITTI Stereo 2015 [36]。

        SceneFlow是一个由35,454张训练图像和4,370张测试图像组成的合成数据集。视差范围从1到468开始,所有图像的大小都是W = 960,H = 540。我们使用数据集的“最终通过”版本。只有视差值低于我们的最大视差192的像素被用于训练和评估。预测和ground truth之间的平均差即终端误差(EPE)被用作评价指标。

 

       KITTI 2012年和2015年的数据集是从激光雷达传感器中获得的具有稀疏ground truth的真实世界的数据集。我们将训练数据分为90%的训练集和10%验证集。KITTI 2012使用“Out-All”,即错误阈值3个像素为错误像素总数的百分比度量。  对于KITTI 2015,我们在排行榜上显示了“D1-all”度量,这是所有标记像素的立体视差异常值的百分比。

B.实施细节

       我们使用在ImigeNet[37]上预先训练过的MobileNetV2作为我们的特征提取器主干在表中列出。使用ImageNet预训练模型允许在训练过程中更快地收敛。我们使用PyTorch实现了我们的模型,并使用Adam优化器(β1 = 0.9,β2 = 0.999)作为我们的随机权值平均(SWA)[38]的优化器。我们随机裁剪图像,大小为W = 576,H = 288进行训练。

       在我们的SceneFlow数据集上,我们对我们的模型训练为10个epoch,前7个epoch的学习率为1×10−3,其余3个epoch的学习率为1×10−4,batch size大小为8。对于我们在KITTI数据集上的实验,我们使用一个在SceneFlow数据集上预先训练的模型,并对KITTI数据集上的模型进行微调,持续800个epoch,初始学习率为1×10−3,在30、50和300个epoch处衰减0.5倍。用英伟达RTX 2080Ti GPU进行训练和测试。

C. CoEx的性能

       我们在表一中展示了我们的模型与现有最先进的模型的比较。注意,KITTI结果都来自KITTI立体匹配排行榜,包括SceneFlow的EPE值以及运行时间以及每个工作中提出的值。在基于速度的模型中,StereoNet 是性能最快的模型,运行时间为15 ms。然而,StereoNet SceneFlow和KITTI上的精度明显低于CoEx,在SceneFlow上的差异为0.411 EPE,在KITTI 2015上的差异为2.7%。

       由于在不同硬件上的运行时间不能给出公平的比较,我们将LEAStreo[21]和AANet [27]的运行时间与我们使用表二中的官方开源模型在相同硬件(RTX 2080Ti)上测试的模型进行了比较。代价聚合部分包括成本量构建和视差回归。我们的模型比AANet快3.3倍,并且有更低的EPE(0.18),同时在KITTI 2012的3px out-all上高0.46%,在KITTI 2015的D1-all上高0.42%。AANet+增加了对视差细化的关注,以不增加大量的网络参数而牺牲速度为代价达到我们的2.7M相较于8.4M。我们的模型没有使用任何后聚合细化,并且仍然提供了类似的精度,同时比AANet+快3倍。

 D. 消融研究

       我们在SceneFlow数据集上进行了消融研究,以研究所提出的模块的影响。我们将GCE和top-k soft-argmin回归整合到baseline立体匹配模型中。对于这项消融研究,我们使用PSMNet和CoEx模型作为baseline(表三)。注意到PSMNet使用左右图像之间的特征表示的聚合来构造成本量。基于连接的方法通过将特征映射减少到每个匹配只有单一余弦相似度值使得神经网络比基于相关性方法的构造的代价体具有更强的表征能力。将PSMNet中的连接替换为相关性会降低预期的精度。然而,在基于相关性的PSMNet中只添加一个GCE层,由表三中的“One”表示,其精度与基于连接方法的PSMNet的值相似,这表明GCE使网络能够利用基于相关性方法所遗漏的图像特征表示。此外,使用相关性也显著减少了计算时间。

       在PSMNet中,代价体被上采样到原始输入图像的分辨率,最大视差值为D = 192。我们在PSMNet中测试了k在2到192之间的top-k soft-argmin回归。我们发现,从k = 192的原始值减少k,通常可以在一定程度上提高性能。当k设置得太低时,精度会下降,这可能是由于在反向传播中缺乏梯度信息。此外,在全代价体分辨率中执行排序以获得top-k值使得计算成本太高。

        这促使我们在CoEx模型中计算输入图像分辨率为1/4时的视差回归,并利用超像素上采样获得原始分辨率下的视差图。注意,在CoEx中,k = 192/4 = 48是k的最大值。我们在表三中显示,在CoEx中添加top-k soft-argmin回归几乎不会增加计算时间,当使用较低的k值时会得到更好的精度。

        表三还显示了GCE在每个尺度水平上进行集成时的性能增益(图2),用“Full”表示。当在原有CoEx模型中加入“Full”GCE组成和top-2 soft-argmin回归时,得到了我们的最佳模型。请注意,这两个提议的模块只从基本模型增加了1 ms的计算开销,但在测试中得到了低于原来0.17的EPE。

(1) GCE模块:我们研究了两种使用参考图像作为指导代价体聚合的方法。第一种是通过广播操作在图像特征和代价体特征之间的简单相加,这事实上就像一个UNet风格的跳跃连接。第二种是基于激励的,是所提出的GCE模块。两者在SceneFlow数据集上的测试比较如表IV所示。基于添加的跳跃连接的方法确实对baseline提供了轻微的精度提高。然而,我们发现代价体激励是一种在代价聚合中利用图像特征的更有效的方法。

       我们比较了执行空间变化的局部聚合的GCE模块与涉及邻域聚合的类似空间变化的操作。为此,我们将一个邻域表示为一个图,并使用图卷积来聚合感兴趣的中心节点周围的节点,其中图的边发生空间变化,并从参考图像特征图计算出来。这种基于图的聚合的细节在附录中给出。表V显示,使用GCE模块简单地激发代价体特征比实现的空间独立的邻域聚合性能更好、更有效。

(2) Top-2视差回归:为了进一步说明top-k回归比soft-argmin回归更好,我们绘制了由每个k值训练的模型的成本聚合输出产生的视差分布。图4显示了3种在top-k回归中一个较低的k值优于baseline的soft-argmin方法的情况。在最左边的图中,候选方差具有单峰分布。中间的情况表示有2个可能的峰值,最右边的情况表示分布相对平坦的情况。在所有这些情况下,使用top-2分布训练的模型只能使用峰值匹配值,并且能够抑制远离正确匹配峰值的值,从而得到更准确的估计。

       那么,当我们在测试时用top-k soft-argmin替换这个回归模块时,用全soft-argmin训练的模型表现如何?我们在表三中提供了该测试的实验结果,并发现准确性没有提高。模型需要在训练阶段使用top-k soft-argmin回归。

5.结论:

       本文介绍了一种新的实时立体匹配模型,它利用了空间依赖的成本聚合,我们称之为CoEx。我们展示了空间变化的聚合可以以轻量级和直接的方式执行,以提高性能。我们还展示了如何直接使用top-k值可以改善soft-argmin视差回归。我们相信,我们的方法令人难以置信的速度,足够快,适合实时应用,可以成为研究未来现实应用中部署实时立体匹配的跳板。

6.附录:

A.详细架构

       详细的代价聚合模块如表六所示。s和p分别是卷积核的步幅大小和填充大小。I (s)是在尺度下下的特征提取阶段获得的左侧图像的特征图。

 B.邻域聚合

      以前提出了多种方法,利用邻域信息[5]、[15]、[32]进行空间变化聚合。为了将GCE与计算邻域的空间变化聚合的模块进行比较,这里我们构造了一个执行图像引导邻域聚合的模块。给定在一个1×n×n窗口中像素位置i处感兴趣体素及其邻居j∈N (i),我们计算i处代价体的特征更新如下:

       其中空心圆点表示元素级乘积,ξ为激活函数。eji是边权重(或j到i的[32]映射,使用MLP对i和j的图像特征进行计算,以及相邻的相对位置pi−pj的编码):

       其中,我们使用softmax(方程的第2行)来归一化每个特征通道c的边缘权值。在本工作中,使用深度图库(DGL)[39]将邻域聚合变为一个图。

      对于具有Ci通道和c×d ×h×w大小的代价体的图像特征图,GCE需要以下计算成本:

      其中,方程的左边是获得空间变化权值的代价,右边是自更新。相反,如果我们写下一个1×n×n邻域的权重计算和更新邻域聚合的成本,在最简单的权重计算形式中,它通过点式卷积计算权重,它将至少需要一个计算成本:

     即使在最简单的形式下,它也需要比GCE多n×n次。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会尽力回答你的问题。 首先,计算两个txt信号的互相关函数可以使用Python中的numpy库中的correlate函数。具体代码如下: ``` python import numpy as np # 读取两个txt信号 signal1 = np.loadtxt('signal1.txt') signal2 = np.loadtxt('signal2.txt') # 计算互相关函数 corr = np.correlate(signal1, signal2, mode='full') ``` 接下来,我们来实现平滑伪wigner-ville时频分布。平滑伪wigner-ville时频分布是一种常用的时频分析方法,可以用来分析信号在时间和频率上的变化情况。 具体步骤如下: 1. 定义窗口函数和时间、频率分辨率 ``` python from scipy.signal import hann # 定义窗口函数 window = hann(len(signal1)) # 定义时间、频率分辨率 dt = 0.001 df = 1 / len(signal1) ``` 2. 计算瞬时自相关函数 ``` python from scipy.signal import correlate # 计算瞬时自相关函数 R = correlate(signal1 * window, signal1 * window, mode='full') R = R[len(signal1)-1:] # 取中间部分 ``` 3. 计算平滑伪wigner-ville时频分布 ``` python # 初始化时频分布矩阵 tfd = np.zeros((len(signal1), len(signal1))) for i in range(len(signal1)): # 计算瞬时自相关函数 R = correlate(signal1[i:] * window[:len(signal1)-i], signal1[:len(signal1)-i] * window[i:], mode='valid') # 计算平滑伪wigner-ville时频分布 for j in range(len(R)): tau = (j - len(R) // 2) * dt t = i * dt freq = np.arange(len(signal1)) * df tfd[i, j] = np.sum(signal2 * window * np.exp(-2j * np.pi * freq * tau) * np.conj(signal2[j:j+len(signal1)] * window) * np.exp(2j * np.pi * freq * t)) ``` 4. 绘制时频图像 ``` python import matplotlib.pyplot as plt # 绘制时频图像 plt.imshow(np.abs(tfd), extent=(-len(signal1)//2*dt, len(signal1)//2*dt, 0, 1/2*df), aspect='auto', cmap='jet') plt.xlabel('Time (s)') plt.ylabel('Frequency (Hz)') plt.colorbar() plt.show() ``` 完整代码如下: ``` python import numpy as np from scipy.signal import hann, correlate import matplotlib.pyplot as plt # 读取两个txt信号 signal1 = np.loadtxt('signal1.txt') signal2 = np.loadtxt('signal2.txt') # 定义窗口函数 window = hann(len(signal1)) # 定义时间、频率分辨率 dt = 0.001 df = 1 / len(signal1) # 计算瞬时自相关函数 R = correlate(signal1 * window, signal1 * window, mode='full') R = R[len(signal1)-1:] # 取中间部分 # 初始化时频分布矩阵 tfd = np.zeros((len(signal1), len(signal1))) for i in range(len(signal1)): # 计算瞬时自相关函数 R = correlate(signal1[i:] * window[:len(signal1)-i], signal1[:len(signal1)-i] * window[i:], mode='valid') # 计算平滑伪wigner-ville时频分布 for j in range(len(R)): tau = (j - len(R) // 2) * dt t = i * dt freq = np.arange(len(signal1)) * df tfd[i, j] = np.sum(signal2 * window * np.exp(-2j * np.pi * freq * tau) * np.conj(signal2[j:j+len(signal1)] * window) * np.exp(2j * np.pi * freq * t)) # 绘制时频图像 plt.imshow(np.abs(tfd), extent=(-len(signal1)//2*dt, len(signal1)//2*dt, 0, 1/2*df), aspect='auto', cmap='jet') plt.xlabel('Time (s)') plt.ylabel('Frequency (Hz)') plt.colorbar() plt.show() ``` 希望能够帮到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值