遇见 YOLO26: 下一代视觉 AI。
Ultralytics
集成

如何将 Ultralytics YOLOv5 与 Comet 配合使用

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

ULUltralytics 团队
5 min read
使用 Comet 跟踪 Ultralytics YOLOv5 模型训练

在 Ultralytics,我们与其他初创公司进行商业合作,以帮助资助我们出色的开源工具(如 YOLOv5)的研发,从而让所有人都能免费使用它们。本文可能包含指向这些合作伙伴的联盟链接。

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

Comet 是一个强大的工具,可用于追踪你的模型、数据集和指标。它甚至会记录你的系统和环境变量,以确保每次运行的可复现性并简化调试过程。这就像拥有一位神奇的虚拟助手,它知道该保存哪些记录。你可以实时追踪和可视化模型指标,保存你的超参数、数据集和模型检查点,并使用 Comet Custom Panels 可视化你的模型预测结果!

此外,Comet 确保你永远不会丢失工作进度,并能轻松分享结果,从而促进各种规模团队之间的协作!

YOLOv5 是你计算机视觉之旅的绝佳起点。为了提升模型性能并使其达到生产就绪状态,你需要使用像 Comet 这样的实验追踪工具来记录结果。

Comet 与 YOLOv5 的集成提供了 3 大主要功能

  • 自动记录和自定义记录功能
  • 将数据集和模型保存为制品,以便进行调试和复现
  • 使用 Comet 的自定义面板来整理你的视图

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

准备好实时追踪你的实验了吗?让我们开始吧!

Link to this section入门指南#

Link to this section安装 Comet#

pip install comet_ml

Link to this section配置 Comet 凭据#

有两种配置 Comet 与 YOLOv5 的方法。

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

Link to this section环境变量#

export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Link to this sectionComet 配置文件#

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

Link to this section运行训练脚本#

# 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 中可视化并分析你的运行结果。

在 Comet 仪表板中进行的 YOLOv5 实验

Link to this section亲自试一试!#

查看 已完成运行示例

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

Link to this section自动记录#

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

Link to this section指标#

  • 训练和验证数据的 Box Loss、Object Loss 和 Classification Loss
  • 验证数据的 mAP_0.5, mAP_0.5:0.95 指标
  • 验证数据的 Precision 和 Recall

Link to this section参数#

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

Link to this section可视化#

  • 模型在验证数据上的混淆矩阵 (Confusion Matrix)
  • 所有类别的 PR 和 F1 曲线图
  • 类标签的相关图 (Correlogram)

Link to this section配置 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

Link to this section使用 Comet 记录检查点#

默认情况下,禁用将模型记录到 Comet。要启用它,请向训练脚本传递 save-period 参数。这将根据 save-period 提供的间隔值将记录的检查点保存到 Comet。

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Link to this section记录模型预测#

默认情况下,模型预测(图像、真值标签和边界框)将被记录到 Comet。你可以通过传递 bbox_interval 命令行参数来控制预测记录频率及关联图像的记录频率。预测可以使用 Comet 的对象检测自定义面板进行可视化。此频率对应于每个 epoch 中每 N 个数据批次。在下面的示例中,我们记录每个 epoch 中每第 2 个批次的数据。

注意:YOLOv5 验证数据加载器默认批次大小为 32,因此你需要相应地设置记录频率。

这是一个 使用该面板的项目示例

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

Link to this section控制记录到 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

Link to this section记录类级别指标#

使用 COMET_LOG_PER_CLASS_METRICS 环境变量来记录每个类别的 mAP、precision、recall 和 f1。

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt

Link to this section将数据集上传到 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 工作区的 Artifacts 选项卡中找到已上传的数据集

Comet 工件选项卡,YOLOv5

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

在 Comet 中预览数据,YOLOv5

制品是带版本的,并且支持添加关于数据集的元数据。Comet 会自动从你的数据集 yaml 文件中记录元数据。

在 Comet 中记录来自 YAML 文件的元数据,YOLOv5

Link to this section使用已保存的制品#

如果你想使用来自 Comet Artifacts 的数据集,请将数据集 yaml 文件中的 path 变量指向以下制品资源 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 实验工作流程,YOLOv5

Link to this section恢复训练运行#

如果你的训练运行因任何原因中断(例如互联网连接中断),你可以使用 resume 标志和 Comet Run Path 来恢复运行。

Run Path 的格式如下:comet://<your workspace name>/<your project name>/<experiment id>

这将使运行恢复到中断前的状态,包括从检查点恢复模型、恢复所有超参数和训练参数,并在原始运行中使用了 Comet 数据集制品的情况下下载它们。恢复后的运行将继续记录到 Comet UI 中的现有实验中。

python train.py \
  --resume "comet://<your run path>"

Link to this section使用 Comet Optimizer 进行超参数搜索#

YOLOv5 也集成了 Comet's Optimizer,使得在 Comet UI 中可视化超参数扫描变得简单。

Link to this section配置优化器扫描#

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

Link to this section并行运行扫描#

comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json

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

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

Link to this section保持联系#

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

当然,也欢迎加入 Ultralytics 社区——这是一个交流关于 YOLOv5 训练、验证和部署经验并分享技巧的地方。

Explore solutions

Real-time AI that works with your team

机器人技术中的 AI

使用 Ultralytics YOLO 模型为智能机器赋能。机器人技术中的视觉 AI 可推动自主导航、感知、物体跟踪和实时控制。
了解更多
Real-time AI that works with your team

物流中的 AI

使用 Ultralytics YOLO 模型简化物流。视觉 AI 可实现包裹检查、分拣、车辆跟踪和实时仓库安全监控。
了解更多
Real-time AI that works with your team

零售业 AI

使用 Ultralytics YOLO 模型重塑零售业。视觉 AI 推动库存跟踪、货架监控、队列管理和更智能的客户洞察。
了解更多
Real-time AI that works with your team

医疗保健中的 AI

利用 Ultralytics YOLO 模型构建医疗保健解决方案。医疗保健中的视觉 AI 可助力更快速的医学影像分析、更智能的诊断和患者监测。
了解更多
Real-time AI that works with your team

制造业中的 AI

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 推动质量控制、缺陷检测、PPE 合规性和装配线自动化。
了解更多
Real-time AI that works with your operation

汽车中的 AI

将计算机视觉应用于汽车行业,并配合 Ultralytics YOLO 模型。汽车视觉 AI 可提升道路安全、辅助驾驶和车辆自动化,打造更智能的道路。
了解更多
Real-time AI tailored to your operation

农业中的 AI

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。赋能作物监测、牲畜追踪和精准农业,实现更高、更智能的产量。
了解更多
Real-time AI that works with your team

机器人技术中的 AI

使用 Ultralytics YOLO 模型为智能机器赋能。机器人技术中的视觉 AI 可推动自主导航、感知、物体跟踪和实时控制。
了解更多
Real-time AI that works with your team

物流中的 AI

使用 Ultralytics YOLO 模型简化物流。视觉 AI 可实现包裹检查、分拣、车辆跟踪和实时仓库安全监控。
了解更多
Real-time AI that works with your team

零售业 AI

使用 Ultralytics YOLO 模型重塑零售业。视觉 AI 推动库存跟踪、货架监控、队列管理和更智能的客户洞察。
了解更多
Real-time AI that works with your team

医疗保健中的 AI

利用 Ultralytics YOLO 模型构建医疗保健解决方案。医疗保健中的视觉 AI 可助力更快速的医学影像分析、更智能的诊断和患者监测。
了解更多
Real-time AI that works with your team

制造业中的 AI

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 推动质量控制、缺陷检测、PPE 合规性和装配线自动化。
了解更多
Real-time AI that works with your operation

汽车中的 AI

将计算机视觉应用于汽车行业,并配合 Ultralytics YOLO 模型。汽车视觉 AI 可提升道路安全、辅助驾驶和车辆自动化,打造更智能的道路。
了解更多
Real-time AI tailored to your operation

农业中的 AI

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。赋能作物监测、牲畜追踪和精准农业,实现更高、更智能的产量。
了解更多
Real-time AI that works with your team

机器人技术中的 AI

使用 Ultralytics YOLO 模型为智能机器赋能。机器人技术中的视觉 AI 可推动自主导航、感知、物体跟踪和实时控制。
了解更多
Real-time AI that works with your team

物流中的 AI

使用 Ultralytics YOLO 模型简化物流。视觉 AI 可实现包裹检查、分拣、车辆跟踪和实时仓库安全监控。
了解更多
Real-time AI that works with your team

零售业 AI

使用 Ultralytics YOLO 模型重塑零售业。视觉 AI 推动库存跟踪、货架监控、队列管理和更智能的客户洞察。
了解更多
Real-time AI that works with your team

医疗保健中的 AI

利用 Ultralytics YOLO 模型构建医疗保健解决方案。医疗保健中的视觉 AI 可助力更快速的医学影像分析、更智能的诊断和患者监测。
了解更多
Real-time AI that works with your team

制造业中的 AI

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 推动质量控制、缺陷检测、PPE 合规性和装配线自动化。
了解更多
Real-time AI that works with your operation

汽车中的 AI

将计算机视觉应用于汽车行业,并配合 Ultralytics YOLO 模型。汽车视觉 AI 可提升道路安全、辅助驾驶和车辆自动化,打造更智能的道路。
了解更多
Real-time AI tailored to your operation

农业中的 AI

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。赋能作物监测、牲畜追踪和精准农业,实现更高、更智能的产量。
了解更多

让我们一起构建 AI 的未来!

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