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

news2024/9/27 12:12:36

前言: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: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: 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 wandb

wandb.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.coloradmin.cn/o/1429703.html

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

相关文章

二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2示例 2: 输入&…

postgres:锁申请

什么是弱锁,强锁? 为了提高并发控制,PG通过将锁信息在本地缓存(**LOCALLOCK**)和快速处理常见锁(fastpath),减少了对共享内存的访问,提高性能。从而出现了弱锁和强锁的概…

如何在win系统部署开源云图床Qchan并无公网ip访问本地存储图片

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景,在大量开发人员的努力下,已经开发出大…

【自然语言处理】P2 PyTorch 基础 - 张量

目录 安装 PyTorch张量创建张量操作张量索引、切片、联合操作 CUDA张量 本系列博文我们将使用 PyTorch 来实现深度学习模型等。PyTorch 是一个开源的、社区驱动的深度学习框架。拥有强大的工具和库生态系统,包含 TorchVision(用于图像处理)、…

后端软件三层架构

一、三层架构简介 三层架构是软件开发中广泛采用的一种经典架构模式,其核心价值在于通过清晰的任务划分来提高代码的可维护性和重用性。具体来说,三层架构主要包括以下三个层次: 持久层(DAO层):这一层主要…

和鲸科技与智谱AI达成合作,共建大模型生态基座

近日,上海和今信息科技有限公司(简称“和鲸科技”)与北京智谱华章科技有限公司(简称“智谱AI”)签订合作协议,双方将携手推动国产通用大模型的广泛应用与行业渗透,并积极赋能行业伙伴探索领域大…

10:00进去,10:06就出来了,面试问的问题真难。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 刚从小厂出来,没想到在另一家公司我又寄了。 在这家…

在线JSON转CSV工具

在线JSON转CSV - BTool在线工具软件,为开发者提供方便。本工具可以在浏览器本地将JSON转换成CSV文件,并下载转换后的CSV文件。https://www.btool.cn/json-to-csv 在大数据时代,数据处理与交换已经成为日常工作生活中的常态。而JSON和CSV作为两种广…

Go语言的100个错误使用场景(21-29)|数据类型

前言 大家好,这里是白泽。 《Go语言的100个错误以及如何避免》 是最近朋友推荐我阅读的书籍,我初步浏览之后,大为惊喜。就像这书中第一章的标题说到的:“Go: Simple to learn but hard to master”,整本书通过分析100…

Flutter向 开发人员需要了解的和颜色有关的知识

前言 构建应用前台的开发人员常常需要和颜色打交道,即使很多时候,前台人员不用自己设计颜色,而是由设计师给出颜色,不过经常和颜色打交道,整理和颜色有关的知识还是开卷有益的 flutter中指定颜色的常用方式 Color.f…

海外IP代理:解锁网络边界的实战利器

文章目录 引言:正文:一、Roxlabs全球IP代理服务概览特点:覆盖范围:住宅IP真实性:性价比:在网络数据采集中的重要性: 二、实战应用案例一:跨境电商竞品分析步骤介绍:代码示…

vscode的ssh忽然连不上服务器:远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件

vscode自动更新了一下就发现连不上服务器了,我寻思估计一大堆人都寄了,一搜,果然哈哈哈哈 然后我直接搜一天内新发布的博客,还真给我搜到了这个问题,按照这个问题里面的回答(vscode1.86无法远程连接waitin…

Notion 开源替代品:兼容 Miro 绘图 | 开源日报 No.162

toeverything/AFFiNE Stars: 25.6k License: NOASSERTION AFFiNE 是下一代知识库,将规划、排序和创建集于一身。它是一个注重隐私、开源、可定制且即插即用的替代方案,可以与 Notion 和 Miro 相媲美。主要功能和优势包括: 超融合&#xff1…

深入理解网络编程之BIO和NIO

目录 原生JDK网络编程BIO BIO通信模型服务端代码 BIO通信模型客户端代码 伪异步模型服务端代码(客户端跟之前一致) 原生JDK网络编程NIO 什么是NIO? NIO和BIO的主要区别 阻塞与非阻塞IO NIO之Reactor模式 NIO中Reactor模式的基本组成…

Vue 上门取件时间组件

本文使用vue2.0elementui 制作一个上门取件时间组件,类似顺丰,样式如下: 大概功能:点击期望上门时间,下面出现一个弹框可以选择时间: 首先我们定义一些需要的数据: data() {return {isDropdown…

Github处理clone慢的解决方案

Github设置代理clone依然慢的解决方案 1、前提:科学上网 注意: 必须要有科学上网!必须要有科学上网!必须要有科学上网!重要的事情说三遍; 2、http/https方案(git clone时使用http&#xff09…

【git指南】git 本地代码版本控制

文章目录 git 本地代码版本控制1 设置全局 Git 用户名和邮箱2 初始化仓库3 提交文件4 文件修改5 版本对比6 版本回退7 版本分支8 版本合并 git 本地代码版本控制 ​ 下面介绍在 vscode 中如何利用 git 对本地代码进行版本控制。可以查看官网介绍来获得更详细的内容。 1 设置全…

01-Java工厂模式 ( Factory Pattern )

工厂模式 Factory Pattern 摘要实现范例 工厂模式(Factory Pattern)提供了一种创建对象的最佳方式 工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 工厂模式属于创建型模式 摘要 1. 意图 …

统信UOS上强大的文本编辑器

原文链接:统信UOS上强大的文本编辑器 大家好!在我们的日常工作和学习中,文本编辑器是我们最常用的工具之一。今天,我非常高兴地为大家介绍统信UOS系统自带的一款功能强大的文本编辑器。无论您是编程新手还是资深开发者&#xff0c…

SQL注入:sqli-labs靶场通关(1-37关)

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 SQL注入:盲注-CSDN博客 SQL注入:二次注入-CSDN博客 ​SQL注入:order by注入-CSDN博客 …