YOLOv5 与Comet
本指南将介绍如何使用YOLOv5 与 Comet
关于Comet
Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.
实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并通过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 将记录以下项目
衡量标准
- Box Loss, Object Loss, Classification Loss for the training and validation data
- 验证数据的 mAP_0.5、mAP_0.5:0.95 指标。
- 验证数据的精确度和召回率
参数
- 模型超参数
- 通过命令行选项传递的所有参数
可视化
- Confusion Matrix of the model predictions on the validation data
- 所有等级的 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
command line argument. Predictions can be visualized using Comet's 物体检测 Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.
Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.
下面是一个使用面板的示例项目
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
environment variable to log mAP, precision, recall, f1 for each class.
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 提供了多种可视化清扫结果的方法。点击此处查看已完成清扫的项目