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 支持的各种计算机视觉数据集,以进行物体检测、分割、姿态估计、图像分类和多物体跟踪。icon-default.png?t=N7T8https://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.icon-default.png?t=N7T8https://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检测头原理部分icon-default.png?t=N7T8https://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 训练示例icon-default.png?t=N7T8https://docs.ultralytics.com/zh/modes/train/#m1m2-mps

多GPU训练

苹果M1和M2 MPS训练

恢复中断的训练

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

UltralyticsYOLO提供对三种类型记录器的支持 CometClearMLTensorBoard

2.1、租服务器训练

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

  1. 训练网址AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLAutoDL为您提供专业的GPU租用服务,秒级计费、稳定好用,高规格机房,7x24小时服务。更有算法复现社区,一键复现算法。icon-default.png?t=N7T8https://www.autodl.com (找到适合的Torch版本,自带Conda)现在需要最新的yolov8需要 torch>=2.0.0 for deterministic training.

  1. 购买服务器(yolo训练一般显卡4G就够了,不过那里面一般都是12G以上)
  2. 上传训练文件(yolo固定版本库、data数据集、原始模型、train.py

  1. 执行python xxx.py (缺少什么库直接下载就行,缺不了什么,一般就是cv,np,pandas、scipy、seaborn)
  2. 如果缺少cvnp,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(训练运行的设备): 指定模型训练所使用的设备,如GPUCPU

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

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

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

savesave_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 预测模式。了解不同的推理源,如图像、视频和数据格式。icon-default.png?t=N7T8https://docs.ultralytics.com/zh/modes/predict/#_4

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

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

基准 -Ultralytics YOLOv8 文档了解如何剖析YOLOv8 在各种导出格式中的速度和准确性;深入了解 mAP50-95、准确性_top5 指标等。icon-default.png?t=N7T8https://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

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

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

相关文章

three中界面交互gui.js库的使用

gui.js库(可视化改变三维场景) dat.gui.js说白了就是一个前端js库,对HTML、CSS和JavaScript进行了封装,学习开发的时候,借助dat.gui.js可以快速创建控制三维场景的UI交互界面,你打开课件中案例源码体验一下就能感受到。 学习dat…

http协议基础与Apache的简单介绍

一、相关介绍: 互联网:是网络的网络,是所有类型网络的母集因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上,大家把连接在因特网上的计算机都成为主机。万维网:WWW(world…

转前端了!!

大家好,我是冰河~~ 没错,为了更好的设计和开发分布式IM即时通讯系统,也为了让大家能够直观的体验到分布式IM即时通讯系统的功能,冰河开始转战前端了。也就是说,整个项目从需求立项到产品设计,从架构设计到…

跟着cherno手搓游戏引擎【25】封装2DRenderer,封装shader传参,自定义Texture

封装2DRenderer&#xff1a; Renderer.h: #include"ytpch.h" #include"Renderer.h" #include <Platform/OpenGL/OpenGLShader.h> #include"Renderer2D.h" namespace YOTO {Renderer::SceneData* Renderer::m_SceneData new Renderer::S…

【计算机网络】应用层自定义协议

自定义协议 一、为什么需要自定义协议&#xff1f;二、网络版计算器1. 基本要求2. 序列化和反序列化3. 代码实现&#xff08;1&#xff09;封装 socket&#xff08;2&#xff09;定制协议和序列化反序列化&#xff08;3&#xff09;客户端&#xff08;4&#xff09;计算器服务端…

【星海随笔】存储硬盘基础信息科普

市场上的磁盘分类有&#xff1a;IDE磁盘&#xff08;多用于PC机&#xff09;、SATA磁盘、SAS磁盘、SSD磁盘等 IDE 易于使用与价格低廉&#xff0c;问世后成为最为普及的磁盘接口。 速度慢、速度慢、速度慢。 ATA-7是ATA接口的最后一个版本&#xff0c;也叫ATA133。ATA133接口支…

MyBatis使⽤PageHelper(MySQL)

MyBatis使⽤PageHelper&#xff08;MySQL&#xff09; 一、 limit分⻚二、PageHelper插件第⼀步&#xff1a;引⼊依赖第⼆步&#xff1a;在mybatis-config.xml⽂件中配置插件第三步&#xff1a;编写Java代码第四步&#xff1a;格式化结果查看 三、SpringBoot3 集成 PageHelper …

【人脸朝向识别与分类预测】基于PNN神经网络

课题名称&#xff1a;基于PNN神经网络的人脸朝向识别分类 版本日期&#xff1a;2024-02-20 运行方式&#xff1a;直接运行PNN0503.m文件 代码获取方式&#xff1a;私信博主或 QQ:491052175 模型描述&#xff1a; 采集到一组人脸朝向不同角度时的图像&#xff0c;图像来自不…

CAS5.3使用JPA实现动态注册服务

cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章 cas-client基于CAS协议客户端搭建-CSDN博客 cas-server5.3自定义密…

CleanMyMac4苹果Mac电脑全面、高效的系统清理工具

CleanMyMac 4 for Mac是一款专为Mac用户设计的系统清理和优化工具。它具备多种功能&#xff0c;旨在帮助用户轻松管理和释放Mac上的磁盘空间&#xff0c;同时提升系统性能。 系统垃圾清理&#xff1a;CleanMyMac 4能够深入扫描Mac的每一个角落&#xff0c;智能识别并清除不需要…

Linux freezer机制

一、概述 系统进入suspended或进程被加入到cgroup冻结或解冻分组&#xff0c;用户进程和部分内核线程被冻结后&#xff0c;会剥夺执行cpu资源&#xff0c;解冻或唤醒后恢复正常。 二、进程冻结与解冻原理 2.1 进程冻结 用户进程和内核线程冻结的基本流程&#xff1a; 内核态…

JSP实现数据传递与保存(二)

一、session对象 session机制是一种服务器端的机制&#xff0c;在服务器端保存信息用于存储与用户相关的会话信息 1.1 session与窗口的关系 每个session对象都与一个浏览器窗口对应&#xff0c;重新开启一个浏览器窗口&#xff0c;可以重新创建一个session对象&#xff08;不…

IO进程线程复习:进程线程

1.进程的创建 #include<myhead.h>int main(int argc, const char *argv[]) {printf("hello world\n");//父进程执行的内容int num520;//在父进程中定义的变量pid_t pidfork();//创建子进程if(pid>0){while(1){printf("我是父进程&#xff0c;num%d\n&…

input输入框过滤非金额内容保留一个小数点和2位小数

这篇是输入框过滤非金额内容保留一个小数点和2位小数&#xff0c;金额的其他格式化可以看这篇文章常用的金额数字的格式化方法 js方法直接使用 该方式可以直接使用过滤内容&#xff0c;也可以到onInput或onblur等地方过滤&#xff0c;自行使用 /*** 非金额字符格式化处理* p…

有趣的CSS - 弹跳的圆

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用css写一个好玩的不停弹跳变形的圆。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

解读2024生物发酵展览会-蓝帕控制阀门

参展企业介绍 感谢你正在或即将使用LAPAR系列产品&#xff0c;感谢你关注LAPAR&#xff01; LAPAR&#xff0c;流体控制领域的国际品牌之一&#xff0c;总部位于意大利米兰&#xff0c;成立多年以来&#xff0c;LAPAR凭借其完善的网络体系、优秀的产品质量、一体式的客户解决…

蓝桥杯-成绩分析

许久不敲代码&#xff0c;库名也忘了&#xff0c;精度设置还有求最大最小值都是常规题了。 #include <iostream> #include <iomanip> using namespace std; int main() { //一种不用开数组的方法 int n; cin>>n; int top0; int low100;//确定最大…

Uva 101: 木块问题(The Blocks Problem)

看着算法书看到了这一题&#xff0c;想着不能只看不做&#xff0c;就想着做了一下 算法书上的描述太抽象了&#xff0c;就网上找了其他的描述 当然去看英文描述是最准确的&#xff0c;算法书上说是哪一个oj网来着&#xff1f;我给忘了 STL还是很好用的 代码如下&#xff1a; …

【Vue3】学习watch监视:深入了解Vue3响应式系统的核心功能(下)

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

【Android12】Monkey压力测试源码执行流程分析

Monkey压力测试源码执行流程分析 Monkey是Android提供的用于应用程序自动化测试、压力测试的测试工具。 其源码路径(Android12)位于 /development/cmds/monkey/部署形式为Java Binary # development/cmds/monkey/Android.bp // Copyright 2008 The Android Open Source Proj…