An End-to-End Compression Framework Based on Convolutional Neural Networks

摘要

深度学习,例如卷积神经网络,已经在图像处理和计算机视觉方面取得巨大成就,尤其是识别和理解这样的高水平应用。然而,很少被用来解决图像压缩这样低水平的视觉问题。这篇论文就介绍了一个基于卷积神经网络的图像压缩网络。为了实现高水平的图像压缩,两个卷积神经网络被紧密集成到一个端对端的压缩网络。第一个卷积神经网络叫压缩卷积神经网络,用来学习输入图像结构信息的最优压缩表达,然后利用图像编解码器(例如,JPEG,JPEG2000和BPG)进行编码。第二个卷积神经网络,叫重建卷积神经网络,作为解码端进行高质量地重建解码图像。为了使两个网络更有效地结合,我们提出了统一的端到端学习算法来同时学习两个卷积神经网络,这有利于重建卷积神经网络对解码图像的精确重建。

这样的一个设计也使得提出的压缩网络与现存的图像编码标准相协调。实验结果表明,本文提出的压缩网络优于现存的几个基于提前去噪或者去块预处理的压缩网络。

1.     介绍

近年来,图像压缩由于其在许多视觉系统的潜在应用价值受到了图像处理和计算机视觉领域越来越多的关注。图像压缩的目标在于削减不相关和冗余特征以提高图像的存储和传输效率。传统的图像编码标准(如JPEG和JPEG2000)试图在整个图像中为每个非零量化变换系数分配可用比特。然而随着压缩率的增加,更大的量化步长的使每个像素的比特位数降低,这将使得解码图像有块效应或者噪声。为了克服这个问题,后处理方法如去块或者去噪方法等相继被提出。文献【3】提出了一个去除JPEG图像块效应的有效方法,此方法通过后转移窗口图像块滤波实现。文献【4】提出了一个基于形状自适应DCT的图像去块效应滤波,与各向异性局部多项式近似相交的置信区间法相结合。由于图像去块的非局部滤波器和双边滤波器的成功,文献【5】到【7】相继提出了一些图像去块的非局部滤波器。近来,文献【8】中提出了一种约束非凸的低阶的图像去块模型。虽然达到了所需性能,这些后处理方法非常耗时,求解最优解涉及到非常耗时的迭代计算过程,因此,很难将其应用到实际应用中。根据卷积神经网络在低水平计算视觉(文献【9】—【11】)的优异性能以及现有的图像编解码器广泛应用在世界各地的事实,我们提出了一个端到端的编码框架,它由两个神经网络和图像编解码器,如图2所示。

 

图1:左边是QF=5的JPEG编码图像(psnr=27.33dB),可以看出有明显的块效应;

右边是用我们提出来的网络解码的图片(psnr=31.14dB),可以看出块效应明显消失

并且展现了更多的细节。

第一个卷积神经网络(comcnn),即压缩卷积神经网络,从输入图像中学习出压缩表达,然后被编解码器(JPEG,JPEG2000或者BPG)编码,第二个卷积神经网络,即重建卷积神经网络(reccnn),是用于在解码端解码图像高质量重建。现有的图像编码标准通常由变换、量化和熵编码组成。不幸的是,量化中的舍入函数是不可微的,这在进行反向传播算法训练时,对深层神经网络的训练带来了很大的挑战。为了解决这个问题,我们提出了一个简单而有效的学习算法去训练提出的端到端的压缩框架— 同时学习comcnn和reccnn以方便使用reccnn准确重构解码图像。图1显示了图像压缩的一个例子,从中我们可以看到,所提出的框架具有更高的质量和更多的视觉细节。此外,如图2所示,通过comcnn压缩表示保留图像的结构信息,因此,可以有效地利用图像编解码器压缩图像的压缩表示。

这项工作的贡献可概括如下:

(1)我们建议使用两个神经网络和图像编解码器的一个端到端的压缩方法。Comcnn产生一个紧凑的表示使用图像编解码器编码。Reccnn重构解码图像,分别。据我们所知,它是第一次使用一个紧凑的中间表示连接现有的图像编码标准和卷积神经网络。

(2)我们进一步提出了同时学习两CNN的一个有效的学习算法,解决了由于在量化取整函数不可微而导致的梯度不能通过反向传播算法的问题。

(3)该压缩框架与现有的图像编解码器兼容(如JPEG、JPEG2000或BPG),这使得我们的方法更适用于其他任务。

本文的其余部分组织如下:第2章简要回顾了相关工作。第3章阐述了压缩的框架,包括Comcnn和Reccnn架构。第4章说明了训练的参数设置和训练Comcnn和Reccnn的方法以及实验结果。在第5章中,我们总结了这篇论文。

2.相关工作

(1) 图像去块及伪影消除

   在文献中,已经有一些方法来提高解码图像后处理技术的质量,大致可分为去块型和恢复型方法。去块型方法侧重于消除块效应和振铃现象的解码图像。为去除图像/视频的块效应,文献【12】提出了基于后处理的自学习方法,该方法把去块看作基于图像分解的形态成分分析问题。文献【13】提出了一种基于块间相关性增量的两步框架以减少不同区域块效应,将编码图像分为平坦区域和边缘区域。文献【14】在双DCT域中学习了稀疏表示,取得了很好的结果。最近,文献【9】提出了一个紧凑的、高效的网络(ARCNN)对不同压缩现象无缝衰减。文献【11】中提出的D3和文献【10】提出的DDCN创新性地结合了双域稀疏编码和JPEG压缩的先验知识,达到了令人印象深刻的结果。恢复型的方法将压缩操作看作一个失真过程,通过恢复清晰的图像来减少伪影。文献【15】以高斯噪声为量化失真,利用专家域作为图像先验来恢复图像。文献【16】【17】提出利用图像块的相似性先验,通过估计非局部块的重叠块的变换系数来减少压缩伪影。文献【18】最近开发一种新的算法,采用有约束的非凸的低阶模型的算法,设定图像的去除块效应为一个在最大后验概率框架下的优化问题。在上述方法中,图像先验模型在去块型和恢复型方法中起着重要的作用。然而,这些方法在计算最优解时涉及到非常耗时的迭代计算过程。因此,它们可能不适合实际应用。总之,所有相关的方法都试图从图像后处理的角度来提高图像质量。换句话说,编码器前端处理与解码器后端处理之间的连接被忽略。我们试图联合优化编码器和解码器,以提高压缩性能。

(2) 基于深度学习的图像超分辨

   近年来,神经网络已成功地用于图像超分辨率(SR),尤其是残差学习([ 18 ])和基于梯度的优化算法 ( [19]-[21] ) 被提出来更有效地训练更深层次的网络。文献【12】里提出了基于超分辨的卷积神经网络,该网络共有三层:块提取,非线性映射和重建,该文献提出更深层的网络在某些情况下不会据具有更好的性能,但仍有其他研究学者认为网络的深度会大大提高其性能。例如,文献【23】提出的VDSR显着地提高了精度,它采用了20层地网络。文献【24】提出的DRCN有很深的递归层(16层),大幅度地优于以前的方法。

(3) 基于深度学习地图像压缩

    近年来,深度学习被应用于有损和无损图像压缩,都取得了很好的性能。对于图像的有

损压缩,文献【25】提出了可变速率的图像压缩和基于卷积和反卷积反复交替的LSTM网络。此外,文献【26】提出了一种在任意大小的图像上压缩率都相当好的神经网络。对于给定的压缩率,这两种方法都通过最小化失真来学习压缩模型。文献【27】提出了压缩自动编码器,采用光滑的曲线近似离散的取整函数的上界与连续松弛离散熵率损失。文献【28】提出利用广义分裂正常化(GDN)联合非线性和舍入量化代替连续松弛添加剂均匀噪声。文献【29】提出了一种基于图像重要度图的内容加权压缩方法。无损图像压缩,文献【30】和【31】提出的方法达到最佳。

 

 

图2:提出的新的压缩框架。ComCNN保留更多有用的信息用于重建。同时,该RecCNN处理重建

解码图像的任务。Co(.)表示图像的编解码,编码和解码的ComCNN产生的原始图像的压缩表示,

它由一个变换编码阶段的量化和熵编码组成。在这项工作中,采用了JPEG,JPEG2000和BPG。

 

总的来说,虽然基于深层学习的图像压缩方法取得了良好的性能,但他们忽略了与现有图像编解码器的兼容性,这限制了它们在某些现有系统中的使用。与此相反,所提出的压缩框架考虑到压缩性能和与现有图像编解码器的兼容性。

3.本文提出的压缩框架

在这一部分中,我们首先介绍了压缩框架的体系结构,然后给出了详细的学习算法。

(1)   压缩网络的架构

如图2所示,该压缩的框架包括两个卷积神经网络和一个图像编解码器组成。ComCNN用来为图像编码器产生一个输入图像的压缩表示,保留了图像的结构信息,有利于图像的精确重建。ReCNN用来提高解码图像的质量。这两个卷积神经网络相互协作,并且被同时优化,实现高质量的图像压缩。

1) 压缩卷积神经网络( ComCNN)

   如图3,ComCNN有三个权重层,用来保存原始图像的空间结构有利于后面使用ReCNN对解码图片的精确恢复。ComCNN中使用了卷积和ReLU激活函数的结合,第一层用于执行块提取和表示,从输入图像中提取重叠的图像块。设c 表示图像通道数目,用64个3*3*c大小的滤波器提取64个特征图,ReLU作为非线性激活函数。第二层有两个重要的作用:用步长为2的卷积操作实现下采样和优化前面的特征图,此时64个滤波器的大小为3*3*64,同时,第二层仍有ReLU激活层。最后一层,c个大小为3×3×64的滤波器被用来构造压缩表示。

  

     图3:ComCNN的结构图和不同层的特征图。通过双三次插值解码得到放大的图像。

2) 重建卷积神经网络(RecCNN)

   如图4,RecCNN由20个权重层组成,共有三种层组合:卷积层+ReLU激活层,卷积层+批正则化+ReLU激活层,卷积层。第一层有64个大小为3*3*c的滤波器,产生64个特征图,其后跟一个ReLU激活层。3至19层每层是64个大小为3*3*64的滤波器,这些层的形式是第二种,最后一层是c个3*3*64 的滤波器,用来重建。同时,网络使用残差学习和批正则化来加速训练过程,提高系统性能。压缩图像通过双三次插值被放大到原始图像大小。

 

图4:RecCNN的网络结构以及不同层的特征图,在解码图像上通过双三次插值得到放大图像,

该网络预测一个残差图像,输入的总和与残差得到高质量的恢复图像。

(2) 学习算法

(2)训练ComCNN。我们可以通过迭代优化公式(5)和(13)得到最优的 和 ,根据以上所有推导,在算法1中给出了该算法的完整描述。

 

算法1:训练子网的压缩框架

1:输入:原始图像x

2:初始化:随机初始值 和

3:for t =1  to  T  do

4:     计算公式(2)更新

5:    for   do

6:        通过训练RecCNN计算公式(5),更新

7:    end for

8:    for  ,do

9:        通过训练ComCNN计算公式(13)来更新

10:   end for

11:end for

12:返回: , 和

 

(3) 损失函数

1) ComCNN的训练:给出一组原始图像训练参数 ,我们使用均方差作为损失函数:

   (14)

  其中,N代表批量大小, 代表可训练的参数。

2) RecCNN的训练:已经从ComCNN得到一组压缩表示和原始图像,我们使用均方差作为损失函数:

  1.   (15)

  表示可训练的参数,res(.)表示RecCNN学到的残差图。很明显,它看起来和公式(5)有点不同,但是它们并不矛盾。事实上,它们本质相同,公式(15)以残差的形式表示公式(5)。

4.实验结果

为了评估所提出的压缩方法的性能,我们进行了实验比较,和与后处理滤波和去噪方法相结合标准的压缩方法(例如,JPEG,JPEG 2000和BPG)作比较。五个有代表性的图像去块方法,例如文献【15】,【34】,【17】,【35】和【8】,两个有代表性的图像去噪方法,文献【36】提出的BM3D和文献【37】提出的WNNM,这些方法都具有很好的表现性能。此外,文献【9】提出的ARCNN ,因为它是一个具有里程碑意义的基于深度学习去块方法和实现了最先进的性能,也被选择作为比较。同时,为了证明ComCNN的效能,我们移除ComCNN,只是用RecCNN重建的解码图像。同样,我们采用双三次插值得到与原始图像同样大小的图像同时移除RecCNN来验证ComCNN的效能。所有的比较方法的结果是通过运行原始作者的源代码与最佳参数。通过这一节,我们使用后处理方法的名称来表示比较方法。我们用MatConvNet包【38】来训练本文提出的网络。所有的实验都是在配置为Inter(R) Xeon(R) CPU E5-2670 2.60GHz和 NvidiaTesla K40c GPU的计算机上使用MATLAB平台运行的 。使用GPU训练ComCNN和RecCNN分别大约需要28个小时和一天。

(1) 训练和测试的数据集

根据文献【39】,我们使用400张180*180的图片作为训练集。在训练集图片和它们的增广(以不同角度的翻转和旋转)图片上以步长20进行采样得到了204800 个图像块。我们的实验表明,使用较大的训练集只能带来微不足道的性能改进。测试集,我们使用图5所示的7个图像,这些图在很多文献中被广泛使用。请注意,所有的测试图像都不包括在训练数据集中。

 

图5:测试集

 

(2) 模型初始化

我们使用文献【40】的方法初始化ComCNN网络的参数,使用文献【21】提出的Adam算法, .我们使用128个图像块训练ComCNN50个循环, 50轮的学习率呈指数衰减,从0.01下降到0.0001。RecCNN的权重初始化和梯度更新是和ComCNN相同的。RecCNN使用与ComCNN同一批次大小训练50轮,50轮的学习率呈指数衰减,从0.01下降到0.0001。

(3) 实验结果

在我们的实验里,我们为本文提出的方法和作为比较的方法设置了不同的质量指标(QF)以达到相同的压缩率。对于本文提出的方法,我们首先人工调整被JPEG压缩的由ComCNN提取的压缩表示的QF以达到和对比方法相同的压缩率。然后比较我们的方法和对比方法实验结果的PSNR和SSIM。所有测试图像的对比结果,包括QF=5和QF=10,分别呈现在表一和表二里面,最优的方法被着重标出。

表二

从表一和表二可以看出,QF=5时,我们的方法和目前最优的方法,即文献【8】提出的方法,相比PSNR提高了1.2dB,SSIM提高了0.0227。值得一提的是,我们的方法优于所有的对比方法,包括基于卷积神经网络的里程碑ARCNN(文献【9】)。同时,当QF=10时,我们的方法与ARCNN相比在PSNR和SSIM提高了0.43dB和0.0067。图6展示了不同方法Lena的视觉质量的对比。我们可以看出从标准JPEG直接解码出来的图具有很严重的块效应,文献【34】,【15】,【37】和【36】提出的方法部分移除了块效应,但重建恢复的图像仍有视觉可见的块效应。【17】和【35】比【15】和【36】的结果好一点。但是同时它们都有边缘模糊的现象。文献【8】的方法在PSNR和SSIM的表现更好一点,但是它使得图像过于平滑以至于丢失了一些图像边缘的细节。ARCNN和ReCNN比其他方法的视觉质量好。我们的方法不仅移除了块效应,还保留了图像原本的边缘细节和纹理特征。为了验证ComCNN的效能,我们只单独使用RecCNN重建解码图像。同样的,为了验证RecCNN的效能,我们只使用Com CNN和双三次插值方法。如表一和表二所示,单独使用ComCNN和RecCNN都会带来更差的效果。另外,我们在图7中展示了ComCNN得到的压缩表示,可以看出它保留了原始图像的结构信息,但是它不同于传统的下采样方法。简而言之,ComCNN和RecCNN相互合作才能发挥最好的效果。两个网络相互合作,ComCNN保存原始图像的结构信息为RecCNN提供更好重建基础。我们的测试代码可以在GitHub上获得。

图6。Lena图在QF = 5的情况下的视觉质量的比较。从左到右、从上到下:

原始图像,JPEG(PSNR = 27.33分贝,SSIM = 0.7367),Sun的结果(PSNR = 28.87

分贝,SSIM =0.8061),张(信噪比为29 dB,SSIM =0.8035),任(信噪比为29.07

dB,SSIM =0.8010),BM3D(PSNR = 28.63分贝,SSIM = 0.7837),DicTV(信噪比为

28.07 dB,SSIM =0.7744),wnnm(PSNR = 28.95分贝,SSIM = 0.7947),张(信噪比

为29.31 dB,SSIM = 0.8169),arcnn(PSNR = 29.31分贝,SSIM = 0.8142),RecCNN

(信噪比为29.63dB,SSIM = 0.8195)和框架(PSNR =31.14分贝,SSIM = 0.8486)

 

我们也在JPEG2000和BPG上评估了我们的网络,并且获得了杰出的效果。BPG压缩是基于高效视频编码(HEVC),这被认为是在压缩技术的一大进步。JPEG2000压缩框架,我们测试了在不同的比特率(从0.1bpp到0.4bpp)与JPEG2000的比较。表三给出了与JPEG 2000的比较结果。可以看出,我们的框架明显优于JPEG2000在所有测试比特率的所有测试图像的PSNR和SSIM。从0.1到0.4为BPP,该框架相比对JPEG2000在PSNR和SSIM实现了平均3.06db,2.45db,1.34db,1.09db和0.1047、0.0709、0.0525、0.0435的增益。在图8中,可以看出,所提出的压缩框架比JPEG2000更好地实现了主观性能,特别是在非常低的比特率下。我们的框架保留了更多的高频信息,并在重建图像中恢复锐利的边缘和纯纹理。我们在QP(质量参数)= 43和47时测试BPG编解码器。此外,我们把比特率的压缩框架几乎相同的每个图像。结果见表四。你可以看到,如果我们把RecCNN作为后处理方法,RecCNN 在PSNR和SSIM达到平均0.0168的收益0.81db。我们的网络实现了平均0.0218的收益0.99db PSNR和SSIM同时节省5.22%的比特率。值得注意的是,在我们提出的压缩BPG框架的性能对JPEG和JPEG2000相比不是那么明显,因为BPG已经是一个很好的压缩方法,这可能不是明显的进一步提高。

图7 使用双三次插值的下采样方法和ComCNN产生的压缩表示的视觉效果对比

 

为了表明所提出的压缩方法的有效性,我们分别在数据集set5(文献【23】),set14(【23】),LIVE1(【41】)和数据集General-100上测试我们的方法。值得一提的是,General-100数据集包含100 幅bmp格式的无压缩图,即非常合适压缩任务。结果显示在表六中,从中我们可以看到我们所有的四个测试数据集的压缩性能都比JPEG和JPEG2000更大。

 图8 JPEG2000的主观性能比较当比特率从0.1bpp到0.4bpp Parrot。从左到右、

从上到下,相应的峰值信噪比(dB)和SSIM值(26.05,0.7853),(31.22,0.8895),

(29.96,0.8589),(32.72,0.9242),(32.42,0.8897),(33.48,0.9382),

(34.42,0.9150)和(35.09,0.9480)。

 (3) 运行时间

   表五展示了所有对比方法在CPU或者GPU上处理256*256的灰度图的运行时间。需要注意的是,测试所有方法的GPU运行时间是不现实的。我们可以从表5看出,该框架在CPU和GPU分别只有1.56s和0.017s。我们的压缩框架比其他的后处理方法快。此外,我们还计

算了我们的子网RecCNN运行时间,几乎占据我们的方法的整个运行时间。因为RecCNN有20层,这比只有3层ComCNN更深。

 5.结论

在本文中,我们提出了一种基于神经网络的端到端的两个有效压缩框架,其中一个是用来使用图像编码器编码产生紧凑的中间表示。另一个是利用卷积神经网络高质量重建原始图像。这两个神经网络相互协作,使用一个统一的优化方法训练。实验结果表明,所提出的压缩框架达到了最先进的性能,并且比大多数后处理算法快得多。我们的工作表明,所提出的压缩框架的性能可以显着地提高了应用所提出的框架,这将激励其他研究人员沿着这个方向设计更好的深神经网络的图像压缩。

6.后序

  这项工作是由中国国家重点基础研究发展计划(973计划2015cb351804),中国科学技术委员会(No.17-H863-03-ZT-003-010-01)和中国自然科学基金(No.61572155 和 61672188)资助。

 

Non-local Neural Networks (NLNet) 是一个用于图像和视频处理的深度学习模型,它在处理长距离的空间关系时表现出色。下面是一个使用 TensorFlow 2 实现的 NLNet 模型的示例代码: ```python import tensorflow as tf from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, Add, Input, Lambda, Concatenate from tensorflow.keras.models import Model from tensorflow.keras.regularizers import l2 def non_local_block(x, compression=2, mode='embedded_gaussian', reg=l2(0.)): ''' Non-local block with optional compression and different modes: - 'dot_product': dot product similarity (original paper) - 'embedded_gaussian': embedded Gaussian similarity (default) - 'concatenation': concatenation-based similarity (not recommended) ''' # Get input shape and channels input_shape = tf.shape(x) channels = input_shape[-1] # Define theta, phi, and g theta = Conv2D(channels // compression, 1, use_bias=False, kernel_regularizer=reg)(x) phi = Conv2D(channels // compression, 1, use_bias=False, kernel_regularizer=reg)(x) g = Conv2D(channels // compression, 1, use_bias=False, kernel_regularizer=reg)(x) # Reshape theta and phi to (N, H*W, C') theta = Lambda(lambda x: tf.reshape(x, (input_shape[0], -1, channels // compression)))(theta) phi = Lambda(lambda x: tf.reshape(x, (input_shape[0], -1, channels // compression)))(phi) # Compute similarity between theta and phi if mode == 'dot_product': similarity = Lambda(lambda x: tf.matmul(x[0], x[1], transpose_b=True))([theta, phi]) elif mode == 'embedded_gaussian': theta = Lambda(lambda x: tf.expand_dims(x, 2))(theta) phi = Lambda(lambda x: tf.expand_dims(x, 1))(phi) theta_phi = Add()([theta, phi]) f = Conv2D(1, 1, use_bias=False, kernel_regularizer=reg)(theta_phi) f = Activation('softmax')(f) similarity = Lambda(lambda x: tf.matmul(x[0], x[1]))([f, g]) elif mode == 'concatenation': theta_phi = Concatenate(axis=-1)([theta, phi]) h = Conv2D(channels // compression, 1, use_bias=False, kernel_regularizer=reg)(theta_phi) similarity = Lambda(lambda x: tf.matmul(x[0], x[1], transpose_b=True))([h, g]) # Reshape similarity to (N, H, W, C') similarity = Lambda(lambda x: tf.reshape(x, (input_shape[0], input_shape[1], input_shape[2], channels // compression)))(similarity) # Compute output y = Conv2D(channels, 1, use_bias=False, kernel_regularizer=reg)(similarity) y = Add()([y, x]) y = BatchNormalization()(y) y = Activation('relu')(y) return y def build_nlnet(input_shape, num_classes, num_blocks=5, compression=2, mode='embedded_gaussian', reg=l2(0.)): ''' Build NLNet model with optional number of blocks, compression, and mode. ''' # Define input inputs = Input(shape=input_shape) # Initial convolution x = Conv2D(64, 3, padding='same', use_bias=False, kernel_regularizer=reg)(inputs) x = BatchNormalization()(x) x = Activation('relu')(x) # Non-local blocks for i in range(num_blocks): x = non_local_block(x, compression=compression, mode=mode, reg=reg) # Final convolution and pooling x = Conv2D(128, 1, use_bias=False, kernel_regularizer=reg)(x) x = BatchNormalization()(x) x = Activation('relu')(x) x = Conv2D(num_classes, 1, use_bias=False, kernel_regularizer=reg)(x) x = BatchNormalization()(x) x = Activation('softmax')(x) x = Lambda(lambda x: tf.reduce_mean(x, axis=(1, 2)))(x) # Define model model = Model(inputs=inputs, outputs=x) return model ``` 此代码实现了一个用于图像分类的 NLNet 模型,其中包含多个非局部块。该模型使用可配置的压缩因子和模式,并支持 L2 正则化。要使用此代码,请调用 `build_nlnet()` 函数并传递输入形状、类别数以及其他可选参数。例如: ```python input_shape = (224, 224, 3) num_classes = 1000 model = build_nlnet(input_shape, num_classes, num_blocks=5, compression=2, mode='embedded_gaussian', reg=l2(0.0001)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值