基于 YOLOv8 的自定义数据集训练

news2024/11/18 13:45:59

634807a62d31d971ce890845fde642df.gif

图1.1:YOLOv8初始测试

YOLOv8🔥于 2023年1月10日由Ultralytics发布。它在计算机视觉方面提供了进展,带来了对我们感知、分析和理解视觉世界的巨大创新。它将为各个领域带来前所未有的可能性。

在速度、准确性和架构方面进行了相当大的改进。它是从头开始实现的,没有使用任何来自YOLOv5的主要模块(即模型架构)。它的速度更快,比其先前版本(YOLOv7)更准确,并且在平均精度均值(MAP)方面获得了53.7的新高。

1b87beecbe0b9fc261079dcb04c3c2b8.png

图1.2:YOLOv8平均精度均值

在本文中,我们将重点介绍训练YOLOv8自定义数据集所需的步骤。您可以按照下面提到的步骤在自己的数据上训练YOLOv8。所有提到的步骤都经过了适当的测试,在Windows和Linux操作系统上运行良好。

      • 安装模块

      • 预训练的目标检测

      • 使用自定义数据训练YOLOv8

      • 使用自定义权重进行推理

安装模块

YOLOv8发布了一个名为“ultralytics”的软件包,您可以使用下面提到的命令进行安装。

pip install ultralytics==8.0.0


or


# latestversion
pip install ultralytics

以上命令将安装所有必要的软件包,以便您可以在自己的数据上使用YOLOv8进行检测和训练。

注意:请确保您的系统上安装了Python 3.7.0或更高版本。

预训练的目标检测

如果您只需要运行单个命令来以高效的方式进行目标检测并提供更准确和快速的结果,那您会有什么感受呢?

您可以在终端/(命令提示符)中运行以下命令,在所选视频/图像上使用预训练权重进行检测,使用YOLOv8。

#for image
yolo task=detect mode=predict model=yolov8n.pt source="test.png"
#for video
yolo task=detect mode=predict model=yolov8n.pt source="test.mp4"

如果一切顺利,您将在当前目录内的“runs/detect/exp”文件夹中获得结果。

a6ad43049a03bcb2572ffcc216ee7f29.png

Fig-1.3: 预训练对象检测(作者提供的图像)

在自定义数据上训练 YOLOv8

训练 YOLOv8 对象检测模型的步骤可以概括如下:

      • 收集数据

      • 标记数据

      • 划分数据集(训练集、测试集和验证集)

      • 创建配置文件

      • 开始训练

步骤 1:收集数据

为 YOLOv8 自定义训练创建一个数据集。如果没有数据,可以使用来自 openimages 数据库的数据集或以下网站提供的数据集:https://medium.com/nerd-for-tech/extraction-of-frames-from-multiple-videos-3ddbced6f3c2

YOLOv8 将标签数据存储在文本(.txt)文件中,格式如下:

<object-class-id> <x> <y> <width> <height>

步骤 2:标记数据

您可以使用 labelImg 工具或 Roboflow 平台进行数据标注,具体取决于您的需求。如果您想了解 labelImg 工具的工作流程,可以查看以下文章:

https://medium.com/nerd-for-tech/labeling-data-for-object-detection-yolo-5a4fa4f05844

步骤 3:划分数据集(训练集、测试集和验证集)

当您想在自定义数据上训练计算机视觉模型时,将数据分成训练集和测试集非常重要。训练集用于教授模型如何进行预测,而测试集用于评估模型的准确性。常见的分割比例是 80-20%,但实际比例可能取决于数据集的大小和您正在处理的具体任务。例如,如果您有一个小数据集,您可能希望使用更高的百分比进行训练,而如果您有一个大数据集,您可以使用较小的百分比进行训练。

对于数据拆分,您可以查看 split-folders,它会将数据随机拆分为训练集、测试集和验证集。split-folders链接:https://pypi.org/project/split-folders/

文件夹结构:

├── yolov8
 ## └── train
 ####└── images (folder including all training images)
 ####└── labels (folder including all training labels)
 ## └── test
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)
 ## └── valid
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)

步骤 4:创建配置文件

创建自定义配置文件可以是组织和存储计算机视觉模型的所有重要参数的有用方式。

在你已经打开终端/(命令提示符)的当前目录内创建一个文件名为“custom.yaml”的文件。将下面的代码粘贴到该文件中。设置数据集文件夹的正确路径,更改类及其名称,然后保存它。

path:  (dataset directory path)
train: (Complete path to dataset train folder)
test: (Complete path to dataset test folder) 
valid: (Complete path to dataset valid folder)


#Classes
nc: 5# replace according to your number of classes


#classes names
#replace all class names list with your classes names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane']

注意:确保设置正确的训练和测试目录路径,因为训练过程将完全依赖于该文件。

步骤 5:开始训练

一旦你完成了预处理步骤,例如数据收集,数据标注,数据拆分和创建自定义配置文件,你可以使用下面在终端/(命令提示符)中提到的命令开始在自定义数据上训练YOLOv8。

yolo task=detect mode=train model=yolov8n.pt data=custom.yaml epochs=3 imgsz=640

task = detect(可以是分割或分类)

mode = train(可以是预测或验证)

model = yolov8n.pt(可以是yolov8s / yolov8l / yolov8x)

epochs = 3(可以是任何数字)

imgsz = 640(可以是320、416等,但请确保它是32的倍数)

5d770d858fc9a56effac5f9308a90e98.png

图1.5:在自定义数据上训练YOLOv8

如果有任何图像损坏,YOLOv8将不会开始在自定义数据上进行训练。如果一些标签文件损坏,那么训练不会有问题,因为YOLOv8将忽略这些(图像和标签)文件。

等待训练完成,然后使用新创建的权重进行推断。自定义训练的权重将保存在下面提到的文件夹路径中。

[runs/train/exp/weights/best.pt]

使用自定义权重推理

使用自定义权重进行推断时,请使用下面提到的命令进行检测。

yolo task=detect mode=predict model="runs/train/exp/weights/best.pt" source="test.png"
or
yolo task=detect mode=predict model="runs/train/exp/weights/best.pt" source="test.mp4"

·  END  ·

HAPPY LIFE

f745d94584a762540f2fecfa14f764f3.png

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

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

相关文章

vs的常用配置【以及vs常用的快捷键】

1、颜色设置 (1) 编译器的主题颜色设置 (2) 字体和颜色设置 (3) 字体大小 更快捷的修改字体大小方式&#xff1a;ctr鼠标滚轮 2、行号设置 默认就有&#xff0c;不用设置了 3、把解决方案资源管理器移动到左边 4、设置打开错误列表 5、自动保存-要手动使用快捷键 ctrs 代码…

DolphinScheduler×T3出行 | 打造车联网一站式数据应用交互体验

点击蓝字 关注我们 用户案例 | T3 出行 业务挑战 作为一家车联网驱动的公司&#xff0c;T3出行汇聚了“人、车、路、云”各端的海量数据。为了承载如此多元化的数据以更好地释放数据价值&#xff0c;T3出行构建了以Apache Hudi为基础的企业级的数据湖&#xff0c;并在此之上搭建…

Nginx rewrite ——重写跳转

Nginx常见模块 http http块是Nginx服务器配置中的重要部分&#xff0c;代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括&#xff1a;文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等…

代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间 、56. 合并区间

文章目录 重叠问题435. 无重叠区间763.划分字母区间:star:56. 合并区间 重叠问题 这几道题都是判断区间重叠&#xff0c;区别就是判断区间重叠后的逻辑。 435. 无重叠区间 链接:代码随想录 解题思路&#xff1a; 这道题和射气球的题几乎思路一样 不断求出重叠的最小右区间&a…

【Spring篇】Spring相关概念

&#x1f353;系列专栏:Spring系列 &#x1f349;个人主页:个人主页 目录 一、介绍 &#x1f34a;1.为什么要学? &#x1f34d;2.学什么? &#x1f353;3.怎么学? 二、Spring相关概念 &#x1f352;1.Spring家族 &#x1f345;2.了解Spring发展史 &#x1f350;3.Spr…

Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)

磁盘挂载和磁盘扩容 一、系统环境二、磁盘挂载到新目录&#xff08;磁盘挂载&#xff09;2.1 查找新硬盘2.2 创建挂载目录2.3 创建新分区2.4 创建新物理卷2.5 创建新卷组2.6 创建新逻辑卷2.7 挂载到空目录 三、挂载到已有目录&#xff08;磁盘扩容&#xff09;3.1 查找新硬盘3.…

【Linux】冯诺依曼体系结构与进程的基础知识点

目录 1.冯诺依曼体系结构硬件[2~5]2.为什么要有内存&#xff1f;3.为什么不用CPU中的寄存器做存储单元&#xff1f;4.为什么我们的程序必须先被加载到内存中&#xff1f;5.在硬件层面数据流是如何流向的&#xff1f; 软件[6~10]6.操作系统Operator System7.操作系统的作用8.操作…

能源管理系统在电子厂房中的应用

摘要&#xff1a;以能耗管理系统在工业厂房的应用为例&#xff0c;介绍了系统架构及功能。重点分析能耗管理系统在工业厂房实施过程中遇到的难点&#xff0c;并对系统采集的数据进行分析&#xff0c;提出了相应的节能措施&#xff0c;帮助该业厂房达到节约能耗和运行费用的目的…

tomcat部署应用页面乱码问题解决方案

参考&#xff1a;(129条消息) java jvm字符集 设置_windows/tomcat 修改java虚拟机JVM以utf-8字符集加载class文件的两种方式..._Lemaden的博客-CSDN博客 1、应用部署tomcat启动之后&#xff0c;页面显示乱码&#xff0c;解决方案 设置环境变量&#xff1a; 我的电脑 -> …

转行大数据未来发展怎么样?可行么

近年来越来越多的人选择大数据行业&#xff0c;大数据行业前景不错薪资待遇好&#xff0c;各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广&#xff0c;不管是科技领域还是食品产业&#xff0c;零售业等都是需要大数据人才进行大数据的处理&#xff0c;以提供更好…

智慧管廊监控与报警管控一体化系统解决方案

摘要&#xff1a;智慧管廊监控与报警管控是一项综合性质较高的管控操作系统。在各项系统结构之间因为技术管理体系之间的差异&#xff0c;所评价的标准也有着不同的区分&#xff0c;导致各项标准之间难以实现相互之间的联通。这种形式下就需要实现环境与设备之间的监控管理、通…

HBuilderX的快捷键

快捷键说明ctrl /添加注释&#xff08;js&#xff1a;// 注释、css&#xff1a;/* 注释 */、vue/nvue模板&#xff1a; <!-- 注释 -->&#xff09;ctrl k格式化代码Ctrl C 拷贝当前行或者所选代码块到剪切板Ctrl X剪切当前行或所选代码块到剪切板Ctrl V粘贴剪切板上…

LeetCode LCP 04. 覆盖【二分图最大匹配,匈牙利算法】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

400元左右的蓝牙耳机啥牌子好?400元价位蓝牙耳机推荐

随着人们越来越倾向于使用随身便携的电子产品&#xff0c;轻松上阵、无线自由的TWS蓝牙耳机越来越受消费者的青睐&#xff0c;成为现在耳机行业的新星&#xff0c;下面整理了几款400元价位的耳机品牌。 一、南卡小音舱Lite2蓝牙耳机 参考价格&#xff1a;239元 佩戴方式&…

AgentAI+ChatGPT给出答案-为什么即时通讯需要心跳

序言 人工智能ChatGpt 结合系统化的问题拆解, 现在已经能够进行问题的拆解与自问自答, 预计未来很多的脑力工作要被释放了, 作为即时通讯的开发人员, 我问问专业的问题 为什么即时通讯需要心跳 先看产品界面与使用结果 问题拆解过程 执行任务1: 概念搜索 “Executing “Res…

【hello Linux】基础IO

目录 1.C语言文件操作 1. 打开文件&#xff1a; 2. 文件操作 3. 关闭文件 2. C语言中的流操作 3. 系统文件IO 1. 接口介绍 2. 写文件 3. 读文件 4. 文件描述符fd 0 & 1 & 2 文件描述符&#xff1a; 文件描述符原理&#xff1a; 文件描述符的分配规则&#xff1a; 5. 重…

企业数字化转型如何做?看过来

一、什么是数字化转型&#xff1f; 企业数字化转型旨在以数字化技术为基础&#xff0c;建立一个与物理世界对应的数字世界。在数字化转型过程中&#xff0c;数据是核心&#xff0c;人工智能是手段&#xff0c;云化服务是形式&#xff0c;企业的组织制度、流程优化与重构及人才…

ROS学习——艰辛的环境安装之路一ROS安装Kinetic版本

ROS-Kinetic Kinetic版本的ROS是用在Ubuntu16.04版本下的&#xff0c;先确认Ubuntu版本 Kinetic安装的官方文档&#xff08;可以按照原文来&#xff09; http://wiki.ros.org/kinetic/Installation/Ubuntu 1.配置Ubuntu的软件仓库 在安装 Ubuntu 的过程中如果你系统选了中文…

电子表格 VS 数据网格,你的React应用程序应该怎么选?

电子表格和数据网格&#xff1a;乍一看他们似乎是可互换的组件&#xff0c;由于两者都是用表格显示来格式化大量数据&#xff0c;因此很难知道应该为React应用程序选择哪个选项。 尽管它们的外观相似&#xff0c;但提供了非常不同的功能——选择错误的一个将对用户体验产生负面…

vite面试题

为什么说vite比webpack更快 和webpack对比&#xff0c;为什么 vite 的冷启动、热启动、热更新都会快&#xff1f;这就要说说二者的区别。 使用 webpack 时&#xff0c;从 yarn start 命令启动&#xff0c;到最后页面展示&#xff0c;需要经历的过程&#xff1a; 以 entry 配置…