Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
集成

如何将 Ultralytics YOLOv5 与 Comet 配合使用

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

Nuvola LadiNuvola Ladi4 分钟阅读
使用 Comet 跟踪 Ultralytics YOLOv5 模型训练

在 Ultralytics,我们与其他初创公司开展商业合作,帮助为 YOLOv5 等开源工具的研发提供资金,让所有人都能免费使用这些工具。本文可能包含指向合作伙伴的联盟链接。

我们的最新合作伙伴 Comet 开发各类工具,帮助数据科学家、工程师和团队负责人加速并优化机器学习与深度学习模型。

Comet 是一款功能强大的工具,可用于跟踪模型、数据集和指标。它甚至会记录系统和环境变量,确保每次运行都具备可复现性,并便于顺利调试。实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并使用 Comet Custom Panels可视化模型预测结果!

此外,Comet 能确保你始终跟踪自己的工作,并轻松分享结果、与各种规模的团队协作!

YOLOv5是开启计算机视觉之旅的绝佳起点。要提升模型性能并让模型具备投入生产环境的条件,你需要将结果记录到 Comet 等实验跟踪工具中。

Comet 与 YOLOv5 的集成提供三项主要功能:

  • 自动记录和自定义记录功能
  • 将数据集和模型保存为工件,以便调试并确保可复现性
  • 使用 Comet 自定义面板整理视图

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

准备好实时跟踪实验了吗?开始吧!

入门#

1. 安装 Comet#

pip install comet_ml

2. 配置 Comet 凭据#

有两种方式可以为 YOLOv5 配置 Comet。

你可以通过环境变量设置凭据,也可以在工作目录中创建 .comet.config 文件并在其中设置凭据。

环境变量#

export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Comet 配置文件#

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

3. 运行训练脚本#

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

就这么简单!

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

Comet 仪表板中的 YOLOv5 实验

亲自试试看!#

查看已完成运行的示例。

或者更好的是,亲自在 YOLOv5 Colab 笔记本中试用。

自动记录#

默认情况下,Comet 会记录以下内容:

指标#

  • 训练和验证数据的框损失、目标损失和分类损失
  • 验证数据的 mAP50、mAP50-95 指标
  • 验证数据的精确率和召回率

参数#

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

可视化结果#

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

配置 Comet 记录#

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

export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> # Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=<number of allowed images to upload to Comet> # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME=<your checkpoint filename> # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictions

使用 Comet 记录检查点#

默认情况下,Comet 中的模型记录处于禁用状态。要启用此功能,请向训练脚本传入 save-period 参数。这样,Comet 就会根据 save-period 提供的间隔值保存已记录的检查点。

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

记录模型预测结果#

默认情况下,模型预测结果(图像、真实标签和边界框)会记录到 Comet。你可以通过传入 bbox_interval 命令行参数,控制预测结果的记录频率以及相关图像的记录频率。你可以使用 Comet 的目标检测自定义面板查看预测结果。该频率对应于每个 epoch 中每 N 个数据批次记录一次。下面的示例中,我们每个 epoch 记录每隔 2 个数据批次的结果。

注意:YOLOv5 验证数据加载器的默认批次大小为 32,因此你需要相应地设置记录频率。

这里有一个使用该面板的示例项目。

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=200 python 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 Workspace 的 Artifacts 选项卡中找到已上传的数据集。

Comet Artifacts 标签页,YOLOv5

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

在 Comet 中预览数据,YOLOv5

工件带有版本管理功能,也支持添加数据集元数据。Comet 会自动记录数据集 YAML 文件中的元数据。

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

使用已保存的 Artifact#

如果你想使用 Comet Artifacts 中的数据集,请在数据集 YAML 文件中设置 path 变量,使其指向以下 Artifact 资源 URL。

# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"

然后按以下方式将此文件传递给训练脚本:

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

工件还可以帮助你跟踪数据在实验工作流中的流转脉络。你可以在这里查看一张图表,其中显示了所有使用过已上传数据集的实验。

Comet 实验工作流,YOLOv5

恢复训练运行#

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

Run Path 的格式如下:comet://<your workspace name>/<your project name>/<experiment id>。

这会将运行恢复到中断前的状态,包括从检查点恢复模型、恢复所有超参数和训练参数,以及下载原始运行中使用的 Comet 数据集 Artifacts。恢复后的运行会继续向 Comet UI 中已有的 Experiment 记录日志。

python train.py \
  --resume "comet://<your run path>"

使用 Comet Optimizer 搜索超参数#

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

配置 Optimizer 扫描#

要配置 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

并行运行扫描#

comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json

Comet 提供多种可视化 sweep 结果的方法。看看这个已完成 sweep 的项目:

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

保持联系#

开始使用我们的 Comet 集成,管理、可视化和优化你的 YOLOv5 模型,涵盖从训练运行到生产监控的各个环节。

当然,也欢迎加入 Ultralytics 社区,在这里提问并分享 YOLOv5 训练、验证和部署方面的技巧。

作者

Nuvola Ladi
Nuvola Ladi

数字内容经理 · Ultralytics

Nuvola Ladi 是 Ultralytics 的数字内容经理,负责创作涵盖视觉 AI 和 Ultralytics YOLO 的内容,并代表公司参加 PyTorch Conference 2025 等行业活动。她常驻西班牙,拥有 IE University 的视觉与数字媒体硕士学位。加入 Ultralytics 之前,她曾在 XVA Gallery & Hotel 和 Rolex 等机构任职。

评论

提出问题、分享你的结果,或帮助其他人。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来