MindSpore 21天训练营-Resnet 预测毒蘑菇标签

2023-11-22 10:20

本文主要是介绍MindSpore 21天训练营-Resnet 预测毒蘑菇标签,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、作业流程

进阶作业提供:“蘑菇超人”图片、模型训练和预测结果截图、源代码

进阶作业流程:

1. 申请华为云账号、申请 ModelArts 华为云昇腾集群服务公测

2. 从链接下载蘑菇数据集和源代码

3. 创建 obs 桶

4. 蘑菇数据集、“蘑菇超人“图片和源代码到 obs 桶

5. 提交 ModelArts 训练作业进行模型训练任务

6. 等待、查看结果

7. 提交 ModelArts 训练作业进行模型推理任务 8. 等待、查看结果 9. 保存训练、预测结果截图

二、下载作业包

ResNet-50 进阶作业一键下载包:https://ascend-tutorials.obs.cn-north-4.myhuaweicloud.com/resnet50/demo/ResNet50%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

三、上传数据集

上传文件到新创建的 OBS 桶里

resnet:存放程序代码

output:模型输出文件夹

mushrooms:数据集文件夹

log:日志文件夹

data_output:训练数据输出文件夹

ckpt_file:checkpoint存放目录,验证的时候会用到

四、开始训练

训练作业配置:

启动文件选择:resnet50_train.py,训练完成结果如下:

训练完成后,我们到OBS中找到输出目录,然后找到生成的.ckpt文件将他复制到ckpt_file目录中方便预测操作

预测操作

这个是我用来进行预测的图片,我们将他放到mushroom中的test目录。然后进行预测操作的参数配置如下图

相比于训练操作,我们需要多加一个checkpoint_path参数,这里的参数填写OBS中我们CKPT文件所在的路径。全部设定完成后点击确定就开始预测操作了。

预测作业执行完毕后我们可以看见出来了预测出来的蘑菇标签结果。

番外篇:

最初的代码在执行预测的时候可能会出现预测的蘑菇标签不管你放入什么图片,他的标签永远是相同的。后续在论坛提出这个BUG后,得到了老师们的回应及时解决了这个BUG,现在把解决方法提出来:

需要修改resnet50_predict.py 中的_normalize(img,mean,std)方法

原本的代码:

1234567def _normalize(img, mean, std): # This method is borrowed from: # https://github.com/open-mmlab/mmcv/blob/master/mmcv/image/photometric.py assert img.dtype != np.uint8 mean = np.float64(mean.reshape(1, -1)) stdinv = 1 / np.float64(std.reshape(1, -1)) cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.subtract(img, mean) cv2.multiply(img, stdinv) return img

修改后的代码:

1234567def _normalize(img, mean, std): # This method is borrowed from: # https://github.com/open-mmlab/mmcv/blob/master/mmcv/image/photometric.py assert img.dtype != np.uint8 mean = np.float64(mean.reshape(1, -1)) stdinv = 1 / np.float64(std.reshape(1, -1)) cv2.cvtColor(img, cv2.COLOR_BGR2RGB,img) cv2.subtract(img, mean,img) cv2.multiply(img, stdinv,img) return img

这样修改完成后再去重新预测就得出不同的预测标签结果了。

我的预测图片分别为上文提到的那张图片以及新增了一张新的图片如下:

预测的结果如下:

注:如果不想自己修改代码的话,可以重新git clone一下官方代码仓的代码,修改后的代码老师们已经上传上去了,可以直接下载下来使用。

课程官方代码仓地址:https://github.com/mindspore-ai/mindspore-21-days-tutorials/

体验作业的方法

把进阶作业的模型训练部分的操作流程去掉,直接把体验作业包中的ckpt文件复制到ckpt_file文件夹中,然后按照进阶作业中预测操作也就是resnet50_predict.py 的那部分进行操作就能完成体验作业了。

转自文章链接:MindSpore 21天训练营-Resnet 预测毒蘑菇标签_MindSpore_昇腾论坛_华为云论坛

感谢作者的努力与分享,侵权立删!

这篇关于MindSpore 21天训练营-Resnet 预测毒蘑菇标签的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409469

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

react笔记 8-21 约束性 表单

1、约束性组件和非约束性组件 非约束性组件<input type="text" name="" defaultValue={this.state.msg}></input>这里他的value是用户输入的值 并没有执行操作 只是获取到了msg的值 用户输入不会改变数据非约束性组件需要使用defaultValue获取数据 否则会报错约束性组件<input type="text

代码训练营 Day26 | 47.排序II | 51. N-皇后 |

47.排序II 1.跟46题一样只不过加一个树层去重 class Solution(object):def backtracking(self,nums,path,result,used):# recursion stopif len(path) == len(nums):# collect our setresult.append(path[:])return for i in range(

Spring下自定义xml标签

dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。 一 编写模型类 1 package com.hulk.testdubbo.model;2 3 public class Hero {4 private String name;5 private int

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于