如何将 Ultralytics YOLOv5 与 Comet 搭配使用
了解 Ultralytics 如何与 Comet 合作优化 Ultralytics YOLOv5 模型:实时跟踪、高效协作和更强的可复现性。

Ultralytics 会与其他初创公司开展商业合作,帮助我们为 YOLOv5 等优秀的开源工具的研发提供资金支持,让它们能够继续免费提供给所有人。本文可能包含指向这些合作伙伴的联盟链接。
我们的最新合作伙伴 Comet 致力于构建工具,帮助数据科学家、工程师和团队负责人加速并优化机器学习和深度学习模型。
Comet 是一款功能强大的工具,可用于跟踪模型、数据集和指标。它甚至会记录系统和环境变量,以确保每次运行都具备可复现性并便于顺利调试。它就像一位神奇地知道该记录哪些笔记的虚拟助手。你可以实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并使用 Comet 自定义面板 可视化模型预测结果!
此外,Comet 可确保你始终掌握工作进度,并轻松地在各种规模的团队之间共享结果和协作!
YOLOv5 是开启计算机视觉之旅的绝佳起点。要提升模型性能并使其达到生产就绪状态,你需要将结果记录到 Comet 等实验跟踪工具中。
Comet 与 YOLOv5 的集成提供 3 项主要功能:
- 自动记录和自定义记录功能
- 将数据集和模型保存为构件,以便调试并确保可复现性
- 使用 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 中可视化并分析运行结果。

亲自试试!#
查看已完成运行的示例。
更好的方式是,在这个 Colab Notebook 中亲自试试。
自动记录#
默认情况下,Comet 会记录以下项目:
指标#
- 训练和验证数据的框损失、目标损失和分类损失
- 验证数据的 mAP_0.5、mAP_0.5:0.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 参数传递给训练脚本。这样会根据 save-period 提供的间隔值,将记录的检查点保存到 Comet。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1记录模型预测结果#
默认情况下,模型预测结果(图像、真实标签和边界框)会记录到 Comet。你可以通过传递 bbox_interval 命令行参数来控制记录预测结果及相关图像的频率。你可以使用 Comet 的目标检测自定义面板将预测结果可视化。此频率对应于每个训练周期中每第 N 个数据批次。以下示例中,我们会记录每个训练周期的每第 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 构件#
如果你想使用 Comet 构件 存储数据,可以使用 upload_dataset 标志来实现。
数据集按照 YOLOv5 文档中所述的方式进行组织。数据集配置 yaml 文件必须遵循与 coco128.yaml 文件相同的格式。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset你可以在 Comet 工作区的构件选项卡中找到上传的数据集

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

构件具有版本控制功能,还支持添加有关数据集的元数据。Comet 会自动记录数据集 yaml 文件中的元数据。

使用已保存的构件#
如果你想使用 Comet 构件中的数据集,请在数据集 yaml 文件中设置 path 变量,使其指向以下构件资源 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 数据集构件时下载这些构件。恢复后的运行会继续将记录信息写入 Comet UI 中现有的实验。
python train.py \
--resume "comet://<your run path>"使用 Comet 优化器进行超参数搜索#
YOLOv5 还集成了 Comet 的优化器,因此可以轻松地在 Comet UI 中可视化超参数扫描。
配置优化器扫描#
要配置 Comet 优化器,你需要创建一个包含扫描信息的 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 相同的参数。如果你希望向扫描传递其他参数,只需将它们添加在脚本之后。
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 提供多种方式来可视化扫描结果。请查看这里的已完成扫描项目:

保持联系#
开始使用我们与 Comet 的集成,管理、可视化和优化你的 YOLOv5 模型——从训练运行到生产监控。
当然,也欢迎加入 Ultralytics 社区——在这里,你可以提出问题并分享有关 YOLOv5 训练、验证和部署的技巧。









