【YOLOv9】训练模型权重 YOLOv9.pt 重新参数化轻量转为 YOLOv9-converted.pt

【YOLOv9】训练模型权重 YOLOv9.pt 重新参数化轻量转为 YOLOv9-converted.pt

  • 1. 模型权重准备
  • 2. 模型重新参数化
    • 2.1 文件准备
    • 2.2 参数修改
    • 2.3 重新参数化过程
  • 3. 重新参数化后模型推理
    • 3.1 推理超参数配置
    • 3.2 模型推理及对比
  • 4. onnx 模型导出(补充内容)
    • 4.1 超参数配置
    • 4.2 模型导出
    • 4.3 onnx 推理


Code 链接: YOLOV9
Paper 链接: YOLOV9: Learning What You Want to Learn Using Programmable Gradient Information

1. 模型权重准备

  • 可以参考另一篇博客 【模型复现】自制数据集上复现刚发布的最新 yolov9 代码 训练一个所需版本的 YOLOv9 模型,训练完成后就会得到 YOLOv9 模型权重文件,如这里使用 c 版本训练得到了 yolov9-smoke.pt,大小约为 98M.
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/55f2993d594046eea0784e7bde1ecb06.png#

2. 模型重新参数化

2.1 文件准备

  • 找到官方代码目录 tools 内的 reparameterization.ipynb 文件,并将该文件放到主目录下。
    在这里插入图片描述

2.2 参数修改

  • 选择训练权重版本对应的 gelan.yaml 文件,如这里需修改 gelan-c.yaml 文件,并将 nc 修改为模型训练时的标签数量。
    在这里插入图片描述

2.3 重新参数化过程

  • 进入 reparameterization.ipynb 文件,进行如下修改:
    • 修改 cfg 为版本对应的 gelan.yaml 文件路径
    • 修改 nc 为标签数量
    • 修改 ckpt 为训练好的模型权重文件路径
  • 修改后运行出现下述界面即可。
    在这里插入图片描述
  • 继续运行文件中的代码块,运行完成后继续。
    在这里插入图片描述
  • 修改下述代码块中的权重文件保存路径并运行。
    在这里插入图片描述
  • 完成后即可在指定保存路径下找到重新参数化后的权重文件,可以看到文件大小为50M,相比减少了48M。
    在这里插入图片描述

3. 重新参数化后模型推理

3.1 推理超参数配置

  • yolov9 代码路径下进入 detect.py 文件进行超参数配置,常用需修改参数如下:
    • data:数据配置文件路径
    • weights:重新参数化后的的 yolov9-converted.pt 权重路径
    • batch-size:验证 batch-size 数量
    • imgsz:图片大小
    • task:验证数据集选择,如 valtest
  • 推理按需进行超参数配置
    在这里插入图片描述

3.2 模型推理及对比

  • 单卡推理指令
    python detect.py
    
  • 多卡推理指令
    python -m torch.distributed.launch --nproc_per_node 8 detect.py
    
  • 在终端中运行推理命令,若看到下述界面,即成功推理!!!
    在这里插入图片描述
  • 可进入保存路径进行推理图片查看,使用权重 yolov9-smoke-converted.pt 推理示例如下:
    在这里插入图片描述
  • 此外,使用 yolov9-smoke.pt 推理的同一图片示例如下:
    在这里插入图片描述
  • 可以看出,模型重新参数化后使用模型主分支,性能不受影响,但参数量减少近一半!!!

4. onnx 模型导出(补充内容)

4.1 超参数配置

  • yolov9 代码路径下进入 export.py 文件进行超参数配置,常用需修改参数如下:
    • weights:重新参数化后的的 yolov9-converted.pt 权重路径
    • include:导出类型选择,如 onnx
  • 超参数配置如下:
    在这里插入图片描述

4.2 模型导出

  • 模型导出指令
    python export.py
    
  • 在终端中运行推理命令,若看到下述界面,即成功导出!!!
    在这里插入图片描述

4.3 onnx 推理

  • 按照 3.1 推理超参数配置 进行超参数配置,唯一不同的是需将 weights 替换为导出的 onnx 路径。
  • 推理指令
    python detect.py
    
  • 在终端中运行推理命令,若看到下述界面,即成功推理!!!
    在这里插入图片描述
  • 可进入保存路径进行推理图片查看,使用 onnx 推理示例如下:
    在这里插入图片描述

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

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

相关文章

漏洞发现-漏扫项目篇NucleiYakitGobyAfrogXrayAwvs联动中转被动

知识点 1、综合类-Burp&Xray&Awvs&Goby 2、特征类-Afrog&Yakit&Nuclei 3、联动类-主动扫描&被动扫描&中转扫描 章节点: 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合漏扫&特征漏扫&被动…

遥感云计算的一个拐点

GeoForge,一个值得关注的遥感大数据应用 简介 GeoForge是由Ageospatial公司开发的一个基于大语言模型(GeoLLMs)的地理空间分析平台。GeoForg的目的是使每个人都可以轻松进行地图绘制和地理空间分析,无论您是外行还是专家。 Geo for ChatGPT 作者团队已…

YOLOv9改进 添加新型卷积注意力框架SegNext_Attention

一、SegNext论文 论文地址:2209.08575.pdf (arxiv.org) 二、 SegNext_Attention注意力框架结构 在SegNext_Attention中,注意力机制被引入到编码器和解码器之间的连接中,帮助模型更好地利用全局上下文信息。具体而言,注意力机制通过学习像素级的注意力权重,使得模型可以对…

【C++庖丁解牛】vector容器的简易模拟实现(C++实现)(最后附源码)

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言vector容器代码实现内…

前端JavaScript篇之常见事件

目录 JavaScript常见事件click(点击)mouseover(鼠标悬停)keydown(按键按下)load(加载)submit(提交) JavaScript常见事件 JavaScript中的事件是指用户与网页元…

JVM垃圾收集器-serial.parNew,parallelScavnge,serialOld,parallelOld,CMS,G1

垃圾收集器 分代模型 适用于新生代: serial parNew parallel Scaavenge 适用于老年代: CMS serial Old(msc) paraller Old 分区模型 适用于超大容量: G1 分代模型 serial /serial Old收集器 1.单线程收集器 2.收集时会暂停其他线程&…

剑指offer C ++双栈实现队列

1. 基础 队列:先进先出,即插入数据在队尾进行,删除数据在队头进行; 栈:后进先出,即插入与删除数据均在栈顶进行。 2. 思路 两个栈实现一个队列的思想:用pushStack栈作为push数据的栈&#xff…

使用canvas绘制超炫时钟

HTML5 Canvas相当于一个画板,你可以在Canvas绘制任意的东西,今天要分享一款利用HTML5 Canvas绘制的超炫时钟的方法及代码,非常的漂亮,这里推荐给大家 代码地址 使用canvas绘制超炫时钟

react中JSX的详解

目录 JSX的本质及其与JavaScript的关系探究 一、JSX的本质 二、JSX与JavaScript的关系 三、为什么要使用JSX 四、不使用JSX的后果 五、JSX背后的功能模块 JSX的本质及其与JavaScript的关系探究 在React开发中,JSX是一个不可或缺的部分。那么,JSX的…

LeetCode102题:二叉树的层序遍历(python3)

代码思路:使用队列先进先出的特性,queue[]不为空进入for循环,tmp存储每层的节点,将结果添加至res[]中。 python中使用collections中的双端队列deque(),其popleft()方法可达到O(1)时间复杂度。 class Solution:def lev…

数据结构 第1章:绪论

文章目录 1. 绪论1.1. 数据结构 1.2. 算法1.2.1. 算法的基本概念1.2.2. 算法的时间复杂度1.2.3. 算法的空间复杂度 1. 绪论 程序 数据结构 算法 1.1. 数据结构 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理…

【机器学习300问】33、决策树是如何进行特征选择的?

还记得我在【机器学习300问】的第28问里谈到的,看决策树的定义不就是if-else语句吗怎么被称为机器学习模型?其中最重要的两点就是决策树算法要能够自己回答下面两问题: 该选哪些特征 特征选择该选哪个阈值 阈值确定 今天这篇文章承接上文&…

探秘高校线上心理咨询室:Java+SpringBoot的实践

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

蓝桥·算法双周赛|第七场分级赛——小白入门赛

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

C#四部曲(知识补充)

Unity跨平台原理 .Net相关 只要编写的时候遵循.NET的这些规则&#xff0c;就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理&#xff08;Mono&#xff09; c#脚本→MonoC#编…

CCCorelib 点云曲面特征(CloudCompare内置算法库)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里基于每个点的邻域协方差来获取点云中具有的曲面几何特征的点,计算方式如下图所示: 二、实现代码 // CloudCompare #include <CCCoreLib/PointCloudTpl.h> #include <CCCoreLib/

使用 PlayFab 服务器托管的 5 个步骤

在本教程中,你将了解如何使用 Unity、镜像网络和 PlayFab 服务器托管来构建在线多人游戏。玩家不能再位于同一个本地网络上。他们将连接到托管在云中的专用服务器,这使得他们即使相距很远也可以一起玩。 架构概述 下图显示了我们将构建的架构。 玩家将使用他们的客户端并连…

2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题是由安全生产模拟考试一点通提供&#xff0c;G3锅炉水处理证模拟考试题库是根据G3锅炉水处理最新版教材&#xff0c;G3锅炉水处理大纲整理而成&#xff0…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记08_行为歧视

1. 常见的报价方式 1.1. 水滴定价&#xff08;Drip Pricing&#xff09; 1.1.1. 用一个较低的初始价格吸引消费者入局&#xff0c;之后再不断收取附加费用 1.2. 打折促销 1.2.1. 在一个远被高估的原价上制造折扣价格的魅力 1.2…

Hive面经

hive原理 Hive 内部表和外部表的区别Hive 有索引吗运维如何对 Hive 进行调度ORC、Parquet 等列式存储的优点数据建模用的哪些模型&#xff1f;1. 星型模型2. 雪花模型3. 星座模型 为什么要对数据仓库分层&#xff1f;使用过 Hive 解析 JSON 串吗sort by 和 order by 的区别数据…