当前位置: 首页 > news >正文

yolov8训练

介绍

        训练深度学习模型包括向其提供数据并调整其参数,以便其能够做出准确的预测。Ultralytics YOLOv8中的训练模式旨在充分利用现代硬件功能,对目标检测模型进行有效和高效的训练。本指南旨在涵盖使用YOLOv8强大的一组功能开始训练自己的模型所需的所有细节。

为什么选择Ultralytics YOLO进行训练?

以下是选择YOLOv8的Train模式的一些令人信服的理由:

效率:充分利用您的硬件,无论您是使用单个GPU设置还是跨多个GPU扩展。

多功能性:除了COCO、VOC和ImageNet等现成的数据集外,还可以在自定义数据集上进行培训。

用户友好型:简单而强大的CLI和Python界面,提供直观的培训体验。

超参数灵活性:广泛的可定制超参数,可微调模型性能。

训练模式的主要特点

以下是YOLOv8列车模式的一些显著特点:

自动数据集下载:标准数据集,如COCO、VOC和ImageNet,在首次使用时自动下载。

多GPU支持:跨多个GPU无缝扩展您的培训工作,以加快过程。

超参数配置:通过YAML配置文件或CLI参数修改超参数的选项。

可视化和监控:实时跟踪训练指标,可视化学习过程,以获得更好的见解。

提示

YOLOv8数据集,如COCO、VOC、ImageNet和许多其他数据集,在首次使用时自动下载,即yolo train data=COCO.yaml

用法示例

        在COCO128数据集上以640尺寸的图像大小训练YOLOv8n 100个周期。可以使用设备参数指定训练设备。如果没有传递任何参数并且GPU加速可用,将使用GPU设备=0,否则将使用设备=cpu。有关训练参数的完整列表,请参阅下面的“参数”部分。

单GPU和CPU训练示例

设备是自动确定的。如果GPU可用,则将使用它,否则将在CPU上开始训练。

训练代码示例如下:

from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.yaml')  # build a new model from YAML
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # build from YAML and transfer weights# Train the model
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)

使用命令训练(CLI)示例如下:

# Build a new model from YAML and start training from scratch
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640# Start training from a pretrained *.pt model
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

多GPU训练

        通过在多个GPU之间分配训练负载,多GPU训练允许更有效地利用可用硬件资源。此功能可通过Python API和命令行界面使用。要启用多GPU训练,请指定要使用的GPU设备ID。

python代码训练demo:

from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)# Train the model with 2 GPUs
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1])

命令训练(CLI)示例如下:

# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1

Apple M1和M2 MPS培训

        随着对集成在Ultralytics YOLO型号中的Apple M1和M2芯片的支持,现在可以在使用强大的金属性能着色器(MPS)框架的设备上训练您的型号。MPS提供了一种在苹果定制硅上执行计算和图像处理任务的高性能方式。要在Apple M1和M2芯片上进行培训,在启动培训过程时应将“mps”指定为您的设备。以下是如何在Python中通过命令行执行此操作的示例:

python代码训练demo:

from ultralytics import YOLO# Load a model
model = YOLO('yolov8n.pt')  # load a pretrained model (recommended for training)# Train the model with 2 GPUs
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device='mps')

命令训练(CLI)示例如下:

# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps

在利用M1/M2芯片的计算能力的同时,这使得能够更有效地处理训练任务。有关更详细的指导和高级配置选项,请参阅PyTorch MPS文档。

恢复中断的培训

在使用深度学习模型时,从以前保存的状态恢复训练是一个关键功能。这在各种情况下都很有用,比如当训练过程意外中断时,或者当您希望用新数据或更多时期继续训练模型时。

恢复训练时,Ultralytics YOLO从上次保存的模型加载权重,还恢复优化器状态、学习率调度器和历元数。这使您能够从中断的地方无缝地继续培训过程。

通过在调用train方法时将resume参数设置为True,并指定包含部分训练的模型权重的.pt文件的路径,可以轻松地在Ultralytics YOLO中恢复训练。

以下是如何使用Python并通过命令行恢复中断的培训的示例:

python代码训练demo:

from ultralytics import YOLO# Load a model
model = YOLO('path/to/last.pt')  # load a partially trained model# Resume training
results = model.train(resume=True)

命令训练(CLI)示例如下: 

# Resume an interrupted training
yolo train resume model=path/to/last.pt

通过设置resume=True,train函数将使用存储在“path/to/last.pt”文件中的状态,从停止的位置继续训练。如果省略了简历参数或将其设置为False,则培训功能将开始新的培训课程。

请记住,默认情况下,检查点保存在每个epoch的末尾,或者使用save_period参数以固定的间隔保存,因此您必须至少完成1个epoch才能恢复训练运行。

参数

参数详细讲解部分请见我的另一篇博客,链接是:

日志记录

在训练YOLOv8模型时,您可能会发现随着时间的推移跟踪模型的性能是很有价值的。这就是日志记录发挥作用的地方。Ultralytics的YOLO支持三种类型的记录器——Comet、ClearML和TensorBoard。

要使用记录器,请从上面代码段的下拉菜单中选择它并运行它。所选的记录器将被安装并初始化。

Comet

Comet是一个允许数据科学家和开发人员跟踪、比较、解释和优化实验和模型的平台。它提供了实时度量、代码差异和超参数跟踪等功能。

要使用Comet:

# pip install comet_ml
import comet_mlcomet_ml.init()

请记住在他们的网站上登录您的Comet帐户并获取您的API密钥。您需要将其添加到环境变量或脚本中,以记录您的实验。

ClearML

ClearML是一个开源平台,可以自动跟踪实验,并有助于有效共享资源。它旨在帮助团队更有效地管理、执行和复制他们的ML工作。要使用ClearML:

# pip install clearml
import clearmlclearml.browser_login()

运行此脚本后,您需要在浏览器上登录ClearML帐户并验证会话。

TensorBoard

TensorBoard是TensorFlow的可视化工具包。它允许您可视化TensorFlow图,绘制有关图执行的定量指标,并显示通过它的其他数据,如图像。

在谷歌可乐中使用TensorBoard:

load_ext tensorboard
tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

要在本地使用TensorBoard,请运行以下命令并在http://localhost:6006/.

tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

这将加载TensorBoard,并将其引导到保存培训日志的目录中。

设置好记录器后,您可以继续进行模型培训。所有培训指标都将自动记录在您选择的平台中,您可以访问这些日志来监控您的模型在一段时间内的性能,比较不同的模型,并确定需要改进的领域。

 

相关文章:

yolov8训练

介绍 训练深度学习模型包括向其提供数据并调整其参数,以便其能够做出准确的预测。Ultralytics YOLOv8中的训练模式旨在充分利用现代硬件功能,对目标检测模型进行有效和高效的训练。本指南旨在涵盖使用YOLOv8强大的一组功能开始训练自己的模型所需的所有细…...

抖音短视频账号矩阵系统、短视频矩阵源码+无人直播源码开发可打包

抖音短视频账号矩阵系统、短视频矩阵源码无人直播源码开发可打包 矩阵系统源码主要有三种框架:Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架,提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框…...

NI和EttusResearchUSRP设备之间的区别

NI和EttusResearchUSRP设备之间的区别 概述 USRP(通用软件无线电外设)设备是业界领先的商软件定义无线电(SDR)。全球数以千计的工程师使用USRPSDR来快速设计、原型设计和部署无线系统。它们以两个不同的品牌进行营销和销售&…...

WPF UI样式介绍

WPF(Windows Presentation Foundation)是微软的一个用于创建桌面客户端应用程序的UI框架。WPF使用XAML(可扩展应用程序标记语言)作为其界面设计语言,这使得开发者能够以声明性方式定义UI元素和布局。 在WPF中&#xf…...

【开源】基于Vue.js的校园失物招领管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、研究内容2.1 招领管理模块2.2 寻物管理模块2.3 系统公告模块2.4 感谢留言模块 三、界面展示3.1 登录注册3.2 招领模块3.3 寻物模块3.4 公告模块3.5 感谢留言模块3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 基于Vue…...

计算机视觉中目标检测的数据预处理

本文涵盖了在解决计算机视觉中的目标检测问题时,对图像数据执行的预处理步骤。 首先,让我们从计算机视觉中为目标检测选择正确的数据开始。在选择计算机视觉中的目标检测最佳图像时,您需要选择那些在训练强大且准确的模型方面提供最大价值的图…...

es 查询多个索引的文档

es 查询多个索引 第一种做法: 多个索引,用逗号隔开 GET /book_2020_09,book_2021_09/_search第二种做法: 可以用 * 模糊匹配。。比如 book* ,表示查询所有 book开头的 索引。 GET /book*/_search GET /*book*/_search第二种做…...

用java把服务器某个目录日志实时打印出来

1.引入第三方包 <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version> </dependency>2.代码如下 import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import …...

金融信贷行业如何准确——大数据精准定位获客渠道

通过大数据精准获客&#xff0c;不仅可以及时拦截网址浏览量&#xff0c;还可以访问移动贷款应用软件的高频活跃客户和新注册客户。此外&#xff0c;通过大数据进行准确的客户获取&#xff0c;还可以获得电话座机号码的实时通信记录&#xff0c;捕捉小程序应用程序和关键词搜索…...

LeetCode 面试题 16.21. 交换和

文章目录 一、题目二、C# 题解 一、题目 给定两个整数数组&#xff0c;请交换一对数值&#xff08;每个数组中取一个数值&#xff09;&#xff0c;使得两个数组所有元素的和相等。 返回一个数组&#xff0c;第一个元素是第一个数组中要交换的元素&#xff0c;第二个元素是第二…...

未来之路:大模型技术在自动驾驶的应用与影响

本文深入分析了大模型技术在自动驾驶领域的应用和影响&#xff0c;万字长文&#xff0c;慢慢观看~ 文中首先概述了大模型技术的发展历程&#xff0c;自动驾驶模型的迭代路径&#xff0c;以及大模型在自动驾驶行业中的作用。接着&#xff0c;详细介绍了大模型的基本定义、基础功…...

Skywalking流程分析_5(字节码增强)

SkyWalkingAgent.Transformer#transform 此方法就是进行字节码增强的过程 private static class Transformer implements AgentBuilder.Transformer {private PluginFinder pluginFinder;Transformer(PluginFinder pluginFinder) {this.pluginFinder pluginFinder;}Override…...

Windows conan环境搭建

Windows conan环境搭建 1 安装conan1.1 安装依赖软件1.1.1 python安装1.1.2 git bash安装1.1.3 安装Visual Studio Community 20191.1.3.1 选择安装的组件1.1.3.2 选择要支持的工具以及对应的SDK 1.1.4 vscode安装 1.3 验证conan功能1.4 查看conancenter是否包含poco包1.5 查看…...

如何使用Cpolar+Tipask,在ubuntu系统上搭建一个私人问答网站

文章目录 前言2.Tipask网站搭建2.1 Tipask网站下载和安装2.2 Tipask网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 4. 公网访问测试5. 结语 前…...

怎么在uni-app中使用Vuex(第一篇)

Vuex简介 vuex的官方网址如下 https://vuex.vuejs.org/zh/ 阅读官网请带着几个问题去阅读&#xff1a; vuex用于什么场景&#xff1f;vuex能给我们带来什么好处&#xff1f;我们为什么要用vuex?vuex如何实现状态集中管理&#xff1f; Vuex用于哪些场景&#xff1f; 组件之…...

【MySQL】库的相关操作 + 库的备份和还原

库的操作 前言正式开始创建数据库删除数据库编码集查看系统默认字符集以及校验规则字符集校验规则 所有支持的字符集和校验规则所有字符集所有校验规则 指明字符集和校验规则创建数据库相同的字符集用不同的校验规则读取会出现什么情况 alter修改数据库show create databasealt…...

网络安全基础之php开发文件上传的实现

前言 php是网络安全学习里必不可少的一环&#xff0c;简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中&#xff0c;文件的功能是必不可少&#xff0c;比如我们在论坛的头像想更改时就涉及到文件的上传等等文件功能。但也会出…...

[文件读取]cuberite 文件读取 (CVE-2019-15516)

1.1漏洞描述 漏洞编号CVE-2019-15516漏洞类型文件上传漏洞等级⭐⭐⭐漏洞环境VULFOCUS攻击方式 描述: Cuberite是一款使用C语言编写的、轻量级、可扩展的多人游戏服务器。 Cuberite 2019-06-11之前版本中存在路径遍历漏洞。该漏洞源于网络系统或产品未能正确地过滤资源或文件路…...

SpringBoot 自定义参数校验(5)

文章目录 前言方式一 @Pattern方式二 自定义参数校验Controller层请求示例前言 本文基于SpringBoot 3.1.2,使用自定义参数规则来处理参数校验。 方式一 @Pattern 使用@Pattern,自定义正则表达式,以下是一个校验IP地址的示例: import jakarta.validation.constraints.Not…...

Win Docker Desktop + WSL2 部署PyTorch-CUDA服务至k8s算力集群

Win Docker Desktop WSL2 部署PyTorch-CUDA服务至k8s算力集群 Win Docker Desktop WSL2 安装安装WSL-Ubuntu拉取镜像并测试挂载数据并开放端口导出镜像或导入镜像在k8s集群部署 Win Docker Desktop WSL2 安装 首先根据你的操作系统版本 安装WSL &#xff0c;记得切换WSL2&a…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...