深圳Yolo 视觉
深圳
立即加入

如何将Ultralytics YOLOv5 与Comet结合使用

Ultralytics 团队

5 分钟阅读

2022年10月11日

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

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

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

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

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

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

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

  • 自动日志记录和自定义日志记录功能
  • 将数据集和模型另存为工件,以便进行调试和重现
  • 使用Comet的自定义面板组织视图


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

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

快速入门

1.安装Comet

Pip installcomet

2.配置Comet 凭据

用以下两种方法配置Comet YOLOv5.

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


环境变量

exportCOMET COMET# 默认为yolov5


Comet 配置文件

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

3. 运行训练脚本

# Train YOLOv5s onCOCO128 for 5 epochspython train.py --img 640 --batch 16 --epochs 5 --data coco128yaml --weights yolov5s.pt

就这样!

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

在Comet Dashboard 中使用YOLOv5 的实验

亲自尝试一下!

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

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

自动记录日志

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

指标

  • 训练和验证数据的 Box Loss(框损失)、Object Loss(对象损失)和 Classification Loss(分类损失)
  • 验证数据的mAP.5、mAP.5:0.95 指标
  • 验证数据的精确率和召回率

参数

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

可视化

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

配置Comet 日志

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

exportCOMET# 设置以 "联机 "还是 "脱机 "模式运行Comet 。默认为 onlineexportCOMET#设置保存模型的名称。默认为 yolov5exportCOMET# 设置为禁止记录Comet Confusion Matrix。默认为 trueexportCOMET# 控制向Comet 记录的图像预测总数。默认为 100.exportCOMET# 设置为在训练结束时记录每个检测到的类别的评估指标。默认为 falseexportCOMET# 如果要从不同的检查点继续训练,请设置此项。默认为'last.pt'exportCOMET# 如果要在批次级别记录训练指标,请设置此项。默认为 false.exportCOMET# 将此项设为 false 可禁用模型预测日志记录功能

用Comet记录检查点

向Comet 记录模型的功能默认为禁用。要启用它,可向训练脚本传递 save-period 参数。

python train.py \

Comet 640 \

--batch 16 \

--epochs 5 \

--data coco128yaml \

--weights yolov5s.pt \

--save-period 1

记录模型预测

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

注意:YOLOv5 验证数据加载器的默认批量大小为 32,因此您必须相应设置记录频率。

这里是一个使用Panel的项目示例

python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128yaml yolov5s.ptbbox 2

控制记录到Comet的预测图像数量

记录来自YOLOv5 的预测时,Comet 将记录与每组预测相关的图像。默认情况下,最多记录 100 幅验证图像。您可以使用COMET 环境变量来增减这个数量。

envCOMET train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128yaml yolov5s.ptbbox 1

记录类级别指标

使用COMET 环境变量记录每个类别的mAP、精确度、召回率和 f1。

envCOMET python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128yaml yolov5s.pt

将数据集上传至Comet Artifacts

如果你想使用Comet Artifacts 来存储数据,可以使用 upload_dataset 标志来实现。

数据集按照YOLOv5 文档中描述的方式组织。数据集配置yaml 文件必须遵循与 coco128yaml 文件相同的格式。

python train.py \--img 640 \---batch 16 \--epochs 5 \--data coco128yaml yolov5s.pt \--upload_dataset

您可以在Comet 工作区的 "工件 "选项卡中找到上传的数据集。

Comet 文物标签,YOLOv5

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

在Comet、YOLOv5中预览数据

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

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

使用已保存的 Artifact

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

# artifactyaml 文件的内容 路径:comet:///:"

然后,通过以下方式将此文件传递给您的训练脚本:

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

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

Comet 实验工作流程,YOLOv5

恢复训练运行

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

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

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

python train.py\--resumecomet://"

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

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

配置优化器扫描

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

已提供示例文件,位于:

comet.jsonpython comet.pycomet"comet.json"

hpo.py 脚本接受与 train.py 相同的参数。如果您希望将其他参数传递给您的 sweep,只需在脚本后添加它们即可。

python comet.pycomet"comet.json" \--save-period 1bbox 1

并行运行 Sweep

comet optimizer -jcomet.pycomet.json"

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

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

保持联系

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

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

让我们一起构建人工智能的未来!

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

免费开始