更新时间:2025-12-15 GMT+08:00
分享

准备模型

本方案以开源YOLOv7模型为例说明如何准备模型。

  1. 在宿主机上基于步骤二:获取基础镜像获取的基础镜像起一个容器,挂载宿主机目录/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}:容器名称
  2. 在容器中执行如下命令下载yolov7源码并安装依赖。
    git clone https://github.com/WongKinYiu/yolov7.git
    cd yolov7
    git reset --hard 1cb8aa5
    pip3 install -r requirements.txt
  3. 从如下链接中下载权重文件:https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6.pt
  4. 在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:图片大小
  5. 导出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

  6. 执行如下命令导出名为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场景下配置,其余场景不需要配置该参数

相关文档