Skip to content

Comet

YOLOv5 with Comet

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

关于Comet

Comet构建的工具帮助数据科学家、工程师和团队领导加速和优化机器学习深度学习模型。

实时跟踪和可视化模型指标,保存您的超参数、数据集和模型检查点,并通过Comet自定义面板可视化您的模型预测!Comet确保您不会失去对工作的跟踪,并使分享结果和跨团队协作变得容易,无论团队规模如何!

入门指南

安装Comet

pip install comet_ml

配置Comet凭证

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

您可以通过环境变量设置您的凭证

环境变量

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # 这将默认为'yolov5'

或者在您的工作目录中创建一个.comet.config文件,并在其中设置您的凭证。

Comet配置文件

[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # 这将默认为'yolov5'

运行训练脚本

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

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

yolo-ui

尝试一个示例!

查看一个完成的运行示例

或者更好的是,在这个Colab笔记本中自己尝试一下

Open In Colab

自动记录

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

指标

  • 训练和验证数据的Box Loss、Object Loss、Classification Loss
  • 验证数据的mAP_0.5、mAP_0.5:0.95指标
  • 验证数据的Precision和Recall

参数

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

可视化

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

配置Comet日志记录

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

export COMET_MODE=online # 设置Comet是否以'online'或'offline'模式运行。默认为online
export COMET_MODEL_NAME=<your model name> #设置保存模型的名称。默认为yolov5
export COMET_LOG_CONFUSION_MATRIX=false # 设置为禁用记录Comet混淆矩阵。默认为true
export COMET_MAX_IMAGE_UPLOADS=<number of allowed images to upload to Comet> # 控制总共上传到Comet的图像预测数量。默认为100。
export COMET_LOG_PER_CLASS_METRICS=true # 设置为在训练结束时记录每个检测类的评估指标。默认为false
export COMET_DEFAULT_CHECKPOINT_FILENAME=<your 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

记录模型预测

默认情况下,模型预测(图像、真实标签和边界框)将被记录到 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 工作区的 Artifacts 选项卡中找到上传的数据集 artifact-1

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

Artifacts 是版本化的,并且还支持添加有关数据集的元数据。Comet 将自动从您的数据集 yaml 文件中记录元数据 artifact-3

使用已保存的 Artifact

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

# artifact.yaml 文件的内容
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

Artifacts 还允许您跟踪数据在其实验工作流程中的流动情况。在这里,您可以看到一个图表,显示了所有使用您上传数据集的实验。artifact-4

恢复训练运行

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

运行路径具有以下格式 comet://<your workspace name>/<your project name>/<experiment id>

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

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

使用 Comet Optimizer 进行超参数搜索

YOLOv5 还与 Comet 的 Optimizer 集成,使得在 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 <设置工作线程数> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

可视化结果

Comet 提供了多种方式来可视化扫描结果。请查看已完成扫描的项目示例

hyperparameter-yolo


📅 Created 11 months ago ✏️ Updated 20 days ago

Comments