yolov8训练

news/2024/7/11 0:03:42 标签: YOLO, 训练, 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_ml

comet_ml.init()

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

ClearML

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

# pip install clearml
import clearml

clearml.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,并将其引导到保存培训日志的目录中。

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

 


http://www.niftyadmin.cn/n/5178732.html

相关文章

什么是稳定扩散中的采样步骤?

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D数字孪生场景编辑器 本指南将深入探讨采样步骤的基础知识、它们对图像生成的影响,以及优化这些步骤以获得最佳结果的技巧。 了解稳定扩散中…

promise多请求并发

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title> </head><body><script>let p1 new Promise((resolve, reject) > {resolve(成功了)})let p2 new Promise((resolve, reject) > …

11月创作挑战赛开启!新奖品、新标准~

11月创作挑战赛开始咯&#xff0c;文章、规则有新的标准&#xff0c;各位请查收哦&#xff0c;新增了很多礼品&#xff0c;一起开始新的挑战吧&#xff01;

青少年编程学习 等级考试 信奥赛NOI/蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代&#xff0c;编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加&#xff0c;青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程&#xff0c;提升他们的技能和素质&#xff0c;博主结合自身多年从事青…

YOLOv8-Seg改进:卷积变体系列篇 | SCConv(空间和通道重建卷积) | CVPR2023

🚀🚀🚀本文改进:SCConv(空间和通道重建卷积),引入到YOLOv8,与C2f结合实现二次创新; 🚀🚀🚀SCConv亲测在多个数据集能够实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把…

【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer

文章目录 一、前言&#x1f4e2;二、关于云上探索实验室&#x1f579;️三、领学员需要做什么&#xff1f;✴️四、领学员能获得什么&#xff1f;&#x1f523;五、学课通道入口&#x1f447;1️⃣CSDN平台2️⃣网易云课堂3️⃣Skill Builder 平台 六、活动详情链接 一、前言&a…

问题 F: Air Raid(最小路径覆盖(二分图))匈牙利算法,通俗讲解

匈牙利算法&#xff0c;通俗讲解 例如下图: 首先将该图转化为二分图 &#xff08;此处作者以起点为左&#xff0c;终点为右&#xff09; 初始化&#xff1a;将5个路口看作5个独立集合 核心思想&#xff1a; 而每次的连接都是向左端点对应的集合加入一个右端点 例如&…

Zookeeper篇---第九篇

系列文章目录 文章目录 系列文章目录一、描述一下 ZooKeeper 的 session 管理的思想?二、ZooKeeper 负载均衡和 Nginx 负载均衡有什么区别?三、说说ZooKeeper 的序列化一、描述一下 ZooKeeper 的 session 管理的思想? 分桶策略: 简单地说,就是不同的会话过期可能都有时间…