绿色检查
链接复制到剪贴板

如何使用Ultralytics YOLOv5 Comet

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

在Ultralytics ,我们与其他初创公司建立了商业合作伙伴关系,以帮助我们为我们出色的开源工具(如YOLOv5 )的研究和开发提供资金,从而使这些工具对所有人都是免费的。本文可能包含这些合作伙伴的关联链接。

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

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

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

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

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

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


本指南将介绍如何通过Comet 使用YOLOv5 。

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

入门

1.安装Comet

Pip installcomet_ml

2.配置Comet 凭据

有两种方法可以通过Comet 配置 YOLOv5.

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


环境变量

exportCOMET_API_KEY=exportCOMET_PROJECT_NAME= # 默认为 'yolov5' 。


Comet 配置文件

[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 UI 中对运行情况进行可视化分析。

YOLOv5 在Comet Dashboard 中的实验

亲身体验

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

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

自动记录

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

衡量标准

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

参数

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

可视化

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

配置Comet 日志

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

exportCOMET_MODE=online # 设置以 "联机 "还是 "脱机 "模式运行Comet 。默认为 onlineexportCOMET_MODEL_NAME= #设置保存模型的名称。默认为 yolov5exportCOMET_LOG_CONFUSION_MATRIX=false # 设置为禁用记录Comet Confusion Matrix。默认为 trueexportCOMET_MAX_IMAGE_UPLOADS= # 控制记录到Comet 的图像预测总数。默认为 100.exportCOMET_LOG_PER_CLASS_METRICS=true # 设置为在训练结束时记录每个检测到的类别的评估指标。默认为 falseexportCOMET_DEFAULT_CHECKPOINT_FILENAME= # 如果要从不同的检查点继续训练,请设置此项。默认为'last.pt'exportCOMET_LOG_BATCH_LEVEL_METRICS=true # 如果要在批处理级别记录训练指标,请对此进行设置。默认为 false.exportCOMET_LOG_PREDICTIONS=true # 设置此项为 false 可禁用模型预测的日志记录

记录检查点Comet

将模型记录到Comet 默认为禁用。要启用它,请向训练脚本传递 save-period 参数。Comet

python train.py \

--img 640 \

--batch 16 \

--epochs 5 \

--data coco128.yaml \

--weights yolov5s.pt \

--save-period 1

测井模型预测

默认情况下,模型预测(图像、地面实况标签和边界框)将被记录到Comet 。您可以通过 bbox_interval 命令行参数来控制记录预测和相关图像的频率。预测结果可通过Comet 的对象检测自定义面板进行可视化。该频率相当于每个纪元每 N 批数据。在下面的示例中,我们每隔 2 个周期记录一批数据。

注意: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 环境变量来增减这个数字。

envCOMET_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。

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

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

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

Comet 实验工作流程、YOLOv5

恢复训练跑步

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

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

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

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

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

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

配置优化扫描

要配置Comet Optimizer,必须创建一个包含扫频信息的 JSON 文件。

文件示例见

utils/loggers/comet/optimizer_config.jsonpython 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 培训、验证和部署提出问题和分享技巧。

Facebook 徽标Twitter 徽标LinkedIn 徽标复制链接符号

在此类别中阅读更多内容

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

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