CVPR 2022|用于连续语义分割的表示补偿网络

本文是对《Representation Compensation Networks for Continual Semantic Segmentation》一文的总结,如有侵权即刻删除。

paper
code

1 文章信息

论文《Representation Compensation Networks for Continual Semantic Segmentation》于2022年发表在CVPR (CCF-A类会议)。
作者团队来自南开大学和香港科技大学。
在这里插入图片描述

2 摘要

       在这项工作中,我们研究了连续语义分割问题,该问题要求深度神经网络在没有灾难性遗忘的情况下不断地融入新的类别(研究领域及挑战)。我们提出使用一种结构化的再参数化机制,即表示补偿( RC )模块,来解耦新旧知识的表示学习。RC模块由2个动态演化的分支组成,其中1个为冻结分支,1个为可训练分支。此外,我们在空间和通道两个维度上设计了池化立方体知识蒸馏策略,以进一步增强模型的可塑性和稳定性(模型结构)。我们在两个具有挑战性的连续语义分割场景上进行了实验,分别是连续类分割和连续域分割。在推理过程中没有任何额外的计算开销和参数,我们的方法优于最先进的性能(实验及结果)

3 介绍

       数据驱动的深度神经网络在语义分割方面取得了许多里程碑式的成就。然而,这些完全监督的模型只能处理固定数量的类。在现实世界的应用程序中,最好可以动态扩展模型以识别新的类。一个简单的解决方案是重建训练集,并使用所有可用数据重新训练模型,称为联合训练(联合训练)。然而,考虑到重新训练模型的成本、算法的可持续发展和隐私问题,仅用当前数据更新模型以实现识别新类和旧类的目标尤为重要。然而,使用新数据对训练好的模型进行简单的微调会导致灾难性的遗忘。因此,在本文中,我们寻求持续学习,这可能使模型能够在不发生灾难性遗忘的情况下识别新的类别(持续学习的意义)
       在连续语义分割场景中,给定先前训练好的模型和新类的训练数据,模型应该能够区分所有可见的类,包括先前类(旧类)和新类。然而,为了节省标注成本,新的训练数据往往只有新类的标签,以旧类为背景。在没有任何额外设计的情况下直接使用新数据进行学习是非常具有挑战性的,这很容易导致灾难性的遗忘(连续语义分割难点:灾难遗忘)
       正如现有工作[1]指出的那样,在新数据上微调模型可能会导致灾难性遗忘,即模型快速拟合新类的数据分布,而失去对旧类的区分度。一些方法对模型参数进行正则化,以提高其稳定性。然而,所有的参数都是在新类的训练数据上更新的。然而,这是具有挑战性的,因为新知识和旧知识在模型参数中纠缠在一起,使得学习新知识和保持旧知识的脆弱平衡变得异常困难。其他一些方法增加了模型的容量,使其在稳定性和可塑性之间有更好的折衷,但增加了网络的内存开销(灾难遗忘现有的处理方法)
       在本工作中,我们提出了一个易于使用的表征补偿模块,旨在记忆旧知识的同时允许新知识的额外容量。受结构重参数化的启发,我们在训练时将网络中的卷积层替换为两个并行的分支,命名为表示补偿模块。如图1所示,在训练过程中,两个并行卷积的输出在非线性激活层之前进行融合。在每个连续学习步骤的开始,我们将两个并行卷积的参数等效合并为一个卷积,将其冻结以保留旧知识。另一个分支是可训练的,它继承了上一步中相应分支的参数。表征补偿策略应该使用冻结的分支来记忆旧知识,同时允许使用可训练的分支为新知识提供额外的容量。重要的是,该模块在推理过程中不会带来额外的参数和计算成本(表征补偿模块的设计及意义)
在这里插入图片描述
       为了进一步缓解灾难性遗忘,我们在中间层(如图1所示)之间引入了一种知识蒸馏机制,称为池化立方体蒸馏。它可以抑制局部特征图中误差和噪声的负面影响(池化立方体蒸馏的意义)。本文的主要贡献在于:

  • 我们提出了一个表示补偿模块,在训练过程中包含两个分支,一个用于保留旧知识,另一个用于适应新数据。随着任务数量的增加,在推理过程中始终保持相同的计算和内存开销。
  • 我们分别对连续类分割和连续域分割进行实验。实验结果表明,我们的方法在3个不同的数据集上的性能都优于当前最好的方法。

4 相关工作

4.1 语义分割

       早期的方法主要集中在建模上下文关系。目前的方法多关注多尺度特征聚合。一些方法受到Non-local的启发,利用注意力机制建立图像上下文之间的联系。另一类研究旨在融合来自不同感受野的特征。最近,变压器架构在语义分割方面大放异彩,集中于多尺度特征融合和上下文特征聚合。

4.2 持续学习

       连续学习侧重于减轻灾难性遗忘,同时对新学习的类具有判别性。为了解决这个问题,很多工作提出通过基于预演的机制进行知识回顾。知识可以通过多种类型进行存储,如实例、原型、生成式网络等。虽然这些基于预演的方法通常可以达到很高的性能,但是它们需要存储和存储权限。在没有任何回放的更具挑战性的场景中,许多方法探索正则化来保持旧知识,包括知识蒸馏、对抗训练、香草正则化等。其他人则专注于神经网络的能力。研究路线之一是在学习新知识的同时扩展网络架构。另一条研究路线探索了网络参数的稀疏性正则化,旨在为每个任务激活尽可能少的神经元。这种稀疏性正则化减少了网络中的冗余,同时限制了每个任务的学习能力。一些工作提出将自监督学习用于特征提取器和解决类不平衡问题相结合来学习更好的表示。

4.3 连续语义分割

       连续语义分割仍然是一个亟待解决的问题,主要集中在语义分割中的灾难性遗忘。在这一领域,连续的类切分是一个经典的设定,之前的几项工作取得了很大的进展:一些工作探索了基于排练的方法来回顾旧知识;MiB对潜在类进行建模,解决了背景类的二义性;PLOP将知识蒸馏策略应用于中间层;SDR利用原型匹配在潜在空间表示中执行一致性约束。而另一些工作则利用高维信息、自训练和模型自适应来克服这一问题。此外,连续领域分割是PLOP提出的一种新颖的设置,旨在整合新的领域而不是新的类。与以往方法不同的是,我们侧重于动态扩展网络,解耦旧类和新类的表示学习。

5 方法

5.1 预备知识

       设 D = { x i , y i } \mathcal{D}=\{x_i,y_i\} D={xi,yi}为训练集,其中 x i x_i xi为输入图像, y i y_i yi为对应的分割结果。在具有挑战性的持续学习场景中,我们将在新增加的数据集 D t \mathcal{D}_t Dt上的每次训练称为一个步骤。在第 t t t步,给定参数为 θ t − 1 \theta_{t-1} θt1的模型 f t − 1 f_{t-1} ft1,在 { D 0 , D 1 . . . D t − 1 } \{\mathcal{D}_0, \mathcal{D}_1...\mathcal{D}_{t-1} \} {D0,D1...Dt1}上训练, { C 0 , C 1 . . . C t − 1 } \{\mathcal{C}_0, \mathcal{C}_1...\mathcal{C}_{t-1} \} {C0,C1...Ct1}类不断增加,当遇到新增加的数据集 D t \mathcal{D}_t Dt时,模型要学习对 ∑ n = 0 t C n \sum^t_{n=0}\mathcal{C}_n n=0tCn C t \mathcal{C}_t Ct类的判别。在 D t \mathcal{D}_t Dt上进行训练时,旧类的训练数据是不可访问的。此外,为了节省训练成本, D t \mathcal{D}_t Dt中的ground-truth只包含 C t \mathcal{C}_t Ct个新类,而旧类被标记为背景。由此,出现了一个亟待解决的问题,灾难性遗忘。为了验证不同方法的有效性,通常需要执行连续多次的学习,例如 N N N步。

5.2 表示补偿网络

       为了将旧知识的保留和新知识的学习解耦,如图2所示,我们引入了表示补偿机制。在大多数的深度神经网络中,一个3 × 3的卷积之后进行归一化和非线性激活层是一个常见的组件。我们通过为每个组件添加一个并行的3 × 3卷积和一个归一化层来修改这个架构。将两个并行卷积归一化层的输出进行融合,然后通过一个非线性激活层进行校正。从形式上看,该架构包含两个并行的卷积层,权重为 { W 0 , W 1 } \{ W^0,W^1 \} {W0,W1},偏置为 { b 0 , b 1 } \{ b^0,b^1 \} {b0b1},后面分别为两个独立的归一化层。令 N o r m 0 = { μ 0 , σ 0 , γ 0 , β 0 } Norm^0 = \{ μ^0,σ^0,γ^0,β^0 \} Norm0={μ0σ0γ0β0} N o r m 1 = { μ 1 , σ 1 , γ 1 , β 1 } Norm^1 = \{ μ^1,σ^1,γ^1,β^1 \} Norm1={μ1σ1γ1β1}分别表示两个归一化层 N o r m 0 Norm^0 Norm0 N o r m 1 Norm^1 Norm1的均值、方差、权重和偏差。因此,非线性激活函数前输入 x x x的计算可表示为
在这里插入图片描述
       该方程表明两个平行分支可以等价地表示为一个具有权重 W ^ \hat W W^和偏置 b ^ \hat b b^的分支。我们也在图2的右边部分展示了变换。因此,对于这种改进的架构,我们可以将两个分支的参数等效合并为一个卷积。
在这里插入图片描述
       更准确地说,在步骤0中,所有的参数都可以被训练,以训练一个可以区分 C 0 \mathcal{C}_0 C0类的模型。对于后续的学习步骤,模型需要对新增加的类进行分割。在这些连续的学习步骤中,网络将用上一步训练的参数初始化,这有利于知识的迁移。在第 t t t步开始时,由于模型需要避免遗忘旧知识,我们将第 t − 1 t - 1 t1步训练的并行分支合并到一个卷积层。这个合并分支中的参数被冻结以记忆旧知识,如图2 所示。另一个分支是可训练学习新知识的,在上一步中用对应的分支进行初始化。此外,我们设计了一种丢弃路径策略,该策略应用于聚合来自两个分支的输出 x 1 x_1 x1 x 2 x_2 x2。在训练期间,非线性激活前的输出表示为
在这里插入图片描述
其中 η η η 是随机通道加权向量,并从集合 { 0 , 0.5 , 1 } \{0, 0.5, 1\} {0,0.5,1} 均匀采样。在推理过程中,向量 η η η的元素设置为 0.5。实验结果表明,该策略略有改善。

RC模块有效性分析
       如图3所示,并行卷积结构可以看作是众多子网络的隐式集成。这些子网中某些层的参数继承自合并的教师模型(在上一步中训练)并被冻结。在训练过程中,这些冻结的教师层将对可训练参数进行正则化,鼓励可训练层的行为类似于教师模型。在子网络中只有一层是可训练的特殊情况下,如图3(a)所示,在训练过程中,该层将考虑适应冻结层的表示和学习新知识。因此,这种机制将减轻可训练层的灾难性遗忘。我们进一步将这种效应推广到如图3(b)所示的一般子网络中,这也将鼓励可训练层适应冻结层的表示。此外,所有子网络是集成的,将来自不同子网络的知识整合到一个网络中,如图3(c)所示。
在这里插入图片描述

5.3 池立方知识蒸馏

       为了进一步缓解对旧知识的遗忘,继PLOP之后,我们还探索了中间层之间的知识提炼。如图4(a)所示,PLOP引入了条带池化,分别集成了教师模型和当前模型的特征。汇集操作在保持对旧班级的歧视和允许学习新班级方面发挥着关键作用。在我们的方法中,我们沿空间维度设计了基于池化的平均知识蒸馏。此外,我们还使用每个位置的通道维度中的平均池化来保持它们各自的激活强度。总体而言,如图4(b)所示,我们在空间和通道维度上都使用了平均池化。
在这里插入图片描述
       在形式上,我们选择所有 L L L 级(包括解码器和主干中的所有级)的最后一个非线性激活层之前的特征图 { X 1 , X 2 , . . . , X L } \{X^1, X^2, ..., X^L\} {X1X2...XL}。对于教师模型和学生模型的特征,我们首先计算每个像素处的值的平方,以保留负信息。然后,我们分别在空间维度和通道维度上进行多尺度平均池化。教师模型和学生模型的特征 X ^ T l , X ^ S l \hat{X}^l_T,\hat{X}^l_S X^TlX^Sl 可以通过平均池化操作 ⊙ \odot 计算:
在这里插入图片描述
       其中 M M M 表示第 m t h m_{th} mth 个平均池化核, l l l表示第 l t h l_{th} lth 个阶段。对于空间维度上的平均池化,我们使用多尺度窗口对局部区域中像素之间的关系进行建模。内核 M M M 的大小属于 M = { 4 , 8 , 12 , 16 , 20 , 24 } \mathcal{M} = \{4, 8, 12, 16, 20, 24\} M={4812162024},步长设置为 1。我们只需将通道上的平均池化维度的窗口大小设置为 3。然后,中间层的空间知识蒸馏损失函数 L s k d L_{skd} Lskd可以表示为
在这里插入图片描述
       其中 H H H W W W D D D 表示高度、宽度和通道数。相同的方程可以应用于 M = { 3 } \mathcal{M} = \{3\} M={3} 的通道维度以形成 L c k d L_{ckd} Lckd。总体而言,蒸馏目标可以表示为:
在这里插入图片描述
平均池化 vs. 条带池化
       得益于其强大的特征聚合和长程依赖性建模能力,条带池化在许多全监督语义分割模型中大放异彩。连续分割的性能仍然比全监督分割差很多。在连续分割的场景中,预测结果中的噪声或误差通常比全监督分割更多。因此,在蒸馏过程中,当使用条带池化来聚合特征时,这种长程依赖性会在交叉点引入一些不相关的噪声,从而导致噪声扩散。这将导致学生模型的预测结果进一步恶化。在我们的方法中,我们使用局部区域的平均池化来抑制噪声的负面影响。具体来说,由于局部区域的语义通常相似,当前关键点可以通过聚合局部区域的特征来找到更多的邻居来支持其决策。因此,当前关键点受局部区域噪声的负面影响较小。
       如图5(b)顶部所示,条带池化将噪声或误差引入教师模型的交叉点。在蒸馏过程中,噪声进一步传播到学生模型,使噪声扩散。对于图5 底部的平均池化,关键点将考虑许多附近的邻居,从而产生对噪声更鲁棒的聚合特征。
在这里插入图片描述

6 实验

       在本节中,我们首先演示实验设置的详细信息,例如数据集、协议和训练细节。然后,我们通过定量和定性实验说明了该方法的有效性。

6.1 实验装置

6.1.1 数据集

       PASCAL VOC 2012是一个常用的数据集,包含 10,582 张训练图像和 1449 张验证图像,其中包含 20 个目标类和背景类。 ADE20K是一个用于语义分割的数据集,涵盖日常生活场景。它包含 20,210 个训练图像和 2,000 个验证图像,具有 150 个类。Cityscapes包含 2,975 张训练图像、500 张验证图像和 1,525 张测试图像。有来自21个城市的19个类。

6.1.2 方案

持续类分割
       在连续类分割中,模型经过训练,可以分多个步骤依次识别不同的类。每一步,模型都会学习一个或多个类。在 [2] 之后,我们假设前面步骤的训练数据不可用,即模型只能访问当前步骤的数据。此外,仅标记当前步骤中要学习的类。所有其他类都被视为背景。[2] 提出了两种常用的连续类分割设置,不相交和重叠。在不相交设置中,假设我们知道将来的所有类,则当前训练步骤中的图像不包含将来的任何类。重叠的设置更逼真。它允许将来的潜在类出现在当前的训练图像中。
       我们对PASCAL VOC 2012和ADE20K进行了持续的类别分割实验。按照第 5.1 节中定义的,我们将新添加数据集上的每次训练称为一个步骤。从形式上讲, X − Y X-Y XY 表示实验中的持续设置,其中 X X X 表示我们在第一步中需要训练的类的数量。在每个后续学习步骤中,新添加的数据集都包含 Y Y Y 类。在PASCAL VOC 2012上,我们在三种设置上进行了实验,即15-5(2步)、15-1(6步)和10-1(11步)。例如,15-1 表示我们在第一步中在最初的 15 个对象类上训练模型。在随后的五个步骤中,模型预计将在新数据集上进行训练,其中每个数据集都包含一个新添加的类。因此,该模型可以在最后一步中区分 20 个对象类。在ADE20K上,我们应用四种设置,100-50(2步),50-50(3步),100-10(6步)和100-5(11步)。
持续域分割
       与连续的类分割不同,这种设置是为了处理域转移现象,而不是整合新的类。在现实世界中,域转移也可能频繁发生。我们假设不同域中的类是相同的。使用新域数据进行训练时,无法访问旧域的训练数据。我们在城市景观上进行了持续的域分割实验。在PLOP之后,我们将每个城市的训练数据视为一个域。我们还应用三种设置,11-5(3 步)、11-1(11 步)和 1-1(21 步)。在这些实验设置中,我们使用与连续类分割相同的记录,但每个步骤都会添加新的域(城市)而不是类。

6.1.3 实施细节

       在 [2] 之后,我们使用 Deeplab-v3架构,以 ResNet-101为骨干。Deeplab-v3 的输出步幅设置为 16。我们还将原位激活的批量归一化应用于在ImageNet上预训练的骨干网中,如上述方法。我们利用 MiB提出的损失函数来辅助我们的训练过程。我们采用与[2]相同的训练策略。具体来说,我们应用相同的数据增强,例如水平翻转和随机裁剪。所有实验的批处理大小都设置为 24。我们将第一个训练步骤的初始学习率设置为 0.02,将下一个持续学习步骤的初始学习率设置为 0.001。学习率由 poly 时间表调整。我们使用 SGD 优化器分别使用 30 个 (PASCAL VOC 2012)、50 个 (Cityscapes) 和 60 个 epoch (ADE20K) 来训练模型。我们还使用20%的训练集作为[2]之后的验证。我们在原始验证集上报告平均相交并集 (mIoU)。

6.2 持续类分割

PASCAL VOC 2012
       应用与[2]相同的实验设置,我们在不同的持续学习设置(15-5,15-1和10-1)上进行了实验。如表1所示,我们报告了最后一步的实验结果。香草微调方法遭受了灾难性的遗忘现象。模型很快忘记了旧知识,无法很好地学习新知识。实验结果表明,该方法在重叠和不相交设置下均能显著提高分割性能。特别是在具有挑战性的 15-1 设置中,我们的方法在 mIoU 方面分别比最先进的方法高出 6.0%(不相交)和 4.8%(重叠)。我们还显示了不同方法下每个步骤的性能,如图6a图6a所示。这表明我们的方法可以减少持续学习过程中对旧知识的遗忘。在表1中,我们还分别报告了旧类和新类的性能。对于所有设置,旧类的性能都得到了极大的提高。这得益于表示补偿模块和蒸馏机制,可以有效地保留旧知识。另一方面,我们提出的表示模块和蒸馏机制为学习新知识提供了空间。在第 6.4 节中,我们将进一步分析这两种机制的有效性。我们在图7中进一步显示了不同方法在 15-1 重叠设置中的定性结果。
在这里插入图片描述
在这里插入图片描述
ADE20K
       为了验证我们方法的有效性,我们在具有挑战性的语义分割数据集ADE20K上进行了实验。实验结果见表2表3。在不同的持续学习任务上,100-50、100-10 和 50-50,我们的方法比最先进的方法平均提高了 1.4%。为了进一步验证我们的方法,我们还在一个更具挑战性的场景 100-5 上进行了实验,其中包含 11 个步骤。在这种情况下,我们的方法也达到了最先进的水平,在mIoU方面比以前的方法高出约0.9%,如表3所示。这一改进归功于我们提出的表示补偿模块和池立方体蒸馏机制。
在这里插入图片描述
在这里插入图片描述

6.3 持续域分割

       在持续语义分割的背景下,除了需要分割新类外,增加新领域的处理能力也具有重要意义。继[3]之后,我们在城市景观上进行了连续域语义分割的实验。Cityscapes中的每个城市都可以看作是一个域,被广泛地用于域自适应语义分割任务。在这种情况下,我们不考虑域之间的类差异。如表4所示,实验结果表明,在所有三种设置下,我们的方法都比以前的方法[2]获得了更高的mIoU。我们的方法在具有挑战性的 1-1 设置和 21 个学习步骤中比最先进的方法高出 3.7%。对于此设置,我们在图 6c 中显示了每个步骤的性能。由于MiB旨在解决连续域分割中不存在的语义转换问题,因此MiB的性能略差于Fine-tuning。这些实验表明,我们的方法对于连续的领域语义分割也是有效的,它受益于在保留旧知识的同时允许学习新知识的能力。
在这里插入图片描述

6.4 消融研究

       在本节中,我们首先分析了我们提出的表示补偿和池立方体蒸馏机制的有效性。然后,我们讨论了持续学习场景中对类顺序的鲁棒性。
表征补偿
       我们在PASCAL VOC 2012上进行了消融实验。如表5所示,我们提出的表征补偿模块比MiB基线提高了约7%。有了这个模块,我们的方法达到了最先进的性能。我们认为,这种性能得益于在我们的方法中记住旧知识的方案,同时允许学习新知识。在我们的方法中,合并和冻结参数的操作旨在减轻对旧知识的遗忘。因此,在表6中,我们进一步研究了这两种操作的有效性。具体来说,基于普通的并行卷积分支(Parallel-Conv),合并(Merge)和冻结(Frozen)的操作可以带来2.7%的提升。实验结果表明,该模型能够从前几步的冻结知识中获益。
在这里插入图片描述
蒸馏机制
       在表5中,我们分别研究了知识蒸馏机制在空间维度和通道维度上的重要性。空间和通道维度的知识蒸馏取得了类似的性能,在mIoU方面比基线高出约15.3%。通过表示补偿模块,这两种蒸馏方案的组合可以达到最先进的性能。我们进一步比较了知识蒸馏机制中使用的不同池化方法的有效性,如表7所示。实验结果表明,平均池化比带状池化性能高出1.5%。
在这里插入图片描述
类顺序的鲁棒性
       在持续语义分割的场景中,流水线中的类顺序尤为重要。为了验证对类阶的鲁棒性,我们对五个不同的类阶进行了实验,包括四个随机阶和原始升序。在图8中,我们显示了不同方法的平均性能和标准方差。实验结果表明,与以往方法相比,该方法对不同类顺序具有更强的鲁棒性。
在这里插入图片描述

7 结论和局限性

       在这项工作中,为了记住旧类的知识,同时允许学习新类的能力,我们提出了表示补偿模块,该模块可以在没有任何额外推理成本的情况下动态扩展网络。此外,为了进一步缓解对旧知识的遗忘,我们提出了空间和通道维度的池立方体蒸馏机制。我们在两个常用的基准上进行了实验,连续类分割和连续域分割。我们的方法优于最先进的性能。
       尽管我们提出了两个组件,它们的性能优于最先进的性能,但我们在具有许多步骤的持续学习过程中表现不佳,例如表 1 中所示的 10-1 设置。在这些具有挑战性的场景中,如何提高模型的性能还有很长的路要走。此外,我们的方法在训练过程中需要更多的计算成本。


参考资料
[1] Arthur Douillard, Matthieu Cord, Charles Ollion, Thomas Robert, and Eduardo Valle. Podnet: Pooled outputs distillation for small-tasks incremental learning. In Eur. Conf. Comput. Vis., volume 12365, pages 86–102, 2020. 1, 2, 13
[2] Fabio Cermelli, Massimiliano Mancini, Samuel Rota Bulo, Elisa Ricci, and Barbara Caputo. Modeling the background for incremental learning in semantic segmentation. In IEEE Conf. Comput. Vis. Pattern Recog., pages 9233–9242, 2020. 1, 2, 3, 5, 6, 7, 8, 13, 14, 15
[3] Arthur Douillard, Yifu Chen, Arnaud Dapogny, and Matthieu Cord. Plop: Learning without forgetting for continual semantic segmentation. In IEEE Conf. Comput. Vis. Pattern Recog., 2021. 1, 2, 4, 5, 6, 7, 8, 14, 15

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值