文章目录
- 一、简介
- 二、YOLOv8的优点
- train模式特色
- 三、训练
- 3.1 单 GPU 和 CPU 训练示例
- 3.2 多GPU训练
- 3.3 Apple M1 和 M2 MPS 训练
- 3.4 恢复中断的训练
- 四、其他参数
- 五、训练Log
- 5.1 Comet
- 5.2 ClearML
- 5.3 TensorBoard
一、简介
本文介绍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,则train函数将开始新的训练会话。
请记住,默认情况下,检查点会在每个 epoch 结束时保存,或者使用参数以固定间隔保存save_period,因此您必须完成至少 1 个 epoch 才能恢复训练运行。
四、其他参数
YOLO 模型的训练设置是指用于在数据集上训练模型的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。一些常见的 YOLO 训练设置包括批量大小、学习率、动量和权重衰减。其他可能影响训练过程的因素包括优化器的选择、损失函数的选择以及训练数据集的大小和组成。仔细调整和试验这些设置以获得给定任务的最佳性能非常重要。
(下表翻译看看就好)
五、训练Log
在训练 YOLOv8 模型时,需要记录下训练过程中,模型的loss,各项性能指标等。Ultralytics 的 YOLO 提供对三种类型记录器的支持 - Comet、ClearML 和 TensorBoard。只需要安装这些库,训练过程总将自动调用。我推荐tensorboard。
5.1 Comet
Comet是一个允许数据科学家和开发人员跟踪、比较、解释和优化实验和模型的平台。它提供实时指标、代码差异和超参数跟踪等功能。
使用彗星:
# pip install comet_ml
import comet_ml
comet_ml.init()
请记住在其网站上登录您的 Comet 帐户并获取您的 API 密钥。您需要将其添加到环境变量或脚本中以记录实验。
5.2 ClearML
ClearML是一个开源平台,可自动跟踪实验并帮助高效共享资源。它旨在帮助团队更有效地管理、执行和重现他们的机器学习工作。
要使用 ClearML:
# pip install clearml
import clearml
clearml.browser_login()
运行此脚本后,您需要在浏览器上登录您的 ClearML 帐户并验证您的会话。
5.3 TensorBoard
TensorBoard是 TensorFlow 的可视化工具包。它允许您可视化 TensorFlow 图、绘制有关图执行情况的定量指标,并显示其他数据(例如通过图的图像)。Pytorch也可以用它进行可视化。
要在Google Colab中使用 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 并将其定向到保存训练日志的目录。例如:下图是我实际训练后,使用tensorboard在浏览器中可视化效果: