YOLO系列网络模型是最为经典的one-stage算法,也是目前工业领域使用最多的目标检测网络,YOLOv8网络模型是YOLO系列的最新版本,在继承了原有YOLO网络模型优点的基础上,具有更高的检测精度。
| 本模型支持的任务类型 |
|---|
| 目标检测 |
参考实现:
url=https://github.com/ultralytics/ultralytics
commit_id=7a7c8dc7b70cf4bc0be18763a6b66805974ecbe6
model_name=yolov8| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| 固件与驱动 | 24.1.rc3 | Pytorch框架推理环境准备 |
| CANN | 8.3.RC1 | |
| Python | 3.11.10 | - |
| PyTorch | 2.1.0 | - |
获取源码
git clone https://github.com/ultralytics/ultralytics
cd ultralytics
git reset --hard 7a7c8dc7b70cf4bc0be18763a6b66805974ecbe6
pip3 install -e .
git apply ../diff.patch
cd ..安装依赖
pip3 install -r requirements.txt
cd ultralytics
pip3 install -r requirements.txt
cd ..获取原始数据集。
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 ..模型转换
使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。
获取权重文件
在链接中找到所需版本下载,也可以使用下述命令下载:
wget https://github.com/ultralytics/assets/releases/download/v0.0.0/${model}.pt${model}:模型大小,可选yolov8[n/s/m/l/x]导出ONNX模型
运行下述命令导出ONNX模型。
python3 pth2onnx.py --pt=yolov8n.pt--pt:权重文件路径获得 yolov8n.onnx 文件。
使用ATC工具将ONNX模型转OM模型。
配置环境变量。
source /usr/local/Ascend/ascend-toolkit/set_env.sh执行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}参数说明:
自定义参数说明:
命令示例:
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 模型文件。
开始推理验证。
参数设置
在 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,测试数据集路径文本执行推理
运行 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:使用芯片的序号