摘要:本文介绍了 ModelArts 如何通过主动学习进行毒蘑菇的辨认。
想当年,白雪公主吃了毒蘑菇,换来了白马王子的一吻。如果白雪公主没有吃毒蘑菇,还会遇到白马王子吗?张小白感觉不见得——说不定她会遇到张小白。张小白给她 AI MindSpore Lite 推理了一下,她就不会中毒,也就会钟情于张小白的 AI 的神奇,也就不会移情给白马王子了。
为了早日给白雪公主安利一下毒蘑菇的知识点,张小白明天就写下了这篇通过 ModelArts 主动学习进行毒蘑菇分类的文字,心愿白雪公主可能看到,并关注点个赞什么的。
ModelArts 的主动学习性能也就几步:
(1)筹备毒蘑菇数据集
(2)创立主动学习我的项目,进行数据标注
(3)对数据集进行模型训练
(4)将训练好的模型部署上线
(5)测试已部署上线的服务,进行蘑菇图片的推理。
先来创立数据集:首先把毒蘑菇的数据集筹备好,点击以下链接下载 zip 包:
https://ascend-tutorials.obs….
文件有 951M,急躁下载。下载结束后将其解压,
关上 mushrooms/train 文件夹, 上面寄存了毒蘑菇图片的 9 个分类。
将这些图片(带目录)上传到本人的 OBS 桶中。
张小白上传的 OBS 门路为是 obs://mindspore-21day-tutorials/resnet-50-2/mushrooms/train/
而后,新建一个 dataset-dumogu 数据集:
因为 OBS 外面是依照目录分类的,能够先导入第一个目录,如上图所示。
输出:/mindspore-21day-tutorials/resnet-50-2/mushrooms/train/Agaricus/
输入:/mindspore-21day-tutorials/resnet-50-2/output-mindspore/
创立后,能够先将目前导入的图片全副标注为 Agaricus。
标注完这一类之后,能够在这个数据集下面点击”导入“
填入第二个分类的 OBS 地位:
点击确定。
零碎会进行该目录数据集的导入工作。
导入结束,能够当看到 已标注的个数和整个数据集的数量:
本次导入的图片(数据集)会是未标注状态:
此时可将点击图片下方每页显示的最大数量跳到最大(目前是 60), 而后再抉择”抉择当前页“.
并在标签名中输出这类未标注的图片的标签,如 Suillus, 点击确认。
可看到未标注的数量在缩小,而已标注为 Suillus 的图片数量在减少:
如此重复标注 未标注的图片,直到未标注的图片全副标注结束,而后再进行其余目录(其余类别)的数据集的导入和标注。如此重复,直到标注齐全完结。
(这的确是一个体力活,人称”数据标注工程师“。)
好了,咱们的数据集就筹备好了。
在标注完之后,ModelArts 会在 后面设置的输入目录下生成以下目录:
这之下又有 5 个目录:
其中 annotation 目录是标注文件目录,外面内容为:
V002.manifest。
关上后,具体内容如下:
Plain Text
1
{“annotation”:[{“name”:”Cortinarius”,”type”:”modelarts/image_classification”,”creation-time”:”2020-11-11 11:07:34″,”annotated-by”:”human/zhanghui_china/zhanghui_china”}],”usage”:”train”,”source”:”s3://mindspore-21day-tutorials/resnet-50-2/mushrooms/train/Agaricus/import_1605064037231/219_m7t5mnXvmsw.jpg”,”id”:”0008324d2a2933fa17ef490e8413edc1″,”sample-type”:0}
其中将图片和类别的关系标注在 JSON 中。
第二步,咱们来建设一个主动学习的工作。
关上主动学习菜单。
点击创立我的项目,输出名称: exeML-dumogu,抉择”已有数据集“并选中方才创立的 dataset-dumogu 数据集。
而后关上建好的我的项目 exeML-dumogu, 点击左边红色的开始训练:
零碎弹出以下菜单,输出训练验证比例未 0.8,0.2,确定后开始模型训练。
确认配置后提交,
零碎就开始进行模型训练:
点击上图的部署按钮们开始进行部署。
下一步:
点击提交后,
急躁期待,也能够在”部署上线“-”在线服务“菜单看到部署的进度。
部署结束后,呈现以下画面:
能够点击”上传“,上传一些待预测的图片。
比方上图,55% 的机率是 Agaricus…
咱们上传一个真的 Agaricus
得分 1.0. 齐全精确。
以上都是从数据集外面间接拿的图片,得分不是 1.00 就是 0.99,飞常准。
张小白再从网上找一些毒蘑菇的图片:
这就有高有低了。
再找几张能够吃的,如金针菇和香菇:
好,咱们回过头来看看这 9 个分类的具体含意:
Plain Text
1
label_list = [“Agaricus 双孢蘑菇, 伞菌目, 蘑菇科, 蘑菇属, 宽泛散布于北半球温带, 无毒 ”,
2
“Amanita 毒蝇伞, 伞菌目, 鹅膏菌科, 鹅膏菌属, 次要散布于我国黑龙江、吉林、四川、西藏、云南等地, 有毒 ”,
3
“Boletus 丽柄牛肝菌, 伞菌目, 牛肝菌科, 牛肝菌属, 散布于云南、陕西、甘肃、西藏等地, 有毒 ”,
4
“Cortinarius 掷丝膜菌, 伞菌目, 丝膜菌科, 丝膜菌属, 散布于湖南等地 (夏秋季在山毛等阔叶林地上成长)”,
5
“Entoloma 霍氏粉褶菌, 伞菌目, 粉褶菌科, 粉褶菌属, 次要散布于新西兰北岛和南岛西部, 有毒 ”,
6
“Hygrocybe 浅黄褐湿伞, 伞菌目, 蜡伞科, 湿伞属, 散布于香港 (见于松仔园), 有毒 ”,
7
“Lactarius 松乳菇, 红菇目, 红菇科, 乳菇属, 宽泛散布于亚热带松林地, 无毒 ”,
8
“Russula 褪色红菇, 伞菌目, 红菇科, 红菇属, 散布于河北、吉林、四川、江苏、西藏等地, 无毒 ”,
9
“Suillus 乳牛肝菌, 牛肝菌目, 乳牛肝菌科, 乳牛肝菌属, 散布于吉林、辽宁、山西、安徽、江西、浙江、湖南、四川、贵州等地, 无毒 ”,
10
]
本人找的几个毒蘑菇图片,别离被辨认为:
Plain Text
1
Russula,无毒
2
Amanita,有毒
3
Lactarius,无毒
4
Amanita,有毒
5
Hygrocybe,有毒
6
Amanita,有毒
7
Lactarius,无毒
8
——— 白雪公主的中毒率为 3/7.
而张小白找的那 2 张食用菇的图片,别离被辨认为:
Plain Text
1
Lactarius,无毒
2
Lactarius,无毒
3
——— 白雪公主吃到美食的概率是 100%。
看来,7 个小矮人还是有必要呈现的,至多能够帮白雪公主试 7 次毒。。。
至于在实战营失去的一个要害常识,也须要在这里强调下:ResNet 卷积神经网络,必定会给一张并没有分类的图片搞个分类的,即使它不属于任何分类,也会强分一下,只不过得分会略微低一点,比方 0.5,0.6,0.7 之类的。这个并不是这个网络的能干,而是在深度学习这块,当初就只能到这里了。
所以,张小白认为,如果在得分特地低的状况下,咱就暂且在利用上不将其归类就是了。(或者写上得分,让他人看到,反正真的不是也是个概率问题,也不能怪 ResNet。说了这些,张小白感觉这个如同天气预报的概率指数啊。)
好了,对于 ModelArts 主动学习实现毒蘑菇图片辨认的介绍临时讲到这里吧。其实本文只是学习 MindSpore 的一个副产品。张小白的本意是想查看下,这个数据集进行训练,是否真的如 MindSpore 训练完结后那样不是很令人满意,后果倒是较为称心的。这样子反而让张小白无可奈何了。看来还是要细究下 ResNet 在 MindSpore 的利用外面,到底出了啥问题。
本文分享自华为云社区《张小白教你如何应用 ModelArts 的主动学习对毒蘑菇进行分类》,原文作者:张辉。
点击关注,第一工夫理解华为云陈腐技术~