YOLOv8进阶 | 如何用yolov8训练自己的数据集(以安全帽佩戴检测举例)

前言:Hello大家好,我是小哥谈。YOLOv8是一种目标检测算法,它是YOLO(You Only Look Once)系列算法的最新版本。本节课就带领大家如何基于YOLOv8来训练自己的目标检测模型,本次作者就以安全帽佩戴检测为案例进行说明,让大家可以轻松了解整个模型训练过程!~🌈  

     目录

🚀1.算法介绍

🚀2.数据标注

🚀3.模型训练

 🚀1.算法介绍

YOLOv8是一种目标检测算法,它是YOLO(You Only Look Once)系列算法的最新版本。YOLOv8采用了一种单阶段的检测方法,可以实时地在图像或视频中检测出多个目标物体的位置类别。YOLOv8的核心思想是将目标检测任务转化为一个回归问题,通过一个卷积神经网络将输入图像映射到一个固定大小的特征图上,并在特征图上进行目标的位置和类别的预测。相比于传统的两阶段方法,YOLOv8具有更快的检测速度和更高的准确率。

YOLOv8的网络结构采用了Darknet作为基础网络,通过多个卷积层池化层提取图像特征,并通过全连接层进行目标的位置和类别的预测。此外,YOLOv8还引入了一些技巧来提升检测性能,如使用多尺度特征图进行目标检测、使用Anchor Boxes来处理不同尺度的目标等。

YOLOv8的主要特点包括:

  1. 高速度:YOLOv8能够实时地进行目标检测,达到了非常快的检测速度。
  2. 高准确率:YOLOv8在保持较快速度的同时,也具备较高的检测准确率。
  3. 多尺度检测:YOLOv8可以在不同尺度的特征图上进行目标检测,从而能够检测到不同大小的目标物体。
  4. 多类别检测:YOLOv8可以同时检测多个不同类别的目标物体。

总结来说,YOLOv8是一种高效准确的目标检测算法,可以广泛应用于实时物体检测、视频监控、自动驾驶等领域。

YOLOv8官方仓库地址:

GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

作者在官网下载后,将含有预训练权重文件的YOLOv8完整源码进行了上传,大家可自行下载。  


🚀2.数据标注

利用labelimg或者make sense软件来标注数据,关于如何使用labelimg或者make sense软件来为自己的数据集打上标签,请参考作者专栏文章:

说明:♨️♨️♨️

数据标注工具的使用教程:

YOLOv5入门实践(1)— 手把手教你使用labelimg标注数据集(附安装包+使用教程) 

YOLOv5入门实践(2)— 手把手教你使用make sense标注数据集(附工具地址+使用教程)


🚀3.模型训练

第1步:准备数据集

将数据集放在datasets文件夹中。datasets属于放置数据集的地方,位于PycharmProjects中,C:\Users\Lenovo\PycharmProjects中(这是我的电脑位置,跟你的不一定一样,反正位于PycharmProjects中,如果没有,可自行创建),属于项目的同级文件夹。具体如下图所示:

打开datasets文件夹,可以看到本次安全帽训练所使用的数据集。

安全帽佩戴检测数据集是我手动标注好的,可以在我的博客“资源”中下载。

打开数据集文件,我们会看到数据集文件包括imageslabels两个文件夹,其中,images放的是数据集图片,包括trainval两个文件夹,labels放的是经过labelimg标注所生成的标签,也包括trainval两个文件夹。

关于此处数据集的逻辑关系,用一张图总结就是:⬇️⬇️⬇️

第2步:创建yaml文件

打开pycharm,选择YOLOv8项目源码文件,在ultralytics\cfg\datasets下新建一个helmet.yaml,如下图所示:

打开helmet.yaml,按照如下图所示的进行配置:

说明:♨️♨️♨️

1.train和val为绝对路径地址,可根据自己数据集的路径地址自行设置。

2.nc指的是分类,即模型训练结果分类,此处为在用labelimg或者make sense为数据集标注时候确定。

3.由于本次进行的是安全帽佩戴检测模型训练,所以分两类,分别是:helmet(佩戴安全帽)和nohelmet(不佩戴安全帽)

打开coco128.yaml文件,可以看到里面写的是相对路径,和我们的写法不同,但是都可以使用,据我所知还有很多种数据集读取方式:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128  ← downloads here (7 MB)# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)# Classes
names:0: person1: bicycle2: car3: motorcycle4: airplane5: bus6: train7: truck8: boat9: traffic light10: fire hydrant11: stop sign12: parking meter13: bench14: bird15: cat16: dog17: horse18: sheep19: cow20: elephant21: bear22: zebra23: giraffe24: backpack25: umbrella26: handbag27: tie28: suitcase29: frisbee30: skis31: snowboard32: sports ball33: kite34: baseball bat35: baseball glove36: skateboard37: surfboard38: tennis racket39: bottle40: wine glass41: cup42: fork43: knife44: spoon45: bowl46: banana47: apple48: sandwich49: orange50: broccoli51: carrot52: hot dog53: pizza54: donut55: cake56: chair57: couch58: potted plant59: bed60: dining table61: toilet62: tv63: laptop64: mouse65: remote66: keyboard67: cell phone68: microwave69: oven70: toaster71: sink72: refrigerator73: book74: clock75: vase76: scissors77: teddy bear78: hair drier79: toothbrush# Download script/URL (optional)
download: https://ultralytics.com/assets/coco128.zip

第3步:下载预训练权重

打开YOLOv8官方仓库地址,可以根据需要下载相应的预训练权重。

预训练权重下载地址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

下载完毕后,即可将其复制粘贴到YOLOv8源码的主目录下。具体如下图所示:

 第4步:新建Python文件

通过查看YOLOv8官方文档可知,YOLOv8提供CLIpython两种训练方式。区别在于:

  • 方式1:CLI就是直接在终端运行指令
  • 方式2:python需要你新建一个python文件,然后运行代码

YOLOv8官方文档地址:Home - Ultralytics YOLOv8 Docs 

本次训练作者采用方式2。

在YOLOv8源码目录下新建Python文件,命名为mytrain.py具体如下图所示:

本次案例,我的mytrain.py文件内容如下所示,大家可自行调整路径地址。

from ultralytics import YOLO
import wandbwandb.init(project="YOLOv8")# Load a model
model = YOLO(r"C:\Users\Lenovo\PycharmProjects\ultralytics-main-v1\ultralytics\cfg\models\v8\yolov8.yaml")  # build a new model from scratch
model = YOLO(r"C:\Users\Lenovo\PycharmProjects\ultralytics-main-v1\yolov8s.pt")  # load a pretrained model (recommended for training)# Use the model
model.train(data=r"C:\Users\Lenovo\PycharmProjects\ultralytics-main-v1\ultralytics\cfg\datasets\helmet.yaml", epochs=100)  # train the model
metrics = model.val()  # evaluate model performance on the validation set
#results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image
#path = model.export(format="onnx")  # export the model to ONNX format

说明:由于本次案例不需要导出模型,我将相关代码注释了,大家后续可根据实际情况进行调整。

第5步:调节参数

YOLOv8关于模型的各种参数都在ultralytics/cfg/default.yaml中,这是与先前版本最大的不同,通过调节这些参数我们就可以实现各种我们所需的操作。

第5步:开始训练

当参数调节完毕之后,即可点击“运行”。具体运行结果如下图所示:

训练结束后,训练结果如下所示:


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

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

相关文章

华为机考入门python3--(7)牛客7-取近似值

分类:数字 知识点: str转float float(str) 向上取整 math.ceil(float_num) 向下取整 math.floor(float_num) 题目来自【牛客】 import math def round_to_int(float_num): # 如果小数点后的数值大于等于0.5,则向上取整&#xf…

Fink CDC数据同步(一)环境部署

1 背景介绍 Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 Flink CDC 是 Apache Flink 的一组源连接器,基于数据库日志的…

【SpringBoot】RBAC权限控制

📝个页人主:五敷有你 🔥系列专栏:SpringBoot⛺️稳重求进,晒太阳 权限系统与RBAC模型 权限 为了解决用户和资源的操作关系, 让指定的用户,只能操作指定的资源。 权限功能 菜单权限&a…

windows下安装go

下载golang Go 官网下载地址: https://golang.org/dl/ Go 官方镜像站(推荐): https://golang.google.cn/dl/ 选择安装包 验证有没有安装成功 查看 go 环境 说明 : Go1.11 版本之后无需手动配置环境变量&#xff0c…

29 python快速上手

Python操作MySQL和实战 1. 事务1.1 MySQL客户端1.2 Python代码 2. 锁2.1 排它锁2.2 共享锁 3. 数据库连接池4. SQL工具类4.1 单例和方法4.2 上下文管理 5.其他总结 目标:掌握事务和锁以及Python操作MySQL的各种开发必备知识。 概要: 事务锁数据库连接池…

Weblogic反序列化漏洞分析之CVE-2021-2394

目录 简介 前置知识 Serializable示例 Externalizable示例 联系weblogic ExternalizableLite接口 ExternalizableHelperl类 JdbcRowSetImpl类 MethodAttributeAccessor类 AbstractExtractor类 FilterExtractor类 TopNAggregator$PartialResult类 SortedBag$Wrappe…

【测试运维】web自动化全知识点笔记第1篇:什么是Web自动化测试(已分享,附代码)

本系列文章md笔记(已分享)主要讨论Web自动化测试相关知识。了解什么是自动化,理解什么是自动化测试以及为什么要使用自动化测试。具体包含:WebDriver的基本操作,WebDriver的鼠标、键盘操作,下拉选择框、警告…

【教学类-46-01】吉祥字门贴1.0(华光通心圆_CNKI 文本框 空心字涂色,最好繁体字)

作品展示 背景需求: 马上就要过年了,家家户户大门上贴上对联和福字 我想用正方形红色手工纸(15CM)也做一个幼儿描线版的福字 问题一:福字顺时针旋转45度 打印纸上制作福字,需要让这个字顺时针旋转45度&am…

【C++栈和队列:数据结构中的经典组合,高效处理先进先出与后进先出问题的最佳方案】

[本节目标] 1. stack的介绍和使用 2. queue的介绍和使用 3. priority_queue的介绍和使用 4. 容器适配器 1. stack的介绍和使用 1.1 stack的介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的…

【DC渗透系列】DC-2靶场

arp先扫 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 VMware, In…

DolphinScheduler实现隔几天调度

1.场景分析 dolphinscheduler(海豚)定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时,跨月,每次跨月等都会从每个月的第1天(第几天开始可以设定)开始重新计时…

Unity3d Cinemachine篇(四)— StateDrivenCamera

文章目录 前言使用StateDrivenCamera根据不同动画切换相机1. 创建一个游戏物体2. 创建StateDrivenCamera相机3. 创建动画4. 设置相机5. 完成 前言 上一期我们简单的使用了FreeLook相机,这次我们来使用一下StateDrivenCamera 使用StateDrivenCamera根据不同动画切换…

docker maven插件使用介绍

1、配置docker连接 开放docker tcp连接参考本专栏下令一篇文章 2、docker service窗口 3、根据dockerfile 构建镜像 注意 idea 用通过管理员身份启动,否则连不上docker 构建前添加maven goal 打包 4、运行镜像 创建容器 5、运行docker compose 报错 需要先配置d…

django微博热搜数据分析与可视化系统python毕业设计

简而言之,数据可视化是以图形方式呈现结构化或非结构化数据,从而将隐藏在数据中的信息直接呈现给人们。但是有一个陷阱:它不仅仅是使用数据可视化工具将数据转化为图形。相反,它是从数据的角度看待世界。换句话说,数据可视化的对象…

(7)【Python/机器学习/深度学习】Deep-Learning模型与算法应用—深度学习基础搭建最小神经网络

目录 一、深度学习使用python建立最简单的神经元neuron 1、人工智能&机器学习&深度学习三者关系 2、机器学习& 深度学习区别 3、神经元 4、最小神经网络模型(神经元/感知器) 5、(案例)Predicting if a person would buy life insurn…

使用vue脚手架构建项目

一、前言 * 创建好vue-cli的环境,下载好vue包依赖* 本文使用环境:vue/cli 5.0.8二、步骤 创建vueTest文件夹,管理员身份运行cmd , 进入到vueTest文件夹 执行命令vue create 你的项目名 ,这里我定义的项目名为: my-project 基于…

基于微信小程序的校园水电费管理小程序的研究与实现

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

DAY39: 动态规划不同路径问题62

Leetcode: 62 不同路径 机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。 基本思路 1、确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条…

SpringBoot整合Flowable最新教程(二)启动流程

介绍 文章主要从SpringBoot整合Flowable讲起,关于Flowable是什么?数据库表解读以及操作的Service请查看SpringBoot整合Flowable最新教程(一);   其他说明:Springboot版本是2.6.13,java版本是1…

Sentinel应用笔记

概念 当A、B、G、H掉线,其他服务就没法通信了 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。 特性…