菜单

实验跟踪

相关源文件

目的与范围

本文档提供了与 YOLOv5 集成的实验跟踪系统的技术信息。实验跟踪允许您监控、可视化和比较训练运行,帮助您优化模型并保持可复现性。YOLOv5 提供与 TensorBoard、Weights & Biases、ClearML 和 Comet ML 等流行实验跟踪平台的原生集成。

架构概述

YOLOv5 的实验跟踪围绕着集中的 Loggers 类构建,该类管理多个日志后端,并为训练流水线提供一致的接口来记录指标、工件和可视化。

实验跟踪架构

来源: utils/loggers/__init__.py78-348

训练流水线中的日志事件

来源: utils/loggers/__init__.py171-338

支持的平台

YOLOv5 集成了以下实验跟踪平台

平台特性配置
CSV内置基本指标,轻量级,兼容所有设置始终启用
TensorBoardSummaryWriter指标、图表、直方图、模型架构可视化通过 --include tb 启用
Weights & BiasesWandbLogger指标、媒体、工件、模型注册表、仪表板、报告通过 --include wandb 启用
ClearMLClearmlLogger指标、媒体、远程执行、超参数优化通过 --include clearml 启用
Comet MLCometLogger指标、媒体、代码跟踪、超参数优化通过 --include comet 启用

来源: utils/loggers/__init__.py18 utils/loggers/wandb/wandb_utils.py33-196 utils/loggers/clearml/clearml_utils.py65-228

自动跟踪的数据

YOLOv5 的日志系统在训练期间会自动捕获以下数据

指标和参数

  • 训练损失:框损失、目标损失、分类损失
  • 验证指标:精度、召回率、mAP_0.5、mAP_0.5:0.95
  • 学习率:每个参数组的学习率
  • 超参数:模型配置、训练设置

来源: utils/loggers/__init__.py90-104

可视化

  • 绘图:混淆矩阵、精确率-召回率曲线、F1 曲线
  • 图像:Mosaic 增强、带边界框的验证预测
  • 模型结构:网络架构图(用于 TensorBoard)

来源: 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:TensorBoard
  • wandb:Weights & Biases
  • clearml:ClearML
  • comet:Comet ML

来源: utils/loggers/__init__.py18 utils/loggers/__init__.py81-89

设置凭证

对于第三方服务,您需要设置身份验证

  1. Weights & Biases:需要通过 wandb login 命令或环境变量进行登录
  2. ClearML:使用 clearml-init 设置凭证
  3. Comet ML:通过环境变量或配置文件中的 API 密钥进行配置

来源: 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

平台特定功能

Weights & Biases

WandbLogger 提供了实验跟踪和工件管理的专用功能

  • 实验恢复:可以从之前的运行中恢复训练
  • 模型注册表:将训练好的模型记录为工件进行版本管理
  • 项目组织:按项目对运行进行分组,便于比较
  • 运行可视化:显示带边界框的验证图像

来源: utils/loggers/wandb/wandb_utils.py119-153 utils/loggers/wandb/wandb_utils.py154-157

ClearML

ClearML 同时提供实验跟踪和远程执行功能

  • 数据集版本管理:支持通过 ClearML Data 进行数据集管理
  • 远程执行:可将训练任务发送到远程机器
  • 超参数优化:内置参数调优工具
  • 模型注册表:与 ClearML 的模型管理集成

来源: utils/loggers/clearml/clearml_utils.py142-154 utils/loggers/clearml/README.md85-108 utils/loggers/clearml/README.md174-187

Comet ML

Comet ML 提供广泛的实验跟踪和可视化功能

  • 超参数优化:通过 Comet Optimizer 实现
  • 实验恢复:可以恢复中断的训练运行
  • 项目工作区:将实验组织到项目中
  • 自定义面板:用于对象检测的专用可视化

来源: utils/loggers/comet/README.md78-96 utils/loggers/comet/README.md135-162 utils/loggers/comet/README.md234-246

与训练流水线的集成

Loggers 类在训练开始时初始化,并提供在训练过程的关键点被调用的回调方法

初始化

来源: utils/loggers/__init__.py81-108

生命周期回调

训练脚本在适当的时候调用这些方法

  1. 预训练on_pretrain_routine_start(), on_pretrain_routine_end()
  2. 训练循环on_train_batch_end(), on_train_epoch_end()
  3. 验证on_val_start(), on_val_batch_end(), on_val_end()
  4. 模型保存on_model_save()
  5. 训练结束on_train_end()

每个方法都会将调用转发给已启用的日志后端,允许每个平台适当处理该事件。

来源: utils/loggers/__init__.py171-338

数据集集成

一些日志平台提供与 YOLOv5 集成的数据集版本控制功能

ClearML 数据集使用

来源: utils/loggers/clearml/README.md121-144

用于通用日志记录

除了训练,YOLOv5 还提供了 GenericLogger 类用于非任务特定日志记录

来源: utils/loggers/__init__.py350-455

最佳实践

  1. 一致的项目名称:为更好地组织,在运行中使用一致的项目名称
  2. 定期检查点:设置适当的 --save-period 以定期保存模型检查点
  3. 超参数日志记录:始终记录超参数以实现可复现性
  4. 图像采样:控制记录图像的数量,以平衡细节与存储
  5. 远程执行:对于长时间运行的实验,请考虑使用 ClearML 进行远程执行

来源: utils/loggers/clearml/README.md174-226 utils/loggers/comet/README.md100-117