接上回没完成的推理,
首先是看下mindyolo是啥吧。
MindYOLO是MindSpore Lab开发的AI套件,实现了最先进的YOLO系列算法,查看支持的模型算法。
MindYOLO使用Python语言编写,基于 MindSpore AI框架开发。
master 分支配套 MindSpore 2.0。
最新更新2023/06/15,新鲜出炉。
- 支持 YOLOv3/v4/v5/v7/v8/X 等6个模型,发布了23个模型weights,详情请参考 MODEL ZOO。
- 配套 MindSpore 2.0。
- 支持 MindSpore lite 2.0 推理。
- 新的教程文档上线!
当前版本基于GRAPH的静态Shape。后续将添加PYNATIVE的动态Shape支持,敬请期待。
新的代码采用yaml配置网络,配置文件如下
__BASE__: [
'../coco.yaml',
'./hyp.scratch-low.yaml',
]
per_batch_size: 32 # 32 * 8 = 256
img_size: 640
sync_bn: False
# backbone/head calculate using fp16, loss fp32
ms_amp_level: O3
keep_loss_fp32: True
network:
model_name: yolov5
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
stride: [8, 16, 32]
anchors:
- [ 10,13, 16,30, 33,23 ] # P3/8
- [ 30,61, 62,45, 59,119 ] # P4/16
- [ 116,90, 156,198, 373,326 ] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[ [ -1, 1, ConvNormAct, [ 64, 6, 2, 2 ] ], # 0-P1/2
[ -1, 1, ConvNormAct, [ 128, 3, 2 ] ], # 1-P2/4
[ -1, 3, C3, [ 128 ] ],
[ -1, 1, ConvNormAct, [ 256, 3, 2 ] ], # 3-P3/8
[ -1, 6, C3, [ 256 ] ],
[ -1, 1, ConvNormAct, [ 512, 3, 2 ] ], # 5-P4/16
[ -1, 9, C3, [ 512 ] ],
[ -1, 1, ConvNormAct, [ 1024, 3, 2 ] ], # 7-P5/32
[ -1, 3, C3, [ 1024 ] ],
[ -1, 1, SPPF, [ 1024 ] ], # 9
]
# YOLOv5 v6.0 head
head:
[ [ -1, 1, ConvNormAct, [ 512, 1, 1 ] ],
[ -1, 1, Upsample, [None, 2, 'nearest']],
[ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
[ -1, 3, C3, [ 512, False ] ], # 13
[ -1, 1, ConvNormAct, [ 256, 1, 1 ] ],
[-1, 1, Upsample, [None, 2, 'nearest']],
[ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
[ -1, 3, C3, [ 256, False ] ], # 17 (P3/8-small)
[ -1, 1, ConvNormAct, [ 256, 3, 2 ] ],
[ [ -1, 14 ], 1, Concat, [ 1 ] ], # cat head P4
[ -1, 3, C3, [ 512, False ] ], # 20 (P4/16-medium)
[ -1, 1, ConvNormAct, [ 512, 3, 2 ] ],
[ [ -1, 10 ], 1, Concat, [ 1 ] ], # cat head P5
[ -1, 3, C3, [ 1024, False ] ], # 23 (P5/32-large)
[ [ 17, 20, 23 ], 1, YOLOv5Head, [nc, anchors, stride] ], # Detect(P3, P4, P5)
]
复制
正因为如此,将多个版本的yolo统一了。
此外提供了现成的模型文件和权重文件(mindir/ckpt),可以直接用于推理。
这里直接下载yolov5s的权重文件
https://download.mindspore.cn/toolkits/mindyolo/yolov5/yolov5s_300e_mAP376-860bcf3b.ckpt
使用demo目录下的predict.py
python predict.py --config ./configs/yolov5/yolov5s.yaml --weight=./yolov5s_300e_mAP376-860bcf3b.ckpt --image_path ./000000369812.jpg --device_target=CPU
测试图片是从验证集里面随便取的一张图片。
运行前需要安装依赖。pip install -r requirements.txt
这个错是pillow版本太高了。9.5就可以了。
![]()
pip reinstall pillow==9.5
这又是一个第三方库的版本问题numpy 小于 1.24

pip install numpy==1.23.5
终于推理成功。
原图:
推理图:
Speed: 72873.8/38.9/72912.8 ms inference/NMS/total per 640x640 image at batch-size 1
72s 一张图,看来直接推理是很慢的。
看来需要试试lite推理。
首先有个问题就是MindSpore Lite适配的python环境为3.7。。。
看来还是装个conda吧
Raspbian 下载 Miniconda 的方法和下载 Anacodna 差不多,可以使用 wget 命令:
wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-aarch64.sh
安装 Miniconda 基本也属于一键安装的模式,需要注意的是要设置一下安装的路径,具体操作如下:
sudo bash Miniconda3-latest-Linux-aarch64.sh
接下来根据提示,按 Enter 跳过安装协议
选择旧版本即可。
wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-aarch64.sh
添加 .bashrc 配置
vim ~/.bashrc
export PATH=“/home/ai/miniconda3/bin:”$PATH
source ~/.bashrc
因为刚才使用 sudo 安装,Miniconda3 的所有者是 root,需要先变更一下文件夹属性,具体操作如下:
sudo chown ai:ai -R /home/ai/miniconda3
conda init --all
这样环境就是python3.7了,然后进入deploy目录,安装依赖。
然后就是ckpt权重转为mindir模型
python ./deploy/export.py --config ./configs/yolov5/yolov5s.yaml --weight yolov5s_300e_mAP376-860bcf3b.ckpt --per_batch_size 1 --file_format MINDIR --device_target CPU
python deploy/predict.py --model_type Lite --model_path ./yolov5s.mindir --conifg ./configs/yolov5/yolov5s.yaml --image_path ./000000369812.jpg --device_target CPU
这文档明明是写了config配置的。
先去掉试试。
看来是不行。predict.py里面用到了很多配置。
mindyolo/utils/config.py 给config赋值
为什么报文件不存在?文件明明是有的啊?
还有mindyolo/infer_engine/lite.py 里面为什么默认是Ascend?
感觉问题好多,我先研究下代码。
未完待续~













