如何将 Ultralytics YOLOv5 与 Comet 配合使用
了解 Ultralytics 如何与 Comet 合作优化 Ultralytics YOLOv5 模型:实现实时跟踪、简化协作并提升可复现性。
Nuvola Ladi4 分钟阅读
在 Ultralytics,我们与其他初创公司开展商业合作,帮助为 YOLOv5 等开源工具的研发提供资金,让所有人都能免费使用这些工具。本文可能包含指向合作伙伴的联盟链接。
我们的最新合作伙伴 Comet 开发各类工具,帮助数据科学家、工程师和团队负责人加速并优化机器学习与深度学习模型。
Comet 是一款功能强大的工具,可用于跟踪模型、数据集和指标。它甚至会记录系统和环境变量,确保每次运行都具备可复现性,并便于顺利调试。实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并使用 Comet Custom Panels可视化模型预测结果!
此外,Comet 能确保你始终跟踪自己的工作,并轻松分享结果、与各种规模的团队协作!
YOLOv5是开启计算机视觉之旅的绝佳起点。要提升模型性能并让模型具备投入生产环境的条件,你需要将结果记录到 Comet 等实验跟踪工具中。
Comet 与 YOLOv5 的集成提供三项主要功能:
- 自动记录和自定义记录功能
- 将数据集和模型保存为工件,以便调试并确保可复现性
- 使用 Comet 自定义面板整理视图
本指南将介绍如何将 YOLOv5 与 Comet 配合使用。
准备好实时跟踪实验了吗?开始吧!
入门#
1. 安装 Comet#
pip install comet_ml2. 配置 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 中可视化并分析运行结果。

亲自试试看!#
查看已完成运行的示例。
或者更好的是,亲自在 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 UI 中预览数据。

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

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

恢复训练运行#
如果训练因任何原因中断(例如网络连接中断),你可以使用 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.jsonComet 提供多种可视化 sweep 结果的方法。看看这个已完成 sweep 的项目:

保持联系#
开始使用我们的 Comet 集成,管理、可视化和优化你的 YOLOv5 模型,涵盖从训练运行到生产监控的各个环节。
当然,也欢迎加入 Ultralytics 社区,在这里提问并分享 YOLOv5 训练、验证和部署方面的技巧。
作者
评论
提出问题、分享你的结果,或帮助其他人。










