本文档提供了与 YOLOv5 集成的实验跟踪系统的技术信息。实验跟踪允许您监控、可视化和比较训练运行,帮助您优化模型并保持可复现性。YOLOv5 提供与 TensorBoard、Weights & Biases、ClearML 和 Comet ML 等流行实验跟踪平台的原生集成。
YOLOv5 的实验跟踪围绕着集中的 Loggers 类构建,该类管理多个日志后端,并为训练流水线提供一致的接口来记录指标、工件和可视化。
来源: utils/loggers/__init__.py78-348
来源: utils/loggers/__init__.py171-338
YOLOv5 集成了以下实验跟踪平台
| 平台 | 类 | 特性 | 配置 |
|---|---|---|---|
| CSV | 内置 | 基本指标,轻量级,兼容所有设置 | 始终启用 |
| TensorBoard | SummaryWriter | 指标、图表、直方图、模型架构可视化 | 通过 --include tb 启用 |
| Weights & Biases | WandbLogger | 指标、媒体、工件、模型注册表、仪表板、报告 | 通过 --include wandb 启用 |
| ClearML | ClearmlLogger | 指标、媒体、远程执行、超参数优化 | 通过 --include clearml 启用 |
| Comet ML | CometLogger | 指标、媒体、代码跟踪、超参数优化 | 通过 --include comet 启用 |
来源: utils/loggers/__init__.py18 utils/loggers/wandb/wandb_utils.py33-196 utils/loggers/clearml/clearml_utils.py65-228
YOLOv5 的日志系统在训练期间会自动捕获以下数据
来源: utils/loggers/__init__.py90-104
来源: utils/loggers/__init__.py184-193 utils/loggers/__init__.py200-210 utils/loggers/__init__.py307-315
来源: utils/loggers/__init__.py292-302 utils/loggers/__init__.py316-338
实验跟踪通过训练时使用的 --include 标志进行配置
默认情况下,CSV 日志始终启用。`--include` 标志的可用选项包括:
tb:TensorBoardwandb:Weights & Biasesclearml:ClearMLcomet:Comet ML来源: utils/loggers/__init__.py18 utils/loggers/__init__.py81-89
对于第三方服务,您需要设置身份验证
wandb login 命令或环境变量进行登录clearml-init 设置凭证来源: utils/loggers/wandb/wandb_utils.py33-78 utils/loggers/clearml/README.md38-46 utils/loggers/clearml/README.md155-169 utils/loggers/clearml/README.md174-187
WandbLogger 提供了实验跟踪和工件管理的专用功能
来源: utils/loggers/wandb/wandb_utils.py119-153 utils/loggers/wandb/wandb_utils.py154-157
ClearML 同时提供实验跟踪和远程执行功能
来源: utils/loggers/clearml/clearml_utils.py142-154 utils/loggers/clearml/README.md85-108 utils/loggers/clearml/README.md174-187
Comet ML 提供广泛的实验跟踪和可视化功能
来源: utils/loggers/comet/README.md78-96 utils/loggers/comet/README.md135-162 utils/loggers/comet/README.md234-246
Loggers 类在训练开始时初始化,并提供在训练过程的关键点被调用的回调方法
来源: utils/loggers/__init__.py81-108
训练脚本在适当的时候调用这些方法
on_pretrain_routine_start(), on_pretrain_routine_end()on_train_batch_end(), on_train_epoch_end()on_val_start(), on_val_batch_end(), on_val_end()on_model_save()on_train_end()每个方法都会将调用转发给已启用的日志后端,允许每个平台适当处理该事件。
来源: utils/loggers/__init__.py171-338
一些日志平台提供与 YOLOv5 集成的数据集版本控制功能
来源: utils/loggers/clearml/README.md121-144
除了训练,YOLOv5 还提供了 GenericLogger 类用于非任务特定日志记录
来源: utils/loggers/__init__.py350-455
--save-period 以定期保存模型检查点来源: utils/loggers/clearml/README.md174-226 utils/loggers/comet/README.md100-117