当前位置: 首页 > news >正文

训练YOLOv9-S(注意:官方还没有提供YOLOv9-S的网络,我这是根据网络博客进行的步骤,按照0.33、0.50比例调整网络大小,参数量15.60M,计算量67.7GFLOPs)

文章目录

  • 1、自己动手制造一个YOLOv9-S网络结构
    • 1.1 改前改后的网络结构(参数量、计算量)对比
    • 1.2 一些发现,YOLOv9代码打印的参数量计算量和Github上提供的并不一致,甚至yolov9-c.yaml代码打印出来是Github的两倍
    • 1.3 开始创造YOLOv9-S
  • 2、开始训练
  • 3、验证
    • 3.1 修改val.py中的以下参数
    • 3.2 命令验证

1、自己动手制造一个YOLOv9-S网络结构

  • 重点参考的链接:YOLOv9改进 | 提供YOLOv9全系列支持YOLOv9n、YOLOv9s、V9m、V9l、V9x的修改方式(全网独家首发)

1.1 改前改后的网络结构(参数量、计算量)对比

改前的yolov9.yaml参数量58.35M,计算量267.1GFLOPs

改后的yolov9-S.yaml参数量15.60M,计算量67.7GFLOPs

  • 这是修改调用的yolo.py测试的yolov9.yaml的打印网络情况,包含参数量、计算量

在这里插入图片描述

  • 这是修改调用的yolo.py测试的yolov9-S-lwd.yaml的打印网络情况,包含参数量、计算量

在这里插入图片描述

1.2 一些发现,YOLOv9代码打印的参数量计算量和Github上提供的并不一致,甚至yolov9-c.yaml代码打印出来是Github的两倍

在这里插入图片描述

1.3 开始创造YOLOv9-S

  1. models/yolo.py文件中,Ctrl+F定位到args = [c1, c2, *args[1:]],然后再如下位置添加代码

在这里插入图片描述

            # --------------------------添加的代码--------------------------- #if m in (RepNCSPELAN4,):args[1] = make_divisible(args[1] * gw, 8)args[2] = make_divisible(args[2] * gw, 8)args[3] = max(round(args[3] * gd), 1) if n > 1 else n       # --------------------------添加的代码--------------------------- #
  1. 还是在models/yolo.py中,定位到elif m is CBLinear,然后做如下更改

在这里插入图片描述

            c2 = [int(x * gw) for x in args[0]]
  1. 修改模型配置文件:直接拷贝models/detect/yolov9.yaml然后重命名为yolov9-S.yaml,并做以下更改

在这里插入图片描述

2、开始训练

根据需求修改train.py中的以下参数:

在这里插入图片描述

需要注意的是,这里只能写成这样,因为官方只给了这一个超参数设置文件:

在这里插入图片描述

键入以下命令开始训练:

python train.py --name yolov9-S

在这里插入图片描述

报错了

在这里插入图片描述

⭐然后就根据这个博客yolov9训练自己的数据集+验证+报错修改里面参考的YOLOV9保姆级教程,在utils/loss_tal.py中进行了如下修改:

在这里插入图片描述

Okay!开始训练,坐等结果~

在这里插入图片描述

保姆级的大佬真的好啊,给我的回答很详细,贴上来!

在这里插入图片描述

3、验证

3.1 修改val.py中的以下参数

在这里插入图片描述

另外为了多显示几位精度,在val.py中进行如下更改:

在这里插入图片描述

3.2 命令验证

python val.py --name yolov9-S

报错:AttributeError: 'list' object has no attribute 'device'

在这里插入图片描述

解决方案:

在这里插入图片描述

验证结果:

在这里插入图片描述

相关文章:

训练YOLOv9-S(注意:官方还没有提供YOLOv9-S的网络,我这是根据网络博客进行的步骤,按照0.33、0.50比例调整网络大小,参数量15.60M,计算量67.7GFLOPs)

文章目录 1、自己动手制造一个YOLOv9-S网络结构1.1 改前改后的网络结构(参数量、计算量)对比1.2 一些发现,YOLOv9代码打印的参数量计算量和Github上提供的并不一致,甚至yolov9-c.yaml代码打印出来是Github的两倍1.3 开始创造YOLOv…...

视觉检测实战项目——九点标定

本文介绍九点标定方法 已知 9 个点的图像坐标和对应的机械坐标,直接计算转换矩阵,核心原理即最小二乘拟合 {𝑥′=𝑎𝑥+𝑏𝑦+𝑐𝑦′=𝑎′𝑥+𝑏′𝑦+𝑐′ [𝑥1𝑦11𝑥2𝑦21⋮⋮⋮𝑥9𝑦91][𝑎𝑎′𝑏𝑏′𝑐𝑐′]=[𝑥1′𝑦…...

android git提交代码命令以及常见命令的使用

安装Git Ubuntu: sudo apt-get install git-core创建代码仓库: 配置身份: git config --global user.name "Tony" git confit --global user.email "tonygmail.com"查看身份: git config --global user.…...

类图的六大关系

类图中的六大关系包括:继承关系、实现关系、关联关系、聚合关系、组合关系和依赖关系。 1. 继承关系 继承是一种类与类之间的关系,表示一种泛化和特化的关系。子类继承父类的特性和行为。 class Animal {void eat() {System.out.println("This an…...

家政项目day2 需求分析(模拟入职后熟悉业务流程)

目录 1 项目主体介绍1.1 项目背景1.2 运营模式1.3 项目业务流程 2 运营端需求2.1 服务类型管理2.2 服务项目(服务)管理2.3 区域管理2.4 区域服务管理2.5 相关数据库表的管理2.6 设计工程结构2.7 测试接口(接口断点查看业务代码) 3…...

面试总结之:socket线路切换

"socket线路切换"通常指的是在网络通信过程中,根据当前网络状态或策略来动态更换数据传输路径的技术。这种技术可以提高通信的可靠性和性能。 在实际应用中,线路切换可能涉及到多种技术,例如: 负载均衡:根据每条路径的当前负载情况,动态地选择一条较为空闲的路…...

002 递归评论 mongodb websocket消息推送

文章目录 商品评论CommentController.javaComment.javaCommentServiceImpl.javaCommentRepository.javaCommentService.javaWebSocketConfig.javaWebSocketProcess.javaapplication.yamlproductReview.htmlindex.htmlindex.jsindex.css 订单评论EvaluateMapper.xmlEvaluateMapp…...

高开高走的续作,可不止《庆余年2》

说起最近霸屏的影视剧,莫过于《庆余年2》。火爆全网的讨论度总归是没有辜负观众们五年的等待,在五月的影视市场独占鳌头已成定局。张若昀、陈道明、李沁等一众演员稳定发挥,剧情节奏随着故事发展渐入佳境,评分一路高涨。 对影视作…...

uniapp android使用uni.chooseLocation,app云打包后,定位地址列表一直在加载中

复现BUG 1、自己生成一个证书 参考生成证书流程 2、使用刚生成证书的SHA1 ,重新创建一个高德key 高德开放平台地址 3、打包(打包的包名要与高德申请key所填的包名一致)...

详解http协议

什么是HTTP协议 定义 Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。 它定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向&am…...

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…...

OpenHarmony鸿蒙软总线使用mbedtls数据加密详解

OpenHarmony鸿蒙软总线子系统中使用了多种的加密技术,本篇介绍调用mbedtls的数据加密。 调用mbedtls加密的源码位于: foundation/communication/dsoftbus/adapter/common/mbedtls/softbus_adapter_crypto.c 这个源码单元,调用mbedTLS库实现了各种加密功能,包括AES-GCM加密…...

【JavaEE】Servlet

文章目录 一、Servlet 是什么二、如何创建Servlet程序1、创建项目2、引入依赖3、创建目录4、编写代码5、打包程序6、部署程序7、验证程序 一、Servlet 是什么 二、如何创建Servlet程序 1、创建项目 2、引入依赖 Maven 项目创建完后,会自动生成一个 pom.xml 的文…...

SpringBoot——整合Redis

目录 Redis 创建Commodity表 启动MySQL和Redis 新建一个SpringBoot项目 pom.xml application.properties Commodity实体类 ComMapper接口 ComService业务层接口 ComServiceImpl业务接口的实现类 ComController控制器 RedisConfig配置类 SpringbootRdisApplication启…...

2024全新Langchain大模型AI应用与多智能体实战开发

2024全新Langchain大模型AI应用与多智能体实战开发 LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念…...

【JavaEE 初阶(十)】JVM

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多进阶知识 目录 1.前言2.JVM内存区域划分3.类加载3.1双亲委派模型 4.垃圾回收(GC&#xff0…...

【Flutter】AspectRatio组件Card组件按钮组件Wrap组件

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Flutter学习 🌠 首发时间:2024年5月25日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 目…...

【IDEA软件应用篇】IDEA基础开发设置和开发快捷键

IDEA是一种集成开发环境,可以运行java代码。 本篇文章你将收获到下面的知识: (1)IDEA如何设置字体大小快捷键 (2)如何解决每次进IDEA时,进去的页面都是上次使用完时的那个页面 (3&am…...

机器学习--数学部分笔记

前言 因为周三要考试,所以数学部分写一下笔记 正文 随机事件和随机实验 条件概率 • 在已知事件 𝐵 发生的条件下,事件𝐴发生的概率称为事件 𝐴 的条件概率,记为𝑃(𝐴|𝐵) 全概率…...

基于springboot的在线宠物用品交易网站源码数据库

基于springboot的在线宠物用品交易网站源码数据库 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了在线宠物用品交易网站的开发全过程。通过分析在线宠物用品交易网站管理的不足,创建了一个计算机管理在…...

深入解析FutureTask:原理与实战

我们来深入解析 FutureTask。下面将从它们的用法开始,逐步深入到底层实现、方法和接口设计,并探讨它们对于我们自己设计实现以及其他编程实践的学习意义。 主要就是放入等待队列(CAS操作一个链表头),完成任务的线程唤…...

Python:操作 Excel 格式化

🔧Python 操作 Excel 格式化完整指南(openpyxl 与 xlsxwriter 双方案) 在数据处理和报表自动化中,Python 是一把利器,尤其是配合 Excel 文件的读写与格式化处理。本篇将详细介绍两大主流库: openpyxl:适合读取与修改现有 Excel 文件xlsxwriter:适合创建新文件并进行复…...

“packageManager“: “pnpm@9.6.0“ 配置如何正确启动项目?

今天在学习开源项目的时候,在安装依赖时遇到了一个报错 yarn add pnpm9.6.0 error This projects package.json defines "packageManager": "yarnpnpm9.6.0". However the current global version of Yarn is 1.22.22.Presence of the "…...

功能管理:基于 ABP 的 Feature Management 实现动态开关

🚀 功能管理:基于 ABP 的 Feature Management 实现动态开关 📚 目录 🚀 功能管理:基于 ABP 的 Feature Management 实现动态开关📚 一、背景分析🧩 二、核心功能设计2.1 定义 Feature 常量与分组…...

【Linux网络】传输层TCP协议

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12891150.html 目录 TCP 协议 TCP 协议段格式 确认应答(ACK)机制 超时重传机制 连接管理机制 …...

JSON to Excel 3.0.0 版本发布 - 从Excel插件到Web应用的转变

1. 简介 JSON to Excel 3.0.0 是一个重大更新版本,将原有的Excel插件扩展为完整的Web应用。现在您可以直接在浏览器中使用它,无需安装任何插件。所有的转换在浏览器中完成,预览后,可点击下载按钮,导出成xlsx格式文件。…...

torch.zeros()用法简介

torch.zeros()是PyTorch中用于创建全零张量的核心函数,其功能和使用方法如下: 1. ‌基本语法‌ torch.zeros(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)参数说明: *size:定义张量形状的…...

【208】VS2022 C++ 32位整数和unsigned char数组之间互相转换

一、场景 在实际应用中,特别是在数据传输的时候,需要读取unsigned char数组,再转换成 32 位整数;或者把 32 位整数转换成 unsigned char数组进行写入。比如对接西门子PLC的 snap7 就是这样。32 位整数分成有符号的无符号的&#…...

如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库?

如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库? package com.huaweicloud.sdk.core.auth does not exist 解决方案 # 下载huaweicloud-sdk-core-3.1.142.jar wget https://repo1.maven.org/maven2/com/huaweicloud/sdk/huaweicloud-sdk-core/3.1.142/huawe…...

SQL进阶之旅 Day 8:窗口函数实用技巧

【SQL进阶之旅 Day 8】窗口函数实用技巧 在现代数据库开发中,处理复杂的业务逻辑和大规模数据时,仅仅依靠传统的GROUP BY和JOIN操作已经无法满足需求。**窗口函数(Window Function)**作为SQL标准的一部分,为开发者提供…...