做一个图像分类任务(二)预测单张图像-英文

【飞桨】【图像分类】【PaddlePaddle】蝴蝶图像识别 基于PaddlePaddle2.0的蝴蝶图像识别分类——利用预训练残差网络ResNet101模型 1. 蝴蝶识别分类任务概述 人工智能技术的应用领域日趋广泛,新的智能应用层出不穷。本项目将利用人工智能技术来对蝴蝶图像进行分类,需要能对蝴蝶的类别、属性进行细粒度的识别分类。相关研究工作者能够根据采集到的蝴蝶图片,快速识别图中蝴蝶的种类。期望能够有助于提升蝴蝶识别工作的效率和精度。 2. 创建项目和挂载数据 数据集都来源于网络公开数据(和鲸社区)。图片中所涉及的蝴蝶总共有9个属,20个物种,文件genus... 阅读详情

建立目录

用来存放测试的图片与结果

# 建立目录
if os.path.exists('test_img'):
    print('{} is exited'.format('test_img'))
else:
    # 存放测试图片
    os.mkdir('test_img')

if os.path.exists('output'):
    print('{} is exited'.format('output'))
else:
    # 存放结果文件
    os.mkdir('output')

代码

使用pytorch自带的 resnet18 模型来预测单张图片的类别,其流程如下:

  • 载入数据集
  • 对图像进行预处理
  • 模型预测
  • softmax输出结果
  • 对结果进行处理
# coding:gbk
import os
from tkinter import N
from tkinter.tix import InputOnly
from tkinter.ttk import LabeledScale
from tokenize import Ignore
import cv2
import pandas as pd
import numpy as np
import torch
import matplotlib.pyplot as plt
from torchvision import models
from torchvision import transforms
from PIL import Image
import torch.nn.functional as F
import matplotlib
from IPython.display import display
# 预训练图像分类模型预测单张图像-英文
def predict_single_pic_en(img_path,output_path,csv_path):
    # 使用GPU
    device=torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
    print('device:',device)
    model=models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1)
    # dir(models)# 可以看到所有的模型
    model=model.eval()
    model=model.to(device)
    # 图像预处理:测试集图像预处理-RCTN:缩放裁剪、转Tensor、归一化 只接收pillow格式的图像
    test_transform=transforms.Compose([transforms.Resize(256),
                                    transforms.CenterCrop(224),
                                    transforms.ToTensor(),
                                    transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225]) ])
    # 载入测试集
    img_pil=Image.open(img_path)
    # print(img_pil)
    # print(np.array(img_pil).shape)

    # 对图像预处理
    input_img=test_transform(img_pil)
    print(input_img.shape)
    input_img=input_img.unsqueeze(0).to(device)
    print(input_img.shape)
    # 前向传播,得到所有类别的logit预测分数
    pred_logits=model(input_img)
    # print(pred_logits)
    pred_softmax=F.softmax(pred_logits,dim=1)
    # print(pred_softmax)
    # 对预测结果进行分析
    # 绘制置信图
    confidence_map(pred_softmax,img_path)
    # 取预测结果前10的
    n=10
    show_result_on_pic(pred_softmax,img_path,output_path,csv_path,n)
    # 图片和柱状图一起显示
    show_result_with_bar(output_path,csv_path,pred_softmax)
    
# 测试代码
img_path='test_img/02.webp'
output_path='output/img_pred.jpg'
csv_path='imagenet_class_index.csv'
predict_single_pic_en(img_path,output_path,csv_path)

对预测结果绘制置信图

# 绘制置信图
def confidence_map(pred_softmax,img_path):
    # 中文字体
    matplotlib.rc('font',family='SimHei')
    # 用来正常显示负号
    plt.rcParams['axes.unicode_minus']=False
    x=range(1000)
    y=pred_softmax.cpu().detach().numpy()[0]
    # 绘制各个类别置信度的柱状图
    plt.figure(figsize=(8,4))
    plt.bar(x,y,alpha=0.5,width=0.3,color='yellow',edgecolor='red',lw=3)
    # y轴取值范围
    plt.ylim([0,1.0])
    plt.xlabel('Class',fontsize=20)
    plt.ylabel('Confidence',fontsize=20)
    # 坐标文字大小
    plt.tick_params(labelsize=16)
    plt.title(img_path,fontsize=25)
    plt.show()

输出结果:
在这里插入图片描述

把预测结果写在原图和表格上

  • top_n=torch.topk(pred_softmax,n):取tensor的topk元素(降序后的前n个元素值以及索引)
  • pred_ids=top_n[1].cpu().detach().numpy().squeeze():
    • cpu():将数据迁移到CPU中;
    • detach():阻断反向传播;
    • numpy():将tensor转为numpy数据;
    • squeeze():将数组的形状中删除单维度条目,即把shape中维度为1的删掉。
# 把结果写在图像上
def show_result_on_pic(pred_softmax,img_path,output_path,csv_path,n=10):
    # 取置信度最大的n个结果
    top_n=torch.topk(pred_softmax,n)
    # 解析出类别
    pred_ids=top_n[1].cpu().detach().numpy().squeeze()
    # 解析置信度
    confs=top_n[0].cpu().detach().numpy().squeeze()
    # 载入imageNet1000图像分类标签
    df=pd.read_csv(csv_path)
    idx_to_labels={}
    for _,row in df.iterrows():
        idx_to_labels[row['ID']]=[row['wordnet'],row['class']]

    # 写到表格中
    pred_excel(idx_to_labels,pred_ids,confs,n)

    # 把分类的结果写在原图上
    # img_bar=cv2.imread(img_path)
    # 解决中文路径的问题
    img_bgr = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8),-1)
    for i in range(n):
        # 获取类别名称
        class_name=idx_to_labels[pred_ids[i]][1]
        # 获取置信度
        confidence=confs[i]*100
        text='{:<15}{:>.4f}'.format(class_name,confidence)
        # print(text)
        # 图片,文字,左上角坐标,字体,bgr颜色,线宽
        img_bgr=cv2.putText(img_bgr,text,(24,50+40*i),cv2.FONT_HERSHEY_SIMPLEX,1.25,(0,0,255),2)

    cv2.imwrite(output_path,img_bgr)
    # 读取
    img=cv2.imread(output_path)
    cv2.imshow('Image',img)
    cv2.waitKey(5000)
    cv2.destroyAllWindows()

# 图像和柱状图一起显示
def show_result_with_bar(output_path,csv_path,pred_softmax):
    # 中文字体
    matplotlib.rc('font',family='SimHei')
    # 用来正常显示负号
    plt.rcParams['axes.unicode_minus']=False
    fig=plt.figure(figsize=(18,6))
    # 绘制左图-预测图
    ax1=plt.subplot(1,2,1)
    # 解决中文路径的问题
    img_pred_bgr = cv2.imdecode(np.fromfile(output_path, dtype=np.uint8),-1)
    img_pred=cv2.cvtColor(img_pred_bgr,cv2.COLOR_RGB2BGR)
    ax1.imshow(img_pred)
    ax1.axis('off')

    # 绘制右图-柱状图
    ax2=plt.subplot(1,2,2)
    # 载入imageNet1000图像分类标签
    df=pd.read_csv(csv_path)
    x=df['ID']
    y=pred_softmax.cpu().detach().numpy()[0]
    ax2.bar(x,y,alpha=0.5,width=0.3,color='yellow',edgecolor='red',lw=3)
    # 设置y轴的取值范围
    plt.ylim([0,1.0])
    plt.title('{} Classification'.format(img_path),fontsize=30)
    plt.xlabel('Class',fontsize=20)
    plt.ylabel('Confidence',fontsize=20)
    # 设置坐标文字大小
    ax2.tick_params(labelsize=16)
    # 布局调整器,能够自动调整子图的参数,使得
    plt.tight_layout()
    plt.show()
    fig.savefig('output/预测图+柱状图.jpg')

# 预测结果表格输出
def pred_excel(idx_to_labels,pred_ids,confs,n=10):
    # 预测结果表格
    pred_df=pd.DataFrame()
    for i in range(n):
        # 类别名称
        class_name=idx_to_labels[pred_ids[i]][1]
        # 类别号
        label_idx=int(pred_ids[i])
        # WordNet
        wordnet=idx_to_labels[pred_ids[i]][0]
        # 置信度
        confidence=confs[i]*100
        # 添加一行
        pred_df=pred_df.append({'Class':class_name,'Class_ID':label_idx,'Confidence(%)':confidence,'WordNet':wordnet},ignore_index=True)
    # 展示预测表格
    display(pred_df)

输出结果:
在这里插入图片描述

在这里插入图片描述

这里的代码与github上可能有一丢丢不同,大家想看全面点还是要看github上原版的代码以及原作者的视频讲解,博主这里只是博主按需学习的一些经验哦!
声明:这里只是做一个图像分类任务,不作为商业用途,不涉及任何利益交易,甚至不作为毕业设计。侵权可以删哦!

深度学习基础题1:编写一个简单的图像分类器 当然,深度学习的应用还远远不止图像分类,它在计算机视觉和人工智能领域中有着广泛的应用,可以实现目标检测、图像生成等任务。在前向传播过程中,我们使用ReLU激活函数来引入非线性性,并最终输出一个长度为10的向量,代表图像分类的概率分布。在这个例子中,我们将使用一个简单的卷积神经网络(Convolutional Neural Network,CNN)作为我们的模型。在这道题目中,我们将编写一个简单的图像分类器,使用深度学习模型对图像进行分类。这样,我们就完成了一个简单的图像分类器的编写。 阅读详情

相关推荐

CANoe/CANalyzer新手必看:从零配置到报文分析的完整流程(附B站官方教程实操)

本文为CANoe/CANalyzer新手提供从零配置到报文分析的完整流程指南,涵盖硬件连接、工程配置、报文捕获及信号级分析等关键步骤。通过详细的实操案例和B站官方教程,帮助工程师快速掌握汽车电子总线分析工具的核心应用,提升诊断效率与通信系统理解。

y7z8a的博客 773

利用词袋模型和SVM进行图片分类 实验报告

利用词袋模型和SVM进行图片分类 实验报告1. 任务定义2. 实验环境3. 算法说明3.1 初始化3.2 提取SIFT特征3.3 生成词汇字典3.4 提取BOW特征描述3.5 使用SVM进行训练3.6 模型评估4. 结果分析4.1 LinearSVC分类报告以及混淆矩阵4.2 调整参数后分类效果4.3 总结 1. 任务定义 任务: 编写一个图像分类系统,能够对输入图像进行类别预测。具体的说,利用数据库的 2250张 训练样本进行训练;对测试集中的2235张样本进行预测。 数据库说明: scene_c

回锅肉炒肉的博客 4457

libfranka---joint_impendence_control例程分析

joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释。 核心部分: // Set and initialize trajectory parameters. const double radius = 0.05; const double vel_max = 0.25; const double acceleration_time = 2.0; const double run_time = 20.0; d

weixin_41567783的博客 1121

卷积神经网络(CNN)实现图像分类——Python

输入 2 对测试集整体进行测试,得出准确率(10秒左右)本代码使用在线MNIST数据库,无需本地MNIST数据库!本程序包含python库较多,请自行配置(pip),如果是完成大作业需求,请各位自己适配!模型训练大概需要2分钟,请耐心等候!输入图片要求是28*28像素。回复其他数字会自动退出程序。输入其他数字自动退出程序。

桃木山人的博客 7237

手把手教你配置SAP EWM HU类型及号段分配(含常见错误排查)

本文详细介绍了SAP EWM系统中HU类型及号段分配的配置方法,包括环境准备、包材主数据配置、存储类型关联及号段管理。通过实战案例和常见错误排查,帮助用户高效完成HU配置,提升仓储管理效率。重点讲解了EWM后台配置和号段配置的关键步骤与技巧。

weixin_33670786的博客 443

【OpenClaw从入门到精通】第63篇:A股智能分析实战——用OpenClaw搭建个人量化研究助手(2026实测版)

2026年,OpenClaw已成为量化投研圈的现象级工具,八家头部券商密集发布专题研报力证其价值。传统量化投研面临技术门槛高、重复劳动多、策略迭代慢、非结构化数据处理弱四大痛点,而OpenClaw通过“AI智能体+金融Skill+量化API”的融合,实现了从数据获取、策略生成、回测验证到持仓监控的全流程自动化。本文基于2026年最新实测经验,完整呈现个人量化研究助手搭建:从阿里云部署、阿里云百炼API配置(含解析失败解决方案)、Tushare数据源接入,到PB-ROE价值选股、研报复现、自动化回测、持仓监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1059

手把手教你用 Python 搭建一个图像分类器

我们需要设置 test_size ,它是我们用于测试集数据的一个百分比,并且,通过指定 random_state,我们可以使拆分的结果可重复进行以进行后续测试。对于我们的图像,我们首先创建一个空的 numpy 数组,其长度等于训练集中图像的数量。我们有我们的图像和标签到一个可接受的形式,现在我们必须从文件路径加载我们的图像。为了训练我们的模型,我们将需要下载大量比萨饼和意大利面的图像,这是一个可能非常繁琐的任务,通过 bing-image-downloader Python 库可以非常容易地完成。

机器学习社区 3135

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

实战项目1:构建一个图像分类器 - 深度学习教程

这篇博客文章详细介绍了如何构建一个图像分类器。内容包括从理解图像分类、准备和预处理数据,到搭建深度学习环境、构建和训练卷积神经网络模型,最后进行模型评估。通过这些步骤,新手也能轻松理解和实现图像分类任务。

shandianfk_com的博客 978

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2322

【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(1)

clusterProfiler: universal enrichment tool for functional and comparative studyClusterProfiler: 用于功能和比较研究的通用富集工具总览1. 引言1.1 术语1.1.1 基因集和通路1.1.2 基因同源(GO)1.1.3 京都基因与基因组百科全书(KEGG)1.1.4 其他基因集2. 功能富集分析方法2.1 过度表征分析(Over Representation Analysis)2.2 基因集富集分析(Gene Se

小哲的博客 1365

深度学习pytorch实战六:ResNet50网络图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介、训练集与测试集划分 2.模型相关知识 3.model.py——定义ResNet50网络模型 4.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 5.predict.py——利用训练好的网络参数后,用自己找的图像进行分类测试

qq_55433305的博客 2万+

YOLOv12改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣ 什么!不知道如何改进模型⁉️ 本专栏所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行,性价比极高。2️⃣ 找不到合适的模块⁉️ 所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,并进行二次创新,新颖度高,创新度高,能够适应不同的任务场景。3️⃣ 不确定自己改进的步骤、结果是否正确⁉️ 订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容,非常适合新手。4️⃣ 团队内发表数篇SCI论

Limiiiing的博客 2万+

二、预训练模型预测(Datawhale组队学习)

本篇文章主要介绍了用预训练模型进行图像分类预测的步骤以及三个应用场景,包括对单张图片的预测、视频文件的预测和摄像头实时画面的预测。无论是针对哪种任务,都要载入预训练好的图像分类模型、对图像进行预处理。针对单张图片的预测任务,可以利用预训练的模型得到所有类别的预测概率,从而选择概率最大的类别针对视频文件的预测任务,我们需要对视频逐帧处理(图像分类任务),再把每一帧串成视频文件摄像头实时画面预测任务,和视频文件的预测任务类似,只不过是通过摄像头得到每一帧的画面。

小刘的博客 1685

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[Pytorch图像分类全流程实战]Task02:预训练模型预测

并不适合直接用来学习Pytorch,主要面向于Pytorch的运用,视频中基本上就是将流程过一遍,讲的没有想象中那么细,可能是因为自己毕竟也有蛮多东西是本身就不懂的,然后预训练的方面也很全,图片、视频、实时画面都照顾到了,还有英文与中文的问题,总的来说还是干货满满的

m0_59286668的博客 984

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

多标签图像分类任务的评价方法-mAP

另一篇文章: 1、mAP 介绍 :https://blog.youkuaiyun.com/ytusdc/article/details/86496644 2、目标检测评价标准-AP mAP:https://arleyzhang.github.io/articles/c521a01c/ 3、COCO目标检测测评指标:https://www.jianshu.com/p/d7a06a720a2b 先...

ytusdc的博客 1205

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习pytorch实战五:基于ResNet34迁移学习的方法图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介 2.模型相关知识 3.split_data.py——训练集与测试集划分 4.model.py——定义ResNet34网络模型 5.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 6.predict.py——利用训练好的网络参数后,用自己找的图像进行分类测试

qq_55433305的博客 7253

[Pytorch图像分类全流程实战]Task07:模型部署

通常我们在训练模型时可以使用很多不同的框架,比如有的同学喜欢用 Pytorch,有的同学喜欢使用TensorFLow,也有的喜欢wXNet,以及深度学习最开始流行的caffe等等,这样不同的训练框架就导致了产生不同的模型结果包,在模型进行部署推理时就需要不同的依赖库,而且同一个框架比如tensorflow不同的版本之间的差异较大,为了解决这个混乱问题,LF Al这个组织联合Facebook, MicroSoft等公司制定了机器学习模型的标准,这个标准叫做ONNX

m0_59286668的博客 867

易康——图像分类

目录 分割方法 分割方法 易康对于图像的分割有棋盘分割(chessboard segmentation);四叉树分割(Quadtree-based segment);多尺度分割(multiresolution segmentation);其中多尺度分割最为常用,其中多尺度分割有几个关键的设置参数: scale parameter 确定生成的影像对象所允许的最大异质度,值越大则生成的影像对象的尺寸越大,反之则越小。 Image Layer weights 用来设置参与分割的波段的权

By 8609

PaddleFormers 图像分类模块实战:基于 PaddleHub 的 DPN68 ImageNet 模型推理指南

本文聚焦于 PaddleFormers 开源仓库中 `modules/image/classification/dpn68_imagenet` 图像分类模块,系统讲解 DPN(Dual Path Networks)双路径网络模型的基础知识、环境依赖、安装方式,以及通过命令行与 Python 接口进行图像分类预测的完整流程。读完本文,你将能够独立完成 PaddleHub 图像分类模块的安装、单张图片

gitblog_00734的博客 845

CLIP 零样本图像分类实战指南:5 分钟看到第一个预测,小标注上线

CLIP(Contrastive Language-Image Pretraining)是一个靠海量"图片+描述"配对训练出来的模型,它的核心本事是:你只用一句英文写出类别名,它就能对从没见过的类别做图像分类,全程不需要一张标注图。这篇指南带你完成四件事:先 30 秒判断你的任务值不值得用它,再跑通第一个预测,然后按投入成本从低到高三次加杠杆提升效果,最后用一份可勾选的清单确认能否上线。 [![

gitblog_01101的博客 802

图像分类和检测一体化平台功能介绍

这个系统利用周末或晚上时间陆陆续续做了将近两个月,基本上实现了从数据标注、标注格式转换、数据集划分、数据增强、训练、预测、半自动标注的完整流程,涵盖了图像分类和图像检测,功能超越了市面上绝大多数工具,界面不一定很美观,代码不一定很优雅,所以在开源方面比较犹豫,先把每个部分陆陆续续放出来吧,界面和代码框架,看看反应如何。:包括目标检测标注、训练、标注格式转换、图像增强、数据集划分、预测以及半自动标注等功能,满足从数据准备到模型应用的全流程需求。

不胜人生一场醉 788

深度学习图像分类开源项目(2)-使用keras深度学习图像分类算法

基于VGG16网络模型对图像进行识别分类 随着人工智能热潮的发展,图像识别已经成为了其中非常重要的一部分。图像识别是指计算机对图像进行处理、分析,以识别其中所含目标的类别及其位置(即目标检测和分类)的技术。其中图像分类是图像识别的一个类,是给定一幅测试图像,利用训练好的分类器判定它所属的类别。 该项目分为三部分: 第一部分:系统驱动的安装与环境的搭建 第二部分:利用VGG16网络进行模型训练与预...

风口上的传奇 1465

深度学习pytorch实战四:GoogLeNet图像分类篇自建花数据集图像分类(4类)超详细代码

GoogLeNet图像分类篇自建花数据集图像分类(4类)超详细代码 1.自建数据集与划分训练集与测试集 2.模型相关知识 3.model.py——定义GoogLeNet网络模型 4.train.py——加载数据集并训练,计算损失值loss,测试集计算accuracy,保存训练好的网络参数 5.predict.py——利用训练好的网络参数后,用自己找的图像进行分类测

qq_55433305的博客 3187

机器学习 TensorFlow2.0 教程-图像分类

在机器学习 tensorflow 2 的hello world一文里,介绍了一个最简单的tensorflow 2编程。本文就在其的基础上,来个实际的例子:图像分类。 总共包含10个类别中的70,000个灰度图像。使用60,000张图像来训练网络,用10,000张图像让机器判断,以评估网络学习图像分类的准确程度。当然这些图像都是现成提供,用于我们学习。 原始的代码和教程 英文:https:...

曾立文的博客 4200

(202301)pytorch图像分类全流程实战Task2:预训练模型预测

但是我的本身与ImageNet的数据差别过大了,是无法准确识别的。不过倒是可以判断出一些零件像什么。另外自己训练了一个权重,置信度很高,几乎达到了100.

raw_inputhello的博客 893
上一篇: 做一个图像分类任务(一)准备数据集
下一篇: idea+tomcat+mysql 从零开始部署Javaweb项目(保姆级别)
@@老胡
博客等级 码龄7年 291粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值