YOLO v9训练自己数据集

news2024/9/24 13:17:07

原以为RT-DETR可以真的干翻YOLO家族,结果,!!!!

究竟能否让卷积神经网络重获新生?

1.数据准备

代码地址:https://github.com/WongKinYiu/yolov9

不能科学上网的评论区留言

数据集:东北大学缺陷检测数据集(6类别缺陷)

数据集百度网盘链接:链接:https://pan.baidu.com/s/1QktBnMcDdsQaT6JQXBjNPA 
提取码:cslw                 数据集有效期:一年

数据结构仍然采用VOC格式:

如果对制作数据集有问题,在下方留言或者看我以往YOLO v5的操作

另外,要在VOCdevkit文件夹下新建两个文件夹,分别为train.txt和val.txt(告知模型训练集和验证集所在的位置)。有需要的在之前yolov5的文件夹里提prepare_data.py或者留言评论区。

2.模型参数修改

1)找到models/detect/yolov9-c.yaml复制命名为yolov9_fast.yaml,修改nc为6

2)找到data/coco.yaml文件复制且命名为coco_fast.yaml。path就是数据集位置,train.txt和val.txt就是存放训练和验证数据集的相对路径

3)下载预训练文件

https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c-converted.pt

应该是对比s.pt的,但是官方还未放出预训练模型,所以先采用c.pty

在主目录下新建weights文件夹,将权重文件修改为yolov9c.pt放到下面

4)修改训练文件

进入train_dual.py中修改

       注意:项目中另一个文件train.py,是作者提出的另外一个模型 gelan,而train_dual才是yolov9模型。

3.训练

       我这里租用的是云服务器,因此要配置一些环境(如果是拿自己电脑训练的话,就可以跳过环境配置)。

其实也很简单:pip install -r requirements.txt     apt-get update   apt-get install libglib2.0-dev

之后开始训练:

给大家看看前十次的训练结果

咋们看看结果

再看看混淆矩阵

PR曲线,可以看出基本是吊打了之前的yolo

4.检测一下试试效果

先修改一下detect.py中的参数

1)这里需要将runs/train/exp5/weights中的best.pt复制到与detect.py同级目录下

2)在detect.py同级目录新建testfile文件夹,里面放你要检测的图像

3)修改coco128为coco_fast

好运行一下:python detect.py

这里就是一个坑,可能是原作者在写代码时留下的,看了官方提交的错误

进入utils/general.py的903行这样修改,是[0][1],而不是[0][0]

      这里对[0][0]和[0][1]比较有争论,但是经过尝试,这两种改法都行得通,但是在检测时间上存在区别 。大家对比斟酌

[0][0]下检测结果

[0][1]下检测结果

       从官方讨论区来看,应该[0][1]才是正解,其实代码刚发布难免会存在一些错误,大家可以等等看,官方应该很快就会更新。这是检测效果

这是验证的结果,可以看出这个检测效果非常不错

验证还是同样的,只不过执行的是python val_dual.py,修改参数和detect.py一样,大家自己修改,下图是验证结果

5.如果转载,请标明出处

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

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

相关文章

【JavaEE】_Spring MVC项目之建立连接

目录 1. Spring MVC程序编写流程 2. 建立连接 2.1 RequestMapping注解介绍 2.2 RequestMapping注解使用 2.2.1 仅修饰方法 2.2.2 修饰类与方法 2.3 关于POST请求与GET请求 2.3.1 GET请求 2.3.2 POST请求 2.3.3 限制请求方法 1. Spring MVC程序编写流程 1. 建立连接&…

【重温设计模式】装饰模式及其Java示例

装饰模式的介绍 在众多设计模式中,有一种叫做装饰模式,它以一种独特的方式赋予了代码更多的灵活性。 装饰模式是一种结构型设计模式,它允许我们在运行时动态地为对象添加新的行为。这就像是我们在装饰一个房间时,可以随意添加或更…

学习网络编程No.11【传输层协议之UDP】

引言: 北京时间:2023/11/20/9:17,昨天成功更文,上周实现了更文两篇,所以这周再接再厉。当然做题任在继续,而目前做题给我的感觉以套路和技巧偏多,还是那句话很多东西不经历你就是不懂&#xff…

C#入门:简单数据类型和强制类型转换

本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com 本期来讲讲 unity 的脚本语言 —C#,C# 的简单数据类型及范围和强制类型转化的方法。这可是 unity 游戏开发必备技能。 1. 简单数据类型 各个类型的范围: byte -> System.Byte (字节…

roslaunch 报错 numpy与python版本冲突

报错&#xff1a; File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 17, in <module> from . import multiarray File "/usr/lib/python3/dist-packages/numpy/core/multiarray.py", line 14, in <module> from . import…

蓝桥杯练习系统(算法训练)ALGO-992 士兵杀敌(二)

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 南将军手下有N个士兵&#xff0c;分别编号1到N&#xff0c;这些士兵的杀敌数都是已知的。   小工是南将军手下的军师&…

gif闪图如何在线生成?仅需三步在线制作gif闪图

Gif动态图片是一种通过连续播放的一系列图片来展示的。Gif动图的优势是体积小、传播速度快且不受限制。当我们想要将多张图片变成带有闪动效果的gif动图时应该怎么操作呢&#xff1f;这时候&#xff0c;只需要使用在线闪图制作&#xff08;https://www.gif.cn/&#xff09;网站…

【C++初阶】内存管理

目录 一.C语言中的动态内存管理方式 二.C中的内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 3.浅识抛异常 &#xff08;内存申请失败&#xff09; 4.new和delete操作自定义类型 三.new和delete的实现原理 1.内置类型 2.自定义类型 一.C语…

全部免费!抖音,牛逼了!

相比于百度文心、清华智谱和讯飞星火这些在国内有一定市场知名度的AI工具&#xff0c;字节跳动多少显得有点低调了。 国内的AI工具用了不少&#xff0c;但要是说哪家最有前景&#xff0c;那最看好的还是字节跳动。 倒不是说字节的云雀大模型比上面这几个更牛逼&#xff0c;而…

uniapp_微信小程序_说下动态class(实用性很强)

// 以上图片为例,里面的参数是后端传给你的&#xff0c;你不知道有多少东西&#xff0c;更不可能一个一个改&#xff0c;所以引入动态class 代码实现 <view :class"{ pay: item.paymoneystatus 未支付,inpay: item.paymoneystatus 已支付}">{{item.paymon…

Python之Flask框架~四大内置对象

1.g global全局对象 g对象是专门用来保存用户的数据的 g对象在一次请求中的所有的代码的地方, 都是可以使用的 突破变量存储位置限制,为数据传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使 用, 可以保存在g对象中, 在其他视图西数中就可以使用这个数据…

YOLOv6、YOLOv7、YOLOv8网络结构图(清晰版)

承接上一篇博客&#xff1a;YOLOv3、YOLOv4、YOLOv5、YOLOx的网络结构图(清晰版)_yolox网络结构图-CSDN博客 1. YOLOv6网络结构图 2. YOLOv7网络结构图 3. YOLOv8网络结构图

中文地址命名实体识别预测写入csv格式

模型训练参数 中文地址命名实体识别训练和预测 效果 输入数据 输出数据 脚本 import os import numpy as np import torch import json from utils import commonUtils, metricsUtils, decodeUtils, trainUtils import b

《Linux C编程实战》笔记:共享内存

共享内存是分配一块能被其他进程访问的内存。每个共享内存段在内核中维护一个内部数据结构shmid_ds(和消息队列、信号量一样)&#xff0c;该结构定义在头文件linux/shm.h中,这是我从源码里抄的 #include<linux/shm.h> struct shmid_ds {struct ipc_perm shm_perm; /* 操…

pytorch基础2-数据集与归一化

专题链接&#xff1a;https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻译自微软教程&#xff1a;https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次编辑&#xff1a;2024/3/2&#xff1b;最后编辑&#xff1a;2024/3/2 本教程…

swagger在java中的基本使用

自动生成接口文档&#xff0c;和在线接口测试的框架。 导入依赖 <!-- knife4j对swagger进行一个封装--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><versi…

StarCoder2本地部署上手体验:程序猿要下岗了吗?

StarCoder2简介 ServiceNow、Hugging Face 和 NVIDIA 于2月28日宣布发布 StarCoder2&#xff0c;这是一个用于代码生成的开放式大型语言模型系列&#xff0c;为性能、透明度和成本效益设定了新标准。StarCoder2 是与 BigCode 社区合作开发的&#xff0c;由ServiceNow和 Huggin…

labview数组精讲

题主经过写文章一段时间的发现,许多同学对该软件的理解和编程能力是不太一样的,有些知识相对一些同学较为简单,但是有些同学提问就比较困难。那么针对这个问题,题主打算出一期说白话系列的专栏,在该栏目中用最通俗的大白话和例子去让大家深刻了解这个软件的功能和摸透他的…

Py2neo查询neo4j周杰伦数据库中的节点、关系和路径教程

文章目录 py2neo介绍连接Neo4j数据库py2neo查询图数据库neo4j数据概览使用NodeMatcher查询节点使用RelationshipMatcher查询关系 通过执行Cypher语句查询 py2neo介绍 Neo4j是一款开源图数据库&#xff0c;Py2neo提供了使用Python语言访问Neo4j的接口。本文介绍了使用Py2neo的N…

钉钉机器人发送折线图卡片 工具类代码

钉钉机器人 “创建并投放卡片 接口 ” 可以 发送折线图、柱状图 官方文档&#xff1a;创建并投放卡片 - 钉钉开放平台 0依赖、1模板、2机器人放到内部应用、3放开这个权限 、4工具类、5调用工具类 拼接入参 卡片模板 自己看文档创建&#xff0c;卡片模板的id 有用 0、依赖…