SuperGlue论文翻译

SuperGlue:基于图神经网络的学习特征匹配

摘要 - 本文介绍了SuperGlue,这是一种神经网络,通过联合寻找对应点和拒绝不匹配点来匹配两组局部特征。通过求解一个可微的最优运输问题来估计分配,该问题的代价由图神经网络预测。我们引入了一种基于注意力的灵活上下文聚合机制,使SuperGlue能够对底层的3D场景和特征分配进行联合分析。与传统的手工设计的方法相比,我们的技术通过从图像对中进行端到端训练来学习3D世界的几何变换和规律的先验。SuperGlue 在具有挑战性的真实室内和室外环境中的姿态估计任务中表现优于其他学习方法,并实现了最先进的结果。所提出的方法在现代GPU上实时形成匹配,并且可以很容易地集成到现代SfM或SLAM系统中。代码和训练过的权重是公开的:https://github.com/magicleap/SuperGluePretrainedNetwork
参考讲解https://zhuanlan.zhihu.com/p/146389956
最优传输https://www.cnblogs.com/liuzhen1995/p/14524932.html

1.引言

在地理测量计算机视觉任务中,如同时定位和建图(SLAM)和运动恢复结构(SfM),图像中的点之间的对应关系对于估计3D结构和相机姿态至关重要。这种对应关系通常是通过匹配局部特征来估计的,这一过程被称为数据关联。大的视点和照明变化、遮挡、模糊和缺乏纹理是使2D到2D数据关联特别具有挑战性的因素。
在本文中,我们提出了一种新的方法来思考特征匹配问题。我们提出使用一种称为SuperGlue的新型神经架构,从预先存在的局部特征中学习匹配过程,不是通过简单的匹配启发式和技巧来学习更好的与任务无关的局部特征。在SLAM的背景下,[8]通常将问题分解为视觉特征提取前端和束调整或姿态估计后端,我们的网络直接位于中间–SuperGlue是一个可学习的中间端(见图1)。
在这里插入图片描述
在这项工作中,学习特征匹配被视为找到两组局部特征之间的部分分配。我们通过求解线性分配问题来重新审视经典的基于图的匹配策略,当将其放宽到最优运输问题时,可以微分求解。该优化的代价函数是由图神经网络(GNN)预测的。受Transformer[61]成功的启发,它使用自注意力(图像内)和交叉(图像间)注意力来利用关键点的空间关系及其视觉外观。该公式加强了预测的分配结构,同时使学习复杂参数的代价,优雅地处理了遮挡和不可重复的关键点。我们的方法是根据图像对进行端到端训练的——我们从一个大型标注数据集中学习位姿估计的先验,使SuperGlue能够推理3D场景和分配。我们的工作可以应用于各种需要高质量特征匹配的多视图几何问题(见图2)。
在这里插入图片描述
我们展示了SuperGlue与手工制作的匹配和学习的内部分类器相比的优势。当与深度前端SuperPoint[18]相结合时,Super-Glue在室内和室外姿态估计任务上推进了最先进的技术,并为端到端的深度SLAM铺平了道路。

2.相关工作

局部特征匹配通常通过i)检测兴趣点,ii)计算视觉描述符,iii)将这些与最近邻(NN)搜索进行匹配,iv)过滤不正确的匹配,最后v)估计几何变换来执行。2000年代开发的经典流程通常基于SIFT[31],Lowe比率测试的滤波匹配[31]、相互检查和启发式算法(如邻域一致性[59,10,6,49])相匹配,并使用RANSAC等鲁棒求解器找到变换[21,43]。
最近关于深度学习匹配的工作通常集中在使用卷积神经网络(CNNs)从数据中学习更好的稀疏检测器和局部描述符[18,19,37,45,69]。为了提高它们的辨别力,一些工作使用区域特征[32]或对数极性补丁[20]明确地着眼于更广泛的背景。其他方法通过分类为内值和外值来学习过滤匹配[33,44,7,71]。这些操作仍然由紧邻搜索估计的匹配集,从而忽略分配结构并丢弃视觉信息。到目前为止,学习执行匹配的工作主要集中在密集匹配[46]或3D点云[65]上,但仍存在同样的局限性。相反,我们的可学习中端在单个端到端架构中同时执行上下文聚合、匹配和过滤。
图匹配问题通常被公式化为二次分配问题,这是NP难题,需要昂贵、复杂的求解器,因此不切实际[30]。对于局部特征,2000年代的计算机视觉文献[5,27,57]使用了启发式方法手工成本,使其变得复杂而脆弱。Caetano等人[9]学习更简单的线性分配的优化代价,但只使用浅层模型,而我们的SuperGlue使用深度神经网络学习灵活的成本。与图匹配相关的是最优传输问题[63]——它是一个广义线性分配,具有有效而简单的近似解,即Sinkhorn算法。
点云等集合的深度学习旨在通过在元素之间聚集信息来设计置换等价或不变函数。一些作品通过全局池化[70,40,15]或实例标准化[60,33,32]平等对待所有元素,而另一些作品则关注坐标或特征空间中的局部邻域[41,66]。注意力[61,64,62,26]可以通过关注特定的元素和属性来执行全局和依赖数据的局部聚合,因此更灵活。通过观察到自注意可以被视为完整图上Message传递图神经网络[23,4]的一个例子,我们将注意力应用于具有多种类型边的图,类似于[28,72],并使SuperGlue能够学习关于两组局部特征的复杂推理。

3.SuperGlue架构

动机:在图像匹配问题中,可以利用世界的一些规则:3D世界在很大程度上是平滑的,有时是平面的,如果场景是静态的,则给定图像对的所有对应关系都来源于单一的极变换,并且某些姿势比其他姿势更有可能。此外,2D关键点通常是突出的3D点的投影,如角或斑点,因此图像之间的对应必须遵守某些物理约束:i) 一个关键点在另一个图像中最多有一个对应;以及ii)由于检测器的遮挡和故障,一些关键点将是不匹配的。一个有效的特征匹配模型应该旨在找到相同3D点的重投影之间的所有对应关系,并识别没有匹配的关键点。我们将SuperGlue(见图3)公式化为解决优化问题,其成本由深度神经网络预测。这减轻了对领域专业知识和启发式的需求——我们直接从数据中学习相关的先验知识。
在这里插入图片描述
公式化:考虑两个图像A和B,每个图像都有一组关键点位置p和相关的视觉描述符d——我们共同将(p,d)称为局部特征。位置包括图像坐标x和y以及检测置信度c, p i : = ( x , y , c ) i p_i:=(x,y,c)_i pi:=xyci。视觉描述符 d i ∈ R D d_i∈R^D diRD可以是由类似CNN的SuperPoint或者传统的SIFT提取。图像A和B具有M个和N个局部特征,分别由 A : = { 1 , … , M } A:=\{1,…,M\} A:={1M} B : = { 1 , … , N } B:=\{1,…,N\} B:={1N}索引。
部分分配:约束i)和ii)意味着响应源于两组关键点之间的部分分配。为了集成到下游任务中并获得更好的可解释性,每个可能的匹配都应该具有置信值。因此,我们定义了一个部分软分配矩阵 P ∈ [ 0 , 1 ] M × N P∈[0,1]^{M×N} P[0,1]M×N为:
在这里插入图片描述
我们的目标是设计一个神经网络,根据两组局部特征预测分配P。

3.1 注意力图神经网络

除了关键点的位置及其视觉外观之外,整合其他上下文线索可以直观地增加其独特性。例如,我们可以考虑它与其他共同可见的关键点的空间和视觉关系,例如显著的[32]、自相似的[54]、统计上共同出现的[73]或相邻的[58]。另一方面,第二幅图像中关键点的知识可以通过比较候选匹配或根据全局和明确的线索估计相对光度或几何变换来帮助解决歧义。
当被要求匹配一个给定的模糊关键点时,人类会来回观察这两幅图像:他们筛选出暂定的匹配关键点,检查每一个,并寻找有助于从其他我相似性中消除真正匹配的歧义的上下文线索[11]。这暗示了一个可以将注意力集中在特定位置的迭代过程。
因此,我们设计了Super-Glue的第一个主要块作为注意力图神经网络(见图3)。给定初始局部特征,通过让特征相互交流来计算匹配描述子 f i ∈ R D f_i∈R^D fiRD。正如我们将要展示的,图像内部和图像之间的长距离特征聚合对于鲁棒匹配至关重要。

关键点编码器:每个关键点 i i i的初始表示 ( 0 ) x i {}^{(0)}x_i (0)xi结合了其视觉外观和位置。我们使用多层感知器(MLP)将关键点位置嵌入到高维向量中,如下所示:
在这里插入图片描述
这种编码器使图形网络能够在之后联合推理外观和位置,特别是当与注意力相结合时,它是语言处理中流行的“位置编码器”的一个例子[22,61].

复合图形神经网络:我们考虑一个完整的图,其节点是两个图像的关键点。该图有两种类型的无向边——它是一个多重图[34,36]。图像内边缘或自身边缘 ε s e l f \varepsilon _{self} εself将关键点 i i i连接到同一图像内的所有其他关键点。图像间边缘或交叉边缘 ε c r o s s \varepsilon _{cross} εcross将关键点 i i i连接到其他图像中的所有关键点。我们使用消息传递公式[23,4]沿着这两种类型的边传播信息。得到的多路图神经网络从每个节点的高维状态开始,通过同时聚合所有节点的所有给定边上的消息,在每一层计算更新的表示。

( l ) x i A {}^{(l)}x^A_i (l)xiA是元素 i i i在图像 A A A l l l层的中间表示。消息 m ε → i m_{\varepsilon \rightarrow i} mεi是所有关键点 { j : ( i , j ) ∈ ε } \{j:(i,j)\in \varepsilon\} {j:(i,j)ε}聚合的结果,其中 ε ∈ { ε s e l f , ε c r o s s } \varepsilon \in\{\varepsilon_{self},\varepsilon_{cross}\} ε{εself,εcross},A中所有i的残差消息传递是:

在这里插入图片描述
其中[ · | | · ]表示连接。对于图像 B 中的所有关键点,可以同时执行类似的更新。不同参数的固定数目的层 L 被链接起来,或者沿着自身边和交叉边聚集。因此,从 l = 1 \mathcal{l}=1 l=1开始,如果 l \mathcal{l} l为奇数, ε = ε s e l f \varepsilon=\varepsilon_{self} ε=εself,如果 l \mathcal{l} l为偶数, ε = ε c r o s s \varepsilon=\varepsilon_{cross} ε=εcross

注意力聚合: 一种注意力机制通过聚合来计算信息 m ε → i m_{\varepsilon \rightarrow i} mεi. 自我边基于自注意力[61] ,交叉边基于交叉注意力。类似于数据库检索,i 的一个表示,查询 q i q_i qi,根据某些元素的属性检索它们的值 v j v_j vj,键 k j k_j kj。消息被计算为值的加权平均数:
在这里插入图片描述
其中注意力权重 α i , j \alpha_{i,j} αi,j是键查询相似性上的softmax: α i , j = S o f t m a x j ( q i T k j ) \alpha_{i,j} =Softmax _j(q^T_ik_j) αi,j=Softmaxj(qiTkj)
键、查询和值作为图神经网络深层特征的线性投影计算。考虑查询关键点 i 在图像 Q 中,所有的源关键点都在图像 S 中, ( Q , S ) ∈ { A , B } 2 (Q,S)∈\{ A,B \}^2 (QS){AB}2,我们可以编写
在这里插入图片描述
每层L有自己的投影参数,为两个图像的所有关键点学习和共享。在实践中,我们通过多头注意来提高表达能力[61]。我们的公式提供了最大的灵活性,因为网络可以关注学习基于特定属性关键点的子集(参见图4)。SuperGlue 可以根据外观和关键点位置检索或关注,因为它们是在表示 x i x_i xi中编码的。这包括关注附近的关键点和检索相似或突出的关键点的相对位置。这使得几何变换和分配的表示成为可能,最终匹配的描述符是线性投影

在这里插入图片描述
对于B中的关键点也是类似的。
在这里插入图片描述

3.2最佳匹配层

SuperGlue 的第二个主要块(参见图3)是最佳匹配层,它产生一个部分分配矩阵。与标准图匹配公式一样,在方程1的约束条件下,通过计算所有可能匹配的得分矩阵 S ∈ R M × N S ∈ R^{M × N} SRM×N,最大化总得分 ∑ i , j S i , j P i , j ∑_{ i,j}S_{i,j}P_{i,j} i,jSi,jPi,j,可以得到分配 P。这相当于解决一个线性分配问题。

得分预测: 为所有 M × N 潜在匹配建立一个单独的表示将是禁止的。我们用匹配描述子的相似性来表示成对得分:
在这里插入图片描述
其中 < · ,· > 是内积。相对于学习的视觉描述符,匹配描述符不是标准化的,它们的大小可以在每个特征和训练过程中变化,以反映预测置信度。

遮挡和可见性:为了让网络抑制某些关键点,我们用一个垃圾桶来增加每个集合,以便显式地为它分配不匹配的关键点。这种技术在图形匹配中很常见,SuperPoint [18]也使用垃圾桶来处理可能无法检测到的图像单元。我们通过添加一个新的行和列(point-to-bin 和 bin-to-bin)来增加 S S S S ˉ \bar S Sˉ 的分数,这些分数由一个可学习的参数填充:
在这里插入图片描述
A 中的关键点将被分配给 B 中的一个关键点或垃圾桶,每个垃圾桶的匹配项与另一个集合中的关键点的匹配项一样多: N,M 分别表示 A 中的垃圾桶和 B 中的垃圾桶。A 和 B 中每个关键点和垃圾箱的预期匹配次数表示为 a = [ 1 M T N ] T a=[1^T_M \quad N]^T a=[1MTN]T b = [ 1 N T , M ] T b=[1^T_N,M]^T b=[1NT,M]T。增加的分配 P ˉ \bar P Pˉ 现在有了限制:
在这里插入图片描述
Sinkhorn 算法: 上述优化问题的解对应于分数为 S ˉ \bar S Sˉ的离散分布 a 和 b 之间的最优传输[39] 。它的熵正则化公式自然产生所需的软分配,并且可以在 GPU 上用 Sinkhorn 算法有效地求解[55,12]。这是匈牙利算法的可微版本[35] ,经典用于二分匹配,包括沿行和列迭代正规化 e x p ( S ˉ ) exp (\bar S) exp(Sˉ) ,类似于行和列 Softmax。在 T 迭代之后,我们丢弃垃圾桶并恢复 P = P ˉ 1 : M , 1 : N P = \bar P_{1: M,1: N} P=Pˉ1:M1:N

3.3 损失

通过设计,图神经网络和最优匹配层都是可微的,这使得从匹配到视觉描述符的反向传播成为可能。SuperGlue以监督的方式从ground truth匹配 M = { ( i , j ) } ∈ A × B M = \{(i,j)\}\in \mathcal{A}×\mathcal{B} M={(i,j)}A×B进行训练。这些都是从地面真实相对变换中估计出来的——使用位姿和深度图或单应图。这也让我们可以将一些关键点 I ⊆ A \mathcal I\subseteq \mathcal A IA J ⊆ B \mathcal J \subseteq \mathcal B JB在其周边没有重投影的情况下,标记为未匹配。给定这些标签,我们最小化分配 P ˉ \bar P Pˉ的负对数似然:
在这里插入图片描述
这种监督的目的是同时最大化匹配的准确率和召回率。

3.4 与相关工作的比较

SuperGlue架构与图像中关键点的排列是等价的。与其他手工制作或学习的方法不同,它对图像的排列也是等价的,这更好地反映了问题的对称性,并提供了有益的归纳偏差。此外,最优传输公式强制匹配的互惠性,就像相互检查一样,但以一种软的方式,类似于[46],从而将其嵌入到训练过程中。
SuperGlue与实例规范化[60]:SuperGlue使用的注意力是一种比实例规范化更灵活、更强大的上下文聚合机制,它平等地对待所有关键点,就像以前在特征匹配上使用的那样[33,71,32,44,7]。
SuperGlue vs. ContextDesc [32]: SuperGlue可以联合对外观和位置进行推理,而ContextDesc可以分别对其进行处理。此外,ContextDesc是一个前端,另外需要更大的区域外提取器和关键点评分的损失。SuperGlue 只需要局部特征,学习或手工制作,因此可以简单地替代现有的匹配。
SuperGlue VS Transformer [61] : SuperGlue 借用了 Transformer 的自我注意力,但是将其嵌入到一个图形神经网络中,并且另外引入了交叉注意力,它是对称的。这简化了体系结构,并导致更好的跨层特性重用。

4.实施细节

SuperGlue可以与任何局部特征检测器和描述符结合使用,但与SuperPoint结合使用效果特别好[18],它可以产生可重复的稀疏关键点,从而实现非常有效的匹配。视觉描述符从半密集特征映射中双线性采样。为了与其他匹配器进行公平的比较,除非明确指出,我们在训练SuperGlue时不训练视觉描述子网络。在测试时,可以使用置信度阈值(我们选择0.2)从软分配中保留一些匹配,或者在后续步骤中使用所有匹配及其置信度,例如加权姿态估计。
架构细节:所有中间表示(键、查询值、描述符)与SuperPoint描述符具有相同的维度D = 256。我们使用L = 9层交替的多头自注意和交叉注意力,每层4个头,并进行T = 100次Sinkhorn迭代。该模型在PyTorch中实现[38],包含12M个参数,并在NVIDIA GTX 1080 GPU上实时运行:对于室内图像对,前向传递平均需要69 ms (15 FPS)(参见附录C)。
训练细节: 为了允许数据增强,SuperPoint 检测和描述步骤在训练期间作为批处理实时执行。为了提高批处理效率和鲁棒性,还进一步添加了许多随机关键点。详情请参阅附录E。

5.实验

5.1 单应估计

我们使用真实图像和具有鲁棒估计器(RANSAC)和非鲁棒估计器(DLT)的合成单应性进行了大规模的单应性估计实验。
数据集:我们通过随机单应采样和对真实图像应用随机光度畸变来生成图像对,遵循类似于[16,18,45,44]的配方。底层图像来自牛津和巴黎数据集[42]中的1M分心图像集,分为训练集、验证集和测试集。
基线:我们将SuperGlue与应用于SuperPoint局部特征的几种匹配器进行比较——最近邻(NN)匹配器和各种离群值拒绝器:相互NN约束、PointCN[33]和顺序感知网络(OANet)[71]。所有学习到的方法,包括SuperGlue,都是通过将关键点从一个图像投影到另一个图像来进行真实对应的训练。我们在运行中生成单应和光度畸变——在训练过程中,一个图像对永远不会被看到两次。
度量:匹配精度§和召回率®是根据groundtruth对应计算的。用RANSAC和具有直接最小二乘解的直接线性变换24进行单应性估计。我们计算了图像四角的平均重投影误差,并报告了累积误差曲线(AUC)下的面积,最大值为10像素。
在这里插入图片描述

结果:SuperGlue具有足够的表达能力来掌握单应,达到98%的召回率和高精度(见表1)。估计的对应关系非常好,不需要鲁棒估计器- SuperGlue在DLT上的效果甚至比RANSAC更好。异常值拒绝方法——像PointCN和OANet这样的方法不能预测比NN匹配器本身更正确的匹配,过度依赖于初始描述符(参见图6和附录A)。

5.2室内位姿估计

由于室内图像缺乏纹理、具有丰富的自相似性、场景复杂的三维几何结构以及视点变化大,因此室内图像匹配具有很大的挑战性。正如我们在下面展示的,SuperGlue可以有效地学习先验知识来克服这些挑战。
数据集:我们使用ScanNet[13],这是一个大规模的室内数据集,由带有地面真实姿势和深度图像的单目序列组成,并针对不同场景定义良好的训练、验证和测试分割。以往的研究都是基于时间差[37,17]或SfM共可见度[33,71,7]来选择训练和评价对,通常使用SIFT进行计算。我们认为这限制了对的难度,而是基于在给定序列中仅使用地面真值姿势和深度为所有可能的图像对计算的重叠分数来选择这些图像对。这导致了更宽的基线对,这对应于现实世界室内图像匹配的当前边界。剔除重叠量过大或过小的对,我们选取了2330m的训练对和1500对测试对。
指标:正如在之前的工作[33,71,7]中,我们报告了阈值(5◦,10◦,20◦)处姿态误差的AUC,其中姿态误差是旋转和平移中角度误差的最大值。用RANSAC算法从本质矩阵估计得到相对姿态。我们还报告了匹配精度和匹配分数[18,69],其中匹配被认为是正确的基于其极线距离。
基线:我们使用根归一化SIFT[31,2]和Su- perPoint[18]特征来评估SuperGlue和各种基线匹配器。超级胶水是训练对应和不匹配的关键点,从地面真实的姿势和深度。所有基线都基于最近邻(NN)匹配器和潜在的离群值拒绝方法。在“手工制作”类别中,我们考虑了相互检查、比率测试[31]、描述符距离阈值以及更复杂的GMS[6]。“学习”类别中的方法是PointCN[33],及其后续的OANet[71]和NG-RANSAC[7]。我们使用上述定义的正确性准则和各自的回归损失,在ScanNet上对PointCN和OANet进行SuperPoint和SIFT的分类损失再训练。对于NG-RANSAC,我们使用原始训练模型。我们没有包括任何图形匹配方法,因为它们对于我们考虑的关键点数量(>500)来说太慢了。其他局部特征被评估为参考:使用GMS的ORB[47],使用公开可用的训练模型的D2-Net[19]和Con- textDesc[32]。
结果:与手工制作和学习的匹配器相比,SuperGlue能够显著提高姿态精度(见表2和图5),并且在SIFT和SuperPoint上都能很好地工作。与其他学习匹配器相比,它具有更高的精度,表明它具有更高的表征能力。它还产生了更多的正确匹配——当应用于SIFT时,比率测试多出10倍,因为它对所有可能的匹配进行操作,而不是对有限的最近邻进行操作。SuperGlue与SuperPoint实现室内姿态估计的最先进的结果。它们可以很好地相互补充,因为可重复的关键点使得即使在非常具有挑战性的情况下也可以估计更多的正确匹配(参见图2、图6和附录a)。
在这里插入图片描述
在这里插入图片描述

5.3 室外位姿估计

由于户外图像序列呈现出自己的一组挑战(例如,照明变化和遮挡),我们在户外环境中训练和评估SuperGlue的姿势估计。我们使用与室内姿态估计任务相同的评估指标和基线方法。
数据集:我们在PhotoTourism数据集上进行评估,该数据集是CVPR ’ 19图像匹配挑战的一部分[1]。它是YFCC100M数据集[56]的一个子集,具有从现成的SfM工具[37,52,53]获得的地面真实姿态和稀疏3D模型。所有学习到的方法都是在更大的MegaDepth数据集上进行训练的[29],该数据集也具有多视图立体计算的深度图。PhotoTourism测试集中的场景从训练集中删除。与室内情况类似,我们选择具有挑战性的图像对进行训练和评估,使用从SfM共可见度计算的重叠分数,如[19,37]所示。
结果:如表3所示,当SuperPoint和SIFT同时应用时,SuperGlue在所有相对位姿阈值上都优于所有基线。最值得注意的是,结果匹配的精度非常高(84.9%),强化了SuperGlue将局部特征“粘合”在一起的类比。
在这里插入图片描述

5.4 了解SuperGlue

消融研究:为了评估我们的设计决策,我们重复了SuperPoint特征的室内实验,但这次重点是不同的SuperPoint变体。表4所示的这项研究表明,所有的强力胶块都是有用的,并带来了实质性的性能提升。当我们在训练SuperGlue时通过超级点描述符网络进行反向传播时,我们观察到AUC@20◦从51.84到53.38的改进。这证实了SuperGlue适用于超越匹配的端到端学习。
可视化注意:图7显示了自我和交叉注意模式的广泛多样性,反映了学习行为的复杂性。附录中对趋势和内部工作进行了详细的分析。
在这里插入图片描述

6.结论

本文展示了基于注意力的图神经网络在局部特征匹配中的强大功能。Super- Glue的架构使用了两种注意力:(i)自我注意力,它可以增强局部描述符的接受域;(ii)交叉注意力,它可以实现跨图像通信,其灵感来自于人类在匹配图像时来回看的方式。我们的方法通过解决最优运输问题,优雅地处理了部分分配和遮挡点。我们的实验表明,与现有方法相比,SuperGlue实现了显著的改进,能够在极宽基线的室内和室外图像对上实现高精度的相对姿态估计。此外,SuperGlue是实时运行的,在经典和学习功能上都能很好地工作。
总之,我们的可学习的中间端用一个强大的神经模型取代了手工制作的启发式算法,该模型在一个统一的架构中同时执行上下文聚合、匹配和过滤。我们相信,当与深层前端相结合时,SuperGlue是迈向端到端深层SLAM的重要里程碑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值