使用YOLO5—V7.0训练模型并将训练结果模型.pt转成.onnx测试

本文详细描述了如何使用YOLO5V7.0从.pt模型转换为ONNX,包括数据集准备、环境配置、模型转换和部署流程,以及解决常见报错的方法,最后展示了如何使用Netron可视化模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

YOLO5—V7.0的快速部署(简化版)

1.数据集准备

2. 下载预训练模型

 3.搭配YOLO5环境

安装CUDA和pytorch(网上教程很多此处不赘述,注意pytorch不要安装成CPU版本的)

在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包

4.配置YOLO5—V7.0文件

5.报错 :

6.使用export文生成.onnx文件

​7.使用主目录下的detect文件测试onnx文件

8.成果:

9.使用 Netron (开源的模型可视化工具)来可视化 ONNX 模型

大佬文章:

结语:


 

前言

使用YOLO5 --v5.0 的 export将训练好的.pt模型文件转成.onnx文件出现各种错误虽然转出了onnx文件,但是并不能检测出目标物体。

经过不断的精神折磨后发现是v5.0版本问题 ,所以在这里对v7.0版本的使用做个笔记(重点是使用export文件转出onnx文件 并且在detect文件里使用onnx文件检测onnx文件) 。

YOLO5—V7.0的快速部署(简化版)

v7.0与 V5.0部署方法几乎一样,此处不做过多介绍,具体细节可以参考我写的V5.0版本的部署小白使用YOLO5训练猫狗数据的全过程及所遇到的坑-优快云博客

1.数据集准备

images 里存放的是猫和狗的图片 

labels里存放的是标签 (此处图片和标签需要一一对应)

可以参考大佬文章:

目标检测---利用labelimg制作自己的深度学习目标检测数据集-优快云博客目标检测---数据集格式转化及训练集和验证集划分_训练集和验证集的划分代码-优快云博客

b27a9c893ca147e681e27198bc4dc88a.png

v7.0的源码地址:(点击直接访问,加速访问进的是Gitcode下载不了预训练模型)ultralytics/yolov5 at v7.0 (github.com)icon-default.png?t=N7T8https://github.com/ultralytics/yolov5/tree/v7.0

6d4def5df7db4e78b3cc2e5ee5d8ea70.png

2. 下载预训练模型

在上述v7.0的源码地址找到如下界面(建议鼠标右击选择新标签页打开链接)(我这里选择yolo5s.pt轻量级的,文件一般越大精度越高但所需的时间,要求的配置也相应增加

0b501759e5e64750b6e154fe51619289.png

 3.搭配YOLO5环境

安装CUDA和pytorch(网上教程很多此处不赘述,注意pytorch不要安装成CPU版本的)

安装完成后可以用以下代码测试

import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.cuda.is_available())  #输出为True,则安装无误

结果:

这里cu121代表安装的是GPU版本 

b8630337166d4042a6f072bea4a38fe5.png

在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包

bd4f9816e2624f4d90938d485bfaec2b.png

cd yolov5-v5.0
pip install -r requirements.txt

4.配置YOLO5—V7.0文件

  修改{ data目录下的voc.yaml,models目录下的yolov5s.yaml  }

(建议复制粘贴一份并重命名,在新建的里面改动)

dd469fbd16694091bea79da665c72962.png

 (这里的voc.yaml 比v5.0版本多了个下载数据集的功能,并且将目录结构做了改动)

(想使用download的可以在顶部的注释中找到用法)

698fab92bdaa405bbb9ac4c28f0a0a67.png

此处我是自建数据集文件夹所以不做考虑,直接改用自己的目录(也可以直接套用v5.0版本的)。

3eb4d3629e7649e88e2832a56476deb3.png

修改models目录下的yolov5s.yaml 

nc  : 标签的类别个数

de73aaff1285449782926d60a468dde7.png

修改主目录下的train.py 文件

weights    填写预训练模型地址,我这里使用的是yolo5s.pt(default填相对路径,help(最好)填绝对路径)(Windows电脑路径需要手动改成 “/ ” )

cfg        填写models目录下yolov5s.yaml路径

data      填写data目录下的voc.yaml 路径

hyp       超参数,对模型进行一些微调(此处我没做调整,看个人)

epoch    训练的轮数,一般200—300轮即可

batch -size    批次,按自己电脑配置来调

device       选择GPU还是CPU(此处的default不填默认为0调用的是GPU)

7e3a81ed904e4e509e70cce4ed103551.png

完成以上配置后运行train.py文件后运行:

5.报错 :

(此处CPU调用的可以选择调小batch -size 里的default参数)e2ce764069a340d3b9f75b0268c859a0.png

7efa497d99b14802bd733a1c810aad6b.png

解决:

 参考文章:

RuntimeError: DataLoader worker (pid(s) 9528, 8320) exited unexpectedly_dataloader worker (pid(s) 23188, 9620) exited unex-优快云博客

在utils路径下找到dataloaders.py这个文件

修改num_worker=0

84de26c3341143d5b077c7af1695dd9f.png

再次运行train.py 成功

a858b12a42b742c7906bba4ceb4a8ea1.png

完成后在runs\train\exp\weights可以找到best.pt ,last.pt两个训练结果模型

6.使用export文生成.onnx文件

官网给出的export支持转换的文件种类

在主目录下找到export.py文件找到parse_opt函数,修改 

data ,weight,里的数据(default填相对路径,help(最好)填绝对路径)(Windows电脑路径需要手动改成 “/ ” )

weight   填刚刚生成的best.pt文件路径

853d8f6bb2c8444dbefe2423b8f46729.png

修改 include 里的default为 onnx(可以选择help里有的任意类型)

d2f6c2fb3a5a4628935d0729ee002426.png

运行export文件(可以看到onnx已经保存起来)

f729fcb8824e44aca3d071d47d7a5540.png7.使用主目录下的detect文件测试onnx文件

修改  weights为onnx文件的路径, source 为测试的图片路径,data为修改后的voc.yaml路径

6f8c1f009c994d309918d8720ab31881.png

运行结果在runs\detect\exp下查看

5bba81b71d3d4b0097ecb654e2267949.png

8.成果:

d0dfd201c81742c8bace2f9d5919a93d.jpegcfbdcfc35c674e24b8c7bd0be857297c.jpeg

9.使用 Netron (开源的模型可视化工具)来可视化 ONNX 模型

地址

Netronicon-default.png?t=N7T8https://netron.app/88cddb751a8b4e7f9f48aa7fa234e441.png

大佬文章:

各种参数详解:    手把手带你调参YOLOv5 (v5.0-v7.0)(推理)_yolov5调参-优快云博客

详细介绍 Yolov5 转 ONNX模型 + 使用ONNX Runtime 的 Python 部署(包含官方文档的介绍)_yolov5转onnx-优快云博客

【Yolov5】1.认真总结6000字Yolov5保姆级教程(2022.06.28全新版本v6.1)_yolov5教程-优快云博客

模型部署入门教程(一):模型部署简介 - 知乎 (zhihu.com)

Yolov5-v5.0 导出onnx推理结果完全错误_tracerwarning: converting a tensor to a python boo-优快云博客

官方文档地址文件介绍:    Export - Ultralytics YOLOv8 Docs

结语:

本笔记仅仅适合了解怎么用,如果想深入了解还是得看官方文档的。

吧啦吧啦又说了一堆 ​​​,(心里自我安慰都是为了完成任务。3bb8c6e086144a22b25b82d821de87f8.png

后面应该会研究一下onnx的部署吧。

吐槽:大一的自己如此忙碌。

<think>好的,我现在需要帮助用户将YOLOv5.pt模型转换为ONNX格式。首先,我得回想一下YOLOv5的官方文档相关教程,看看有没有现成的指导步骤。记得YOLov5的仓库里通常会有export.py脚本,专门用来导出不同格式的模型,包括ONNX。所以第一步应该是建议用户克隆官方仓库,安装依赖。 接下来,用户可能需要安装必要的库,比如onnxcoremltools,这些通常在requirements.txt里有列出。不过用户可能已经安装了PyTorch,但需要确认版本是否兼容。比如,某些YOLOv5版本可能需要特定版本的PyTorch才能正确导出ONNX。 然后,运行export.py脚本时,参数设置很重要。用户需要指定权重文件路径、图片尺寸,还有是否包含动态轴。动态轴对于部署到不同框架或设备上可能有帮助,但有时候静态尺寸更稳定,特别是如果目标部署环境对动态形状支持不好的话。 转换过程中常见的错误可能包括缺少依赖项,或者模型结构中的某些操作不被ONNX支持。这时候可能需要检查是否有自定义层,或者是否需要更新ONNX的版本。另外,用户可能会遇到形状不匹配的问题,这时候可能需要调整输入尺寸或查看模型配置。 测试转换后的ONNX模型是否有效也很重要。用户可以使用onnxruntime进行推理测试,确保输入输出符合预期。如果出现错误,可能需要检查ONNX模型的结构,或者是否有操作符不被支持。 用户的问题可能还涉及性能优化,比如在导出时进行简化,或者使用onnx-simplifier来优化计算图结构。另外,某些部署场景可能需要特定的输入输出格式,比如固定批量大小,这时候需要在导出时设置相应的参数。 最后,需要提醒用户注意不同版本之间的差异,YOLOv5的各个版本(如v5.0、v5.1)可能在导出脚本的参数或模型结构上有变化,所以确保使用正确的版本对应的文档说明是关键。如果遇到问题,参考GitHub上的issue或者社区讨论可能会有帮助。</think>### YOLOv5模型.ptONNX格式教程 #### 1. 环境准备 首先需要安装YOLOv5官方代码库及依赖: ```bash git clone https://github.com/ultralytics/yolov5 # 克隆官方仓库 cd yolov5 pip install -r requirements.txt onnx coremltools # 安装依赖[^2] ``` #### 2. 转换命令 使用官方提供的`export.py`脚本进行转换: ```bash python export.py --weights yolov5s.pt --include onnx --img 640 # 基础转换 ``` 参数说明: - `--weights`: 指定预训练权重文件路径 - `--img`: 设置输入图像尺寸(需与训练时一致) - `--dynamic`: 添加此参数可生成动态轴ONNX(可选) #### 3. 高级选项 ```bash python export.py --weights yolov5s.pt --include onnx --img 640 --dynamic --simplify ``` - `--dynamic`:生成支持动态批处理的模型 - `--simplify`:使用onnx-simplifier优化模型结构[^1] #### 4. 验证转换结果 ```python import onnx model = onnx.load("yolov5s.onnx") onnx.checker.check_model(model) # 验证模型完整性 ``` #### 5. 常见问题解决 **问题1:出现`Unsupported ONNX opset version: 12`错误** 解决方法:更新onnx包 ```bash pip install onnx>=1.10.0 ``` **问题2:输出节点缺失** 解决方法:明确指定输出层名称 ```bash python export.py ... --output [output1,output2] ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值