Yolov5 export.py实现onnx模型的导出

news/2025/3/20 7:05:54/

查了很多资料,很多用python代码写的,只需要这个库那个库的,最后都没成功。

不如直接使用Yolov5里面的 export.py实现模型的转换。

一:安装依赖

因为yolov5里面的requirments.txt是将这些转换模型的都注释掉了

所以需要解除注释然后再安装

根据你需要导出模型的类型进行解除注释 

然后再安装依赖

pip install -r requirements.txt

二:导出模型

根据官方教程来说明如何导出模型,帮助如何将训练好的YOLOv5模型转换成ONNX格式或者TorchScipt格式。

在export.py里面设置模型和数据源的yaml

官方文档写了具体可以导出的类型。

在 --include添加导出的类型。 

 python export.py  --include torchscript onnx

三:测试和验证推理

python detect.py --weights yolov5s.onnx --dnn  
python val.py --weights yolov5s.onnx --dnn  

记住推理的时候,要修改detect.py里面的数据源yaml文件。不然会出现推理的时候标签不一致。

在模型的导出中,onnx不需要GPU进行推理,没有用GPU推理,导致推理的时候很慢,但是tensorRT需要GPU进行推理。 

文件有些大,根据官方文档的提示

💡 ProTip: Add --half to export models at FP16 half precision for smaller file sizes

添加--half以FP16半精度导出模型,以缩小文件大小

原来的.pt模型是40.2MB.转成ONNX后模型大小是79.9MB

用完--half完,模型大小变为40.0MB,明显变小了

再次进行推理验证,时间少了43%左右,说明这个是有效果的,测试了一下,对精度影响不大。

相关参数解释:

def parse_opt():"""data: 数据集目录 默认=ROOT / 'data/coco128.yaml'weights:权重文件目录 默认=ROOT / 'yolov5s.pt'img-size: 输入模型的图片size=(height, width) 默认=[640, 640]batch-size: batch大小 默认=1device: 模型运行设备 cuda device, i.e. 0 or 0,1,2,3 or cpu 默认=cpuinclude: 要将pt文件转为什么格式 可以为单个原始也可以为list 默认=['torchscript', 'onnx', 'coreml']half: 是否使用半精度FP16export转换 默认=Falseinplace: 是否设置 YOLOv5 Detect() inplace=True  默认=Falsetrain: 是否开启model.train() mode 默认=True  coreml转换必须为Trueoptimize: TorchScript转化参数 是否进行移动端优化  默认=Falseint8: 支持CoreML/TF INT8 量化 不支持ONNXdynamic: ONNX转换参数  dynamic_axes  ONNX转换是否要进行批处理变量  默认=Falsesimplify: ONNX转换参数 是否简化onnx模型  默认=Falseopset: ONNX转换参数 设置ONNX版本  默认=13topk-per-class: TF.js每一类别都要保留 默认=100topk-all: TF.js  Topk为所有class保留iou-thres: TF.js IoU threshold   default=0.45conf-thres: TF.js  confidence threshold  default=0.25include:     需要导出的版本  default=['torchscript', 'onnx'],"""
复制代码

参考文章:

yolov5 pt 模型 导出 onnx_yolov5 export.py-CSDN博客

TFLite, ONNX, CoreML, TensorRT Export - Ultralytics YOLOv8 Docs

源码解析二 模型转换 export.py - ---dgw博客 - 博客园 (cnblogs.com)


http://www.ppmy.cn/news/1437790.html

相关文章

2024-04-25 问AI: 介绍一下 ISBI 挑战赛

文心一言 ISBI挑战赛是由IEEE国际生物医学成像研讨会(IEEE International Symposium on Biomedical Imaging,简称ISBI)主办的一项具有很高国际学术声誉的竞赛。ISBI挑战赛旨在推动生物医学成像领域的技术进步和应用创新,通过提供…

ChromaDB教程

使用 Chroma DB,管理文本文档、将文本嵌入以及进行相似度搜索。 随着大型语言模型 (LLM) 及其应用的兴起,我们看到向量数据库越来越受欢迎。这是因为使用 LLM 需要一种与传统机器学习模型不同的方法。 LLM 的核心支持技术之一是…

服务器排障(Linux,Windows)

一.计算机的启动流程 二.系统服务 三.运行级别 四.运行级别被修改 五.Root密码被遗忘 六.设置Grub密码 七.设置bios密码 一、计算机启动流程 1、bios加电自检 对计算机的硬件进行检测&a…

Java基础:设计模式之原型模式

原型模式是一种创建型设计模式,它允许我们通过复制现有的对象来创建新的对象,而不是每次都通过构造函数新建。这种模式适用于那些创建新对象成本较高或者构造过程复杂的情况。在原型模式中,一个对象通过实现Cloneable接口并重写其clone()方法…

燃冬之yum、vim和你

了解了很多指令和权限,搞点真枪实弹来瞅瞅 学Linux不是天天就在那掰扯指令玩,也不是就研究那个权限 准备好迎接Linux相关工具的使用了么码农桑~ yum 软件包 什么是软件包呢? 首先来举个生活中常见点的例子:比如我的手机是华为…

一文详解affine_grid 与 grid_sample以及与opencv坐标系的关系

前言 网上资料乱七八糟,本文通过坐标系和变换的角度,系统梳理两个操作的作用 基本仿射变换 二维仿射变换,我们可以综合为一个2x2的旋转矩阵R和一个2x1的平移矩阵t,[R,t]组合起来就是2x3的矩阵 我们可以增广为3x3的矩阵&#xf…

资料总结分享:临床重要数据库

目录 RefSeqGene数据库 UCSC基因组数据库 gnomAD(全称:Genome Aggregation Database) dbSNP(Single Nucleotide Polymorphism Database) ExAC数据库(Exome Aggregation Consortium) 1000 G…

思科 Packet Tracer 实验八 DHCP基本配置(以路由为中继)

一、实验目的 了解思科网络设备的配置基本特点及 IOS 命令基本操作方法 了解DHCP的工作原理及基本配置 二、实验过程 1) 实验拓扑如下: 2)由于使用DHCP‘协议动态配置ip,所以除了DHCP服务器和路由器接口外其他的主机,服务器的i…