YOLOv8官方教程:如何训练模型


在这里插入图片描述

一、简介

本文介绍YOLOv8如何在单GPU、多GPU和Apple设备上训练数据。

二、YOLOv8的优点

  • 效率:充分榨干硬件性能,无论是单GPU还是多GPU。源码可以好好学一学。
  • 多功能性:可以在 COCO、VOC 和 ImageNet数据集上训练模型,包括自定义数据集。
  • 用户友好:可以用命令行快速启动训练,也可以用几行python代码启动。
  • 超参数灵活性:各种可定制的超参数可微调模型性能。

train模式特点

以下是 YOLOv8 Train 模式的一些显着特点:

  • 自动下载数据集:首次使用时会自动下载 COCO、VOC 和 ImageNet 等标准数据集。
  • 多 GPU 支持:能够加快训练速度。
  • 超参数配置:通过 YAML 配置文件或 CLI 参数修改超参数的选项。
  • 可视化和监控:可视化训练指标和训练过程。
YOLOv8 数据集(例如 COCO、VOC、ImageNet 等)会在首次使用时自动下载,
即yolo train data=coco.yaml

三、训练

在 COCO128 数据集上,训练输入图像分辨率为 640X640, 训练 YOLOv8n 100 个epoch。有关训练参数的完整解释,请参阅下面的参数部分。

3.1 单 GPU 和 CPU 训练示例

有GPU代码自动使用GPU,没有就自动切换为CPU训练。python代码:
【重要的事情说三遍】:

  • yolov8n.yaml yolov8n.pt coco128.yaml自动下载
  • yolov8n.yaml yolov8n.pt coco128.yaml自动下载
  • yolov8n.yaml yolov8n.pt coco128.yaml自动下载
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)

或者在命令行执行(以下三条指令,选择执行一条就行):

# 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

3.2 多GPU训练

如果你有多个显卡,可以使用参数指定训练显卡。默认使用第0块显卡。

多GPU训练示例python代码:

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])

或者使用命令行

# 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

3.3 Apple M1 和 M2 MPS 训练

Apple自带处理器也可以用来加速训练。小数据集还差不多,数据集一大,卡得一匹。
python代码:

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')

或者使用下面命令行:

# 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

3.4 恢复中断的训练

下面是如何使用 Python 和通过命令行恢复中断的训练的示例:
python代码:

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)

或者在命令行执行:

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

通过设置resume=True,恢复训练。其中,train函数将将加载“path/to/last.pt模型”文件,模型文件中包含模型参数和上一次正常训练的各种超参数。如果resume设置为False,那就重新训练呗。还有就是,从last.pt文件中恢复训练,必须满足条件:last.pt至少已经训练了一个epoch。

四、其他参数

上文给了很多命令行参数,这里给出其他参数以及相关解释。(下表翻译看看就好)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、训练Log

在训练 YOLOv8 模型时,需要记录下训练过程中,模型的loss,各项性能指标等。Ultralytics 的 YOLO 提供对三种类型记录器的支持 - Comet、ClearML 和 TensorBoard。只需要安装这些库,训练过程总将自动调用。本文强力推荐tensorboard。

5.1 TensorBoard

TensorBoard本来是TensorFlow 的可视化工具。后来pytorch也集成了,用户还是非常多的。别看tensorflow做得跟shit一样,但是tensorboard做的还是很不错的。它可以可视化训练loss、各种验证指标、超参数等等。
执行下面明令:

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

bash窗口会打印例如:http://localhost:6006/ 这样的信息,复制到浏览器,打开后效果如下图:

在这里插入图片描述

5.2 Comet

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

使用commet:

# pip install comet_ml
import comet_ml
comet_ml.init()

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

5.3 ClearML

ClearML是一个开源平台,可自动跟踪实验并帮助高效共享资源。它旨在帮助团队更有效地管理、执行和重现他们的机器学习工作。

要使用 ClearML:

# pip install clearml
import clearml

clearml.browser_login()

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

  • 11
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
Yolov8是一种高效的目标检测算法,具有较高的准确率和实时性。在使用Yolov8进行目标检测时,我们通常需要使用自定义数据集进行模型训练。本教程将详细介绍如何使用自定义数据集来训练Yolov8模型。 首先,我们需要准备自定义数据集。自定义数据集应包含目标类别的图像及其对应的标注文件。标注文件通常采用Pascal VOC或COCO数据集的格式,包含目标的坐标、类别等信息。 接下来,我们需要将数据集划分为训练集和验证集。通常,我们将数据集的大部分用于训练,一小部分用于验证模型的性能。训练集和验证集的划分比例可以根据具体情况进行调整。 然后,我们需要下载Yolov8训练代码和预训练权重,并进行相应的配置。可以通过GitHub等渠道获取Yolov8的代码和权重文件,并根据需要进行配置,如设置类别数量、学习率等超参数。 接着,我们需要将自定义数据集转换为Yolov8所需的格式。Yolov8接受Darknet格式的数据集,我们可以使用相应的脚本将自定义数据集转换为Darknet格式,并生成对应的配置文件。 在数据集准备就绪后,我们可以使用Yolov8训练脚本开始训练模型。在训练过程中,我们可以调整学习率、批大小等参数来优化模型的性能。此外,可以使用预训练权重来加速收敛和提高模型的准确率。 训练完成后,我们可以使用训练得到的模型进行目标检测。可以使用Yolov8提供的脚本加载模型并进行目标检测,同时可以进行后处理操作,如非极大值抑制来去除冗余的检测结果。 总之,本教程详细介绍了如何使用自定义数据集训练Yolov8模型,包括数据集准备、模型配置、训练和目标检测等步骤。通过按照教程进行操作,你可以轻松地训练出自己的Yolov8模型,并应用于实际的目标检测任务中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄家驹beyond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值