Ultralytics YOLO27:
集成

如何将 Ultralytics YOLOv5 与 Comet 搭配使用

了解 Ultralytics 如何与 Comet 合作优化 Ultralytics YOLOv5 模型:实时跟踪、高效协作和更强的可复现性。

NUNuvola Ladi4 min read
使用 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=<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'

3. 运行训练脚本#

# 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 实验

亲自试试!#

查看已完成运行的示例

更好的方式是,在这个 Colab Notebook 中亲自试试。

自动记录#

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

指标#

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

参数#

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

可视化#

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

配置 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 的目标检测自定义面板将预测结果可视化。此频率对应于每个训练周期中每第 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 环境变量增加或减少此数量。

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、精确率、召回率和 f1。

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

将数据集上传到 Comet 构件#

如果你想使用 Comet 构件 存储数据,可以使用 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 构件中的数据集,请在数据集 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

恢复训练运行#

如果你的训练运行因任何原因中断,例如网络连接中断,你可以使用 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>"

使用 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 <num_workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json

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

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

保持联系#

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

当然,也欢迎加入 Ultralytics 社区——在这里,你可以提出问题并分享有关 YOLOv5 训练、验证和部署的技巧。

Explore solutions

用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

使用 Ultralytics YOLO 模型在汽车行业应用计算机视觉。视觉 AI 提升道路安全、驾驶辅助和车辆自动化水平,让道路更加智能。
了解更多
农业中的计算机视觉

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多
用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

使用 Ultralytics YOLO 模型在汽车行业应用计算机视觉。视觉 AI 提升道路安全、驾驶辅助和车辆自动化水平,让道路更加智能。
了解更多
农业中的计算机视觉

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多
用于航拍影像的计算机视觉

用于航拍影像的计算机视觉

使用 Ultralytics YOLO 将无人机和航拍影像转化为针对农业、水产养殖、环境监测、自然保护及地理空间分析的实时洞察。
了解更多
航空航天中的计算机视觉

航空航天中的计算机视觉

借助 Ultralytics YOLO 模型将视觉 AI 引入空中监测。使用计算机视觉解决方案赋能无人机、航空航天工作流、环境保护与地理空间行业。
了解更多

使用 Ultralytics YOLO 模型保护每个站点。视觉 AI 赋能周界监控、威胁检测、车牌识别和工作场所安全。
了解更多
机器人计算机视觉

机器人计算机视觉

借助 Ultralytics YOLO 模型打造更智能的机器。机器人技术中的视觉 AI 可实现自主导航、感知、目标跟踪和实时控制。
了解更多
物流计算机视觉

物流计算机视觉

使用 Ultralytics YOLO 模型提升物流效率。视觉 AI 可实现包裹检测、分拣、车辆跟踪和仓库安全实时监控。
了解更多
零售计算机视觉

零售计算机视觉

使用 Ultralytics YOLO 模型重新构想零售。视觉 AI 为库存跟踪、货架监控、队列管理和更智能的客户洞察提供支持。
了解更多
医疗领域的计算机视觉

医疗领域的计算机视觉

使用 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可实现更快的医学影像处理、更智能的诊断和患者监护。
了解更多
制造业中的计算机视觉

制造业中的计算机视觉

使用 Ultralytics YOLO 模型优化制造业。视觉 AI 可推动质量控制、缺陷检测、PPE 合规和装配线自动化。
了解更多
汽车行业中的计算机视觉

汽车行业中的计算机视觉

使用 Ultralytics YOLO 模型在汽车行业应用计算机视觉。视觉 AI 提升道路安全、驾驶辅助和车辆自动化水平,让道路更加智能。
了解更多
农业中的计算机视觉

农业中的计算机视觉

使用 Ultralytics YOLO 模型将视觉 AI 带入智能农业。为作物监测、牲畜追踪和精准农业提供支持,提升产量与智能化水平。
了解更多

让我们共同构建 AI 的未来!

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