YOLOV8模型测试、训练及导出onnx模型

一、环境配置

1、下载源码

git clone https://github.com/ultralytics/ultralytics.git

2、安装python包

pip install -r requirements.txt

3、安装ultralytics(源码安装的方式)

# 在ultralytics-main的文件目录里面,运行以下命令
pip install -e .

备注:
如果你使用了官方推荐的pip安装,源码就会在conda环境下
如果使用源码安装的方式,修改代码只需要在自己下载的源码里修改(这种方式更加推荐)。

4、测试ultralytics是否安装成功,运行以下的pytho

import ultralytics
ultralytics.checks()

反馈以下结果,则说明ultralytics安装成功

Ultralytics YOLOv8.0.175 🚀 Python-3.8.18 torch-2.0.1+cu117 CUDA:0 (NVIDIA GeForce RTX 2080 SUPER, 7974MiB)
Setup complete ✅ (16 CPUs, 31.3 GB RAM, 257.3/884.8 GB disk)

二、模型测试

使用V8的官方命令解析

yolo task=detect    mode=train   data=<data.yaml path>      model=yolov8n.pt        args...
          classify                predict        coco-128.yaml                       yolov8n-cls.yaml             args...
          segment               val                                                                         yolov8n-seg.yaml       args...
            pose                                                                                                      yolov8n.pt        format=onnx  args...
           export   

YOLOv8 可以直接在命令行界面 (CLI) 中使用“yolo”命令来执行各种任务和模式,并接受其他参数,即“imgsz=640”。

运行yolov8的目标检测模型

yolo task = predict model = yolov8n.pt source = '/**/1.jpg' , save = False

参数save用来决定是否保存包含预测框的图片
运行yolov8-seg的目标检测与分割模型

yolo task = segment mode = predict model = yolov8n-seg.pt source = '/**/1.jpg'

运行yolov8-cls的分类模型

yolo task = classify mode = predict model = yolov8n-cls.pt source = '/**/1.jpg'

运行yolov8-pose的目标检测与姿态模型

yolo task = pose mode = predict model = yolov8n-pose.pt source = '/**/1.jpg'

三、模型训练

训练yolov8的目标检测模型

yolo detect  train data=./ultralytics/cfg/datasets/coco128.yaml  model = yolov8n.yaml imgsz = 416

备注:

  • 修改图片尺寸可以在命名行中指定imgsz,或者在default.yaml中指定
  • model可以是预训练模型,也可以yaml文件,其中yolo后面加的n或者s等等来决定采用哪种模型尺寸

训练yolov8的目标检测与姿态模型

yolo pose  train data=./ultralytics-main/ultralytics/cfg/datasets/coco128.yaml  model = yolov8n-pose.yaml

报了以下错误

  File "/home/**/yolov8-python/ultralytics-main/ultralytics/data/dataset.py", line 122, in get_labels
    len_cls, len_boxes, len_segments = (sum(x) for x in zip(*lengths))
ValueError: not enough values to unpack (expected 3, got 0)

这个错误,可能是官方提供的最新代码(时间截至到2023年9月12号)有问题,可以尝试使用旧一点的版本。我在官方源码下载Branches为val_period,训练yolov8的目标检测与姿态模型是没有问题的。
在这里插入图片描述

导出onnx模型

yolo export model=/**/weights/best.pt format=onnx opset=12

备注:
在需要训练自己的数据集、更改训练的配置参数或者模型网络结构
修改地方的主要是数据集yaml文件(例如coco128.yaml,或者创建一个自己数据集的yaml文件)、配置参数default.yaml(里面包括很多参数,包括图片尺寸、是否使用预训练权重等等)及模型网络结构yaml文件(例如yolov8.yaml)

<think>好的,我需要帮助用户了解如何将YOLOv8训练模型导出ONNX格式。首先,我要回顾用户提供的引用内容,特别是引用[1]和[2],因为它们直接提到了YOLOv8导出ONNX的步骤。用户还提到了其他关于YOLOv5的引用,但主要问题集中在YOLOv8上,所以需要重点处理相关的信息。 首先,引用[1]提到需要修改YOLOv8的官方源码来导出ONNX模型,然后再将ONNX转换为RKNN模型。引用[2]给出了一个命令行示例,使用`yolo mode=export`命令,指定模型路径和格式为ONNX,动态性设置为False。这可能是官方推荐的方法,不需要太多代码修改。而引用[3]和[4]虽然关于YOLOv5,但可能有些步骤类似,比如设置dynamic参数或修改导出脚本,但需要确认是否适用于YOLOv8。 用户的问题是询问具体的教程或方法,所以需要分步骤说明。可能需要两个方法:一是使用官方命令行工具,二是需要代码修改的情况。例如,YOLOv8可能像YOLOv5一样,在导出时可能需要调整某些参数或修改导出脚本,比如处理动态维度或输出层。 需要注意的是,用户提供的引用[2]中的命令是否足够,或者是否需要像引用[1]那样修改代码。另外,用户可能关心导出时的常见问题,比如动态与静态输入、输出节点的处理,以及后续的验证步骤,比如ONNX模型的检查或可视化。 需要确保步骤清晰,首先介绍官方推荐的方法,然后如果有必要,提到可能的代码调整。同时,要提醒用户注意版本兼容性,比如PyTorch和ONNX的版本,以及确保模型导出后经过验证。此外,可能还需要提到使用onnxruntime进行推理测试,或者使用Netron进行可视化,如引用[3]中提到的。 最后,生成的相关问题需要围绕导出过程中的常见问题、优化方法、与其他格式的转换,以及部署相关的考虑因素。确保问题覆盖用户可能感兴趣的后续步骤。</think>### YOLOv8模型导出ONNX格式完整教程 #### 一、标准导出方法(推荐) 1. **安装最新版ultralytics包** ```bash pip install ultralytics --upgrade ``` 2. **使用官方命令行工具** 通过`yolo`命令行工具可直接完成PT到ONNX的转换: ```bash yolo mode=export model=yolov8s.pt format=onnx dynamic=False opset=13 ``` - `dynamic=False`:固定输入输出维度(推荐部署场景使用) - `opset=13`:指定ONNX算子版本(必须≥11) - 输出:生成`yolov8s.onnx`文件[^2] #### 二、代码修改方式(特殊需求) 当需要修改网络结构或处理动态输入时,需调整源码: ```python from ultralytics import YOLO # 加载训练好的模型 model = YOLO('yolov8s.pt') # 关键修改点(示例): # 1. 修改model对象的export属性 model.model[-1].export = True # 修正输出层格式 # 2. 执行导出 model.export( format='onnx', dynamic=False, simplify=True, # 启用模型简化 opset=13 ) ``` [^1] #### 三、验证导出结果 1. **检查ONNX模型** ```python import onnx model = onnx.load("yolov8s.onnx") onnx.checker.check_model(model) ``` 2. **可视化网络结构** 使用Netron工具查看: ```bash pip install netron python -m netron yolov8s.onnx ``` #### 四、常见问题处理 | 问题现象 | 解决方案 | |---------|---------| | 输出节点异常 | 检查`model.model[-1].export`设置[^4] | | 动态维度错误 | 设置`dynamic=False`或指定具体维度 | | 算子不支持 | 升级opset版本至≥13 | #### 五、进阶技巧 1. **动态批次支持**:设置`dynamic=['batch']`实现可变批次推理 2. **INT8量化**:通过`int8=True`参数启用(需校准数据集) 3. **模型简化**:使用`simplify=True`自动优化计算图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值