【Copy攻城狮日志】“ModelArts + MindSpore”实战ResNet50毒蘑菇识别

举报
胡琦 发表于 2020/11/07 13:32:36 2020/11/07
【摘要】 学AI,就到huaweicloud.ai!ModelArts+MindSpore实战Resnet50实践毒蘑菇识别。

“ModelArts + MindSpore”实战ResNet50毒蘑菇识别

Copy攻城狮人狠话不多,学AI就到huaweicloud.ai,和“MM”一起玩转AI。

前言

大家好,我是Copy攻城狮胡琦,有幸参与华为业界首个全场景AI实战营。本次分享是MIndSpore 21天实战营的第三次课--基于ResNet50实现毒蘑菇识别。提到计算机视觉就不得不说ResNet50,这个2015年提出的残差神经网络,除了在当年获得了ImageNet检测、ImageNet本地化、COCO检测和COCO分割等任务的第一名,即便是在5年后的今天,依旧非常火爆,论文地址:https://arxiv.org/abs/1512.03385 , GIthub地址:https://github.com/KaimingHe/deep-residual-networks 。关于理论知识和相关论文感兴趣的小伙伴可以自行了解,欢迎各位大佬多带带我,今天有幸在ModelArts上体验用MindSpore基于ResNet实现图像分类,虽然整个操作有点辣眼睛,而且又恰好遇到ModerArts上MindSpore环境升级,估计有些代码还需修改修改才能正常运行。好在Notebook中的MindSpore依旧是0.5.0,完成基本的训练应该还是没问题的。接下来,Just Do IT!

准备

按照实战营小助手暖心的提示,我们还是需要准备华为云相关的环境,对的本次实践又可以在云端完成。

1️⃣ 环境准备(本次实验不涉及使用到本地环境):
准备项目:华为云账号和昇腾集群公测资格

步骤:
❶ 华为云账号注册(地址: https://www.huaweicloud.com/)。
❷ 按照操作指引完成账号注册,账号注册完成后,进入到ModelArts界面,进行昇腾集群公测资格的申请。(地址: https://www.huaweicloud.com/product/modelarts.html)。
❸ 按照指引完成公测资格申请。
❹ 要完成公测资格申请,需要完成两步,实名认证和访问授权,其中实名认证需要各位学员使用自己的身份证号码和姓名完成认证,认证的审核需要一定的时间,约为1天左右。
❺ 访问授权的则直接点击右下方的“自动创建”按钮,其他的默认即可。
❻ 在弹出的界面当中点击“立即申请”按钮。
❼ 之后可以查看自己的审批状态。“审批通过”则代表已经取得了公测资格。

️准备项目:华为云OBS对象存储服务配置:(面向华为云新手用户)
步骤:

❶打开华为云控制台,选择“对象存储服务”,点击上图所示的“创建存储桶”按钮。
❷新建桶的配置,【区域选择:"华北—北京四"区域;桶名称可以自定义】。配置完成后,点击“立即创建”按钮。
❸完成对象桶创建之后,点击桶名称进入桶内。
❹点击对象,然后可根据课程要求上传相关文件或创建空文件夹。

2️⃣ 知识准备:

Python相关知识参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017063413904832
ResNet论文:https://arxiv.org/pdf/1512.03385.pdf

3️⃣ 数据集和代码:

ModelArts AI市场:https://marketplace.huaweicloud.com/markets/aihub/datasets/detail/?content_id=37f0c586-313b-4068-97b5-07cc1ff8e8c1

下载相关资料准备踩坑吧!
更多资料请查看【MindSpore 21天训练营】☛ https://github.com/mindspore-ai/mindspore-21-days-tutorials

ResNet50 Train

我看到ModelArts AI市场的数据集功能用户不是很活跃,不知道是不是大家都不太知道?在这里再安利一波,ModelArts AI的数据集模块极大的方便了AI训练中数据集的流动,如果您有好的数据集需要分享,请您也分享一份到ModelArts AI市场,相信未来她能帮助到更多志同道合的小伙伴。这里的操作也十分简单,点一点即可拥有MindSpore专供“毒蘑菇”数据集!

  • 开始下载
    download.png

  • 完成下载
    download-finish.png

  • 创建MindSpore notebook环境
    create.png

  • resnet/resnet50_train.py代码复制到resnet/resnet50_train.ipynb

只需做如下少许修改就能愉快的训练(前几天排队有时候甚至超过6小时,还是notebook爽!)

先执行Sync OBSresnetlogckpt_fileoutput等文件夹同步一下,由于ModelArts Notebook环境Sync OBS功能单次同步OBS文件大小最大为500MB,个数最多是1024个,同步的对象总大小不超过5GB。这里因为mushrooms数据集涉及的文件远远不止1024个(超过6000张图片),因此我们还需重新下载一下数据集,通过Moxing从OBS中拷贝过来就行,这里通过代码配置。

添加执行目录:
code_1.png

引入依赖:(基于MindSpore 0.5.0)
code_2.png

定义训练效果监控日志输出,
code_3.png

定义学习率生成函数:
code_4.png

定义训练函数,包含数据集下载
code_5.png

定义入口函数,修改了入参方式:
code_6.png

开始训练:
train.png

训练完成后能看到生成的.ckpt文件。
train_rsult.png

notebook的好处就是昇腾资源不用排队,更加方便调优。比如MindSpore提供诸多优化器,我尝试改用SGD重新训练了一下,似乎收敛更快但不稳定,因为本大狮非专业人士就无法做深入的对比,不过得出的结论:ModelArts的notebook环境用起来真特么爽!
SGD.png

不过当我尝试运行推理代码的时候发现无法正常使用opencv,可能是我打开的方式不对,提示libQtGui.so.4: cannot open shared object file: No such file or directory,也请教过大佬,大概是不能调用GUI的操作,受限于知识浅薄,折腾了很久还是没有搞定,于是又重新转向ModelArts的训练作业开始推理。
error.png

ResNet50 Predict

我们按照以下操作创建推理任务,值得注意的是数据集要选择test目录,新增checkpoint_path参数指向训练阶段输出的.ckpt文件,记得要将OBS://改为S3://。如我的路径就是:s3://huqi88/mindspore-camp/ResNet50-notebook/output/resnet-80_209.ckpt
create-predict.png

create-predict2.png

尽管MindSpore已经升级到1.0了,不过之前的推理代码依旧能正常使用。
perdict-result1.png

可能因为数据集处理不当的原因,本次实践得到的模型有点“人工智障”,换了一张图,依旧识别出了一样的结果。不过这么可爱这么萌的蘑菇超人小妹妹怎么可能有毒呢?
perdict-result2.png

本次分享就到这,结束得有点措不及防,只要还是我的水平有限,没有什么干货。目前掌握的独门秘诀--“Copy Big法”,只有这么强的功力,但愿某天能意外掉落山谷习得“MM Big”法,精通ModelArts和MindSpore,驰骋AI江湖!别问我为什么全部课程都结束了才来分享第三次课的,没办法入坑太深,难以自拔,加上近期加班比较严重,真希望天下不再有切图仔!

如果您也想学习优秀的AI框架,就来ModelArts使用MindSpore,如果对MindSpore实战营感兴趣,欢迎关注B站MindSpore官方账号及Github仓库:https://github.com/mindspore-ai/mindspore-21-days-tutorials学AI,就到huaweicloud.ai!


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。