如今人工智能的发展愈发迅速,从最开始的数字识别到现在的各类大模型,多多少少都涉及到分类的过程。对于零基础的初学者而言,利用现有的工具和框架来快速入门并实现自己的分类任务,是一个高效且实用的方法。本文将介绍如何使用MindCV进行零基础的分类任务实现。
MindCV源码
MindCV简介
MindCV是一个基于昇思 MindSpore AI框架开发的,致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重和训练策略。我们可以用这个模型来微调自己想要的分类效果。
读取自己的数据集并处理
根据自己的数据集编写读取和处理数据集的代码。在MindCV套件中,也有创建数据集的函数,比如create_dataset,可以直接调用进行数据集的预处理,但是相应的数据集格式也要仔细的看套件中的说明。
from mindcv.data import create_dataset, create_transforms, create_loader
num_workers = 8
# 数据集加载
data_dir = "dataset_root"
# 设置数据集(这里可以分为两个数据集,一个用于训练一个用于预测)
dataset_train = create_dataset(root=data_dir, split='train', num_parallel_workers=num_workers)
dataset_val = create_dataset(root=data_dir, split='val', num_parallel_workers=num_workers)
# 数据处理转换
trans_train = create_transforms(dataset_name='ImageNet', is_training=True)
trans_val = create_transforms(dataset_name='ImageNet',is_training=False)
# 加载所创建的数据集
loader_train = create_loader(
dataset=dataset_train,
batch_size=16,
is_training=True,
num_classes=2,
transform=trans_train,
num_parallel_workers=num_workers,
)
loader_val = create_loader(
dataset=dataset_val,
batch_size=5,
is_training=True,
num_classes=2,
transform=trans_val,
num_parallel_workers=num_workers,
)
images, labels= next(loader_train.create_tuple_iterator())
到这里我们就已经准备好自己的数据集啦,接下来就是导入到模型中进行训练,这里一定要注意数据集的格式。
训练及预测
利用MindCV里面的训练模型直接进行训练,这里我们总共要进行三次选择,并且这里所有参数都有详细的说明。
from mindcv.models import create_model
from mindcv.loss import create_loss
from mindcv.optim import create_optimizer
from mindspore import Model, LossMonitor, TimeMonitor
# 选择自己想运用的模型
network = create_model(model_name='densenet121', num_classes=2, pretrained=True)
# 选择你想使用的优化器
opt = create_optimizer(network.trainable_params(), opt='adam', lr=1e-4)
# 选择你想使用的loss方法
loss = create_loss(name='CE')
# 开始训练!
model = Model(network, loss_fn=loss, optimizer=opt, metrics={'accuracy'})
model.train(10, loader_train, callbacks=[LossMonitor(5), TimeMonitor(5)], dataset_sink_mode=False)
运行上面的代码块,代码就开始训练了!之后我们在训练完之后编写自己所需要查看的训练数据就可以了。
最后我们用VAL数据集来进行进行预测:
images, labels= next(val_dl.create_tuple_iterator())
model.predict(images)
这里当然想看看自己呈现的结果,可以用matplotlib这个库来进行预测结果的可视化展现。
扫描二维码查看完整代码
昇思MindSpore实习offer拍了拍你!
昇思MindSpore社区联合多个开源社区为高校学生推出线上实习的机会——开源实习,让你不用出校门就可以拥有在业界顶尖AI开源项目实践的机会。
-
你将拥有实习工资、实习证明、亮眼的项目经历、技术大咖1对1指导、社区荣誉等
欢迎投稿
昇思MindSpore诚邀广大开发者投稿,成为社区内容合作伙伴。
投稿内容:可以是昇思MindSpore的基础教程、实战案例、模型复现、趣味案例,又或者是昇思MindSpore与其他第三方框架的对比测评等内容。
投稿激励:成功发布在昇思MindSpore公众号上,社区将赠送昇思MindSpore官方书籍或社区定制伴手礼。