跳至内容

Comet

YOLOv5 与Comet

本指南将介绍如何将YOLOv5 与 Comet来跟踪、比较和优化机器学习实验。

关于Comet

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

实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,利用Comet 自定义面板可视化模型预测!Comet 可确保您永远不会丢失您的工作轨迹,并使各种规模的团队都能轻松共享结果和开展协作!

入门

安装Comet

pip install comet_ml

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

运行培训脚本

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

就是这样!Comet 会自动记录超参数、命令行参数、训练和验证指标。您可以在Comet 用户界面上对运行情况进行可视化分析。

使用YOLOv5 培训的Comet UI

举例说明

点击这里查看已完成运行的示例。

或者,在这本 Colab 笔记本中亲自尝试一下更好:

在 Colab 中打开

自动登录

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

衡量标准

参数

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

可视化

  • 模型预测与验证数据的混淆矩阵
  • 所有等级的 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

测井模型预测

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

您可以通过传递 bbox_interval 命令行参数。可以使用Comet 的 物体检测 自定义面板。该频率相当于每 N 个批次的数据,每个 纪元.在下面的示例中,我们记录每个纪元的第二批数据。

注意: 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 工艺品您可以使用 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 文物选项卡

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

Comet 数据预览

Comet 会自动记录数据集的元数据。 yaml 锉刀

Comet 文物元数据

使用已保存的人工制品

如果您想使用来自Comet Artifacts 的数据集,请设置 path 变量 yaml 文件指向以下人工制品资源 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

通过人工制品,您还可以跟踪数据在实验工作流程中的流向。在这里,您可以看到一张图表,显示使用了您上传的数据集的所有实验:

Comet 文物世系图

恢复训练跑步

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

运行路径的格式如下 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

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

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

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

YOLOv5 还与Comet 的优化器集成,可在Comet UI 中轻松实现超参数扫描的可视化。

配置优化扫描

要配置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.如果您希望向扫频传递其他参数,只需在脚本后添加即可:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

结果可视化

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

Comet 超参数可视化

📅创建于 1 年前 ✏️已更新 7 天前

评论