Ascend-SACT/YOLOv8
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

概述

YOLO系列网络模型是最为经典的one-stage算法,也是目前工业领域使用最多的目标检测网络,YOLOv8网络模型是YOLO系列的最新版本,在继承了原有YOLO网络模型优点的基础上,具有更高的检测精度。

本模型支持的任务类型
目标检测
  • 参考实现:

    url=https://github.com/ultralytics/ultralytics
    commit_id=7a7c8dc7b70cf4bc0be18763a6b66805974ecbe6
    model_name=yolov8

推理环境准备

  • 该模型需要以下插件与驱动
    表 1 版本配套表
配套版本环境准备指导
固件与驱动24.1.rc3Pytorch框架推理环境准备
CANN8.3.RC1
Python3.11.10-
PyTorch2.1.0-

快速上手

获取源码

  1. 获取源码

    git clone https://github.com/ultralytics/ultralytics
    cd ultralytics
    git reset --hard 7a7c8dc7b70cf4bc0be18763a6b66805974ecbe6
    pip3 install -e .
    git apply ../diff.patch
    cd  ..
  2. 安装依赖

    pip3 install -r requirements.txt
    cd ultralytics
    pip3 install -r requirements.txt
    cd  ..

准备数据集

  1. 获取原始数据集。

    mkdir datasets
    cd datasets
    wget https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels-segments.zip
    unzip coco2017labels-segments.zip
    wget http://images.cocodataset.org/zips/val2017.zip
    unzip val2017.zip -d coco/images
    cd ..

模型推理

  1. 模型转换

    使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。

    1. 获取权重文件

      在链接中找到所需版本下载,也可以使用下述命令下载:

      wget https://github.com/ultralytics/assets/releases/download/v0.0.0/${model}.pt
      • 参数说明:
        • ${model}:模型大小,可选yolov8[n/s/m/l/x]
    2. 导出ONNX模型

      运行下述命令导出ONNX模型。

      python3 pth2onnx.py --pt=yolov8n.pt
      • 参数说明:
        • --pt:权重文件路径

      获得 yolov8n.onnx 文件。

    3. 使用ATC工具将ONNX模型转OM模型。

      1. 配置环境变量。

        source /usr/local/Ascend/ascend-toolkit/set_env.sh
      2. 执行ATC命令。

        atc --framework=5 --model=yolov8n.onnx --input_format=NCHW --input_shape="images:${batchsize},3,640,640" --output_type=FP16 --output=yolov8n_bs${batchsize} --log=error --soc_version=Ascend${chip_name}
        • 参数说明:

          • --model:为 ONNX 模型文件
          • --framework:5 代表 ONNX 模型
          • --input_format:输入数据的格式
          • --input_shape:输入数据的形状
          • --output_type:输出数据的类型
          • --output:输出的 OM 模型
          • --log:日志级别
          • --soc_version:处理器型号
        • 自定义参数说明:

          • ${batchsize} 需要指定为要生成的 om 模型的批处理大小, 如 1、4、8、16 等,此处以 8 为示例进行说明。
          • ${chip_name} 可以用npu-smi info查询name得到。
        • 命令示例:

        atc --framework=5 --model=yolov8n.onnx --input_format=NCHW --input_shape="images:8,3,640,640" --output_type=FP16 --output=yolov8n_bs8 --log=error --soc_version=Ascend310P3

        运行成功后生成 yolov8n_bs8.om 模型文件。

  2. 开始推理验证。

    1. 参数设置

      在 ultralytics\ultralytics\yolo\cfg 文件夹的 default.yaml 与 ultralytics\ultralytics\yolo\data\datasets 文件夹的 coco.yaml 中填入相关参数。

      请根据实际情况修改相关参数。

      • default.yaml 参数说明:

        • model:pt 权重文件,必须与 onnx 模型对应一致
        • data: 数据配置文件,此处以 coco.yaml 为例进行说明
        • batch:批处理数量大小,必须与 om 模型的 batchsize 相等
        • project:推理结果的总保存路径
        • name:每次推理结果的文件名称
        • ......
      • coco.yaml 参数说明:

        • path:coco 数据集存放路径
        • train:train2017.txt, 训练数据集路径文本
        • val:val2017.txt,验证数据集路径文本
        • test:test-dev2017.txt,测试数据集路径文本
  3. 执行推理

    运行 om_infer.py 推理 OM 模型,结果默认保存在 project/name 文件夹下的 predictions.json,精度计算结果通过打屏显示。

    python3 om_infer.py --weight=yolov8n.pt --om=yolov8n_bs8.om --batch_size 8 --device_id=0
    • 命令参数说明:
    • --weight:pt 权重文件所在路径
    • --om:om 模型所在路径
    • --batch_size:om 模型的 batch size
    • --device_id:使用芯片的序号