敬请关注 YOLO Vision 2025!
2025年9月25日
英国夏令时 10:00 - 18:00
混合活动
Yolo Vision 2024

如何将 Ultralytics YOLOv5 与 Comet 结合使用

Ultralytics 团队

5 分钟阅读

2022年10月11日

了解 Ultralytics 如何与 Comet 合作优化 Ultralytics YOLOv5 模型:实现实时跟踪、简化协作并增强可重复性。

Ultralytics 在商业上与其他初创公司合作,以帮助我们资助我们出色的开源工具(如 YOLOv5)的研发,以保持它们对所有人免费。本文可能包含指向这些合作伙伴的附属链接。

我们最新的合作伙伴 Comet 构建了帮助数据科学家、工程师和团队领导者加速和优化机器学习与深度学习模型的工具。

Comet 是一个强大的工具,可以跟踪您的模型、数据集和指标。它甚至会记录您的系统和环境变量,以确保每次运行的可重复性和顺利调试。它就像拥有一个虚拟助手,神奇地知道要保留哪些笔记。实时跟踪和可视化模型指标,保存您的超参数、数据集和模型检查点,并通过 Comet 自定义面板 可视化您的模型预测!

此外,Comet 确保您永远不会丢失您的工作进度,并使共享结果和跨各种规模的团队进行协作变得容易!

YOLOv5 是您计算机视觉之旅的绝佳起点。为了提高模型的性能并使其达到可用于生产的水平,您需要将结果记录在实验跟踪工具中,例如 Comet

Comet 和 YOLOv5 的集成提供了 3 个主要功能

  • 自动日志记录和自定义日志记录功能
  • 将数据集和模型另存为工件,以便进行调试和重现
  • 使用 Comet 的自定义面板组织您的视图


本指南将介绍如何将 YOLOv5 与 Comet 结合使用。

那么,准备好实时追踪您的实验了吗?让我们开始吧!

快速入门

1. 安装 Comet

Pip install comet_ml

2. 配置 Comet 凭据

有两种方法可以使用 YOLOv5 配置 Comet。

您可以通过环境变量设置您的凭据,或者在您的工作目录中创建一个 .comet.config 文件并在其中设置您的凭据。


环境变量

export COMET_API_KEY=export COMET_PROJECT_NAME= # 默认为 'yolov5'


Comet 配置文件

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3. 运行训练脚本

# 在 COCO128 上训练 YOLOv5s 5 个 epochpython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

就这样!

Comet 将自动记录您的超参数、命令行参数、训练和验证指标。您可以在 Comet UI 中可视化和分析您的运行。

在 Comet Dashboard 中使用 YOLOv5 进行实验

亲自尝试一下!

查看此处已完成运行的示例

或者,更好的是,在这个 Colab Notebook中亲自尝试一下。

自动记录日志

默认情况下,Comet将记录以下项目:

指标

  • 训练和验证数据的 Box Loss(框损失)、Object Loss(对象损失)和 Classification Loss(分类损失)
  • 验证数据的 mAP_0.5、mAP_0.5:0.95 指标
  • 验证数据的精确率和召回率

参数

  • 模型超参数
  • 所有通过命令行选项传递的参数

可视化

  • 模型在验证数据上预测结果的混淆矩阵
  • 所有类别的 PR 和 F1 曲线图
  • 类标签的相关图

配置 Comet 日志记录

可以通过传递给训练脚本的命令行标志或环境变量来配置 Comet,以记录其他数据。

export COMET_MODE=online # 设置 Comet 在 'online' 或 'offline' 模式下运行。默认为 onlineexport COMET_MODEL_NAME= #设置保存模型的名称。默认为 yolov5export COMET_LOG_CONFUSION_MATRIX=false # 设置为禁用记录 Comet 混淆矩阵。默认为 trueexport COMET_MAX_IMAGE_UPLOADS= # 控制要记录到 Comet 的图像预测总数。默认为 100。export COMET_LOG_PER_CLASS_METRICS=true # 设置为在训练结束时记录每个检测到的类别的评估指标。默认为 falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # 如果您想从不同的检查点恢复训练,请设置此项。默认为 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # 如果您想在批处理级别记录训练指标,请设置此项。默认为 false。export COMET_LOG_PREDICTIONS=true # 设置为 false 以禁用记录模型预测

使用 Comet 记录检查点

默认情况下,禁用将模型记录到 Comet。要启用它,请将 save-period 参数传递给训练脚本。这将根据 save-period 提供的间隔值将记录的检查点保存到 Comet。

python train.py \

--img 640 \

--batch 16 \

--epochs 5 \

--data coco128.yaml \

--weights yolov5s.pt \

--save-period 1

记录模型预测

默认情况下,模型预测(图像、ground truth 标签和边界框)将被记录到 Comet。您可以通过传递 bbox_interval 命令行参数来控制记录的预测和相关图像的频率。可以使用 Comet 的目标检测自定义面板可视化预测。此频率对应于每个 epoch 中每 N 个批次的数据。在下面的示例中,我们记录每个 epoch 的每 2 个批次的数据。

注意:YOLOv5 验证数据加载器将默认采用 32 的批处理大小,因此您需要相应地设置日志记录频率。

这里是一个使用Panel的项目示例

python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 2

控制记录到 Comet 的预测图像数量

从YOLOv5记录预测时,Comet将记录与每组预测相关的图像。默认情况下,最多记录100个验证图像。您可以使用COMET_MAX_IMAGE_UPLOADS环境变量来增加或减少此数量。

env COMET_MAX_IMAGE_UPLOADS=200python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 1

记录类级别指标

使用 COMET_LOG_PER_CLASS_METRICS 环境变量来记录每个类别的 mAP、精确率、召回率和 F1 值。

env COMET_LOG_PER_CLASS_METRICS=true python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt

将数据集上传到 Comet Artifacts

如果您想使用 Comet Artifacts 存储您的数据,您可以使用 upload_dataset 标志来实现。

该数据集的组织方式如 YOLOv5 文档 中所述。数据集配置 yaml 文件必须遵循与 coco128.yaml 文件相同的格式。

python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--upload_dataset

您可以在 Comet 工作区的 Artifacts 选项卡中找到上传的数据集

Comet Artifacts Tab, YOLOv5

您可以直接在 Comet UI 中预览数据。

在 Comet, YOLOv5 中预览数据

Artifacts 具有版本控制功能,并且还支持添加关于数据集的元数据。Comet 将自动记录来自您的数据集 yaml 文件的元数据。

在 Comet、YOLOv5 中记录 YAML 文件中的元数据

使用已保存的 Artifact

如果您想使用 Comet Artifacts 中的数据集,请将数据集 yaml 文件中的路径变量设置为指向以下 Artifact 资源 URL。

# artifact.yaml 文件的内容路径:"comet:///:"

然后,通过以下方式将此文件传递给您的训练脚本:

python train.py \--img 640 \--batch 16 \--epochs 5 \--data artifact.yaml \--weights yolov5s.pt

通过 Artifacts,您还可以跟踪数据在 Experimentation 工作流程中的沿袭。在这里,您可以看到一个图表,其中显示了所有使用您上传的数据集的实验。

Comet 实验工作流程,YOLOv5

恢复训练运行

如果您的训练运行因任何原因中断,例如网络连接中断,您可以使用 resume 标志和 Comet Run Path 恢复运行。

运行路径的格式如下:comet://.///。

这将把运行恢复到中断之前的状态,包括从检查点恢复模型、恢复所有超参数和训练参数,以及下载 Comet 数据集 Artifacts(如果在原始运行中使用)。恢复的运行将继续记录到 Comet UI 中的现有实验。

python train.py \--resume "comet://"

使用 Comet Optimizer 进行超参数搜索

YOLOv5 还与 Comet 的 Optimizer 集成,可以轻松地在 Comet UI 中可视化超参数扫描。

配置优化器扫描

要配置 Comet Optimizer,您必须创建一个包含扫描信息的 JSON 文件。

已提供示例文件,位于:

utils/loggers/comet/optimizer_config.json python utils/loggers/comet/hpo.py \--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

hpo.py 脚本接受与 train.py 相同的参数。如果您希望将其他参数传递给您的 sweep,只需在脚本后添加它们即可。

python utils/loggers/comet/hpo.py \--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \--save-period 1 \--bbox_interval 1

并行运行 Sweep

comet optimizer -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

Comet 提供了多种方式来可视化您的 sweep 结果。请查看此处包含已完成 sweep 的项目

在Comet、YOLOv5中可视化扫描结果

保持联系

开始使用我们与 Comet 的集成来管理、可视化和优化您的 YOLOv5 模型——从训练运行到生产监控。

当然,加入 Ultralytics 社区——一个可以提问和分享关于 YOLOv5 训练、验证和部署技巧的地方。

让我们一起构建人工智能的未来!

开启您的机器学习未来之旅

免费开始
链接已复制到剪贴板