开发者说 | 零基础如何利用MindCV进行自己的分类任务?一招搞定

如今人工智能的发展愈发迅速,从最开始的数字识别到现在的各类大模型,多多少少都涉及到分类的过程。对于零基础的初学者而言,利用现有的工具和框架来快速入门并实现自己的分类任务,是一个高效且实用的方法。本文将介绍如何使用MindCV进行零基础的分类任务实现。

MindCV源码

image.png

MindCV简介

MindCV是一个基于昇思 MindSpore AI框架开发的,致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重和训练策略。我们可以用这个模型来微调自己想要的分类效果。

image.png

读取自己的数据集并处理

根据自己的数据集编写读取和处理数据集的代码。在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这个库来进行预测结果的可视化展现。

扫描二维码查看完整代码

image.png

昇思MindSpore实习offer拍了拍你!

昇思MindSpore社区联合多个开源社区为高校学生推出线上实习的机会——开源实习,让你不用出校门就可以拥有在业界顶尖AI开源项目实践的机会。

  • 你将拥有实习工资、实习证明、亮眼的项目经历、技术大咖1对1指导、社区荣誉等

image.png

欢迎投稿

昇思MindSpore诚邀广大开发者投稿,成为社区内容合作伙伴。

投稿内容:可以是昇思MindSpore的基础教程、实战案例、模型复现、趣味案例,又或者是昇思MindSpore与其他第三方框架的对比测评等内容。

投稿激励:成功发布在昇思MindSpore公众号上,社区将赠送昇思MindSpore官方书籍或社区定制伴手礼。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值