Yolov8训练自己的数据集合(最新实验数据)

news/2025/3/4 4:13:11/

一、安装环境

笔者环境如下:

win10
anaconda
python3.8

二、clone代码

地址如下,可以直接使用git命令进行clone,也可以直接去网站下载

git clone https://github.com/ultralytics/ultralytics

代码目录如下所示

请添加图片描述

三、安装必要的库

其实这里比较重要的是两步,第一步是安装requirement.txt中的库,然后再安装ultralytics。那么下面就是安装库的过程了

安装requirement.txt

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装ultralytics

 pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/

note:这个版本其实是基于torch写的,所以我们是需要安装深度学校框架库的,其实在requirement.txt的安装中就已经安装了torch,但是默认的是cpu版本的,如果你电脑有gpu,还是建议根据gpu的版本来配置对应的环境,然后安装gpu版本的torch,这样的话训练的时候速度会快一些,如果没有的话对于下面的训练也是没有关系的,可以给batch以及epoch设置小一些,也是可以执行的

四、配置自定的数据集

数据集是我提前准备好的,如果需要自定的话,是需要使用 labelImge 标注工具进行标注的,具体的可以参考下篇的这篇博文:

https://blog.csdn.net/public669/article/details/97610829?spm=1001.2014.3001.5502

准备好数据之后呢,就需要按照yolov8的格式对数据进行装载了

笔者这里是在ultralytics文件下新建了一个dataSets

在这里插入图片描述

然后在dataSets下新建images、labels、test、val文件夹

具体如下

请添加图片描述

images文件下放的是图片数据,具体如下,笔者这里使用的是细胞的数据集

请添加图片描述

labels文件下存放的是对应图片数据的标签信息

请添加图片描述

下面的就是就是数据的详细的信息了,这一步是需要使用代码进行装换的,具体的请参考https://blog.csdn.net/public669/article/details/98020800?spm=1001.2014.3001.5502

请添加图片描述

test文件下的格式也是一样的,需要有两个文件夹,分别是images和lables,同之前的一样,images中放的是用户测试的图片数据,labels下面放的是对应的图片label信息

请添加图片描述

val文件下的格式同上

请添加图片描述

数据装载完毕以后,就需要进行对应的yaml文件配置了,需要新建两个yaml文件,分别如下:rbc.yaml和yolov8n.yaml

请添加图片描述

rbc.yaml文件如下:

train: E:/Projects/ultralytics-main/ultralytics/dataSets/data/images
val: E:/Projects/ultralytics-main/ultralytics/dataSets/data/val/images
test: E:/Projects/ultralytics-main/ultralytics/dataSets/data/test/images# number of classes
nc: 1# class names
names: ['RBC']

yolov8n.yaml文件如下:
请添加图片描述

其他的地方都不需要动,只需要给nc修改为1就可以了

具体文件如下:

# Ultralytics YOLO 🚀, GPL-3.0 license# Parameters
nc: 1  # number of classes
depth_multiple: 0.33  # scales module repeats
width_multiple: 0.25  # scales convolution channels# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]]  # 0-P1/2- [-1, 1, Conv, [128, 3, 2]]  # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]]  # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]]  # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]]  # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]]  # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]]  # cat backbone P4- [-1, 3, C2f, [512]]  # 13- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]]  # cat backbone P3- [-1, 3, C2f, [256]]  # 17 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]]  # cat head P4- [-1, 3, C2f, [512]]  # 20 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]]  # cat head P5- [-1, 3, C2f, [1024]]  # 23 (P5/32-large)- [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)

五、训练

完成了上述的一些操作以后,就可以进行数据的训练了,需要执行cd命令

cd E:\Projects\ultralytics-main\ultralytics\dataSets

训练数据的命令如下:

yolo task=detect mode=train model=yolov8n.pt data=./data/rbc.yaml epochs=100 imgsz=640  resume=Ture

如果有GPU的话,可以对数据进行相应的配置

yolo task=detect mode=train model=yolov8n.pt data=./data/rbc.yaml batch=32 epochs=100 imgsz=640 workers=4 device=0

训练效果如下:

请添加图片描述
请添加图片描述

请添加图片描述

六、验证模型

训练结束以后相关的数据都放在

E:\Projects\ultralytics-main\ultralytics\dataSets\runs\detect\train下了

请添加图片描述

请添加图片描述
请添加图片描述

具体的模型都存放在weights下了,具体如下:

请添加图片描述

现在我们就需要对模型进行测试了

使用模型的测试命令如下:

yolo task=detect mode=predict model=runs/detect/train3/weights/best.pt source=data/images device=0

如果没有GPU的话,就给device=0给删除了

具体如下:
请添加图片描述

识别的结果如下:

请添加图片描述

可以看出来效果还是挺好的,相比之前的yolov3效果确实好很多,同时使用步骤方面的话也是挺简洁的。

yolov8训练自己的数据集到这里就结束了,后续会持续分享关于yolov8的应用,请持续关注我,让我们一起学习进步!

由于笔者能力有限,在表达方面可能存在一些不准确的地方,还请多多包涵。

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

相关文章

实战:Docker+Jenkins+Gitee构建CICD流水线

文章目录 前言Jenkins部署创建Jenkins docker-compose配置maven源启动Jenkins容器安装插件Gitee ssh公匙配置与测试项目提交 Jenkins创建流水线写在最后 前言 持续集成和持续交付一直是当下流行的开发运维方式,CICD省去了大量的运维时间,也能够提高开发…

CentOS 8上安装和配置Redis

在本篇博客中,我们将演示如何在CentOS 8上安装和配置Redis。我们将首先安装Redis,然后配置Redis以设置密码并允许公开访问。 步骤 1:安装Redis 首先,更新软件包列表: sudo yum update安装Redis: sudo yum …

【动态规划part14】| 1143.最长公共子序列、1035.不相交的线、53.最大子序和

目录 🎈LeetCode1143.最长公共子序列 🎈LeetCode1035.不相交的线 🎈LeetCode53.最大子序和 🎈LeetCode1143.最长公共子序列 链接:1143.最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的…

nginx 反向代理浅谈

前言 通常情况下,客户端向Web服务器发送请求,Web服务器响应请求并返回数据。而在反向代理中,客户端的请求不直接发送到Web服务器,而是发送到反向代理服务器。反向代理服务器会将请求转发给真实的Web服务器,Web服务器响…

【Rust教程 | 基础系列2 | Cargo工具】Cargo介绍及使用

文章目录 前言一,Cargo介绍1,Cargo安装2,创建Rust项目2,编译项目:3,运行项目:4,测试项目:5,更新项目的依赖:6,生成项目的文档&#xf…

Exadata磁盘损坏导致磁盘组无法mount恢复(oracle一体机磁盘组异常恢复)---惜分飞

Oracle Exadata客户,在换盘过程中,cell节点又一块磁盘损坏,导致datac1磁盘组(该磁盘组是normal方式冗余)无法mount Thu Jul 20 22:01:21 2023 SQL> alter diskgroup datac1 mount force NOTE: cache registered group DATAC1 number1 incarn0x0728ad12 NOTE: ca…

网络编程(10) : 从connect到三次握手建立连接,再从close到四次挥手断开连接

1、TCP前置知识 1.1什么是TCP TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。 面向连接:必须是一对一建立连接后才能通信可靠的:无论网络链路出现怎么样的变化,TCP可以保证报文一定能被对端收到字节流:流式协议&#…

向npm注册中心发布包(下)

目录 1、在package.json文件中指定dependencies和devDependencies 1.1 将依赖项添加到 package.json 文件 1.2 从命令行中 将依赖项添加到 package.json 文件 1.3 手动编辑 package.json 文件 2、关于语义版本控制 2.1 在已发布的包中增加语义版本 2.2 使用语义版本控制…