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)方法
原本的代码:
def _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
修改后的代码:
def _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 的那部分进行操作就能完成体验作业了。
- 点赞
- 收藏
- 关注作者
评论(0)