Discover how Ultralytics partners with Comet for Ultralytics YOLOv5 model optimization: real-time tracking, streamlined collaboration, and enhanced reproducibility.
在Ultralytics ,我们与其他初创公司建立了商业合作伙伴关系,以帮助我们为我们出色的开源工具(如YOLOv5 )的研究和开发提供资金,从而使这些工具对所有人都是免费的。本文可能包含这些合作伙伴的关联链接。
我们最新的合作伙伴、 Comet构建工具,帮助数据科学家、工程师和团队领导者加速和优化机器学习和深度学习模型。
Comet 是跟踪模型、数据集和指标的强大工具。它甚至能记录系统和环境变量,以确保每次运行的可重复性和顺利调试。它就像一个虚拟助手,能神奇地知道要记录什么。实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并通过Comet 自定义面板可视化模型预测!
此外,Comet 还能确保您不会丢失工作轨迹,并使各种规模的团队都能轻松共享成果和开展协作!
YOLOv5是计算机视觉之旅的绝佳起点。为了提高模型的性能并使其为生产做好准备,您需要将结果记录在实验跟踪工具中,如 Comet.
Comet 和YOLOv5 集成提供3 个主要功能:
本指南将介绍如何通过Comet 使用YOLOv5 。
准备好实时跟踪您的实验了吗?让我们开始吧
Pip installcomet_ml
有两种方法可以通过Comet 配置 YOLOv5.
您可以通过环境变量设置凭据,也可以在工作目录中创建一个 .comet.config 文件,并在其中设置凭据。
exportCOMET_API_KEY=exportCOMET_PROJECT_NAME= # 默认为 'yolov5' 。
[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'
# Train YOLOv5s on COCO128 for 5 epochspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
就是这样!
Comet 会自动记录超参数、命令行参数、训练和验证指标。您可以在Comet UI 中对运行情况进行可视化分析。
或者,在这本 Colab 笔记本中亲自尝试一下更好。
默认情况下,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 默认为禁用。要启用它,请向训练脚本传递 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
在记录来自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 来存储数据,可以使用 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 UI 中预览数据。
Comet 会自动记录数据集 yaml 文件中的元数据。
如果要使用Comet Artifacts 中的数据集,请在数据集 yaml 文件中设置路径变量,指向以下 Artifact 资源 URL。
# artifact.yaml 文件的内容 路径:"comet:///::"
然后按以下方式将此文件传给训练脚本:
python train.py \--img 640 \--batch 16 \--epochs 5 \--data artifact.yaml \--weights yolov5s.pt
工件还可以让你跟踪数据在实验工作流程中的流向。在这里,您可以看到一张图表,显示使用了您上传的数据集的所有实验。
如果训练运行因任何原因中断,例如网络连接中断,您可以使用恢复标志和Comet 运行路径恢复运行。
运行路径的格式如下comet:////。
这将把运行恢复到中断前的状态,包括从检查点恢复模型、恢复所有超参数和训练参数,以及下载Comet 数据集工件(如果原始运行中使用了这些工件)。恢复的运行将继续记录Comet UI 中的现有实验。
python train.py \--resume "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 模型--从训练运行到生产监控。
当然,您还可以加入Ultralytics 社区,在这里您可以就YOLOv5 培训、验证和部署提出问题和分享技巧。