上一篇主要介绍了YOLOv5的一些基本知识,包括网络,数据集等,本篇主要是实际运行。
最近更新树莓派到4B 4G, 后续均在该设备下进行测试。
首先是下载模型。
模型地址:
这里就不进行实际训练了,太耗费时间和机器了。就直接用现成的预训练权重。
预训练权重地址:
下载完上面的文件后进行mindir导出。
python export.py --ckpt_file [CKPT_PATH] --file_name [FILE_NAME] --file_format [FILE_FORMAT]
export.py --ckpt_file yolov5shape640_ascend_v1100_coco2017_official_cv_acc36.6.ckpt --file_name yolov5.mindir --file_format MINDIR
上面的file_name设置的不对,应该是不带后缀的名称,如果设置如上面的一样的话,最终生成的文件是yolov5.mindir_yolov5s.mindir
缺少依赖,不是所有的模块名安装也是一样的名称。
pip install pyyaml
安装后运行还是报错,报错是device target不对。去看下目录下的default_config.yaml
里面默认配置的是Ascend,修改为CPU继续。
导出成功。
接下来就是推理了。文件夹下面有个cpp_infer, 先跑跑看吧。
首先是编译。
报错提示有点奇怪,先看下build.sh怎么写的吧。
上面的最终修改后的代码。代码的本意的如果不是ascend环境就获取cpu环境。但是最新的mindspore已经三合一了,而且realpath 在部分系统上不是返回空,而是返回异常。
所以直接注释掉相关代码就可以了。
cmake没安装,运行如下命令进行安装。
sudo
apt
install
-y cmake
缺少相关头文件。查看相关文档。
在开发一个新的模型时,需要把这几个文件拷到执行目录下,并编写对应模型的main.cc
执行。
有的模型cpp_infer
下面没有common_inc
文件夹,在执行的时候需要将这个文件夹拷到main.cc
同目录下
main.cc
里面是做模型推理的脚本文件,一般包括:
- 模型加载及构建
- 数据集构建/bin文件加载
- 模型推理
- 推理结果保存
然后在如下地址拷贝common_inc到build.sh的同目录下。上面的文档写的main.cc同目录,但是不同项目makefile写的不一样。
编译成功,然后就可以运行了。
运行报错。提升不支持CPU.
于是去看源码,源码里面创建的设备类型是Ascend310, 所以会报错。这个推理代码只能运行在310上。但是文档没说明。
那只能自己写推理了
import mindspore_lite as mslite
import numpy as np
import cv2 as cv
model = mslite.Model()
#default context's target is cpu
model.build_from_file("yolov5s.mindir", mslite.ModelType.MINDIR)
inputs = model.get_inputs()
in_data = cv.imread("/home/ai/YOLOv5/cpp_infer/out/data/000000000139.jpg")
inputs[0].set_data_from_numpy(in_data)
outputs = model.predict(inputs)
print(outputs)
复制
先这么写着调试下看看。
通过mindspore lite的云端推理。然后去下载mindspore lite。
尽然只有python3.7 可选。
未完待续~