当前位置:网站首页>运行基于MindSpore的yolov5流程记录
运行基于MindSpore的yolov5流程记录
2022-07-17 05:10:00 【Just do it!ට⋆*】
运行记录
1.建立Mindspore运行环境
1。Mindspore的环境安装指南,按照提示进行https://www.mindspore.cn/install
2.下载Mindspore的yolov5,并下载模型和代码https://www.hiascend.com/zh/software/modelzoo/detail/C/9af06eedaa1b9577d6221a939a31747d
下载这两个文件
3。安装库,cd到模型脚本目录下,运行pip install -r requirements.txt
2.下载运行数据集MSCOCO
什么是COCO数据集?
COCO数据集是一个可用于图像检测(image detection),语义分割(semantic segmentation)和图像标题生成(image captioning)的大规模数据集。它有超过330K张图像(其中220K张是有标注的图像),包含150万个目标,80个目标类别(object categories:行人、汽车、大象等),91种材料类别(stuff categoris:草、墙、天空等),每张图像包含五句图像的语句描述,且有250,000个带关键点标注的行人。
具体的COCO数据集介绍 https://blog.csdn.net/qq_44554428/article/details/122597358
COCO数据集的下载
下载网址:官网下载链接
下载最小的val2017和annotions,放到目录下的datasets文件下
3.根据readme文件提示,运行export.py文件,导出mindir模型文件。
cd scripts
python export.py --ckpt_file [CKPT_PATH] --file_format [EXPORT_FORMAT]
#其中ckpt为ckpt模型文件地址,`EXPORT_FORMAT` 必须在 ["AIR", "MINDIR"]中选择。`BATCH_SIZE` 目前仅支持batch_size为1的推理(不用设置)。
运行后会再主目录下得到yolov5.mindir的模型文件。
4. 在执行推理前,mindir文件必须通过export.py
脚本导出。以下展示了使用mindir模型执行推理的示例。
运行指令:bash run_infer_310.sh [MINDIR_PATH] [DATA_PATH] [ANN_FILE] [DVPP] [DEVICE_ID]
阅读readme与sh文件提示,其中 mindir_path 为模型地址;DATApath为MS COCO val2017的images地址;ANN_FILE为标注地址;DVPP为推理设备,设置CPU,DEVICE_ID默认为0,无需设置。
如:
在cmd命令下运行export。py文件,后面加上参数
python export.py --ckpt_file D:\yanyi\project_process\ocr\code\Yolov5_for_MindSpore_1.1_code\weights\yolov5.ckpt --file_format MINDIR
5.运行推理
在执行推理前,mindir文件必须通过export.py
脚本导出。以下展示了使用mindir模型执行推理的示例。
bash run_infer_310.sh [MINDIR_PATH] [DATA_PATH] [ANN_FILE] [DVPP] [DEVICE_ID]
在cmd下运行。sh文件,后面加参数
cd scripts
run_infer_310.sh D:\yanyi\project_process\ocr\code\Yolov5_for_MindSpore_1.1_code\yolov5.mindir D:\yanyi\project_process\ocr\code\Yolov5_for_MindSpore_1.1_code\dataset\val2017 D:\yanyi\project_process\ocr\code\Yolov5_for_MindSpore_1.1_code\dataset\annotations\panoptic_val2017.json CPU
运行run_infer_310.sh 心得
不熟悉shell语言的可以加echo语句输出,查看运行到哪。
#!/bin/bash
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
if [[ $# -lt 4 || $# -gt 5 ]]; then
echo "Usage: bash run_infer_310.sh [MINDIR_PATH] [DATA_PATH] [ANN_FILE] [DVPP] [DEVICE_ID] DVPP is mandatory, and must choose from [DVPP|CPU], it's case-insensitive DEVICE_ID is optional, it can be set by environment variable device_id, otherwise the value is zero"
exit 1
fi
get_real_path(){
if [ "${1:0:1}" == "/" ]; then
echo "$1"
else
echo "$(realpath -m $PWD/$1)"
fi
}
model=$(get_real_path $1)
data_path=$(get_real_path $2)
ann_file=$(get_real_path $3)
DVPP=${4^^}
device_id=0
if [ $# == 5 ]; then
device_id=$5
fi
echo "mindir name: "$model
echo "dataset path: "$data_path
echo "ann file: "$ann_file
echo "image process mode: "$DVPP
echo "device id: "$device_id
export ASCEND_HOME=/usr/local/Ascend/
if [ -d ${ASCEND_HOME}/ascend-toolkit ]; then
echo "device id: "$device_id
export PATH=$ASCEND_HOME/fwkacllib/bin:$ASCEND_HOME/fwkacllib/ccec_compiler/bin:$ASCEND_HOME/ascend-toolkit/latest/fwkacllib/ccec_compiler/bin:$ASCEND_HOME/ascend-toolkit/latest/atc/bin:$PATH
echo "device id: "$device_id
export LD_LIBRARY_PATH=$ASCEND_HOME/fwkacllib/lib64:/usr/local/lib:$ASCEND_HOME/ascend-toolkit/latest/atc/lib64:$ASCEND_HOME/ascend-toolkit/latest/fwkacllib/lib64:$ASCEND_HOME/driver/lib64:$ASCEND_HOME/add-ons:$LD_LIBRARY_PATH
export TBE_IMPL_PATH=$ASCEND_HOME/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe
export PYTHONPATH=$ASCEND_HOME/fwkacllib/python/site-packages:${TBE_IMPL_PATH}:$ASCEND_HOME/ascend-toolkit/latest/fwkacllib/python/site-packages:$PYTHONPATH
export ASCEND_OPP_PATH=$ASCEND_HOME/ascend-toolkit/latest/opp
else
echo "device DDDDDDDDDDDDDDDDDDDid: "$device_id
export PATH=$ASCEND_HOME/fwkacllib/bin:$ASCEND_HOME/fwkacllib/ccec_compiler/bin:$ASCEND_HOME/atc/ccec_compiler/bin:$ASCEND_HOME/atc/bin:$PATH
echo "deviceDDDDDDDDDDDDDDDDDDDDD id: "$device_id
export LD_LIBRARY_PATH=$ASCEND_HOME/fwkacllib/lib64:/usr/local/lib:$ASCEND_HOME/atc/lib64:$ASCEND_HOME/acllib/lib64:$ASCEND_HOME/driver/lib64:$ASCEND_HOME/add-ons:$LD_LIBRARY_PATH
export PYTHONPATH=$ASCEND_HOME/fwkacllib/python/site-packages:$ASCEND_HOME/atc/python/site-packages:$PYTHONPATH
export ASCEND_OPP_PATH=$ASCEND_HOME/opp
fi
echo "device AAAAAAAAAAAAAAAid: "$device_id
function compile_app()
{
cd ../ascend310_infer || exit
bash build.sh &> build.log
}
echo "device BBBBBBBBBBBBBid: "$device_id
function infer()
{
cd - || exit
if [ -d result_Files ]; then
rm -rf ./result_Files
fi
if [ -d time_Result ]; then
rm -rf ./time_Result
fi
mkdir result_Files
mkdir time_Result
if [ "$DVPP" == "DVPP" ];then
echo "Only support CPU mode"
exit 1
elif [ "$DVPP" == "CPU" ]; then
../ascend310_infer/out/main --mindir_path=$model --dataset_path=$data_path --device_id=$device_id --image_height=640 --image_width=640 &> infer.log
echo "device CCCCCCCCCCCCCCid: "$device_id
else
echo "image process mode must be in [DVPP|CPU]"
exit 1
fi
}
echo "device jisuanjingduid: "$device_id
function cal_acc()
{
echo "device DDDDDDDDDDDDid: "$device_id
python3.7 ../postprocess.py --result_files=./result_Files --dataset_path=$data_path --ann_file=$ann_file &> acc.log &
echo "AAAAAAAAAAAA"
}
echo "device compile_app id: "$device_id
compile_app
if [ $? -ne 0 ]; then
echo "compile app code failed"
exit 1
fi
echo "device infer id: "$device_id
infer
if [ $? -ne 0 ]; then
echo " execute inference failed"
exit 1
fi
echo "device cal_acc id: "$device_id
cal_acc
if [ $? -ne 0 ]; then
echo "calculate accuracy failed"
exit 1
fi
运行后会进入编译阶段,这里还没有结果
----------------------------------------目前只有这些-----------------------------------------------------
6运行eval文件
下载MS coco数据集val2017和instances_val2017.json,按照如下排列:
instances_val2017.json放入annotations文件中,val2017放到yolov5目录下,其他不需要设置。
运行命令:
python eval.py --data_dir=./dataset/yolov5/ --pretrained=./weights/yolov5.ckpt --testing_shape=640
运行成功后会出现
2022.7.1
尝试在win系统下运行,太难了最终还是没起来,分享一下可借鉴的推理代码
https://github.com/mindspore-ai/mindspore-21-days-tutorials/tree/main/chapter4
边栏推荐
- Wxml template syntax in wechat applet
- Wechat applet password display hidden (small eyes)
- MySQL queries the data of the current day, this week, this month and last month
- Macro definition of C language
- idea导入本地包
- Configure tabbar and request network data requests
- 常量与常量指针
- 配置tabBar和request网络数据请求
- 编程风格
- Object to map
猜你喜欢
1. Neusoft cross border e-commerce warehouse demand specification document
软件过程与管理复习(八)
4. Neusoft cross border e-commerce data warehouse project - user behavior data acquisition channel construction of data acquisition channel construction (2022.6.1-2022.6.4)
MySQL学习笔记(4)——(基本CRUD)操作数据库中的表的数据
4.东软跨境电商数仓项目--数据采集通道搭建之用户行为数据采集通道搭建(2022.6.1-2022.6.4)
10. DWD layer construction of data warehouse construction
Unable to determine Electron version. Please specify an Electron version
C语言的宏定义
MySQL事务
软件过程与管理复习(十)
随机推荐
SQL time comparison
PCM静默检测
typedef
Preorder, middle order and postorder traversal of binary tree
Some applications of special pointers
编程风格
解决idea新建module 提示module xxxx does exitst
10 question 10 answer: do you really know thread pools?
1.东软跨境电商数仓需求规格说明文档
Operation of C language files
【语音识别】kaldi安装心得
Time difference calculation
mysql的事务
Constants and constant pointers
MySQL 查询当天、本周,本月、上一个月的数据
利用IDE打jar包
Composants communs des applets Wechat
1. Neusoft cross border e-commerce warehouse demand specification document
JVM learning
关于线程池中终止任务