YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注

前期准备

先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建

点击绿色按钮,并点击Open Terminal

输入labelimg便可打开它,labelimg是图像标注工具,在上篇文章中有讲到如何下载

标注工具的使用

找个空目录新建一个文件夹,我这里名称叫做yolotest,也可以设置其他名称

在 yolotest 目录下新建labels和images文件夹

在images文件夹新建test,train,val三个文件夹

在labesl下面新建train,val两个文件夹

images文件夹下面的test,train,val三个文件夹,全部存放相同的要训练的图片,例如train下面是 1.png,2.png,将这个两个文件复制一份到val,再复制一份到test

labels下面的train,val两个文件夹存放的是用labelimg标注的标签数据文件,等会 labelimg 使用会用到这个文件夹

将准备好的图片放到 images/train 文件夹下面并且复制一份到 images/val 和 images/test两个文件夹

数据集获取:https://storage.googleapis.com/openimages/web/visualizer/index.html?type=detection&set=train&c=%2Fm%2F05676x

来到labelimg界面,点击 Open Dir 按钮,选择到你的 images/train 文件夹即可,例如 D:\YOLOv8\yolotest\images\train。点击 Change Save Dir 按钮,选择到你的 labels/train 文件夹即可,例如 D:\YOLOv8\yolotest\labels\train。最后点击Save 下面的格式按钮,调整到 YOLO 格式的模式即可。

接下来开始标注数据

我选的例子是苹果,首先在图片上右键菜单,选择 Create RectBox 选项,或者点击左侧的 Create RectBox

苹果图片区域拉出选框,会弹出框,输入分类名称,这里填写的是apple,点击ok即可保存 ,这分类名称注意后面函数调用要用到。

此时在使用时可能会出现如下错误

解决方法

找到canvas.py,例如:D:\anaconda\envs\yolotest\Lib\site-packages\libs\canvas.py,打开它将526、530、531行的float改为int即可。

修改前后

修改完成后就可以正常工作啦!!!

我们继续接着上步,第一个图片标注完成后,点击左侧的 Save 按钮保存,然后点击 Next Image 切换标注下一张图片,操作和第一张图片类似

图标标注保存后,会在 labels/train 文件夹存储了标注的数据,classes.txt内容就是分类名称,其他的是和图片相同的名称的txt标注文件

最后,将 labels/train 文件夹数据复制到 labels/val 文件夹,等会验证模型的时候使用

至此,数据标注就完成啦!

模型训练

在 yolotest 文件下新建一个训练的配置文件,例如文件名称叫 apple.yaml,使用记事本打开,填写内容如下

path: D:/YOLOv8/yolotest
train: images/train
val: images/val
test: images/test
nc: 1
names: ["apple"]

# 有多个类别的话,按照以下方法写

# names: ["111","222"]

  • 参数解释

 path: 代表训练的根目录,这里的 yolotest在D盘,就写 D:/YOLOv8/yolotest,其他盘的路径自己修改

train: 代表要训练的图片文件夹,相对于path路径

val: 代表要验证的图片文件夹,相对于path路径

test: 代表要测试的图片文件夹,相对于path路径

nc: 代表分类名称数量,这是1个,因为使用labelimg标注的是1个类别,如果是多个数据就跟和实际类别数量一样的即可

names: 是一个json数组,代表的是标注的分类名称,labelimg使用的是apple这一个分类名称,这里就这样写即可

切记如果有多个分类名称的话名称的顺序不要写错,会影响训练结果

开始训练

在控制台输入命令,在cmd窗口,输入d:回车,在输入 cd YOLOv8/yolotest,进入这个文件夹 yolotest,其他路径自行进入

输入以下训练命令,下面两个任选一个,截图参数看ultralytics官网

yolo detect train data=d:/YOLOv8/yolotest/apple.yaml model=d:/YOLOv8/yolotest/yolov8s.pt imgsz=640

yolo detect train data=d:/YOLOv8/yolotest/apple.yaml model=d:/YOLOv8/yolotest/yolov8s.pt epochs=100 imgsz=640

这个时候系统会下载yolov8s.pt的基础训练文件

环境配置成功,一切无误,开始训练

训练完毕,注意这里的 Results saved后面的路径是动态的,截图中是在 runs/detect/train文件夹下,就是D:/YOLOv8/yolotest文件夹下

最后,在训练完成的目录中可以找到 best.pt 的训练模型以及训练中被标记和选中目标的图片结果集

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32-keil安装时遇到的一些问题以及解决方案

前言: 本人项目需要使用到STM32,故需配置keil 5,在配置时遇到了以下问题,并找到相应的解决方案,希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少(missing)version 5编译器 step1:找…

C语言结构体漫谈:从平凡中见不平凡

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文《1》 结构体的两种声明一、结构…

LabVIEW与WPS文件格式的兼容性

LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式(如 WPS 文档或表格)。然而,可以通过几种间接的方式实现这一目标,确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案: ​ 导出…

LeetCode | 栈与队列:算法入门到进阶的全解析

栈和队列作为最基础的数据结构,不仅简单直观,还在算法世界中扮演着举足轻重的角色。无论是处理括号匹配问题、滑动窗口、还是实现先进先出的任务调度,栈与队列都是核心工具。 在本篇文章中,我们将以 LeetCode 中的经典题目为例&am…

得物App再迎开放日,全流程体验正品查验鉴别

近日,得物App超级品质保障中心再度迎来了开放日活动。近60位得物App的用户与粉丝齐聚超级品质保障中心,全流程体验正品查验鉴别。开放日当天,参与者有机会近距离观察得物App的商品质检区、鉴别区、收发流转区、实验室和正品库等关键功能区&am…

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例,复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…

【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声

【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声 目录 文章目录 【大语言模型】ACL2024论文-38 从信息瓶颈视角有效过滤检索增强生成中的噪声目录后记 《An Information Bottleneck Perspective for Effective Noise Filtering on Retrieval-Augment…

《火焰烟雾检测开源神经网络模型:智能防火的科技护盾》

一、火灾威胁与检测需求 火灾,始终是高悬在人类社会头顶的 “达摩克利斯之剑”,其带来的灾难后果触目惊心。根据国家消防救援局发布的数据,仅在 2024 年上半年,全国就接报火灾达 31.7 万起 ,造成了 1173 人不幸遇难&am…

深入探究Linux树状目录结构

Linux 作为一款广泛使用的开源操作系统,其目录结构采用了树状设计,这种结构清晰、有条理,便于用户和系统进行文件管理与操作。 一、根目录(/) 根目录是整个 Linux 文件系统的起始点,就像一棵大树的根部&…

【C语言4】数组:一维数组、二维数组、变长数组及数组的练习题

文章目录 前言一、数组的概念二、一维数组2.1. 数组的创建和初始化2.2. 数组的类型2.3. 一维数组的下标2.4. 数组元素的打印和输入2.5. 一维数组在内存中的存储2.6. sizeof 计算数组元素个数 三、二维数组3.1. 二维数组的概念3.1. 二维数组的创建与初始化3.2. 二维数组的下标3.…

图论1-问题 C: 算法7-6:图的遍历——广度优先搜索

题目描述 广度优先搜索遍历类似于树的按层次遍历的过程。其过程为:假设从图中的某顶点v出发,在访问了v之后依次访问v的各个未曾被访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先…

【今日分享】人工智能加速发现能源新材料的结构与性能

人工智能与材料国际学术会议(ICAIM)workshop9是由来自宁夏大学材料与新能源学院副院长王海龙教授及马薇副教授、杜鑫老师组成,他们将以“人工智能加速发现新能源新材料的结构与性能”为主题开展研讨工作,欢迎对该主题感兴趣的专家学者携稿加入。 loadin…

Docker拉取hello-world失败超时解决方法(配置多个镜源)

问题图片 解决方案 //创建目录 sudo mkdir -p /etc/docker //写入加速器配置 sudo tee /etc/docker/daemon.json <<-EOF "registry-mirrors": "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io"…

[操作系统] 深入理解操作系统的概念及定位

概念 任何计算机系统都包含⼀个基本的程序集合&#xff0c;称为操作系统(OS)。 其核心功能如图片所示&#xff0c;包括&#xff1a; 内核 (Kernel)&#xff1a; 内核是操作系统的核心部分&#xff0c;被认为是狭义上的操作系统&#xff0c;直接与硬件打交道。负责进程管理、内…

某政务行业基于 SeaTunnel 探索数据集成平台的架构实践

分享嘉宾&#xff1a;某政务公司大数据技术经理 孟小鹏 编辑整理&#xff1a;白鲸开源 曾辉 导读&#xff1a;本篇文章将从数据集成的基础概念入手&#xff0c;解析数据割裂给企业带来的挑战&#xff0c;阐述数据集成的重要性&#xff0c;并对常见的集成场景与工具进行阐述&…

c#删除文件和目录到回收站

之前在c上遇到过这个问题&#xff0c;折腾许久才解决了&#xff0c;这次在c#上再次遇到这个问题&#xff0c;不过似乎容易了一些&#xff0c;亲测代码如下&#xff0c;两种删除方式都写在代码中了。 直接上完整代码&#xff1a; using Microsoft.VisualBasic.FileIO; using Sy…

数据合并与数据关联:数据处理中的核心操作

在数据分析和处理过程中&#xff0c;数据合并&#xff08;Data Merging&#xff09;和数据关联&#xff08;Data Association&#xff09;是两个非常重要的操作。它们分别用于整合不同数据集中的信息以及发现数据之间的潜在关系。 数据合并&#xff08;Data Merging&#xff0…

RK3576 Android14 状态栏和导航栏增加显示控制功能

问题背景&#xff1a; 因为RK3576 Android14用户需要手动控制状态栏和导航栏显示隐藏控制&#xff0c;包括对锁屏后下拉状态栏的屏蔽&#xff0c;在设置功能里增加此功能的控制&#xff0c;故参考一些博客完成此功能&#xff0c;以下是具体代码路径的修改内容。 解决方案&…

【初阶数据结构】序列系统重构:顺序表

文章目录 1.线性表2.顺序表2.1 概念及结构2.1.1 静态顺序表2.2.2 动态顺序表 2.2 接口实现2.2.1 顺序表打印2.2.2 顺序表初始化2.2.3 顺序表销毁2.2.4 顺序表容量检查2.2.5 顺序表尾插2.2.6 顺序表头插2.2.7 顺序表尾删2.2.8 顺序表头删2.2.9 顺序表在pos位置插入x2.2.10 顺序表…

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…