YOLOv5 与Comet
本指南将介绍如何使用YOLOv5 与 Comet
关于Comet
Comet 构建工具,帮助数据科学家、工程师和团队领导者加速和优化机器学习和深度学习模型。
实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并通过Comet 自定义面板可视化模型预测结果!Comet 确保您不会丢失工作轨迹,并使各种规模的团队都能轻松共享结果和开展协作!
入门
安装Comet
配置Comet 凭据
通过YOLOv5 配置Comet 有两种方法。
您可以通过环境变量设置凭据
环境变量
export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'
或创建一个 .comet.config
文件,并在其中设置凭据。
Comet 配置文件
[comet]
api_key=<Your Comet 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 中对运行情况进行可视化分析。
举例说明
或者,最好在这本 Colab 笔记本中亲自尝试一下
自动登录
默认情况下,Comet 将记录以下项目
衡量标准
参数
- 模型超参数
- 通过命令行选项传递的所有参数
可视化
- 模型预测与验证数据的混淆矩阵
- 所有等级的 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
参数到训练脚本。这将根据以下参数提供的时间间隔值,将记录的检查点保存到Comet save-period
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
测井模型预测
默认情况下,模型预测(图像、基本真实标签和边界框)将被记录到Comet 。
您可以通过传递 bbox_interval
命令行参数。可以使用Comet 的 物体检测 自定义面板。该频率相当于每 N 个批次的数据,每个 纪元.在下面的示例中,我们记录每个纪元的第二批数据。
注意: 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 Artifacts
如果您想使用 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 UI 中预览数据。
Comet 会自动记录数据集的元数据。 yaml
文件
使用已保存的人工制品
如果您想使用来自Comet Artifacts 的数据集,请设置 path
变量 yaml
文件指向以下人工制品资源 URL。
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"
然后按以下方式将此文件传给训练脚本
人工制品还可以让你跟踪数据在实验工作流程中的流向。在这里,您可以看到一张图表,显示使用了您上传的数据集的所有实验。
恢复训练跑步
如果您的训练运行因任何原因中断,例如互联网连接中断,您可以使用 resume
标志和Comet 运行路径。
运行路径的格式如下 comet://<your workspace name>/<your project name>/<experiment id>
.
这将把运行恢复到中断前的状态,包括从检查点恢复模型、恢复所有超参数和训练参数,以及下载Comet 数据集工件(如果原始运行中使用了这些工件)。恢复后的运行将继续记录Comet UI 中现有实验的日志。
使用Comet 优化器进行超参数搜索
YOLOv5 还与Comet 的优化器集成,可在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 <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
结果可视化
Comet 提供了多种可视化清扫结果的方法。点击此处查看一个已完成清扫的项目