将 YOLOv10 模型从 PyTorch 转换为 ONNX

将 YOLOv10 模型从 PyTorch 转换为 ONNX

    • 1. 环境准备
      • 1.1 克隆 YOLOv5 仓库
      • 1.2 安装依赖库
    • 2. 转换模型
      • 2.1 使用 YOLOv5 提供的命令进行转换
      • 2.2 转换过程
      • 2.3 转换结果
    • 3. 验证转换后的模型
      • 3.1 预测
      • 3.2 验证
    • 4. 总结

在深度学习模型的部署过程中,将模型从一种格式转换为另一种格式是非常常见的操作。本文将详细介绍如何将 YOLOv10 模型从 PyTorch 的 .pt 格式转换为 ONNX 的 .onnx 格式。

1. 环境准备

首先,我们需要确保环境已经配置好,并且安装了必要的依赖库。以下是环境准备步骤:

1.1 克隆 YOLOv5 仓库

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

1.2 安装依赖库

使用 pip 安装 YOLOv5 所需的依赖库:

pip install -r requirements.txt

2. 转换模型

在环境准备完成后,我们可以开始将 YOLOv5 模型从 .pt 格式转换为 .onnx 格式。

2.1 使用 YOLOv5 提供的命令进行转换

YOLOv5 提供了一个方便的命令行工具来执行模型转换。假设我们有一个名为 yolov10x_best.pt 的模型文件,我们可以使用以下命令将其转换为 ONNX 格式:

yolo export model=../learn-yolo/models/yolov10x_best.pt format=onnx

2.2 转换过程

执行上述命令后,YOLOv5 会自动将模型转换为 ONNX 格式,并输出转换后的模型文件路径。以下是转换过程的日志输出:

Ultralytics YOLOv8.2.93 🚀 Python-3.12.3 torch-2.4.1+cu121 CPU (13th Gen Intel Core(TM) i9-13900KF)
YOLOv10x summary (fused): 503 layers, 31,605,266 parameters, 0 gradients, 169.9 GFLOPsPyTorch: starting from '../learn-yolo/models/yolov10x_best.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 300, 6) (61.2 MB)
requirements: Ultralytics requirement ['onnx>=1.12.0'] not found, attempting AutoUpdate...
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Collecting onnx>=1.12.0Downloading onnx-1.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (16 kB)
Requirement already satisfied: numpy>=1.20 in /root/miniconda3/lib/python3.12/site-packages (from onnx>=1.12.0) (1.26.4)
Collecting protobuf>=3.20.2 (from onnx>=1.12.0)Downloading protobuf-5.28.1-cp38-abi3-manylinux2014_x86_64.whl.metadata (592 bytes)
Downloading onnx-1.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.9/15.9 MB 3.3 MB/s eta 0:00:00
Downloading protobuf-5.28.1-cp38-abi3-manylinux2014_x86_64.whl (316 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 316.6/316.6 kB 164.3 MB/s eta 0:00:00
Installing collected packages: protobuf, onnx
Successfully installed onnx-1.16.2 protobuf-5.28.1Results saved to /mnt/e/workspace/learn-yolo/models
Predict:         yolo predict task=detect model=../learn-yolo/models/yolov10x_best.onnx imgsz=640
Validate:        yolo val task=detect model=../learn-yolo/models/yolov10x_best.onnx imgsz=640 data=./doclaynet.yaml
Visualize:       https://netron.app
💡 Learn more at https://docs.ultralytics.com/modes/export

2.3 转换结果

转换完成后,模型文件 yolov10x_best.onnx 将保存在指定的目录中。你可以使用以下命令查看转换后的模型文件:

ls ../learn-yolo/models/yolov10x_best.onnx

3. 验证转换后的模型

为了确保转换后的模型能够正常工作,你可以使用以下命令进行预测和验证:

3.1 预测

yolo predict task=detect model=../learn-yolo/models/yolov10x_best.onnx imgsz=640

3.2 验证

yolo val task=detect model=../learn-yolo/models/yolov10x_best.onnx imgsz=640 data=./doclaynet.yaml

4. 总结

通过以上步骤,我们成功地将 YOLOv5 模型从 PyTorch 的 .pt 格式转换为 ONNX 的 .onnx 格式。ONNX 格式的模型可以在多种深度学习框架和硬件平台上运行,方便了模型的部署和推理。

希望本文对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言。


参考链接:

  • YOLOv5 GitHub 仓库
  • ONNX 官方文档
  • Ultralytics YOLOv5 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言的结构体类型

在我们使用C语言进行编写代码时,常常会使用已经给定的类型来创建变量,比如int型,char型,double型等,而当我们想创建一些较为复杂的东西时,单单用一个类型变量是没办法做到的,比如我们想创建一个…

DPDK基础入门(十):虚拟化

I/O虚拟化 全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件。这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统。 半虚拟化:通过前端驱动/后端驱动模拟实现I/O虚拟…

嵌入式鸿蒙系统开发语言与开发方法分析

大家好,今天主要给大家分享一下,HarmonyOS系统的主力开发语言ArkTS语言开发方法,它是基于TypeScript(简称TS)语言扩展而来。 第一:ArkTS语言基本特性 目的:声明式UI,让开发者以更简洁,更自然的方式开发高性能应用。 声明式 UI基本特性: 基本UI描述:ArkTS定义了各种装饰…

使用Ubuntu耳机输出正弦波信号

最近有一个项目想使用喇叭发出一个标准的正弦波测试信号,故记录下操作过程 sudo apt install libasound2-dev 否则有可能会报错: alsaaudio.c:28:10: fatal error: alsa/asoundlib.h: No such file or directory 安装pyalsaaudio: pip …

合肥鲸天科技的外卖会员卡系统有人做过吗?赚钱吗?

我们先来了解一下这个合肥鲸天科技,通过我在网上找到的资料和企业查询,这家公司还是很有实力的,合肥鲸天科技有限公司也是欢迎有合作的人到公司来进行一个考察和合作其他一些项目的。 外卖会员卡简介绍: 这个外卖会员卡&#xf…

Linux | 探索 Linux 信号机制:信号的产生和自定义捕捉

信号是 Linux 操作系统中非常重要的进程控制机制,用来异步通知进程发生某种事件。理解信号的产生、阻塞、递达、捕捉等概念,可以帮助开发者更好地编写健壮的应用程序,避免由于未处理的信号导致程序异常退出。本文将带你从基础概念开始&#x…

Redis Key的过期策略

Redis 的过期策略主要是指管理和删除那些设定了过期时间的键,以确保内存的有效使用和数据的及时清理。 具体来说,Redis 有三种主要的过期策略:定期删除(Scheduled Deletion)、惰性删除(Lazy Deletion&#…

C#命令行参数解析库System.CommandLine介绍

命令行参数 平常在日常的开发过程中,会经常用到命令行工具。如cmd下的各种命令。 以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只是输出了描述和用法。 系统在创建一个新…

【BFS专题】— 解决最短路问题

1、迷宫中离入口最近的出口 - 力扣(LeetCode) 思路: 利用BFS层序遍历,新建一个变量统计步数代码: class Solution {int dx[] {0, 0, -1, 1};int dy[] {1, -1, 0, 0};public int nearestExit(char[][] maze, int[] en…

URP 线性空间 ui资源制作规范

前言: 关于颜色空间的介绍,可参阅 unity 文档 Color space URP实现了基于物理的渲染,为了保证光照计算的准确,需要使用线性空间; 使用线性空间会带来一个问题,ui资源在unity中进行透明度混合时&#xff…

Centos7 Hadoop 单机版安装教程(图文)

本章教程,主要记录如何在Centos7中安装Hadoop单机版。 一、软件安装包和基础环境 CentOS7.x,jdk8,hadoop 通过网盘分享的文件:Hadoop 链接: https://pan.baidu.com/s/1_qGI9QeXMAJNb3TydHhQGA?pwd=xnz4 提取码: xnz4 当然你也可以自己去官网下载。 java8:https://www.ora…

Redis:发布(pub)与订阅(sub)实战

前言 Redis发布订阅(Pub/Sub)是Redis提供的一种消息传递机制,它使用“发布者-订阅者”(publisher-subscriber)模式来处理消息传递。在这种模式下,发布者将消息发布到一组订阅者中,而无需关心谁…

java的内存分配和回收机制

Java 与 C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述 垃圾收集(GC)需要完成的三件事情: 哪些内存需要回收?什么时候回收?如何回收&am…

Linux操作系统入门(三)

_______________________________________________ 一.Linux操作系统的文件结构 相比于Windows操作系统的C,D,E等盘符,Linux操作系统仅有一个"/"符号的根目录. 这其中存在一个显著的不同,Linux操作系统使用的是斜杠"/",而Windows…

基于微信小程序的宠物之家的设计与实现

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宠物之家/宠物综合…

判断当前环境是否为docker容器下

判断当前环境是否为docker容器下 webshell后或登录到系统后台,判断是否为docker容器可使用如下方法: 方式一:使用ls -alh命令查看是否存在.dockerenv来判断是否在docker容器环境内 ls -alh /.dockerenv如下图无.dockerenv文件,所…

本地部署轻量级web开发框架Flask结合内网穿透公网环境访问管理界面

文章目录 1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 本篇文章主要讲解如何在本地安装Flask,以及如何将其web界面发布到公网进行远程访问。 Flask是目前十分流行的web框架,采用Python编程语…

无人机飞手教员组装、调试高级教学详解

随着无人机技术的飞速发展,其在航拍、农业、救援、监测等多个领域的应用日益广泛,对专业无人机飞手的需求也随之增加。作为无人机飞手教员,掌握无人机的高级组装、调试技能不仅是教学的基础,更是培养学生成为行业精英的关键。本教…

【吊打面试官系列-Redis面试题】使用过 Redis 做异步队列么,你是怎么用的?

大家好,我是锋哥。今天分享关于【使用过 Redis 做异步队列么,你是怎么用的?】面试题,希望对大家有帮助; 使用过 Redis 做异步队列么,你是怎么用的? 一般使用 list 结构作为队列,rpus…

Word中插入当前日期与时间

Word中插入当前日期与时间 通过构建基块的方法快速插入当前日期与时间 快捷键操作 快捷键具体功能说明 Alt Shift D 插入当前日期date Alt Shift T 插如当前时间time Ctrl Shift F9 使得域文本变为正常文本 Ctrl F11 锁定域更新域菜单工具会变为黑色 C…