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

news2024/11/15 21:35:47

一、安装环境

笔者环境如下:

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的应用,请持续关注我,让我们一起学习进步!

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

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

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

相关文章

java的instanceof操作符

说明 java的instanceof操作符可以用于类型的比较或者模式匹配比较。instanceof关键字左边是对象的引用,右边是引用类型或者模式。 如果instanceof关键字右边是一个引用类型,那么instanceof关键字是一个类型比较操作符。 如果instanceof关键字右边是一个…

6.事件监听(绑定)

6.1事件监听 ●什么是事件? 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 ●什么是事件监听? 就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为绑定事件或者注册事件&…

FL Studio 21官方中文版功能介绍及2023最新下载详细图文安装激活教程。FL Studio 21需要系统配置要求

FL Studio 21版本更新现已发布,在这次更新中优化了很多功能,但这些现在都不重要,FL Studio21版本的这次更新中令人瞩目的更新莫过于对简体中文版的支持了。以前FL Studio只有英文版,想要用上中文版只有用汉化包,而且有…

某信用中心之加速乐实战分析

某信用中心之加速乐实战分析 某信用中心之加速乐实战分析声明逆向目标逆向分析第一层cookie获取第二层cookie获取调试分析JS文件 模拟执行致谢 某信用中心之加速乐实战分析 声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理&#x…

【二叉树进阶】搜索二叉树(递归+非递归两种版本详解)

文章目录 前言1. 二叉搜索树的概念2. 二叉搜索树的结构2.1 结点结构2.2 树结构 3. 插入操作(非递归)3.1 思路分析3.2 代码实现3.3 中序遍历(测试用) 4. 查找操作(非递归)4.1 思路分析4.2 代码实现 5. 删除操…

七大经典比较排序算法

1. 插入排序 (⭐️⭐️) 🌟 思想: 直接插入排序是一种简单的插入排序法,思想是是把待排序的数据按照下标从小到大,依次插入到一个已经排好的序列中,直至全部插入,得到一个新的有序序列。例如:…

Doc as Code (3):业内人士的观点

作者 | Anne-Sophie Lardet 在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解&#x…

深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令

目录 前言 一、scan 命令 二、数据库管理命令 select dbsize flushdb / flushall 前言 之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到,但是整个操作比较危险,可能会一下子的都太多的 key,阻塞 redis 服务器. …

NLP(六十三)使用Baichuan-7b模型微调人物关系分类任务

任务介绍 人物关系分类指的是对文本中的两个人物,在特定的关系列表中,判断他们之间的人物关系。以样本亲戚 1837年6月20日,威廉四世辞世,他的侄女维多利亚即位。为例,其中亲戚为人物关系,威廉四世为实体1&a…

vins调试的注意事项

1、摄像头的内参和畸变矫正系数 这个系数不对,没法做,因为下一步没法做对。这个会导致系统无法初始化。 2、对畸变的像素点,求得归一化坐标的方法 理解不同矫正模型的原理,确保矫正对了,得到z1平面的去畸变点。 3、摄…

python皮卡丘编程代码教程,用python打印皮卡丘

大家好,小编来为大家解答以下问题,如何用print函数打印一只皮卡丘,用python如何打印丘比特之心,现在让我们一起来看看吧!

CCL 2023 电信网络诈骗案件分类评测-第一名方案

1 任务内容 1.1 任务背景 2022年12月1日起,新出台的《反电信网络诈骗犯罪法》正式施行,表明了我国治理当前电信网络诈骗乱象的决心。诈骗案件分类问题是打击电信网路诈骗犯罪过程中的关键一环,根据不同的诈骗方式、手法等将其分类&#xff…

13个ChatGPT类实用AI工具汇总

在ChatGPT爆火后,各种工具如同雨后春笋一般层出不穷。以下汇总了13种ChatGPT类实用工具,可以帮助学习、教学和科研。 01 / ChatGPT for google/ 一个浏览器插件,可搭配现有的搜索引擎来使用 最大化搜索效率,对搜索体验的提升相…

【机器学习】Linear Regression

Model Representation 1、问题描述2、表示说明3、数据绘图4、模型函数5、预测总结附录 1、问题描述 一套 1000 平方英尺 (sqft) 的房屋售价为300,000美元,一套 2000 平方英尺的房屋售价为500,000美元。这两点将构成我们的数据或训练集。面积单位为 1000 平方英尺&a…

C++ 类和对象篇(零) 面向过程 和 面向对象

目录 一、面向过程 二、面向对象 三、两种编程思想的比较 四、C和C 一、面向过程 1.是什么? 是一种以解决问题的过程为中心的编程思想。即先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。 2.为什么? 面向过程就纯粹是分析…

基于x-scan扫描线的3D模型渲染算法

基于x-scan算法实现的z-buffer染色。c#语言&#xff0c;.net core framework 3.1运行。 模型是读取3D Max的obj模型。 x-scan算法实现&#xff1a; public List<Vertex3> xscan() {List<Vertex3> results new List<Vertex3>();SurfaceFormula formula g…

SAP 自定义BADI增强点

应用场景 标准化代码中预留客制化部分&#xff0c;保证代码主体完整性&#xff0c;可以在预留增强位置预留两种类型的增强处理&#xff0c;其一为标准增强类型的&#xff0c;增强部分代码属于增加的逻辑&#xff0c;其二对于部分多样化的逻辑&#xff0c;使用优先执行默认逻辑&…

Java常用API:Object、Objects、包装类

Object类API toString 返回字符串类型 equals 默认比较的是地址 此时返回的是 false 可以在类中重写equals 方法 比较内容 如果内容一样就返回true clone 不能在测试类中用&#xff0c;必须在创建的类中重写克隆方法 还必须要有接口&#xff0c;说明这个对象有这个能力克隆 …

增量预训练baichuan-13b-chat遇到的那些坑

文章目录 前言资源deepspeed一、训练的坑二、推理的坑三、继续训练的坑总结前言 资源 单机两4090,如图 单卡24G,baichuan-13b-chat单卡推理需要至少26G,因此仅用一张卡,我们是无法加载百川13B的模型,所以,无论是推理还是训练,我们都必须并行! deepspeed 核心思想…

主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》

论文地址:https://arxiv.org/pdf/2305.12972.pdf 代码地址:https://github.com/huawei-noah/VanillaNet 在基础模型的核心是“多样性即不同”,这一哲学在计算机视觉和自然语言处理方面取得了惊人的成功。然而,优化和Transformer模型固有的复杂性带来了挑战,需要转向简洁性…