YOLO v9训练自己数据集

news/2024/7/10 22:41:03 标签: YOLO, 人工智能, 深度学习, python, scikit-learn

原以为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.niftyadmin.cn/n/5407496.html

相关文章

516. 最长回文子序列【leetcode】/动态规划

516. 最长回文子序列 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s …

Linux操作系统——进程信号

1.信号的概念 生活当中哪些场景算信号呢?比如说你晚上调了个闹钟,然后第二天早上你听到了闹钟响了你就知道该起床了,这种机制就叫做信号机制。在生活中我们的信号是非常非常多的,比如说有:红绿灯,下课铃声…

算法| 栈 队列

用栈实现队列 用队列实现栈 有效的括号 删除字符串中的所有相邻重复项 逆波兰表达式求值 前 K 个高频元素 232. 用栈实现队列 var MyQueue function () {this.stackIn []this.stackOut [] };/** * param {number} x* return {void}*/ MyQueue.prototype.push functi…

HQL,SQL刷题,尚硅谷

目录 相关表数据: ​编辑 题目及思路解析: 复杂查询,子查询 1、查询所有课程成绩均小于60分的学生的学号、姓名 2、查询没有学全所有课的学生的学号、姓名 3、查询出只选修了三门课程的全部学生的学号和姓名 总结归纳: 知识补充&a…

docker 创建RedHat8.5镜像

确定要创建的小红帽版本,可以进入官网查看 https://hub.docker.com/search?qRedHat 复制命令到安装docker的机器上,拉取小红帽镜像。 docker pull redhat/ubi8:latest 执行完成后,查看镜像是否拉取成功 docker images |grep redhat 如图…

通过联合部署DDoS高防和WAF提升网站防护能力

如果您的网站遭受的攻击既有流量型攻击,又混杂精巧的Web应用层攻击时(例如SQL注入、跨站脚本攻击、命令注入等)时,推荐您组合使用阿里云DDoS高防和Web 应用防火墙 WAF(Web Application Firewall)&#xff0…

互联网加竞赛 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…

【C++干货基地】面向对象核心概念 | 访问限定符 | 类域 | 实例化 | 类对象模型

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 哈喽各位铁汁们好啊,我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的…