YOLO Vision 2026:
集成

如何将 Ultralytics YOLOv5 与 Comet 配合使用

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

NUNuvola Ladi5 min read
使用 Comet 跟踪 Ultralytics YOLOv5 模型训练

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

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

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

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

YOLOv5 是你开启计算机视觉之旅的绝佳起点。为了提升模型的性能并使其做好生产准备,你需要将结果记录到像 Comet 这样的实验跟踪工具中。

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

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

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

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

入门指南#

安装 Comet#

pip install comet_ml

配置 Comet 凭据#

有两种方法可以为 YOLOv5 配置 Comet。

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

环境变量#

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

Comet 配置文件#

[comet]
api_key=<Your 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 中可视化并分析你的运行结果。

Experiments with YOLOv5 in Comet Dashboard

亲自试一试!#

查看此处完成的运行示例

或者更好的办法是,在此 Colab 笔记本中亲自尝试一下。

自动记录#

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

指标#

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

参数#

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

可视化#

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

配置 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 参数。这将根据 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 的对象检测自定义面板进行可视化。此频率对应于每个 epoch 中每 N 个数据批次。在下面的示例中,我们记录每个 epoch 中每第 2 个批次的数据。

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

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

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、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

将数据集上传到 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 Artifacts Tab, YOLOv5

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

Preview data in Comet, YOLOv5

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

Log metadata from YAML file in Comet, YOLOv5

使用已保存的制品#

如果你想使用来自 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 experimentation workflow, YOLOv5

恢复训练运行#

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

运行路径采用以下格式 comet://<your workspace name>/<your project name>/<experiment id>

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

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

使用 Comet Optimizer 进行超参数搜索#

YOLOv5 也集成了 Comet's Optimizer,使得在 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 <num_workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json

Comet 提供了多种方法来可视化扫描结果。请查看这里带有完成扫描的项目

Visualize sweep results in Comet, YOLOv5

保持联系#

开始使用我们与 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 的未来!

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