Momentum Contrast for Unsupervised Visual Representation Learning

参考Momentum Contrast for Unsupervised Visual Representation Learning - 云+社区 - 腾讯云

摘要

我们提出了无监督视觉表征学习的动量对比(MoCo)。从作为字典查找的对比学习的角度来看,我们构建了具有队列和移动平均编码器的动态字典。这使得能够动态构建一个大型且一致的词典,从而促进对比无监督学习。MoCo在ImageNet分类的通用线性协议下提供了有竞争力的结果。更重要的是,MoCo了解到的情况很好地转移到了下游任务中。在PASCAL VOC、COCO和其他数据集上,MoCo在7项检测/分割任务中的表现优于其监督的预训练对手,有时甚至远远超过它。这表明,在许多视觉任务中,无监督和有监督表示学习之间的差距已经基本消除。

1、介绍

无监督表示学习在自然语言处理中非常成功,例如,如GPT和BERT所示。但是有监督的预训练在计算机视觉中仍然占主导地位,无监督的方法普遍落后。原因可能源于它们各自信号空间的差异。语言任务有离散的信号空间(单词、子单词单元等)用于构建标记化词典,无监督学习可以基于该词典。相比之下,计算机视觉进一步关注词典构建,因为原始信号处于连续的高维空间中,并且不是为人类通信而构建的(例如,不同于单词)。

最近的几项研究显示了使用与对比损失相关的方法进行无监督视觉表征学习的有希望的结果。尽管受到各种动机的驱动,这些方法可以被认为是构建动态词典。字典中的“密钥”(令牌)是从数据(例如图像或补丁)中采样的,并由编码器网络表示。无监督学习训练编码器执行字典查找:编码的“查询”应该与其匹配的关键字相似,而与其他人不同。学习被表述为最小化对比损失。

                            

从这个角度来看,我们假设最好构建这样的字典:(1)大的,(2)在训练过程中不断发展的一致性。直观地说,较大的字典可以更好地采样底层连续的高维视觉空间,而字典中的键应该由相同或相似的编码器表示,以便它们与查询的比较是一致的。然而,使用对比损失的现有方法可能局限于这两个方面之一(稍后在上下文中讨论)。

我们将动量对比(MoCo)作为一种构建大型且一致的词典的方法,用于无监督学习,但会带来对比损失(图1)。我们将字典维护为数据样本队列:当前小批量的编码表示被排队,最早的被出列。队列将字典大小从小批量大小中分离出来,使其变大。此外,由于字典关键字来自前面的几个小批量,因此提出了一种缓慢进展的关键字编码器,实现为查询编码器的基于动量的移动平均,以保持一致性。

MoCo是一种为对比学习建立动态词典的机制,可以用于各种借口任务。在本文中,我们遵循一个简单的实例识别任务;如果一个查询匹配一个关键字,它们是同一图像的编码视图(例如,不同的作物)。利用这个借口任务,MoCo在ImageNet数据集中的线性分类的共同协议下显示了竞争结果。

无监督学习的一个主要目的是预先训练可以通过微调转移到下游任务的表示(即特征)。我们表明,在与检测或分割相关的7个下游任务中,MoCo无监督预训练可以超过其ImageNet有监督的对应任务,在某些情况下超出了非平凡的幅度。在这些实验中,我们探索了在ImageNet或十亿Instagram图像集上预先训练的MoCo,证明了MoCo可以在更真实的世界、十亿图像规模和相对未剪辑的场景中很好地工作。这些结果表明,在许多计算机视觉任务中,MoCo在很大程度上弥补了无监督和有监督表示学习之间的差距,并且可以在几个应用中作为ImageNet监督预训练的替代。

 2、相关工作

无监督/自监督学习方法通常涉及两个方面:借口任务和损失函数。术语“借口”意味着正在解决的任务不是真正感兴趣的,而是为了学习良好的数据表示的真正目的而解决的。损失函数通常可以独立于借口任务进行研究。MoCo侧重于损失函数方面。接下来我们将讨论这两个方面的相关研究。

损失函数:

定义损失函数的一种常见方式是测量模型预测和固定目标之间的差异,例如通过L1或L2损失重建输入像素(例如自动编码器),或者通过交叉熵或基于边缘的损失将输入分类到预定义的类别(例如八个位置、颜色条)。如下所述,其他替代方案也是可能的。

对比损失衡量样本对在表示空间中的相似性。在对比损失公式中,不是将输入与固定目标匹配,而是在训练过程中目标可以动态变化,并且可以根据网络计算的数据表示来定义。对比学习是最近几部关于无监督学习的著作的核心,我们将在后面的上下文中详细介绍。

对抗损失衡量概率分布之间的差异。这是一种广泛成功的无监督数据生成技术。[15,16]中探讨了表征学习的对抗方法。生成对抗网络和噪声对比估计之间存在关系。

Pretext任务:

提出了一系列借口任务。示例包括在某些损坏下恢复输入,例如去噪自动编码器、上下文自动编码器或跨通道自动编码器(彩色化)。一些借口任务通过例如单个(“样本”)图像的变换、面片排序、跟踪或分割视频中的目标或聚类特征来形成伪标签。

Contrastive learning vs. pretext tasks:

各种Pretext任务可以基于某种形式的对比损失函数。实例识别方法与基于范例的任务和NCE相关。对比预测编码(CPC)中的Pretext任务是上下文自动编码的一种形式,而在对比多视图编码(CMC)中,它与彩色化有关。

3、方法

3.1、对比学习作为字典查找表

对比学习及其最近的发展可以被认为是为字典查找任务训练一个编码器,如下所述。考虑一个编码查询q和一组编码样本是字典的键。假设字典中有一个与q匹配的键(表示为k+)。对比损失是当q与其正键k+相似而与所有其他键(被认为是q的负键)不相似时,其值较低的函数。利用点积度量的相似性,本文考虑了一种叫做InfoNCE的对比损失函数:

                        

其中τ是根据的温度超参数。总和超过一个正样本和K个负样本。直观地说,这种损失是基于(K+1)路softmax的分类器的对数损失,该分类器试图将q分类为K+。对比损失函数也可以基于其他形式例如基于margin的损失和NCE损失的变体。

对比损失作为无监督的目标函数,用于训练表示查询和关键字的编码器网络。通常,查询表示为,其中是编码器网络,是查询样本(同样,)。它们的实例化依赖于特定的pretext任务。输入可以是图像,patch,或由一组补丁组成的上下文。网络可以是相同的,部分共享的,或者不同的。

3.2、动量对比

从上述角度来看,对比学习是一种在图像等高维连续输入上构建离散词典的方法。字典是动态的,因为密钥是随机采样的,并且密钥编码器在训练过程中不断发展。我们的假设是,好的特征可以通过覆盖丰富的负样本集的大字典来学习,而字典关键字的编码器尽管在进化,但保持尽可能一致。基于这个动机,我们提出了动量对比,如下所述。

字典作为队列:

我们方法的核心是将字典维护为一个数据样本队列。 这使我们可以重用前面的小批量的已编码密钥。 队列的引入将字典大小与迷你批处理大小解耦。 我们的字典大小可以比典型的迷你批处理大小大得多,并且可以灵活独立地设置为超参数。 

词典中的样本逐步被替换。 当前的迷你批处理被放入字典中,队列中最老的迷你批处理被删除。 字典总是表示所有数据的抽样子集,而维护这个字典的额外计算是可管理的。 此外,删除最旧的迷你批处理可能是有益的,因为其编码的密钥是最过时的,因此与最新的密钥最不一致。   

动量更新:

使用队列可以使字典变大,但也使通过反向传播更新关键编码器变得难以处理(梯度应该传播到队列中的所有样本)。一个简单的解决方案是从查询编码器f_q复制关键编码器,忽略这个梯度。但是这种方法在实验中效果不佳。我们假设这种失败是由快速变化的编码器导致的,它降低了关键表示的一致性。我们提出了一个动量来解决这一问题。

 形式上,将的参数表示为,将的参数表示为,我们对\theta_k的更新如下:

                          

这里是动量系数。只有参数通过反向传播更新。方程(2)中更新动量使的演化比更平滑。结果,尽管队列中的密钥由不同的编码器编码(在不同的小批量中),但这些编码器之间的差异可以变小。在实验中,相对较大的动量(例如,m = 0.999,我们的默认值)比较小的值(例如,m = 0.9)工作得更好,这表明缓慢发展的密钥编码器是利用队列的核心。

 和以前机制的关系:

MoCo是使用对比损失的一般机制。我们将其与图2中两个现有的通用机制进行了比较。它们在字典大小和一致性上表现出不同的特性。

反向传播的端到端更新是一种自然机制(图2a)。它使用当前小批量中的样本作为字典,因此密钥是一致编码的(由同一组编码器参数)。但是字典大小与小批量大小相关联,受到GPU内存大小的限制。它还受到大型小批量优化的挑战。最近的一些方法是基于由本地位置驱动的借口任务,其中字典大小可以通过多个位置变大。但是这些借口任务可能需要特殊的网络设计,例如拼接输入或定制感受野大小,这可能会使这些网络向下游任务的转移变得复杂。

另一种机制是提出的内存库方法(图2b)。 存储库由数据集中所有样本的表示组成。 每个小批的字典从内存库中随机取样,没有反向传播,因此它可以支持大字典大小。 然而,一个样本在记忆库中的表示是在它最后一次出现时更新的,因此采样的密钥本质上是关于过去整个epoch中多个不同步骤的编码器的,因此不太一致。 [61]中对内存库采用动量更新。 它的动量更新是在同一个样本的表示上,而不是在编码器上。 这种动量更新与我们的方法无关,因为MoCo不会跟踪每个样本。 此外,我们的方法具有更高的内存效率,并且可以在10亿规模的数据上进行训练,这对于存储库来说是很难处理的。 第4节对这三种机制进行了经验比较。  

                             

3.3、pretext任务

对比学习可以驱动各种借口任务。 由于本文的重点不是设计一种新的借口任务,所以我们采用了一个简单的借口任务,主要是在[61]的实例识别任务之后,与最近的一些研究[63,2]相关。  

在[61]之后,如果一个查询和一个关键字来自同一个图像,我们将它们视为正样本对,否则视为负样本对。继[63,2]之后,我们在随机数据扩增下对同一图像取两个随机“视图”,形成正对。查询和关键字分别由它们的编码器编码。编码器可以是任何卷积神经网络。

算法1为这个借口任务提供了MoCo的伪代码。 对于当前的迷你批处理,我们对查询及其对应的键进行编码,它们形成了正样本对。 负样本来自队列。  

技术细节:

我们采用一个ResNet作为编码器,它的最后一个全连接层(全局平均池化后)有一个固定维的输出(128-D)。该输出向量通过其L2范数进行归一化。这是查询或键的表示。方程中的温度τ,式(1)设为0.07。数据增强设置如下:从随机调整大小的图像中截取224×224像素的裁剪,然后进行随机颜色抖动、随机水平翻转和随机灰度转换,所有这些都在PyTorch的Torchvision包中提供。

Shuffling BN:

我们的编码器都具有标准ResNet中的批处理标准化(BN)。在实验中,我们发现使用BN会阻止模型学习良好的表示,如[35]中类似的报道(这避免了使用BN)。该模型似乎“欺骗”了借口任务,并很容易找到一个低损失的解决方案。这可能是因为样本之间的批内通信(由BN引起)泄漏了信息。

我们通过打乱解决这个问题。我们使用多个图形处理器进行训练,并为每个图形处理器独立地对样本执行BN(如通常实践中所做的)。对于关键编码器,我们在分配给GPU之前,对当前小批量中的样本顺序进行洗牌(编码后再打乱);查询编码器f_q的小批量样本顺序不会改变。这确保了用于计算查询及其正关键字的批处理统计信息来自两个不同的子集。这有效地解决了作弊问题,并使训练受益于BN。

我们在我们的方法及其端到端消融对应物中都使用了打乱BN(图2a)。它与内存库无关(图2b),内存库没有这个问题,因为正密钥来自过去不同的小批量。

4、实验

我们研究在以下情况下进行的无监督训练:  

ImageNet- 1M(IN-1M):

这是ImageNet训练集,在1000个类中有约128万张图像(通常称为ImageNet- 1K;我们计算图像的数量,因为类不会被非监督学习所利用)。 这个数据集的类分布很均衡,它的图像通常包含对象的标志性视图。 

Instagram- 1B(IG-1B):

继[44]之后,这是Instagram上约10亿(9.4亿)张公开照片的数据集。 这些图片来自于与ImageNet分类相关的约1500个主题标签[44]。 与IN-1M相比,这个数据集相对不受管理,并且真实世界数据的长尾分布不平衡。 这个数据集包含图标目标和场景级图像。  

训练:

我们使用SGD作为我们的优化器。 SGD权重衰减为0.0001,SGD动量为0.9。 对于IN- 1M,我们在8个GPU中使用256个小批量(算法1中的N),初始学习率为0.03。 我们在120和160个epoch时用学习率乘以0.1进行200个epoch的训练,训练ResNet-50大约需要53个小时。 对于IG-1B,我们使用64个GPU的1024个小批量,学习率为0.12,每62.5k次迭代(64M张图片)学习率指数衰减0.9×。 我们训练了1.25M的迭代(约为IG-1B的1.4个周期),对于ResNet-50需要约6天的时间。  

4.1、线性分类协议

我们首先验证了我们的方法由线性分类冻结特征,遵循一个共同的协议。 在本小节中,我们对IN-1M进行无监督的预训练。 然后我们冻结特征并训练一个有监督的线性分类器(一个全连接层,然后是softmax)。 我们在一个ResNet的全球平均池特征上训练这个分类器,时间为100个epoch。 我们报告了在ImageNet验证集上的1-crop, top-1分类精度。 

对于这个分类器,我们执行网格搜索,并发现最优初始学习率为30,权值衰减为0。 这些超参数在本节介绍的所有消融过程中均表现良好。 这些超参数值意味着特征分布(例如,幅度)可能与ImageNet监督训练的特征分布有很大的不同,我们将在第4.2节再次讨论这个问题。  

消融:对比损失机制

我们比较图2中所示的三种机制。 为了关注对比损失机制的效果,我们在第3.3节中描述的同一个借口任务中实现了所有这些机制。 我们还使用相同形式的InfoNCE作为对比损失函数,Eqn.(1)。 因此,我们只对这三种机制进行比较。  

结果如图3所示。 总的来说,这三种机制都受益于更大的K。在记忆银行机制下,[61,56]也观察到了类似的趋势,而在这里我们表明,这种趋势更为普遍,在所有机制中都可以看到。 这些结果支持了我们构建大型词典的动机。  

             

当K很小时,端到端机制的执行与MoCo类似。 然而,由于端到端需求,字典大小受到小批量大小的限制。 在这里,高端机器(8台Volta 32GB GPUs)能承受的最大迷你批量是1024。 更重要的是,大的小批量训练是一个开放问题:我们发现有必要在这里使用线性学习率缩放规则,没有它,准确率会下降(1024个小批量时下降约2%)。 但是使用更大的迷你批处理进行优化更加困难,即使内存足够,这种趋势是否可以推断为更大的K也是值得怀疑的。   

内存库机制可以支持更大的字典大小。 但比MoCo低2.6%。 这与我们的假设是一致的:存储库中的密钥来自过去各个时代非常不同的编码器,它们并不一致。 注意,58.0%的内存库结果反映了我们对的改进实现。  

消融:动量

下表显示了训练前使用不同MoCo动量值式(2)中的m)时的ResNet-50精度(此处K = 4096):

           

当m在0.99 ~ 0.9999时,它表现得相当好,这表明缓慢发展(即相对较大的动量)的密钥编码器是有益的。 当m过小(如0.9)时,精度大幅度下降;在无动量极值(m = 0)时,训练损失振荡且不收敛。 这些结果支持了我们构建一致字典的动机。  

和以前结果的比较:

以前的无监督学习方法在模型大小上有很大的不同。 为了进行公平和全面的比较,我们报告了准确性与# parameter3之间的权衡。 除了ResNet-50 (R50)[,我们还报道了它的变体,在[38].4之后,有2倍和4倍宽(更多的通道) 设K = 65536, m = 0.999。 表1是比较。 

MoCo R50的准确率达到了60.6%,比所有同类型号的竞争者(∼24M)都要高。 MoCo受益于更大的模型,达到68.6%的精度与R50w4×。  

值得注意的是,我们使用标准的ResNet-50获得了有竞争力的结果,不需要特定的架构设计,例如,拼接输入,精心定制的接收域,或结合两个网络。 通过使用不是为借口任务定制的架构,可以更容易地将特征转移到各种视觉任务并进行比较,这将在下一小节中研究。  

             

本文的重点是一般对比学习的机制;我们不探讨可能进一步提高准确度的正交因素(如特定的借口任务)。 例如,“MoCo v2”,本手稿初步版本的扩展,在对数据增强和输出投影头进行微小改变的情况下,R50的准确率达到了71.1%(从60.6%上升)。 我们相信这个额外的结果显示了MoCo框架的通用性和稳健性。   

          

4.2、迁移特征

无监督学习的主要目标是学习可迁移的特性。 ImageNet监督的预训练在作为下游任务微调的初始化时影响最大。 接下来我们比较MoCo和ImageNet监督下的预训练,转移到各种任务,包括PASCAL VOC, COCO等。 作为先决条件,我们讨论涉及的两个重要问题:规范化和日程安排。  

归一化

如第4.1节所述,与ImageNet有监督的前训练相比,无监督的前训练产生的特性可以有不同的分布。 但是,用于下游任务的系统通常有超参数(例如,学习率),这些超参数被挑选出来进行有监督的预训练。 为了解决这个问题,我们在微调过程中采用特征归一化:我们用训练过的BN(并在GPU上同步)进行微调,而不是用仿射层冻结它。 我们也在新初始化的层中使用BN(例如,FPN),这有助于校准幅度。  

当微调有监督和无监督的训练前模型时,我们执行规范化。 MoCo使用与ImageNet监督的副本相同的超参数。  

步骤 

如果微调计划足够长,那么来自随机初始化的训练检测器可以成为强基线,并且可以在COCO上匹配ImageNet监督的对等体。 我们的目标是研究特征的可转移性,因此我们的实验是在受控的时间表上进行的,例如,COCO的1×(~ 12个epoch)或2×时间表,而[31]的6× ~ 9×。 在像VOC这样较小的数据集上,长时间的训练可能赶不上。  

尽管如此,在我们的微调中,MoCo使用与ImageNet监督的对等对象相同的调度,并提供随机初始化结果作为参考。 

总的来说,我们的微调使用与有监督的训练前对应的相同设置。 这可能会让MoCo处于不利地位。 尽管如此,MoCo还是很有竞争力的。 这样做还可以在多个数据集/任务上进行比较,而无需额外的超参数搜索。  

4.2.1、PASCAL VOC目标检测

设置:

该检测器是Faster R-CNN,其主干为R50-dilated-C5或R50-C4(详见附录),BN调谐,在中实现。 我们对所有层进行了端到端的微调。 训练时的图像尺度为[480,800]像素,推断时为800像素。 所有条目都使用相同的设置,包括有监督的训练前基线。 我们评估了AP50(即IoU阈值为50%)的默认VOC度量,以及COCO风格AP和AP75的更严格度量。 评价是在VOC测试2007集。  

消融:骨干

表2显示了经过微调的trainval07+12(约16.5k图像)的结果。 对于R50-dilated-C5(表2a),在IN-1M上的MoCo预训练与有监督的预训练对应物相当,而在IG-1B上的MoCo预训练超过了它。 对于R50-C4(表2b),带IN-1M或IG-1B的MoCo比有监督的同类产品更好:最高可达+0.9 AP50, +3.7 AP和+4.9 AP75。 

有趣的是,传输精度取决于检测器的结构。 对于C4骨干,默认使用现有基于ResNet的结果,无监督预训练的优势更大。 在过去,训练前和检测器结构之间的关系已经被掩盖,这应该是一个考虑因素。  

消融:对比损失机制

我们指出,这些结果的部分原因是我们为对比学习建立了可靠的检测基线。 为了确定在对比学习中使用MoCo机制单独贡献的增益,我们对端到端或记忆银行机制预先训练的模型进行微调,这两种机制都由我们实现(即图3中最好的那些),使用与MoCo相同的微调设置。 这些竞争者表现良好(表3)。他们的AP和AP75与C4骨干也高于ImageNet监督的对手,c.f。 表2b,但其他指标更低。 它们在所有指标上都比MoCo更糟糕。 这显示了MoCo的好处。 此外,如何在更大规模的数据中训练这些竞争对手是一个开放的问题,他们可能不会从IG-1B中受益。  

和以前结果的比较

继竞争对手之后,我们使用C4脊椎骨对trainval2007(∼5k图像)进行了微调。 比较如表4所示。 

对于AP_{50}的度量,以前的任何方法都不能赶上其各自的监督训练前的对等物。 MoCo在任何IN-1M、IN-14M(全ImageNet)、YFCC-100M和IG-1B上进行预训练,可以超过监督基线。 更严格的指标大幅上涨:最高达到+5.2 AP和+9.0 AP75。 这些收益大于trainval07+12的收益(表2b)。  

4.2.2、COCO目标检测和分割

设置:

模型是Mask R-CNN, FPN或C4骨干,BN调谐,在[60]中实现。 在训练时图像的尺度为[640,800]像素,在推断时为800像素。 我们对所有层进行了端到端的微调。 我们对train2017(约118k图像)进行微调,并对val2017进行评估。 在[22]中,时间表是默认的1倍或2倍。 

结果:

表5显示了COCO与FPN(表5a, b)和C4(表5c, d)骨干的结果。 在1×计划的情况下,所有模型(包括ImageNet监督的模型)都严重缺乏训练,这表明与2×计划的情况之间有~ 2个点的差距。 在2×进程表下,MoCo在所有指标上都优于ImageNet监管的对应工作。  

4.2.3、下游任务

表6显示了更多的下游任务(实现细节见附录)。总的来说,MoCo在ImageNet监督下的预训练中表现出色:

COCO关键点检测

有监督的预训练比随机初始化没有明显的优势,而MoCo在所有指标上都优于随机初始化。

COCO密集姿势估计:

MoCo显著优于有监督的训练前,例如,在这个高度本地化敏感任务中,APdp75高出3.7点。

LVIS v0.5实例分割:

该任务有~ 1000个长尾分布式类别。特别是在ImageNet监督基线的LVIS中,我们发现使用冻结BN (24.4 APmk)进行微调比使用可调BN更好(详情见附录)。所以我们在这个任务中比较MoCo和有更好监督的训练前变量。

Cityscape实例分割:

带有IG-1B的MoCo在APmk中与有监督的预训练版本相当,在APmk 50中更高。语义分割:在城市景观[10]上,MoCo比它的有监督的训练前的对手高出0.9个点。但在VOC语义分割上,MoCo至少差0.8个点,这是我们观察到的一个负面情况。

         

总结:

总之,MoCo可以在7个检测或分割任务中胜过ImageNet监督的训练前的对手。此外,MoCo在城市景观实例分割方面与之相当,而在VOC语义分割方面则相对滞后;我们在附录中展示了iNaturalist的另一个类似案例。

总的来说,MoCo在很大程度上缩小了多视觉任务中无监督和有监督表征学习之间的差距。值得注意的是,在所有这些任务中,对IG-1B进行MoCo预训练的效果始终优于对IN-1M进行MoCo预训练的效果。这表明,MoCo可以在这个大规模的、相对松散的数据集上表现良好。这代表了现实世界无监督学习的一个场景。

5、讨论和结论

我们的方法在各种计算机视觉任务和数据集中显示了积极的无监督学习结果。有几个悬而未决的问题值得讨论。MoCo从IN-1M到IG-1B的改进一直很明显,但相对较小,这表明更大规模的数据可能没有得到充分利用。我们希望一个先进的任务将改善这一点。除了简单的实例识别任务[61]之外,对于屏蔽自编码等借口任务,如语言[12]和视觉[46],也可以采用MoCo。我们希望MoCo对其他涉及对比学习的借口任务有帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值