摘要:本文介绍了ModelArts如何通过自动学习进行毒蘑菇的识别。

想当年,白雪公主吃了毒蘑菇,换来了白马王子的一吻。如果白雪公主没有吃毒蘑菇,还会遇到白马王子吗?张小白觉得不见得——说不定她会遇到张小白。张小白给她AI MindSpore Lite推理了一下,她就不会中毒,也就会钟情于张小白的AI的神奇,也就不会移情给白马王子了。

为了早日给白雪公主安利一下毒蘑菇的知识点,张小白今天就写下了这篇通过ModelArts自动学习进行毒蘑菇分类的文字,希望白雪公主能够看到,并关注点个赞什么的。

ModelArts的自动学习功能也就几步:

(1)准备毒蘑菇数据集

(2)创建自动学习项目,进行数据标注

(3)对数据集进行模型训练

(4)将训练好的模型部署上线

(5)测试已部署上线的服务,进行蘑菇图片的推理。

先来创建数据集:首先把毒蘑菇的数据集准备好,点击以下链接下载zip包:

https://ascend-tutorials.obs.cn-north-4.myhuaweicloud.com/resnet-50/demo/ResNet-50%E8%BF%9B%E9%98%B6%E4%BD%9C%E4%B8%9A%E4%B8%80%E9%94%AE%E4%B8%8B%E8%BD%BD%E5%8C%85.zip

文件有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。

打开后,具体内容如下:

{"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,确定后开始模型训练。

确认配置后提交,

系统就开始进行模型训练:

训练完毕后,会提示精确率,准确率,召回率等值,关键看准确率吧——94%,还可以。

点击上图的部署按钮们开始进行部署。

下一步:

点击提交后,

耐心等待,也可以在”部署上线“-”在线服务“菜单看到部署的进度。

部署完毕后,出现以下画面:

可以点击”上传“,上传一些待预测的图片。

比如上图,55%的机率是Agaricus...

我们上传一个真的Agaricus

得分1.0. 完全准确。

以上都是从数据集里面直接拿的图片,得分不是1.00就是0.99,飞常准。

张小白再从网上找一些毒蘑菇的图片:

这就有高有低了。

再找几张可以吃的,如金针菇和香菇:

好,我们回过头来看看这9个分类的具体含义:

label_list = ["Agaricus双孢蘑菇,伞菌目,蘑菇科,蘑菇属,广泛分布于北半球温带,无毒",
"Amanita毒蝇伞,伞菌目,鹅膏菌科,鹅膏菌属,主要分布于我国黑龙江、吉林、四川、西藏、云南等地,有毒",
"Boletus丽柄牛肝菌,伞菌目,牛肝菌科,牛肝菌属,分布于云南、陕西、甘肃、西藏等地,有毒",
"Cortinarius掷丝膜菌,伞菌目,丝膜菌科,丝膜菌属,分布于湖南等地(夏秋季在山毛等阔叶林地上生长)",
"Entoloma霍氏粉褶菌,伞菌目,粉褶菌科,粉褶菌属,主要分布于新西兰北岛和南岛西部,有毒",
"Hygrocybe浅黄褐湿伞,伞菌目,蜡伞科,湿伞属,分布于香港(见于松仔园),有毒",
"Lactarius松乳菇,红菇目,红菇科,乳菇属,广泛分布于亚热带松林地,无毒",
"Russula褪色红菇,伞菌目,红菇科,红菇属,分布于河北、吉林、四川、江苏、西藏等地,无毒",
"Suillus乳牛肝菌,牛肝菌目,乳牛肝菌科,乳牛肝菌属,分布于吉林、辽宁、山西、安徽、江西、浙江、湖南、四川、贵州等地,无毒",
]

自己找的几个毒蘑菇图片,分别被识别为:

Russula,无毒
Amanita,有毒
Lactarius,无毒
Amanita,有毒
Hygrocybe,有毒
Amanita,有毒
Lactarius,无毒
---------白雪公主的中毒率为 3/7.

而张小白找的那2张食用菇的图片,分别被识别为:

Lactarius,无毒
Lactarius,无毒
---------白雪公主吃到美食的概率是 100%。

看来,7个小矮人还是有必要出现的,至少可以帮白雪公主试7次毒。

至于在实战营得到的一个关键知识,也需要在这里强调下:ResNet卷积神经网络,肯定会给一张并没有分类的图片搞个分类的,即便它不属于任何分类,也会强分一下,只不过得分会稍微低一点,比如0.5,0.6,0.7之类的。这个并不是这个网络的无能,而是在深度学习这块,现在就只能到这里了。

所以,张小白认为,如果在得分特别低的情况下,咱就暂且在应用上不将其归类就是了。(或者写上得分,让别人看到,反正真的不是也是个概率问题,也不能怪ResNet。说了这些,张小白感觉这个好像天气预报的概率指数啊。)

好了,关于ModelArts自动学习完成毒蘑菇图片识别的介绍暂时讲到这里吧。其实本文只是学习MindSpore的一个副产品。张小白的本意是想检查下,这个数据集进行训练,是否真的如MindSpore训练结束后那样不是很令人满意,结果倒是较为满意的。这样子反而让张小白无可奈何了。看来还是要细究下ResNet在MindSpore的应用里面,到底出了啥问题。

本文分享自华为云社区《张小白教你如何使用ModelArts的自动学习对毒蘑菇进行分类》,原文作者:张辉。

点击关注,第一时间了解华为云新鲜技术~

手把手教你使用ModelArts的自动学习识别毒蘑菇分类的更多相关文章

  1. 手把手教你学node.js之学习使用外部模块

    学习使用外部模块 目标 建立一个 lesson2 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/?q=alsotang 时,输出 alsotang 的 md5 ...

  2. 《手把手教你学C语言》学习笔记(4)---代码规范

    编程过程中需要遵守编译器的各种约定,例如以下代码: 1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 print ...

  3. 《手把手教你学C语言》学习笔记(2)---学习C语言的目标和方法

    一.学习C语言的目标主要是: 熟练掌握C语言的关键字,语法规则,程序控制等: 掌握基本的数据结构,数组.链表.栈和队列等: 掌握C语言中指针和内存.数组与指针.函数与指针.变量和指针.结构体和指针.硬 ...

  4. 手把手教你用Python实现自动特征工程

    任何参与过机器学习比赛的人,都能深深体会特征工程在构建机器学习模型中的重要性,它决定了你在比赛排行榜中的位置. 特征工程具有强大的潜力,但是手动操作是个缓慢且艰巨的过程.Prateek Joshi,是 ...

  5. TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台

    自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...

  6. 《手把手教你学C语言》学习笔记(8)--- 运算符和表达式

    C语言编程的核心是指针和库,而库的核心就是函数,函数的基本组成部分就是语句. C语言合法表达式加上分号(语句结束符)构成C函数的基本部分语句.如果只有分号没有表达式就构成空语句,空语句常常用来形成占位 ...

  7. 《手把手教你学C语言》学习笔记(1)---C语言的特点

    学习C语言的原因,主要是需要使用C语言编程,我用故我学,应该是最主要的原因了. C语言的定位:C语言严格意义上只能算是中级语言,是面向过程编程语言的集大成者,虽然这种语言有很多的问题,但总体而言是瑕不 ...

  8. 手把手教你在Modelarts平台上进行视频推理

    摘要:为了方便小伙伴们进行视频场景的AI应用开发,Modelarts推理平台将视频推理场景中一些通用的流程抽取出来预置在基础镜像中,小伙伴们只需要简单地编写预处理及后处理脚本,便可以像开发图片类型的A ...

  9. 《手把手教你学C语言》学习笔记(10)--- 程序的循环控制

    C语言程序设计中,有些代码需要重复执行很多次,循环主要有三类: 一.for循环 1.基本格式为:for(表达式1:表达式2:表达式3){ //表达式1:循环变量赋初值 //表达式2:循环变量满足的条件 ...

  10. 《手把手教你学C语言》学习笔记(9)--- 程序的选择控制

    C语言是面向过程编程语言的主要代表,其特征就是严格控制程序的执行语句顺序,因此,C程序的主要结构控制就是顺序控制,以main函数为入口函数,根据控制,一条一条地执行语句.由于实际需求是很复杂的,只用顺 ...

随机推荐

  1. 【PHP正则表达式】

    [PHP正则表达式] 最近写题总是遇到php正则表达式的匹配函数,于是进行一个总结. 1.什么是正则表达式 是php在进行搜索时用于匹配的模式字符串.一般用于php对特定字符序列的替换和搜索. 2.正 ...

  2. Vue项目打包为桌面应用

    vue项目首先使用 npm run build 打包为dist文件后,进入dist目录得到如下文件:就是打包后的html+css+js+static 新建一个deskapp文件夹,里面在新建一个App ...

  3. 【不限框架】超好用的3d开源图片预览插件推荐

    今天给大家推荐一款超好用的图片预览插件-image-preview 简单说明 image-preview是一款主要面向移动端web应用,同时兼容pc,基于原生js,不限框架,react,vue,ang ...

  4. CF B. Gardener and the Array

    B. Gardener and the Array 思路:只要找到一个c他的每一位均在除了它的集合中出现过即可 这题T了2发,用来multiset,注意multiset大的时间复杂度是O(K + lo ...

  5. Nacos有几种负载均衡策略?

    Nacos 作为目前主流的微服务中间件,包含了两个顶级的微服务功能:配置中心和注册中心. 1.配置中心扫盲 配置中心是一种集中化管理配置的服务,通俗易懂的说就是将本地配置文件"云端化&quo ...

  6. Gmail如何开启SMTP/POP

    1. 登录Gmail账号,右上角点击设置图标 -> 查看所有设置,如图 2. 点击"转发和POP/IMAP",如图 3. 开启IMAP和POP,选择"对所有邮件启用 ...

  7. SNN_文献阅读_Text Classification in Memristor-based Spiking Neural Networks

    SNN中局部学习和非局部学习,基于梯度的规则都需要对用于表示单个连续值的脉冲训练窗口上的累积误差进行平均,这种方法在更新权重时考虑了每一个脉冲的影响.在计算速度和空间效率等方面,特别是当代表单个数值的 ...

  8. 3.1 IDA Pro编写IDC脚本入门

    IDA Pro内置的IDC脚本语言是一种灵活的.C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析.IDC脚本语言支持变量.表达式.循环.分支.函数等C语言中的常见语法结构,并且还提 ...

  9. 神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)

    多样本向量化 与上篇博客相联系的来理解 逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算.神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值.这种计算是所有的训练样本同时进行的 ...

  10. AtCoder Beginner Contest 240 F - Sum Sum Max

    原题链接F - Sum Sum Max 首先令\(z_i = \sum\limits_{k = 1}^i y_k\),\(z_0 = 0\),\(z_i\)就是第\(i\)段相同的个数的前缀和. 对于 ...