yolov8学习笔记(二)模型训练

目录

yolov8的模型训练

1、制作数据集(标记数据集)

2、模型训练(标记数据集、参数设置、跟踪模型随时间的性能变化)

2.1、租服务器训练

2.2、加训练参数

2.3、看训练时的参数(有条件,就使用TensorBoard)

3、模型验证

4、使用模型进行推理预测(视频、图像、视频流等)

5、模型转换(pt转为onnx等)

6、基准测试

7、评估训练结果

笔记下载


yolov8的模型训练

训练demo:windows使用YOLOv8训练自己的模型(0基础保姆级教学)_windows10使用yolov8常见问题-CSDN博客

1、制作数据集(标记数据集)

数据集概述 -Ultralytics YOLOv8 文档探索Ultralytics 支持的各种计算机视觉数据集,以进行物体检测、分割、姿态估计、图像分类和多物体跟踪。https://docs.ultralytics.com/zh/datasets/#_8

数据集------增强与制作:

yolov8标签制作,数据增强指定网站。

Roboflow: Give your software the power to see objects in images and videoEverything you need to build and deploy computer vision models.https://roboflow.com/?ref=ultralyticsEverything you need to build and deploy computer vision models.https://roboflow.com/?ref=ultralytics
使用教程:

注意:他这个网站标记的标签,是按照英语字母的顺序排的(所以我们平时也要养成好习惯,按照英语字母排类别)

比如:

bus、car、van------这样就可以了~(bus索引为0,car为1,van为2,以此类推~)

yolov8 roboflow 数据集增强与制作_哔哩哔哩_bilibiliyolov8标签制作,数据增强指定网站。https://roboflow.com/?ref=ultralytics, 视频播放量 978、弹幕量 0、点赞数 27、投硬币枚数 12、收藏人数 60、转发人数 7, 视频作者 deep_learing, 作者简介 深度学习,相关视频:【yolov8从入门到大神】01、课程基本介绍,roboflow模型辅助打标签,YOLOV9 is comming!我们一起来看看新提出的RepNCSPELAN与C2f有什么区别,YOLOV8项目已集成RepNCSPELAN,yolov8 bottleneck添加注意力机制,iPhone轻松搞定!用手机制作高级RGB-D数据集!,C#环境下部署YOLOv8模型,目标检测,超级简单,注意力机制添加总结,Yolov8源码解析(一),c2f添加注意力机制SA,yolov8检测头原理部分https://www.bilibili.com/video/BV1o64y1J76p

在这里顺便记录简单标记标签的开源项目:labelimg(使用方法)

蓝奏云下载链接:labelImg-master.zip - 蓝奏云

github项目链接:labelImg - GitHub

大致用法:windows使用YOLOv8训练自己的模型
W是标记快捷键

A是切换为上一张

D是切换位下一张
记得自动保存~

记得去predefined_classes.txt里面修改自己需要的类别
再进阶的话,就用其他好用的工具

比如: 自动标注项目AnyLabeling上手体验和教程_哔哩哔哩_bilibili

2、模型训练(标记数据集、参数设置、跟踪模型随时间的性能变化)

2.0用自己电脑的GPU训练:

一站式安装对应显卡版本的cuda和torch(windows)-CSDN博客文章浏览阅读1.1k次,点赞16次,收藏27次。1、安装python环境2、安装VS的C++环境(因为CUDA在安装时,需要VS的里面的工具包来编译。3、安装cuda4、安装pytorch。https://blog.csdn.net/Pan_peter/article/details/136125766用CPU也可以,不过比较慢

火车 -Ultralytics YOLOv8 文档使用Ultralytics YOLO 训练YOLOv8 模型的分步指南,包括单 GPU 和多 GPU 训练示例https://docs.ultralytics.com/zh/modes/train/#m1m2-mps

多GPU训练

苹果M1和M2 MPS训练

恢复中断的训练
在训练YOLOv8模型时,跟踪模型随时间的性能变化可能非常有价值。

Ultralytics的YOLO提供对三种类型记录器的支持**:** Comet ClearML TensorBoard

2.1、租服务器训练

使用教程:云服务器训练YOLOv8-训练&改进教程_哔哩哔哩_bilibili

  1. 训练网址: AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLAutoDL为您提供专业的GPU租用服务,秒级计费、稳定好用,高规格机房,7x24小时服务。更有算法复现社区,一键复现算法。https://www.autodl.com(找到适合的 Torch 版本,自带 Conda )现在需要最新的 yolov8 需要 torch>=2.0.0 for deterministic training.
  2. 购买服务器( yolo 训练一般 显卡 4G 就够了 ,不过那里面一般都是 12G 以上)
  3. 上传训练文件( yolo 固定版本库、 data 数据集、原始模型、 train.py
  1. 执行python xxx.py (缺少什么库直接下载就行,缺不了什么,一般就是cv,np,pandas、scipy、seaborn)
  2. 如果缺少cv np,pandas会无法训练
  3. 如果缺少****scipy、seaborn会无法生成一些结果!

注意:可以用【后台运行python】的方法(防止我们远程断网,导致训练中断!)

可以看看这个文章:

Linux------让程序在后台运行(四种方法+使用推荐)_linux 后台运行-CSDN博客文章浏览阅读10w+次,点赞98次,收藏385次。第一种方法不推荐使用第二种方法------在需要查看日志的情况下,建议使用(无需在关闭的那种)第三种方法------在开启后,还需要关闭或还需要输入一些命令的时候下第四种方法------虽然需要学习的时间比前面几种长,但是学会之后,会很方便。_linux 后台运行https://blog.csdn.net/Pan_peter/article/details/128875714

pip install numpy

pip install opencv-python

pip install pandas

pip install scipy

pip install seaborn

火车 -Ultralytics YOLOv8 文档

YOLOv8训练参数详解(全面详细、重点突出、大白话阐述小白也能看懂)-CSDN博客文章浏览阅读3w次,点赞75次,收藏607次。model: 模型文件的路径。这个参数指定了所使用的模型文件的位置,例如 yolov8n.pt 或 yolov8n.yaml。模型文件包含了已经训练好的模型的权重和结构。data: 数据文件的路径。该参数指定了数据集文件的位置,例如 coco128.yaml。数据集文件包含了训练和验证所需的图像、标签和其他数据的信息。epochs: 训练的轮数。这个参数确定了模型将会被训练多少次,每一轮都遍历整个训练数据集。训练的轮数越多,模型对数据的学习就越充分,但也增加了训练时间。_yolov8训练参数https://blog.csdn.net/qq_37553692/article/details/130898732

2.2、加训练参数

data: 训练数据集的配置文件路径,一般为 .yaml 格式,包含了数据集路径、类别数、训练和验证集的划分等信息。

epochs (训练的轮数) : 对于新数据集,可以逐渐增加轮数,以找到更佳的性能。

patience (早停的等待轮数) : 用于控制在训练过程中是否进行早停,防止过拟合。

device (训练运行的设备) : 指定模型训练所使用的设备,如 GPU CPU

workers (数据加载时的工作线程数) : 在数据加载过程中,可以使用多个线程并行地加载数据,以提高数据读取速度。

batch (每个批次中的图像数量) : 一般认为越大越好,但受限于显存空间。

imgsz (输入图像的尺寸) : 如果数据集中存在大量小对象,增大输入图像的尺寸可以使得这些小对象从高分辨率中受益,更好的被检测出。一般为正方形,常见大小为 416 512 640 等。

save save_period (保存检查点的频率) : 用于保存训练的检查点和预测结果,在训练不稳定中断后可以通过 resume 重新启动。

cache (数据加载时是否使用缓存) : 控制数据加载时是否使用缓存,以提高训练过程中的数据读取速度。

seed: 随机种子,用于实现可重复性。通过设置相同的随机种子,可以使得每次运行时的随机过程保持一致,以便于结果的复现

name: 实验名称。该参数为当前训练任务指定一个名称,以便于标识和区分不同的实验。

optimizer: 选择要使用的优化器。优化器是深度学习中用于调整模型参数以最小化损失函数的算法。

deterministic: 是否启用确定性模式。启用确定性模式后,保证在相同的输入下,每次运行的结果是确定的,不会受到随机性的影响。

rect: 使用矩形训练,每个批次进行最小填充。设置为 True 后,训练过程中使用矩形形状的图像批次,并进行最小化填充。

cos_lr: 使用余弦学习率调度器。如果设置为 True ,将使用余弦函数调整学习率的变化情况。

close_mosaic: 禁用 mosaic 增强的最后第几个轮次。可以指定一个整数值,表示在训练的最后第几个轮次中禁用 mosaic 增强。

2.3、看训练时的参数(有条件,就使用 TensorBoard

主要是TensorBoard还阔以看【网络结构~】

  1. Epoch :表示当前正在进行的训练轮数。每个 epoch 表示模型已经使用整个训练数据集进行了一次完整的训练。
  2. GPu mem :表示当前 GPU 的内存使用情况,以 GB 为单位。这个参数可以告诉你模型在训练期间所使用的 GPU 内存量。如果内存使用过高,可能需要调整模型或减少批量大小。
  3. box loss :表示当前训练轮次中物体检测( bounding box )的损失值。物体检测损失是通过比较模型预测的边界框位置与实际边界框位置之间的差异来计算的。
  4. cls loss :表示当前训练轮次中的分类损失值。分类损失是通过比较模型预测的类别标签与实际类别标签之间的差异来计算的。
  5. dfl loss :表示当前训练轮次中的关键点检测( landmark detection )的损失值。关键点检测损失是通过比较模型预测的关键点位置与实际关键点位置之间的差异来计算的。
  6. Instances :表示当前训练轮次中处理的实例数量。这个参数用于衡量训练过程中处理的图像或样本数量。
  7. Class :表示目标类别的名称。
  8. Images :表示测试集中包含该类别的图像数量。
  9. Instances :表示测试集中该类别的实例数量。
  10. Box(P) :表示该类别的目标检测精确率( Precision ),即正确预测的边界框数量与预测的边界框总数之间的比例。
  11. R :表示该类别的目标检测召回率( Recall ),即正确预测的边界框数量与实际边界框总数之间的比例。
  12. mAP50 :表示该类别的平均精确度( mean Average Precision )值,计算方式是在 IoU 阈值为 0.5 的条件下,对每个类别进行精确度的平均计算。
  13. mAP50-95 :表示该类别的平均精确度值,在 IoU 阈值从 0.5 0.95 变化时,对每个类别进行精确度的平均计算。

训练完成:

2.4、断续训练

用训练出来的last.pt继续训练

**就是在参数中加入:**resume=True
官网教程:火车 -Ultralytics YOLOv8 文档

model = YOLO('./last.pt')  # load a partially trained model

# Train the model

model.train(data='./data/data.yaml', epochs=500, imgsz=640, workers=0, name='car', batch=32, resume=True)

3、模型验证

Val -Ultralytics YOLOv8 Docs
在机器学习流程中,验证是一个关键步骤,让您能够评估训练模型的质量。

4、使用模型进行推理预测(视频、图像、视频流等)

预测 -Ultralytics YOLOv8 文档了解如何在各种任务中使用YOLOv8 预测模式。了解不同的推理源,如图像、视频和数据格式。https://docs.ultralytics.com/zh/modes/predict/#_4

YOLOv8 可以处理推理输入的不同类型,如下表所示。来源包括静态图像、视频流和各种数据格式。

5、模型转换(pt转为onnx等)

基准 -Ultralytics YOLOv8 文档了解如何剖析YOLOv8 在各种导出格式中的速度和准确性;深入了解 mAP50-95、准确性_top5 指标等。https://docs.ultralytics.com/zh/modes/benchmark/#_6

6、基准测试

7、评估训练结果

评估训练结果:

Yolov8目标识别------模型训练结果可视化图分析与评估训练结果_yolov8可视化-CSDN博客文章浏览阅读1.4k次,点赞22次,收藏41次。Yolov8在训练完成之后,会在run目录下把训练的过程一些参数与结果示意图保存下来,这里面包含是目标检测性能指标,如下图:表示正确预测的目标数量与总预测数量的比率。表示模型正确预测为正样本的样本数量占所有预测为正样本的样本数量的比例。表示模型正确预测为正样本的样本数量占所有实际正样本的样本数量的比例。综合考虑精确率和召回率,是精确率和召回率的调和平均数。衡量模型检测出的区域与实际目标区域的重叠程度。在目标检测中,AP通常指Precision-Recall曲线下的面积,用于综合评估模型的性能。_yolov8可视化https://blog.csdn.net/matt45m/article/details/135620472

笔记下载

https://wwm.lanzout.com/isyZD1p3puyj

密码:hoab

相关推荐
biter00886 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
车轮滚滚__17 分钟前
uniapp对接unipush 1.0 ios/android
笔记
Code哈哈笑1 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
机器懒得学习2 小时前
基于YOLOv5的智能水域监测系统:从目标检测到自动报告生成
人工智能·yolo·目标检测
QQ同步助手2 小时前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
流浪的小新2 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
A懿轩A3 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
云边有个稻草人3 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
南宫生11 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__11 小时前
Web APIs学习 (操作DOM BOM)
学习