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 numpypip install opencv-pythonpip install pandaspip install scipypip 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 modelmodel.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

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

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

相关文章

《最新出炉》系列初窥篇-Python+Playwright自动化测试-27-处理单选和多选按钮-番外篇

1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何使用playwright来处理单选按钮和多选按钮进行自动化测试,想必大家都已经掌握的八九不离十了吧。这一篇其实也很简单&#xff1a…

JavaSE——面向对象基础(4/4)-成员变量和局部变量的区别、面向对象综合案例(电影信息系统)

目录 补充:成员变量和局部变量的区别 面向对象综合案例 设计一个电影类 IDEA快捷操作 设计一个电影操作类 准备电影数据 业务处理 运行结果 补充:成员变量和局部变量的区别 区别成员变量(对象的属性)局部变量类中位置不同…

Project_Euler-07 题解

Project_Euler-07 题解 题目 思路 一个线性筛解决问题&#xff0c;当然也可以用埃式筛或者标准的暴力破解&#xff0c;这里选用最优秀的方式&#xff0c;顺便复习一下线性筛的内容&#xff1a; #include<stdio.h> #include<stdlib.h> #include<math.h> #in…

spring源码概念解析-spring生命周期

1.Spring生命周期 BeanFactory的⽣命周期 ApplicationContext的⽣命周期 初始化的过程都是⽐较⻓&#xff0c;我们可以分类来对其进⾏解析&#xff1a; Bean⾃身的⽅法&#xff1a;如调⽤ Bean 构造函数实例化 Bean&#xff0c;调⽤ Setter 设置 Bean 的属性值以及通 过的 in…

matlab新能源汽车三自由度操纵稳定性分析及优化

1、内容简介 略 可以交流、咨询、答疑 55-新能源汽车三自由度操纵稳定性分析及优化 2、内容说明 略 摘 要 电动化是节能减排、寻求替代能源的最佳途径&#xff0c;已成为行业共识&#xff0c;论文基于江西科技学院桑塔纳轿车油改气项目&#xff0c;在拆除发动机、变速…

Unity(第六部)向量的理解和算法

标量:只有大小的量。185 888 999 &#xff08;类似坐标&#xff09; 向量:既有大小&#xff0c;也有方向。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米&#xff09; 向量的模:向量的大小。&#xff08;类似以个体为主体的方向&#xff0c;前方一百米、只取一百米…

【Crypto | CTF】BugKu 简单的RSA

天命&#xff1a;这题也不算简单了&#xff0c;要反编译&#xff0c;要灵活一点 首先收到pyc文件&#xff0c;拿去反编译出来&#xff0c;可以用在线反编译&#xff0c;也可以用工具反编译 在线&#xff1a;python反编译 - 在线工具 工具&#xff1a;https://download.csdn.n…

基于Java的传统工艺品销售系统的设计与实现

网上购物尚未流行前需要购买传统工艺品的人们都是到遍布于大街小巷的商场商店中进行挑选购买&#xff0c;除非抱有非常明确的目标&#xff0c;否则是很难在短时间内挑选购买到所需传统工艺品的。网上购物在国内的兴起则彻底颠覆了传统的线下购物模式&#xff0c;线下实体商场也…

Git命令操作

什么是Git&#xff1f; Git是⼀个免费的&#xff0c;开源的分布式版本控制软件系统 git区域 存储区域&#xff1a;Git软件⽤于存储资源得区域。⼀般指得就是.git⽂件夹 ⼯作区域&#xff1a;Git软件对外提供资源得区域&#xff0c;此区域可⼈⼯对资源进⾏处理。 暂存区&am…

中海油、中石化、中石油校招历年真题和题库

中海油、中石化、中石油是中国领先的石油和天然气公司&#xff0c;拥有雄厚的实力和丰富的资源&#xff0c;是许多求职者梦寐以求的就业机会。为了帮助应聘者更好地备战这三家公司的校园招聘&#xff0c;我特别整理了三套精心准备的校招试题资料&#xff0c;涵盖了各个领域的知…

【计算机网络】1.4 接入网和物理媒体

1.4 接入网和物理媒体 问题&#xff1a;怎样将端系统和边缘路由器连接&#xff1f; 答&#xff1a;有线方式&#xff08;住宅接入网络、单位接入网络等&#xff09;或无线方式&#xff08;无线接入网络&#xff09;。 有线接入方式 光纤同轴混合网是基于已有的有线电视网开发的…

五种多目标优化算法(MOHHO、MOCS、MOFA、NSWOA、MOAHA)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…

基于相位的运动放大:如何检测和放大难以察觉的运动(02/2)

目录 一、说明二、算法三、准备处理四、高斯核五、带通滤波器六、复杂的可操纵金字塔七、最终预处理步骤八、执行处理九、金字塔的倒塌十、可视化结果十一、结论 一、说明 日常物体会产生人眼无法察觉的微妙运动。在视频中&#xff0c;这些运动的幅度小于一个像素&#xff0c;…

matplotlib坐标投影

文章目录 三维坐标极坐标地理坐标 matplotlib教程&#xff1a; 初步&#x1f4c8; 子图绘制 三维坐标 【plt】可以将二维图形嵌入到三维坐标系中&#xff0c;方法也很简单&#xff0c;只需用创建一个子坐标框架&#xff0c;并指定其投影方式为3d&#xff0c;并通过zdir参数指…

Python 鼠标模拟

鼠标模拟即&#xff1a;通过python 进行模拟鼠标操作 引入类库 示例如下&#xff1a; import win32api import win32con import time 设置鼠标位置 设置鼠标位置为窗口中的回收站。 示例如下&#xff1a; # 设置鼠标的位置 win32api.SetCursorPos([30, 40]) 双击图标 设置…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

Linux学习之vi/vim详细介绍

目录 ​编辑 1. 什么是 vim&#xff1f; 2. vi/vim 的使用 2.1 命令模式 2.2 输入模式 2.3 底线命令模式 3. vi/vim 使用实例 3.1 使用 vi/vim 进入一般模式 3.2 按下 i 进入输入模式(也称为编辑模式)&#xff0c;开始编辑文字 3.3 按下 ESC 按钮回到一般模式…

linux-并发通信

一.linux-tcp通信框架 1.基础框架 1.1 tcp 服务器框架 1.套接字 #include <sys/socket.h> int socket(int domain, int type, int protocol);
 返回的文件描述符可以指向当前的socket&#xff0c;后续通过对文件描述符的访问就可以配置这个socket 成功时返回文件…

纯国产轻量化数字孪生:智慧城市、智慧工厂、智慧校园、智慧社区。。。

AMRT 3D数字孪生引擎介绍 AMRT3D引擎是一款融合了眸瑞科技的AMRT格式与轻量化处理技术为基础&#xff0c;以降本增效为目标&#xff0c;支持多端发布的一站式纯国产自研的CS架构项目开发引擎。 引擎包括场景搭建、UI拼搭、零代码交互事件、光影特效组件、GIS/BIM组件、实时数据…

linux系统git常规操作

Git命令常规操作 常用命令说明常用操作示意图文件的状态变化周期 添加文件跟踪文件会添加到.git的隐藏目录由工作区提交到本地仓库查看git的状态提交后的git目录状态 删除文件重命名暂存区数据查看历史记录还原历史数据还原未来数据标签使用对比数据 常用命令说明 命令命令说明…