跳转至内容

Comet

YOLOv5 与 Comet

本指南将介绍如何将 YOLOv5 与 Comet 结合使用,Comet 是一款用于跟踪、比较和优化机器学习实验的强大工具。

关于 Comet

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

使用 Comet Custom Panels 实时跟踪和可视化模型指标,保存您的超参数、数据集和模型检查点,并可视化您的模型预测!Comet 确保您永远不会丢失您的工作进度,并可以轻松地共享结果并在各种规模的团队中进行协作!

快速入门

安装 Comet

pip install comet_ml

配置 Comet 凭据

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

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

环境变量

export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

或创建一个 .comet.config 文件,并在其中设置您的凭据:

Comet 配置文件

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

运行训练脚本

# 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 训练的 Comet UI

尝试一个示例!

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

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

在 Colab 中打开

自动记录

默认情况下,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="yolov5"                   # 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=30                  # 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="last.pt" # 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

记录模型预测

默认情况下,模型预测(图像、ground truth 标签和边界框)将被记录到 Comet。

您可以通过传递以下内容来控制记录的预测和相关图像的频率 bbox_interval 命令行参数。可以使用 Comet 的以下功能可视化预测结果: 目标检测 自定义面板。此频率对应于每 N 批数据。 epoch。在下面的示例中,我们记录每个 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=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 选项卡中找到上传的数据集:

Comet Artifacts Tab(Comet 工件选项卡)

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

Comet Data Preview(Comet 数据预览)

Artifacts 是版本化的,并且还支持添加关于数据集的元数据。Comet 将自动记录来自数据集的元数据 yaml 文件:

Comet Artifact Metadata(Comet 工件元数据)

使用保存的 Artifact

如果您想使用来自 Comet Artifacts 的数据集,请设置 path 数据集中的变量 yaml 指向以下 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

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

Comet Artifact Lineage Graph(Comet 工件沿袭图)

恢复训练运行

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

运行路径具有以下格式 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

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

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

使用 Comet 优化器进行超参数搜索

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

配置优化器 Sweep

要配置 Comet Optimizer,您需要创建一个 JSON 文件,其中包含有关 sweep 的信息。示例文件已在以下位置提供: 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 提供了多种方式来可视化您的 sweep 结果。请查看此处包含已完成 sweep 的项目

Comet Hyperparameter Visualization(Comet 超参数可视化)



📅 创建于 1 年前 ✏️ 更新于 2 个月前

评论