人工智能图像识别技术实战与详解

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:图像识别是人工智能的关键部分,赋予机器理解视觉信息的能力。本文将探讨图像识别的基本概念、工作原理及实际应用,涵盖从基础技术如预处理、特征提取、分类器设计到深度学习中的卷积神经网络。同时,介绍了图像识别在多个领域的应用,并展望了未来发展趋势。本资料包提供论文、代码示例和教程,助力读者深入掌握图像识别技术。

1. 图像识别基本概念与应用

1.1 图像识别的定义

图像识别是计算机视觉领域的一个核心问题,它涉及使计算机能够从图像或视频中识别和处理对象的任务。图像识别技术使得计算机能够模拟人类视觉系统对图像进行处理和理解,从而实现对图像内容的自动分类和辨识。通过算法对图像进行分析,计算机能够识别出图像中的特定模式、物体、场景甚至是人的面部表情。

1.2 图像识别的流程

图像识别的过程通常包括以下几个步骤:
1. 图像获取 :使用相机或其他图像采集设备获取原始图像数据。
2. 预处理 :对图像进行灰度化、二值化、滤波、直方图均衡化等预处理操作,以提高图像质量并突出需要识别的特征。
3. 特征提取 :从预处理过的图像中提取有助于识别的关键信息,例如边缘、角点或纹理特征。
4. 分类器设计与训练 :根据提取的特征训练分类器,以便它可以区分不同的图像或图像中的对象。
5. 应用实现 :将训练好的模型应用于实际问题,例如人脸识别、医疗影像分析或交通标志识别。

1.3 图像识别的应用领域

图像识别技术广泛应用于多个领域,包括但不限于:
- 安全监控 :用于身份验证、异常行为检测、交通监控等。
- 医疗诊断 :辅助医生分析X光片、MRI图像等,提高诊断准确性。
- 自动驾驶 :车辆周围环境感知、交通标志识别、行人检测等。
- 工业自动化 :产品质量控制、缺陷检测、机器人视觉引导等。

接下来,我们将深入探讨图像预处理技术,这是图像识别流程中的一个重要环节,对最终识别效果具有重大影响。

2. 图像预处理技术详解

2.1 图像预处理的重要性

图像预处理是图像识别领域的基础步骤,它的目的是为了提高图像质量,改善后续处理步骤的性能。预处理可以消除噪声、提高图像对比度、增强图像特征等,从而使得最终的识别过程更加稳定、准确。

2.1.1 图像预处理的目标和作用

图像预处理的主要目标包括:

  • 提高图像质量 :通过调整亮度、对比度等,提升图像的视觉效果。
  • 去噪 :去除图像采集和传输过程中产生的噪声。
  • 特征增强 :突出图像中的关键特征,如边缘、角点等,以便于后续的特征提取。

图像预处理的作用在于为图像识别的其他环节奠定基础。例如,如果图像中存在大量噪声,可能会导致特征提取不准确,进而影响分类器的性能。

2.1.2 常见的图像噪声及消除方法

常见的图像噪声包括:

  • 高斯噪声 :图像传感器在低照明条件下产生的随机噪声。
  • 椒盐噪声 :图像在传输过程中由错误的信号引起的白点或黑点。
  • 均匀噪声 :由于图像传感器和电路的问题,使得图像中出现亮带或暗带。

消除噪声的方法主要有:

  • 中值滤波 :通过替换目标像素周围的像素值中值,来达到平滑图像的效果。
  • 高斯滤波 :应用高斯分布来模糊图像,可以有效去除高斯噪声。
  • 双边滤波 :在平滑的同时保持边缘信息,适合去除椒盐噪声。

2.2 图像预处理的基本技术

2.2.1 灰度化、二值化和直方图均衡化
  • 灰度化 :将彩色图像转换为灰度图像,减少后续处理的计算量。
  • 二值化 :将图像转换为黑白两色,常用于文本或图像分割。
  • 直方图均衡化 :调整图像的对比度,使图像的亮度分布均匀。
from skimage import io, color, filters, exposure

# 灰度化
image = color.rgb2gray(io.imread('path_to_image.jpg'))

# 二值化
threshold_value = filters.threshold_otsu(image)
binary_image = image > threshold_value

# 直方图均衡化
equalized_image = exposure.equalize_hist(image)
2.2.2 图像滤波与边缘检测
  • 图像滤波 :应用卷积核对图像进行平滑处理,以去除噪声。
  • 边缘检测 :通过边缘检测算子识别图像中的边界。
from skimage.filters import sobel
from skimage.util import view_as_blocks
from skimage.feature import canny

# 图像滤波示例:使用Sobel滤波器
edges = sobel(image)

# 边缘检测示例:使用Canny边缘检测
canny_edges = canny(image)
2.2.3 图像缩放、旋转和裁剪
  • 图像缩放 :调整图像的分辨率。
  • 图像旋转 :改变图像的朝向。
  • 图像裁剪 :去除不必要或干扰区域的图像部分。
from skimage.transform import resize, rotate, rescale

# 图像缩放
resized_image = resize(image, (200, 200))

# 图像旋转
rotated_image = rotate(image, angle=45)

# 图像裁剪示例
cropped_image = image[100:200, 100:200]

2.3 高级图像预处理技术

2.3.1 图像增强技术

图像增强技术可以通过特定算法改善图像的视觉质量,使其更适合人眼或机器识别。例如:

  • 局部对比度增强 :通过直方图规定化,增强图像局部区域的对比度。
  • 亮度和对比度调整 :手动调整图像的亮度和对比度。
from skimage.exposure import rescale_intensity

# 局部对比度增强
enhanced_image = rescale_intensity(image, out_range=(0, 255))

# 亮度和对比度调整
def adjust_brightness_contrast(image, alpha=1.0, beta=0):
    return alpha * image + beta
2.3.2 图像的特征点检测与描述

特征点检测与描述是图像预处理中的一项高级技术,它通过识别图像中的关键点并为每个关键点赋予一个描述符来实现。常见的特征检测算法包括:

  • SIFT (尺度不变特征变换):检测图像中的尺度不变特征。
  • SURF (加速鲁棒特征):在SIFT基础上进行了优化,提高了算法的速度。
from skimage.feature import ORB, corner_harris, corner_subpix, corner_peaks

# 使用ORB检测特征点和描述符
orb = ORB()
keypoints, descriptors = orb.detect_and_extract(image)

# 使用Harris检测角点
corners = corner_harris(image)
coords = corner_peaks(corners, min_distance=5)
coords_subpix = corner_subpix(image, coords, window_size=13)

图像预处理技术是图像识别的必要前提,它直接影响到最终的识别效果。接下来的章节中,我们将进一步深入探讨特征提取方法,这是连接预处理和图像识别模型的关键步骤。

3. 特征提取方法

在本章节中,我们将深入探讨图像识别中的特征提取方法。特征提取是机器学习和深度学习模型能够有效识别图像内容的关键步骤,它涉及从原始图像数据中提取有助于后续分类或识别任务的信息。本章节内容包括传统特征提取方法、深度学习中的特征提取以及特征提取的评价与优化。

3.1 传统特征提取方法

3.1.1 SIFT特征提取

尺度不变特征变换(Scale-Invariant Feature Transform, SIFT)是一种用于图像局部特征描述的算法。由于其在尺度和旋转变化下的不变性,SIFT被广泛应用于图像识别和计算机视觉领域。

import cv2
import numpy as np

def extract_sift_features(image_path):
    img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 读取图片并转换为灰度图
    sift = cv2.SIFT_create() # 创建SIFT检测器
    keypoints, descriptors = sift.detectAndCompute(img, None) # 检测关键点并计算描述子

    return keypoints, descriptors

# 使用示例
keypoints, descriptors = extract_sift_features('path_to_image.jpg')

SIFT算法首先会在不同尺度空间对图像进行处理,然后检测尺度空间极值点,并筛选出稳定的关键点。接下来,算法将为每个关键点计算一个描述子向量,这些向量能够描述关键点周围的局部图像区域。SIFT特征向量具有高度的局部性以及对旋转、尺度缩放、亮度变化的不变性。

3.1.2 HOG特征提取

方向梯度直方图(Histogram of Oriented Gradients, HOG)是一种用于对象检测的特征描述子。它通过计算图像局部区域的梯度方向直方图来表现该区域的形状和结构信息。

from skimage import exposure
from skimage.feature import hog
import matplotlib.pyplot as plt

def extract_hog_features(image):
    fd, hog_image = hog(image, orientations=8, pixels_per_cell=(16, 16),
                        cells_per_block=(1, 1), visualize=True, channel_axis=-1)
    hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10))

    plt.figure()
    plt.subplot(1,2,1)
    plt.imshow(image, cmap='gray')
    plt.axis('off')
    plt.subplot(1,2,2)
    plt.imshow(hog_image_rescaled, cmap='gray')
    plt.axis('off')
    plt.show()
    return fd

# 使用示例
fd = extract_hog_features('path_to_image.jpg')

HOG特征通常用于行人检测算法中。HOG将图像划分为小的连通区域,称为“单元格”;然后计算每个单元格中的梯度直方图,并对周围单元格的梯度信息进行归一化处理,从而增强算法对光照和阴影变化的鲁棒性。

3.2 深度学习中的特征提取

3.2.1 自动编码器与特征学习

自动编码器(Autoencoder)是一种无监督学习的神经网络,它学习将输入数据映射到低维表示,再从低维表示映射回原始数据。自动编码器的隐层可以作为数据的有效特征表示。

from keras.layers import Input, Dense
from keras.models import Model

def build_autoencoder(input_shape, encoding_dim):
    input_img = Input(shape=input_shape)
    encoded = Dense(encoding_dim, activation='relu')(input_img)
    decoded = Dense(input_shape, activation='sigmoid')(encoded)
    autoencoder = Model(input_img, decoded)
    encoder = Model(input_img, encoded)
    autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
    return autoencoder, encoder

# 使用示例
encoding_dim = 32
autoencoder, encoder = build_autoencoder((784,), encoding_dim)

自动编码器的编码器部分学习到的特征可以用于后续的任务,如降维、数据重构和特征提取。

3.2.2 预训练模型的特征提取

预训练的深度学习模型,例如VGG16、ResNet、Inception等,已经针对大规模数据集如ImageNet进行了训练。这些模型的高层特征对于各种图像识别任务非常有用。

from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.preprocessing import image
import numpy as np

def extract_features_from_model(img_path, model):
    img = image.load_img(img_path, target_size=(224, 224)) # 加载并预处理图片
    img_array = image.img_to_array(img)
    img_array = np.expand_dims(img_array, axis=0)
    img_array = preprocess_input(img_array) # 预处理图片以适配预训练模型

    features = model.predict(img_array) # 使用预训练模型提取特征
    return features

# 使用示例
model = VGG16(weights='imagenet')
features = extract_features_from_model('path_to_image.jpg', model)

预训练模型能够提取高阶和抽象的特征,这些特征对于理解图像内容非常有效,可以用于初始化深度网络的权重,加快收敛速度,或者直接用于迁移学习。

3.3 特征提取的评价与优化

3.3.1 特征重要性评估方法

在特征提取后,需要评估提取的特征对于后续任务的重要性。常用的方法包括主成分分析(PCA)、线性判别分析(LDA)等。

from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

def evaluate_feature_importance(data, n_components):
    pca = PCA(n_components=n_components)
    pca_result = pca.fit_transform(data)
    print(f'PCA explained variance: {pca.explained_variance_ratio_}')

    lda = LDA(n_components=n_components)
    lda_result = lda.fit_transform(data, labels)
    print(f'LDA explained variance: {lda.explained_variance_ratio_}')

# 使用示例
evaluate_feature_importance(features, n_components=10)

PCA可以用于降维,而LDA则是一种监督学习的方法,它通过最大化类间散度矩阵和最小化类内散度矩阵来找到最佳的特征空间。

3.3.2 特征降维技术

特征降维技术可以减少特征的数量,降低模型的复杂性,同时尽可能保持数据的完整性。

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

def plot_pca_iris():
    iris = load_iris()
    iris_pca = PCA(n_components=2)
    iris_pca_result = iris_pca.fit_transform(iris.data)
    plt.figure()
    plt.scatter(iris_pca_result[:, 0], iris_pca_result[:, 1], c=iris.target, edgecolor='none', alpha=0.7, cmap=plt.cm.get_cmap('nipy_spectral', 3))
    plt.xlabel('PCA Feature 1')
    plt.ylabel('PCA Feature 2')
    plt.colorbar()
    plt.show()

# 使用示例
plot_pca_iris()

PCA、线性判别分析(LDA)、核主成分分析(Kernel PCA)等都是常用的降维技术。在实际应用中,选择合适的降维方法可以有效提升模型的性能和可解释性。

通过本章节的介绍,我们了解了图像识别中特征提取的重要性以及各种传统和现代的特征提取技术。在后续的章节中,我们将深入探讨如何将这些特征用于图像分类器的设计与训练。

4. 分类器设计与训练

4.1 分类器设计基础

分类器是图像识别系统中的核心组件,它能够根据提取到的特征将图像数据分为不同的类别。为了设计一个有效的分类器,我们首先需要了解一些基础的机器学习分类器及其对应的损失函数和优化算法。

4.1.1 常见的机器学习分类器

在机器学习中,分类器的种类繁多,各有特点和适用场景。以下是一些常见的分类器:

  • 逻辑回归(Logistic Regression) :尽管名字中带有“回归”,但它是一个分类算法。适用于二分类问题,输出一个概率值,表示样本属于某个类别的可能性。
  • 支持向量机(Support Vector Machine, SVM) :通过寻找不同类别数据之间的最优边界来进行分类,适用于线性和非线性问题。
  • 决策树(Decision Tree) :通过构建树状的决策规则来进行分类,模型易于理解,但容易过拟合。
  • 随机森林(Random Forest) :基于多个决策树的集成学习方法,具有很好的泛化能力。
  • 神经网络(Neural Networks) :模仿生物神经网络结构,通过训练多个神经元连接的网络来识别图像中的模式。

在选择分类器时,通常要考虑到问题的复杂性、数据集的大小、计算资源的限制以及模型的可解释性等因素。

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier

# 创建分类器实例
classifiers = {
    'Logistic Regression': LogisticRegression(),
    'SVM': SVC(),
    'Decision Tree': DecisionTreeClassifier(),
    'Random Forest': RandomForestClassifier(),
    'Neural Network': MLPClassifier()
}

# 这里可以添加代码来训练和测试这些分类器
4.1.2 损失函数与优化算法

在训练分类器时,损失函数用于衡量模型预测值与真实值之间的差异。对于分类问题,常用的损失函数包括交叉熵损失(Cross-Entropy Loss)和均方误差损失(Mean Squared Error Loss)等。优化算法则是用于调整模型参数以最小化损失函数,常见的有梯度下降(Gradient Descent)及其变体如随机梯度下降(Stochastic Gradient Descent, SGD)和Adam优化算法等。

# 例如在使用逻辑回归时,损失函数通常是交叉熵损失
# 使用SGD作为优化器
model = LogisticRegression(optimizer='SGD', loss='log')

4.2 训练模型的实践技巧

在设计完分类器基础后,我们进入模型训练阶段。实践技巧是帮助我们更快地训练出高效模型的重要手段。

4.2.1 数据集的划分与扩充

在机器学习和深度学习项目中,数据集的划分是一个基础而重要的步骤。通常,数据集会被划分为训练集、验证集和测试集三个部分。训练集用于模型训练,验证集用于模型调优,测试集则用于最终评估模型的泛化能力。

数据集的扩充是提高模型性能的有效方法之一。通过对原始图像进行旋转、缩放、裁剪或添加噪声等手段,可以增加数据的多样性,提高模型的泛化能力。

from sklearn.model_selection import train_test_split

X_train, X_temp, y_train, y_temp = train_test_split(
    X, y, test_size=0.3, random_state=42
)

X_val, X_test, y_val, y_test = train_test_split(
    X_temp, y_temp, test_size=0.5, random_state=42
)
4.2.2 超参数的调整与模型选择

超参数是模型训练之前设置的参数,它们不会在训练过程中自动学习。超参数的选择对模型性能有很大影响。常用的超参数调整方法包括网格搜索(Grid Search)和随机搜索(Random Search)等。

from sklearn.model_selection import GridSearchCV

# 设置超参数网格
param_grid = {
    'C': [0.1, 1, 10],
    'penalty': ['l1', 'l2']
}

# 使用GridSearchCV进行超参数优化
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 获取最佳参数和最佳分数
best_params = grid_search.best_params_
best_score = grid_search.best_score_

4.3 模型的评估与测试

模型评估与测试是分类器设计与训练阶段的最后步骤,确保模型具有良好的泛化能力。

4.3.1 交叉验证与模型性能评估指标

为了更好地评估模型在未知数据上的表现,我们通常使用交叉验证方法。交叉验证可以减少模型评估结果的方差,提高评估的可靠性。

性能评估指标对于了解模型的表现至关重要。常见的评估指标包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1分数(F1 Score)等。

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 使用交叉验证来评估模型性能
from sklearn.model_selection import cross_val_score

scores = cross_val_score(LogisticRegression(), X, y, cv=10)

# 计算平均准确率
average_accuracy = scores.mean()

# 计算其他性能指标
average_precision = precision_score(y, model.predict(X), average='macro')
average_recall = recall_score(y, model.predict(X), average='macro')
average_f1 = f1_score(y, model.predict(X), average='macro')
4.3.2 面向深度学习的模型测试

面向深度学习的模型测试,特别是图像识别模型,不仅需要评估分类性能,还需关注模型的计算效率和实时性。在实际应用中,还需要考虑部署后的模型在不同硬件平台上的表现。

import torch
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torchvision.datasets import ImageFolder
from torchvision.models import resnet18

# 定义数据预处理
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

# 加载测试数据集
test_dataset = ImageFolder(root='path_to_test_dataset', transform=transform)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)

# 使用预训练模型
model = resnet18(pretrained=True)
model.eval()

# 测试模型
correct = 0
total = 0

with torch.no_grad():
    for images, labels in test_loader:
        outputs = model(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

accuracy = correct / total
print(f'Accuracy of the network on test images: {accuracy * 100}%')

在这一章中,我们深入了解了分类器设计和训练的各个方面,从基础的机器学习分类器到深度学习模型,再到模型评估和测试的方法。这些知识构成了图像识别系统构建的重要基础,能够帮助我们设计和训练出性能优秀的分类器。在后续的章节中,我们将探讨卷积神经网络(CNN)在图像识别领域的应用,并展望图像识别技术的未来趋势与挑战。

5. 图像识别技术的深度学习应用

在深度学习领域,卷积神经网络(CNN)已成为图像识别的核心技术。本章将深入探讨CNN的工作原理、模型构建以及优化策略,并介绍其他深度学习架构如RNN和GAN在图像识别和生成中的应用。

5.1 卷积神经网络(CNN)详解

5.1.1 CNN的基本结构和工作原理

CNN是一种深度学习模型,专门用于处理具有网格结构的数据,例如图像(2D网格)或视频(3D网格)。它能够自动并有效地从图像中提取特征,并用于分类和检测任务。

CNN的核心组件包括卷积层、池化层和全连接层。卷积层利用一组学习的过滤器对输入图像进行卷积操作,这些过滤器能够捕捉到图像中的局部特征。池化层用于降低特征维度,从而减少计算量和防止过拟合。全连接层在CNN的末端,负责将学习到的特征映射到最终的输出。

CNN工作原理的精炼步骤如下:

  1. 输入图像经过卷积层提取初级特征,如边缘和角点。
  2. 随后的卷积层提取更复杂的特征,如纹理和形状。
  3. 池化层减小特征的空间尺寸,增强特征的鲁棒性。
  4. 展平后的特征向量送入全连接层进行分类或回归任务。

5.1.2 网络层类型及其作用

在CNN中,不同类型的层具有不同的作用和特点:

  • 卷积层:主要负责提取图像特征。通过学习过滤器,它可以识别图像中的局部模式。
  • 池化层:降低特征的空间维度,减少参数数量和计算量,并提供一定程度上的空间不变性。
  • ReLU层:通常跟随在卷积层之后,为网络引入非线性,加速训练过程并帮助缓解梯度消失问题。
  • 全连接层:将卷积层和池化层提取的高维特征向量转换为类别分数或其他输出。

5.2 CNN在图像识别中的应用案例

5.2.1 实际图像识别任务的CNN模型搭建

为了搭建一个用于图像识别的CNN模型,我们需要选择合适的网络架构,比如经典的AlexNet、VGGNet、ResNet等,然后进行模型训练和验证。

搭建CNN模型的步骤大致如下:

  1. 选择基础架构:选择一个预训练好的CNN模型作为起点,例如ResNet-50。
  2. 微调网络:根据具体的图像识别任务调整网络的最后几层。
  3. 数据预处理:将输入图像调整为模型所需的尺寸,并执行标准化等预处理步骤。
  4. 模型训练:使用训练数据对模型进行训练,通常使用反向传播算法。
  5. 模型验证:在验证集上评估模型性能,调优超参数直至取得最佳效果。

5.2.2 面向不同识别任务的CNN优化策略

不同的图像识别任务可能需要不同的优化策略。例如,在医学图像分析中,可能需要更高的模型精度和解释性,而在实时视频监控中,则更关注模型的运行速度。

优化CNN的一些策略包括:

  • 数据增强:通过旋转、缩放、裁剪等方式扩充数据集,提高模型泛化能力。
  • 调整网络结构:根据任务需求添加或删除卷积层,调整过滤器大小和数量。
  • 正则化技术:使用Dropout、权重衰减等手段防止过拟合。
  • 迁移学习:利用在大型数据集(如ImageNet)上预训练的模型,快速适应新任务。

5.3 其他深度学习架构在图像识别中的应用

5.3.1 循环神经网络(RNN)与图像识别

尽管RNN主要应用于序列数据,如文本和时间序列,但其变体LSTM和GRU已被探索用于图像识别。特别是结合CNN使用时,RNN可以处理具有时间或空间关系的图像数据,如视频帧。

5.3.2 生成对抗网络(GAN)在图像生成中的应用

GAN由两部分组成:生成器和判别器。生成器负责生成接近真实图像的数据,而判别器则试图区分真实图像和生成图像。GAN在图像生成、超分辨率和图像修复等领域有着广泛的应用。

利用GAN进行图像识别的最新趋势是使用生成器进行数据增强,以及结合判别器进行更准确的特征学习。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:图像识别是人工智能的关键部分,赋予机器理解视觉信息的能力。本文将探讨图像识别的基本概念、工作原理及实际应用,涵盖从基础技术如预处理、特征提取、分类器设计到深度学习中的卷积神经网络。同时,介绍了图像识别在多个领域的应用,并展望了未来发展趋势。本资料包提供论文、代码示例和教程,助力读者深入掌握图像识别技术。


本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值