YOLOv5 与Comet
本指南将介绍如何将YOLOv5 与 Comet来跟踪、比较和优化机器学习实验。
关于Comet
Comet开发工具,帮助数据科学家、工程师和团队领导者加速和优化机器学习和深度学习模型。
实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,利用Comet 自定义面板可视化模型预测!Comet 可确保您永远不会丢失您的工作轨迹,并使各种规模的团队都能轻松共享结果和开展协作!
入门
安装Comet
配置Comet 凭据
通过YOLOv5 配置Comet 有两种方法。
您可以通过环境变量设置证书:
环境变量
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
或创建一个 .comet.config
文件,并在其中设置凭据:
Comet 配置文件
运行培训脚本
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
就是这样!Comet 会自动记录超参数、命令行参数、训练和验证指标。您可以在Comet 用户界面上对运行情况进行可视化分析。
举例说明
或者,在这本 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="yolov5" # 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=30 # 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="last.pt" # 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://WORKSPACE_NAME/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 提供了多种可视化扫描结果的方法。点击这里查看一个已完成扫描的项目。