使用的是py3.9-ms2.6-can8.1RC1.beta1的镜像,与傻瓜教程中的mindspore版本是契合的。
完整代码如下:
%%capture captured_output
# 实验环境已经预装了mindspore==2.6.0,如需更换mindspore版本,可更改下面 MINDSPORE_VERSION 变量并进行安装,否则可跳过
!pip uninstall mindspore -y
%env MINDSPORE_VERSION=2.6.0
!pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/${MINDSPORE_VERSION}/MindSpore/unified/aarch64/mindspore-${MINDSPORE_VERSION}-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# 查看当前 mindspore 版本
!pip show mindspore
# 控制MindSpore日志的级别, 0-DEBUG、1-INFO、2-WARNING、3-ERROR、4-EXCEPTION
import os
os.environ["GLOG_v"] = "3"
# 安装 mindformers 包
!pip install -i https://repo.huaweicloud.com/repository/pypi/simple/ mindformers==1.2.0
# 若出现ValueError: Failed to read the checkpoint file . May not have permission to read it, please check the correct of the file. 请将下面注释放开
#!rm -rf checkpoint_download/vit/
import matplotlib.pyplot as plt
from mindformers.pipeline import pipeline
from mindformers.tools.image_tools import load_image
from PIL import Image
pipeline_task = pipeline("image_classification", model="vit_base_p16")
from download import download
# 下载测试图片
url = "https://obs-xihe-beijing4.obs.cn-north-4.myhuaweicloud.com/jupyter/images/daisy.jpg"
download(url, "daisy.jpg", replace=True)
import matplotlib.pyplot as plt
from PIL import Image
test_png = "daisy.jpg"
picture = Image.open(test_png)
plt.figure("image")
plt.imshow(picture)
plt.show()
img = load_image(test_png)
pipeline_result = pipeline_task(img, top_k=3)
pipeline_result
代码流程:
-
环境设置:控制 MindSpore 的日志级别,只显示错误以上的信息。
-
安装依赖:通过 pip 安装
mindformers库。 -
创建任务:创建一个图像分类的 pipeline,并指定使用
vit_base_p16模型(Vision Transformer,vit模型架构——base模型大小——p16图像分块大小)用于图像分类。会自动下载该模型的预训练权重文件(vit_base_p16.ckpt,约 346MB)。 -
准备数据:下载一张名为
daisy.jpg的测试图片,并使用matplotlib将其显示出来。 -
执行推理:将图片加载后送入 pipeline,让模型判断图片内容,并返回可能性最高的前 3 个标签。
-
输出结果:最终输出结果显示,模型有 89.98% 的置信度认为这张图是 雏菊(daisy)。
[[{'score': 0.8998883, 'label': 'daisy'}, {'score': 0.00063705887, 'label': 'bee'}, {'score': 0.000607335, 'label': 'fly'}]]
另外教程还演示了使用 BERT 进行中文命名实体识别推理、以及Lenet5实现手写数字体训练。