用YOLOv8推荐的Roboflow工具来训练自己的数据集

news2024/11/28 16:37:05

YOLOv8是Ultralytics公司开发的YOLO目标检测图像分割模型的最新版本,相较于之前的版本,YOLOv8可以更快速有效地识别和定位图像中的物体,以及更准确地分类它们。

作为一种深度学习技术,YOLOv8需要大量的训练数据来实现最佳性能。为了让YOLOv8能够有效地识别自己的应用中的物体,开发者需要准备大量的训练数据,而构建自定义数据集是一个非常耗时的过程,往往收集图像、标记图像并以正确的格式导出它们可能就需要数十甚至数百个小时。为了解决这一问题,YOLOv8在官方教程中,为我们推荐了一款强大的开源工具——Roboflow

Roboflow介绍

Roboflow是一款专为YOLOv8设计的自动化训练数据工具,它为YOLOv8提供了一种更便捷、更快速的方式来准备训练数据。它能够自动从开发者提供的原始图像数据中提取所需的信息,并将其转换为YOLOv8可以直接使用的格式。Roboflow还提供了一种独特的标记方式,让开发者更轻松地为图像中的物体设定标签,以便YOLOv8能够更有效地识别它们。本文将为大家介绍如何使用Roboflow来训练YOLOv8自定义数据集。

创建自己的数据集

首先,我们把想要训练的图片整理到一个文件夹中,并设置图片尺寸与格式统一。

接着,使用Roboflow创建数据集。前往Roboflow官网点击右上角注册账号,然后通过Roboflow将自定义数据集进行标注并直接导出到 YOLOv8以进行训练。具体操作步骤如下:

 

导入目标文件夹后,双击任何一张图片即可进入标注,这里我们以第一张图片为例,操作步骤如图所示:

 

图片标注完成,返回后点击右上方进行保存。选择“Split Images Between Train/Vaild/Test”,根据系统推荐自动划分训练集、验证集和测试集,最后导出文件压缩包至电脑。

训练数据集

将得到的数据集压缩包解压到仓库的主路径中,为了方便后续调用CLI命令更便捷,这里我们将数据集重命名为“flyerdata”。

再把数据集复制到下图所示路径中(YOLOv8在训练数据集时,会默认从这个路径内找数据)。

在“pycharm”打开自创数据集中的“data.yaml”,修改文件中的路径。

修改保存后,在yolov8环境下的终端输入:

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

同时将“data=”后缀修改为自己数据集的路径,回车开始训练。训练完成之后,结果会保存在最后一行指示的路径中。

预测新数据

训练完成后,会得到一个属于你自己的训练集模型。

根据你的数据集训练结果模型的位置来修改以下代码,完成模型验证:

yolo task=detect mode=val model=runs/detect/train5/weights/best.pt data=flyerdata/data.yaml

新数据的预测

用验证后的训练集模型预测新数据,需要先收集和我们的数据集相关的同类型图片,做成新的文件夹,图片大小和格式保持与之前的数据集图片一致,这里我们将新的图片文件夹命名为“images”,并放进仓库主路径中。

接下来根据数据集训练结果模型的位置来修改以下代码,“source”是指新图片文件夹的位置,由于我们已经将文件夹放在了仓库主路径中,故可直接修改为”source=images”,然后开始预测。

yolo detect mode=predict model=runs/detect/train5/weights/best.pt source=images

如需用训练后得到的数据集模型来训练视频,则把想训练的视频放在仓库主路径上,然后用以下代码(将“source=”后缀改成视频的路径)调用即可:

yolo detect mode=predict model=runs/detect/train5/weights/best.pt source=video/1.mp4

预测完成后,预测结果也同样自动保存在最后一行指定路径中。

总结

总而言之,Roboflow是一种非常有用的工具,它提供了一种简单的方式来调整训练数据,使其能够更好地适应YOLOv8的要求,帮助我们更轻松地准备YOLO v8所需的训练数据。还可以自动转换和标记图像,以及针对不同的训练数据集设置特定的训练参数,确保YOLOv8能够更有效地识别物体,从而使YOLOv8能够更有效地学习。

相关资源链接

[1] Roboflow官网:https://roboflow.com/?ref=ultralytics

[2] YOLOv8 项目地址:https://github.com/ultralytics/ultralytics

[3] YOLOv8 官方教程:https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/#preparing-a-custom-dataset-for-yolov8

- END -

 阿木实验室,为机器人研发提供开源软硬件工具和课程服务,让研发更高效!

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

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

相关文章

如何旋转YUV图片数据且使用Qt显示

前言 提一下这篇文章的需求:将USB相机获取到的YUV数据进行旋转,然后转为QImage进行显示。原本程序中是有旋转的代码,但不知道为什么,旋转出来的图片会花屏。关于花屏的问题,后面会稍微阐述一下。所以,经过…

[多线程进阶] 常见锁策略

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1. 常见的锁策略 1.1 乐观锁 vs 悲观锁 1.2 读写…

bootstrap 框架

文章目录bootstrap必须使用 HTML5 文档类型排版和链接默认栅格系统带有基本栅格的 HTML 代码媒体类型媒体类型逻辑运算符 用来做条件判断页面布局: 引入 css(bootstrap.min.css) 类名03-面包屑导航警告框、徽章、面包屑导航、按钮、按钮组卡…

css行内块元素垂直居中

css行内块元素垂直居中 div里边有个img标签&#xff0c;要想让img垂直居中&#xff0c;需要 给父盒子设置line-heightheightimg设置vertical-align:middle <div style"background-color: red; height: 150px;line-height: 150px;"><img src"images/…

Unity开发环境配置

Unity本体安装 1.首先下载安装unityhub,中文管网https://unity.cn/ 2.登录unityhub&#xff0c;选择你想要的版本安装 选择后按照提示选择个人免费试用的license,然后等待unity本体下载安装即可。 VSCode安装和配置 1.去官网https://code.visualstudio.com/下载vscode 2.u…

微信小程序 Springboot ssm房屋租赁系统uniapp设计与实现

房屋租赁系统用户和户主是基于微信端&#xff0c;管理员是基于网页端&#xff0c;系统采用java编程语言&#xff0c;mysql数据库&#xff0c; idea工具开发&#xff0c;本系统分为用户&#xff0c;户主&#xff0c;管理员三个角色&#xff0c;其中用户可以注册登陆小程序&#…

C++11入门

目录 C11简介 统一的列表初始化 {}初始化 std::initializer_list 文档介绍 std::initializer_list的类型 使用场景 initializer_list接口函数模拟实现 auto与decltype nullptr 范围for STL的变化 新容器 新方法 新函数 C11简介 1.在2003年C标准委员会曾经提交了一…

【浅学Redis】缓存 以及 缓存穿透、缓存击穿、缓存雪崩

缓存 以及 缓存击穿、缓存穿透、缓存雪崩1. 缓存1.1 缓存的作用1.2 缓存的应用场景1.3 引入缓存后的执行流程1.4 缓存的优点2. 缓存穿透2.1 场景2.2 解决策略1. 参数校验2. 缓存空值3. 缓存击穿3.1 场景3.2 解决策略4. 缓存雪崩4.1 场景4.2 解决策略5. 上面三者的区别1. 缓存 …

图像分割--入门了解

一. 三种分割 1. 语义分割&#xff08;semantic segmentation&#xff09; 语义分割&#xff1a;语义分割通过对图像中的每个像素进行密集的预测、推断标签来实现细粒度的推理&#xff0c;从而使每个像素都被标记为一个类别&#xff0c;但不区分属于相同类别的不同实例。 比…

ChatGPT之父:世界正被他搅动

阿尔特曼&#xff08;左&#xff09;与马斯克Mac LC2电脑ChatGPT这款聊天应用程序最近太火了&#xff01; 美国北密歇根大学的一名学生用它生成了一篇哲学课小论文&#xff0c;“惊艳”了教授&#xff0c;还得到了全班最高分。美国一项调查显示&#xff0c;53%的学生用它写过论…

Vue (2)

文章目录1. 模板语法1.1 插值语法1.2 指令语法2. 数据绑定3. 穿插 el 和 data 的两种写法4. MVVM 模型1. 模板语法 root 容器中的代码称为 vue 模板 1.1 插值语法 1.2 指令语法 图一 &#xff1a; 简写 &#xff1a; v-bind: 是可以简写成 &#xff1a; 的 总结 &#xff1a; …

Springboot + RabbitMq 消息队列

前言 一、RabbitMq简介 1、RabbitMq场景应用&#xff0c;RabbitMq特点 场景应用 以订单系统为例&#xff0c;用户下单之后的业务逻辑可能包括&#xff1a;生成订单、扣减库存、使用优惠券、增加积分、通知商家用户下单、发短信通知等等。在业务发展初期这些逻辑可能放在一起…

【23种设计模式】创建型模式详细介绍

前言 本文为 【23种设计模式】创建型模式详细介绍 相关内容介绍&#xff0c;下边具体将对单例模式&#xff0c;工厂方法模式&#xff0c;抽象工厂模式&#xff0c;建造者模式&#xff0c;原型模式&#xff0c;具体包括它们的特点与实现等进行详尽介绍~ &#x1f4cc;博主主页&…

计算机组成原理(一)

1.了解计算机硬件的发展和软件的发展历程&#xff1b; 硬件&#xff1a;   电子管时代&#xff08;1946-1959&#xff09;&#xff1a;电子管、声汞延迟线、磁鼓   晶体管时代&#xff08;1959-1964&#xff09;&#xff1a;晶体管、磁芯   中、小规模集成电路时代&#…

OpenStack云平台搭建(1) | 基础环境准备

目录 一、环境准备 1.1、关闭selinxu 1.2、关闭防火墙 1.3、修改主机名 1.4、配置时间同步服务器 1.5、配置域名 二、安装OpenStack库 2.1、启用OpenStack仓库的包 2.2、安装python-openstackclient 2.3、controller安装数据库 2.4、安装消息队列 2.5、配置缓存 2.…

Linux驱动开发基础__中断的线程化处理

目录 1 引入 2 内核机制 2.1 调用 request_threaded_irq 后内核的数据结构 2.2 request_threaded_irq 2.3 中断的执行过程 1 引入 复杂、耗时的事情&#xff0c;尽量使用内核线程来处理。工作队列用起来挺简单&#xff0c;但是它有一个缺点&#xff1a;工作队列中有多个 …

【Java 面试合集】HashMap中为什么要使用红黑树

HashMap中为什么要使用红黑树1. 概述 从源码的结构方面讲述下为什么HashMap要使用红黑树。那没有红黑树的时候&#xff0c;底层是基于什么逻辑进行存储的。 2. 底层结构 如果忽略红黑树的话&#xff0c;HashMap底层的数据存储结构如下&#xff1a; 总体而言就是数组 链表的形…

Vscode使用

我是四五年的webstorm忠粉&#xff0c;一直觉得它是世界上最好用、强大、方便的编辑器。 为了它深谙各种破解方法&#xff0c;突然有一天我知道的几种方法都不奏效了。破解的实在太累了&#xff0c;算了&#xff0c;尝试尝试不同的工具吧。 含泪挥别webstrom&#xff0c;捏着…

JDBC编程复习

文章目录JDBC1.概念2.原理3. 如何使用JDBC编程1. 下载mysql的jdbc驱动2. 项目中引入驱动4. JDBC使用1. 和数据库建立连接2.获取连接3. Statement对象4. 释放资源JDBC 1.概念 JDBC,即Java Database Connectivity&#xff0c;java数据库连接。是Java提供的API用来执行SQL语句&a…

SWPU新生赛WriteUp

一个线上赛&#xff0c;这个NSSCTF最爽的就是没有靶机操作的一分钟冷却&#xff0c;10.11比赛结束&#xff0c;但是我还要看看工控&#xff0c;所以不打这个比赛了&#xff0c;先把wp写了&#xff0c;pwn入门真TM艰难 WEB 前面送分题&#xff0c;中间的也是基础题&#xff0c;…