准备模型
本方案以开源YOLOv7模型为例说明如何准备模型。
- 在宿主机上基于步骤二:获取基础镜像获取的基础镜像起一个容器,挂载宿主机目录/home/driving_model用于存储模型相关数据,启动容器可参考如下命令:
ctr run \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --mount "type=bind,src=/etc/localtime,dst=/etc/localtime,options=rbind:ro" \ --mount "type=bind,src=/var/log/npu/,dst=/usr/slog,options=rbind:rw" \ --mount "type=bind,src=/usr/local/sbin/npu-smi,dst=/usr/local/sbin/npu-smi,options=rbind:rw" \ --mount "type=bind,src=/usr/local/dcmi,dst=/usr/local/dcmi,options=rbind:rw" \ --mount "type=bind,src=/etc/ascend_install.info,dst=/etc/ascend_install.info,options=rbind:rw" \ --mount "type=bind,src=/sys/fs/cgroup,dst=/sys/fs/cgroup,options=rbind:ro" \ --mount "type=bind,src=/usr/local/Ascend/driver,dst=/usr/local/Ascend/driver,options=rbind:rw" \ --mount "type=bind,src=/usr/bin/hccn_tool,dst=/usr/bin/hccn_tool,options=rbind:rw" \ --mount "type=bind,src=/etc/hccn.conf,dst=/etc/hccn.conf,options=rbind:rw" \ --mount "type=bind,src=/home/driving_model,dst=/home/driving_model,options=rbind:rw" \ --net=host \ -u root \ --shm-size 64g \ {image} \ {container_name} \ /bin/sh参数说明:
- ${image}:基础镜像名称。
- {container_name}:容器名称。
- 在容器中执行如下命令下载yolov7源码并安装依赖。
git clone https://github.com/WongKinYiu/yolov7.git cd yolov7 git reset --hard 1cb8aa5 pip3 install -r requirements.txt
- 从如下链接中下载权重文件:https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6.pt。
- 在yolov7目录中执行如下命令,导出名为yolov7-e6.onnx的模型。
python export.py --weights ./yolov7-e6.pt --batch-size 1 --simplify --grid --topk-all 100 --iou-thres 0.65 --conf-thres 0.001 --img-size 1280 1280 --max-wh 1280
其中各参数含义如下:
- --weights:模型权重文件
- --batch-size:batch大小,可取1、4、8、16、32、64
- --topk-all:每张图片上最多能检测出来物体的数量
- --iou-thres:交并比阈值
- --conf-thres:置信度阈值
- --img-size:图片大小
- 导出onnx模型后,需要导出mindspore对应的模型,下载mindir工具包
https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.7.1/MindSporeLite/lite/release/linux/aarch64/cloud_fusion/python39/mindspore-lite-2.7.1-linux-aarch64.tar.gz
- 执行如下命令导出名为output_model.mindir的模型。
tar -zxvf mindspore-lite-2.7.1-linux-aarch64.tar.gz export LITE_HOME=./mindspore-lite-2.7.1-linux-aarch64 # 建议使用绝对路径 export LD_LIBRARY_PATH=${LITE_HOME}/runtime/third_party/dnnl:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${LITE_HOME}/runtime/lib:${LITE_HOME}/tools/converter/lib:$LD_LIBRARY_PATH ./mindspore-lite-2.7.1-linux-aarch64/tools/converter/converter/converter_lite --modelFile=model.onnx --outputFile=output_model --fmk=ONNX --optimize=ascend_oriented --configFile= --inputShape=imgs:1,3,1280,1280其中各参数含义如下:
- --modelFile:需要转换的模型路径
- --outputFile:转换后的mindir文件保存路径,默认添加.mindir后缀
- --fmk:输入的模型类型,ONNX表示输入的模型为ONNX模型,如果输入模型类型为pb,则设置为TF
- --optimize:走Ascend推理,必须配置的默认参数,表示走ascend后端的离线转换推理;若设置为--optimize=None,表示转换阶段不进行编译,经过此步骤转换得到的mindir可以进行在线推理
- --configFile:设置一些优化一起配置文件配置动态分档,纯动态相关信息
- --inputShape:在固定shape场景下配置,其余场景不需要配置该参数