Meet YOLO26: next-gen vision AI.

Comet ML 用于机器学习实验跟踪的标志

Link to this section将 YOLOv5 与 Comet 结合使用#

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

Link to this section关于 Comet#

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

实时跟踪并可视化模型指标,保存你的超参数、数据集和模型检查点,并使用 Comet Custom Panels 可视化你的模型预测!Comet 确保你永远不会丢失工作进度,并使跨团队共享结果和协作变得轻而易举!

Link to this section入门指南#

Link to this section安装 Comet#

pip install comet_ml

Link to this section配置 Comet 凭据#

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

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

环境变量

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'

Link to this section运行训练脚本#

# 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 仪表板

Link to this section尝试一个示例!#

查看此处完成的运行示例

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

在 Colab 中打开

Link to this section自动记录#

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

Link to this section指标#

Link to this section参数量#

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

Link to this section可视化#

Link to this section配置 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

Link to this section使用 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

Link to this section记录模型预测#

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

你可以通过传递 bbox_interval 命令行参数来控制记录预测和相关图像的频率。可以使用 Comet 的 目标检测 (Object Detection) 自定义面板来可视化预测。此频率对应于每个 轮次 (epoch) 中每 N 个数据批次。在下面的示例中,我们记录每个轮次的每 2 个数据批次。

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

这是一个 使用该面板的示例项目

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

Link to this section控制记录到 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

Link to this section记录类级别指标#

使用 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

Link to this section将数据集上传到 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 面板

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

Comet 数据集预览和版本历史记录

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

Comet Artifact 元数据

Link to this section使用保存的 Artifact#

If you would like to use a dataset from Comet Artifacts, set the path variable in your dataset yaml file to point to the following Artifact resource 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 血缘图

Link to this section恢复训练运行#

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

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

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

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

Link to this section使用 Comet Optimizer 进行超参数搜索#

YOLOv5 也与 Comet 的优化器 (Optimizer) 进行了集成,使得在 Comet UI 中可视化超参数扫描变得简单。

Link to this section配置优化器扫描#

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

Link to this section可视化结果#

Comet 提供了多种可视化扫描结果的方法。看看这里的一个已完成扫描的项目

Comet 超参数可视化

评论