[{"data":1,"prerenderedAt":233},["ShallowReactive",2],{"content-query-w9DGcyr4XR":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"type":12,"category":13,"body":14,"_type":227,"_id":228,"_source":229,"_file":230,"_stem":231,"_extension":232},"/technology-blogs/zh/3128","zh",false,"","开发者说 | 零基础如何利用MindCV进行自己的分类任务？一招搞定","作者：刘栩辰 ｜学校：三峡大学","2024-05-21","https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/11/28/76f8744bfad94753ac7716ded5a1cfa8.png","technology-blogs","开发者分享",{"type":15,"children":16,"toc":224},"root",[17,25,44,49,54,62,70,75,82,90,95,105,110,118,123,131,136,141,149,154,159,166,174,179,189,196,204,209,214,219],{"type":18,"tag":19,"props":20,"children":22},"element","h1",{"id":21},"开发者说-零基础如何利用mindcv进行自己的分类任务一招搞定",[23],{"type":24,"value":8},"text",{"type":18,"tag":26,"props":27,"children":28},"p",{},[29,31,37,39],{"type":24,"value":30},"**作者：**",{"type":18,"tag":32,"props":33,"children":34},"strong",{},[35],{"type":24,"value":36},"刘栩辰",{"type":24,"value":38}," **｜**",{"type":18,"tag":32,"props":40,"children":41},{},[42],{"type":24,"value":43},"学校：三峡大学",{"type":18,"tag":26,"props":45,"children":46},{},[47],{"type":24,"value":48},"如今人工智能的发展愈发迅速，从最开始的数字识别到现在的各类大模型，多多少少都涉及到分类的过程。对于零基础的初学者而言，利用现有的工具和框架来快速入门并实现自己的分类任务，是一个高效且实用的方法。本文将介绍如何使用MindCV进行零基础的分类任务实现。",{"type":18,"tag":26,"props":50,"children":51},{},[52],{"type":24,"value":53},"MindCV源码",{"type":18,"tag":26,"props":55,"children":56},{},[57],{"type":18,"tag":58,"props":59,"children":61},"img",{"alt":7,"src":60},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/05/24/9e83e4ffad6c4999af10e7e5145101ff.png",[],{"type":18,"tag":26,"props":63,"children":64},{},[65],{"type":18,"tag":32,"props":66,"children":67},{},[68],{"type":24,"value":69},"MindCV简介",{"type":18,"tag":26,"props":71,"children":72},{},[73],{"type":24,"value":74},"MindCV是一个基于昇思 MindSpore AI框架开发的，致力于计算机视觉相关技术研发的开源工具箱。它提供大量的计算机视觉领域的经典模型和SoTA模型以及它们的预训练权重和训练策略。我们可以用这个模型来微调自己想要的分类效果。",{"type":18,"tag":26,"props":76,"children":77},{},[78],{"type":18,"tag":58,"props":79,"children":81},{"alt":7,"src":80},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/05/24/28ed612fe49141329c81e2680edbffc8.png",[],{"type":18,"tag":26,"props":83,"children":84},{},[85],{"type":18,"tag":32,"props":86,"children":87},{},[88],{"type":24,"value":89},"读取自己的数据集并处理",{"type":18,"tag":26,"props":91,"children":92},{},[93],{"type":24,"value":94},"根据自己的数据集编写读取和处理数据集的代码。在MindCV套件中，也有创建数据集的函数，比如create_dataset，可以直接调用进行数据集的预处理，但是相应的数据集格式也要仔细的看套件中的说明。",{"type":18,"tag":96,"props":97,"children":99},"pre",{"code":98},"from mindcv.data import create_dataset, create_transforms, create_loader\n\nnum_workers = 8\n\n# 数据集加载\ndata_dir = \"dataset_root\"\n\n# 设置数据集（这里可以分为两个数据集，一个用于训练一个用于预测）\ndataset_train = create_dataset(root=data_dir, split='train', num_parallel_workers=num_workers)\ndataset_val = create_dataset(root=data_dir, split='val', num_parallel_workers=num_workers)\n\n# 数据处理转换\ntrans_train = create_transforms(dataset_name='ImageNet', is_training=True)\ntrans_val = create_transforms(dataset_name='ImageNet',is_training=False)\n\n# 加载所创建的数据集\nloader_train = create_loader(\n        dataset=dataset_train,\n        batch_size=16,\n        is_training=True,\n        num_classes=2,\n        transform=trans_train,\n        num_parallel_workers=num_workers,\n    )\n\n\nloader_val = create_loader(\n        dataset=dataset_val,\n        batch_size=5,\n        is_training=True,\n        num_classes=2,\n        transform=trans_val,\n        num_parallel_workers=num_workers,\n    )\nimages, labels= next(loader_train.create_tuple_iterator())\n",[100],{"type":18,"tag":101,"props":102,"children":103},"code",{"__ignoreMap":7},[104],{"type":24,"value":98},{"type":18,"tag":26,"props":106,"children":107},{},[108],{"type":24,"value":109},"到这里我们就已经准备好自己的数据集啦，接下来就是导入到模型中进行训练，这里一定要注意数据集的格式。",{"type":18,"tag":26,"props":111,"children":112},{},[113],{"type":18,"tag":32,"props":114,"children":115},{},[116],{"type":24,"value":117},"训练及预测",{"type":18,"tag":26,"props":119,"children":120},{},[121],{"type":24,"value":122},"利用MindCV里面的训练模型直接进行训练，这里我们总共要进行三次选择，并且这里所有参数都有详细的说明。",{"type":18,"tag":96,"props":124,"children":126},{"code":125},"from mindcv.models import create_model\nfrom mindcv.loss import create_loss\nfrom mindcv.optim import create_optimizer\nfrom mindspore import Model, LossMonitor, TimeMonitor\n\n# 选择自己想运用的模型\nnetwork = create_model(model_name='densenet121', num_classes=2, pretrained=True)\n\n# 选择你想使用的优化器\nopt = create_optimizer(network.trainable_params(), opt='adam', lr=1e-4) \n\n# 选择你想使用的loss方法\nloss = create_loss(name='CE')\n\n# 开始训练！\nmodel = Model(network, loss_fn=loss, optimizer=opt, metrics={'accuracy'}) \nmodel.train(10, loader_train, callbacks=[LossMonitor(5), TimeMonitor(5)], dataset_sink_mode=False)\n",[127],{"type":18,"tag":101,"props":128,"children":129},{"__ignoreMap":7},[130],{"type":24,"value":125},{"type":18,"tag":26,"props":132,"children":133},{},[134],{"type":24,"value":135},"运行上面的代码块，代码就开始训练了！之后我们在训练完之后编写自己所需要查看的训练数据就可以了。",{"type":18,"tag":26,"props":137,"children":138},{},[139],{"type":24,"value":140},"最后我们用VAL数据集来进行进行预测：",{"type":18,"tag":96,"props":142,"children":144},{"code":143},"images, labels= next(val_dl.create_tuple_iterator())\n\nmodel.predict(images)\n",[145],{"type":18,"tag":101,"props":146,"children":147},{"__ignoreMap":7},[148],{"type":24,"value":143},{"type":18,"tag":26,"props":150,"children":151},{},[152],{"type":24,"value":153},"这里当然想看看自己呈现的结果，可以用matplotlib这个库来进行预测结果的可视化展现。",{"type":18,"tag":26,"props":155,"children":156},{},[157],{"type":24,"value":158},"扫描二维码查看完整代码",{"type":18,"tag":26,"props":160,"children":161},{},[162],{"type":18,"tag":58,"props":163,"children":165},{"alt":7,"src":164},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/05/24/ee67f076b83d4ef9ae56bdbb1684a8ab.png",[],{"type":18,"tag":26,"props":167,"children":168},{},[169],{"type":18,"tag":32,"props":170,"children":171},{},[172],{"type":24,"value":173},"昇思MindSpore实习offer拍了拍你！",{"type":18,"tag":26,"props":175,"children":176},{},[177],{"type":24,"value":178},"昇思MindSpore社区联合多个开源社区为高校学生推出线上实习的机会——开源实习，让你不用出校门就可以拥有在业界顶尖AI开源项目实践的机会。",{"type":18,"tag":180,"props":181,"children":182},"ul",{},[183],{"type":18,"tag":184,"props":185,"children":186},"li",{},[187],{"type":24,"value":188},"你将拥有实习工资、实习证明、亮眼的项目经历、技术大咖1对1指导、社区荣誉等",{"type":18,"tag":26,"props":190,"children":191},{},[192],{"type":18,"tag":58,"props":193,"children":195},{"alt":7,"src":194},"https://obs-mindspore-file.obs.cn-north-4.myhuaweicloud.com/file/2024/05/24/fb2d78b6ab50473eaad70388e4e82390.png",[],{"type":18,"tag":26,"props":197,"children":198},{},[199],{"type":18,"tag":32,"props":200,"children":201},{},[202],{"type":24,"value":203},"欢迎投稿",{"type":18,"tag":26,"props":205,"children":206},{},[207],{"type":24,"value":208},"昇思MindSpore诚邀广大开发者投稿，成为社区内容合作伙伴。",{"type":18,"tag":26,"props":210,"children":211},{},[212],{"type":24,"value":213},"**投稿内容：**可以是昇思MindSpore的基础教程、实战案例、模型复现、趣味案例，又或者是昇思MindSpore与其他第三方框架的对比测评等内容。",{"type":18,"tag":26,"props":215,"children":216},{},[217],{"type":24,"value":218},"**投稿激励：**成功发布在昇思MindSpore公众号上，社区将赠送昇思MindSpore官方书籍或社区定制伴手礼。",{"type":18,"tag":26,"props":220,"children":221},{},[222],{"type":24,"value":223},"**投稿方式：**添加小助手微信mindspore_0328",{"title":7,"searchDepth":225,"depth":225,"links":226},4,[],"markdown","content:technology-blogs:zh:3128.md","content","technology-blogs/zh/3128.md","technology-blogs/zh/3128","md",1776506126282]