跳至内容

Comet

YOLOv5 与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> # This will default to 'yolov5'

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

Comet 配置文件

[comet]
api_key=<Your Comet 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 中对运行情况进行可视化分析。

yolo-ui

举例说明

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

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

在 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=<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 参数到训练脚本。这将根据以下参数提供的时间间隔值,将记录的检查点保存到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 工作区的 "工件 "选项卡中找到上传的数据集。 文物-1

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

Comet 会自动记录数据集的元数据。 yaml 文件 文物-3

使用已保存的人工制品

如果您想使用来自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

工件还可以让你跟踪数据在实验工作流中的流动轨迹。在这里,您可以看到一张图表,显示使用了您上传的数据集的所有实验。 神器-4

恢复训练跑步

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

运行路径的格式如下 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 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 optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

结果可视化

Comet 提供了多种可视化清扫结果的方法。点击此处查看已完成清扫的项目

超参数yolo



创建于 2023-11-12,更新于 2024-01-07
作者:glenn-jocher(3)、RizwanMunawar(1)

评论