如何将 Ultralytics YOLOv5 与 Comet 结合使用

Ultralytics 团队

5 分钟阅读

2022年10月11日

了解 Ultralytics 如何与 Comet 合作进行 Ultralytics YOLOv5 模型优化:实时跟踪、简化协作和增强可重复性。

在 Ultralytics,我们经常与其他初创公司合作,帮助我们为研发 YOLOv5 等优秀的开源工具提供资金支持,使这些工具能够免费提供给所有人使用。本文可能包含这些合作伙伴的关联链接。

我们最新的合作伙伴Comet 开发的工具可帮助数据科学家、工程师和团队领导者加速和优化机器学习和深度学习模型。

Comet 是跟踪模型、数据集和指标的强大工具。它甚至会记录系统和环境变量,以确保每次运行的可重复性和顺利调试。它就像一个虚拟助手,能神奇地知道要记录什么。实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,利用Comet 自定义面板可视化模型预测!

此外,Comet 还能确保您永远不会丢失工作跟踪,并使各种规模的团队都能轻松共享成果和开展协作!

YOLOv5是计算机视觉之旅的绝佳起点。要提高模型的性能并使其为生产做好准备,您需要将结果记录在Comet 等实验跟踪工具中。

Comet 和 YOLOv5 集成提供3 个主要功能

  • 自动记录和自定义记录功能
  • 将数据集和模型保存为人工制品,以便调试和重现
  • 使用 Comet 的自定义面板组织视图


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

准备好实时跟踪您的实验了吗?让我们开始吧

入门

1.安装 Comet

Pip install comet_ml

2.配置 Comet 凭据

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

您可以通过环境变量设置凭据,也可以在工作目录中创建 .comet.config 文件并在其中设置凭据。


环境变量

export COMET_API_KEY=export COMET_PROJECT_NAME= # 默认为 "yolov5


彗星配置文件

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3.运行培训脚本

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

就是这样!

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

在 Comet Dashboard 中使用 YOLOv5 的实验

亲身体验

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

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

自动记录

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

衡量标准

  • 训练数据和验证数据的箱体损失、物体损失和分类损失
  • 验证数据的 mAP_0.5、mAP_0.5:0.95 指标
  • 验证数据的精确度和召回率

参数

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

可视化

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

配置 Comet 日志

Comet 可通过传给训练脚本的命令行标志或环境变量进行配置,以记录更多数据。

export COMET_MODE=online # 设置以 "联机 "还是 "脱机 "模式运行 Comet。默认为 onlineexport COMET_MODEL_NAME= #设置保存模型的名称。默认为 yolov5export COMET_LOG_CONFUSION_MATRIX=false # 设置为禁止记录 Comet Confusion Matrix。默认为 trueexport COMET_MAX_IMAGE_UPLOADS= # 控制记录到 Comet 的图像预测总数。默认为 100.export COMET_LOG_PER_CLASS_METRICS=true # 设置为在训练结束时记录每个检测到的类别的评估指标。默认为 falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # 如果要从不同的检查点继续训练,请设置此项。默认为'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # 如果要在批次级别记录训练指标,请设置此项。默认为 false.export COMET_LOG_PREDICTIONS=true # 将此设置为 false 可禁用模型预测记录

用 Comet 记录检查点

向 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=200python 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 工作区的 "工件 "选项卡中找到上传的数据集。

彗星文物标签,YOLOv5

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

在 Comet、YOLOv5 中预览数据

工件会进行版本控制,还支持添加数据集的元数据。Comet 会自动记录数据集 yaml 文件中的元数据。

Comet 中 YAML 文件的日志元数据,YOLOv5

使用保存的人工制品

如果要使用 Comet Artifacts 中的数据集,请在数据集 yaml 文件中设置路径变量,指向以下 Artifact 资源 URL。

# artifact.yaml 文件的内容 路径:"comet:///:"

然后按以下方式将此文件传给训练脚本:

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

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

彗星实验工作流程,YOLOv5

恢复训练跑步

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

运行路径的格式如下 comet:////。

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

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

利用彗星优化器进行超参数搜索

YOLOv5 还与 Comet 的优化器集成,可在 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 提供了许多可视化扫查结果的方法。点击这里查看一个已完成扫描的项目

在 Comet、YOLOv5 中可视化扫描结果

保持联系

开始使用我们与 Comet 的集成来管理、可视化和优化您的 YOLOv5 模型--从培训运行到生产监控。

当然,还可以加入Ultralytics 社区,在这里您可以就 YOLOv5 的培训、验证和部署提出问题和分享技巧。

让我们共同打造人工智能的未来

开始您的未来机器学习之旅

免费开始
链接复制到剪贴板