You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将YOLOV4 Darknet训练日志接入Tensorboard实现指标可视化?

AlexeyAB版Darknet训练YOLOv4对接TensorBoard实操方法

1. 基础环境配置

在你现有Colab笔记本的Darknet编译完成后、启动训练前,新开代码单元运行以下命令:

  • 安装TensorBoard依赖
!pip install tensorboard
  • 加载Colab内置的TensorBoard扩展
    %load_ext tensorboard
  • 创建TensorBoard日志专属存储目录
    !mkdir -p ./tb_logs

2. 修改训练启动命令

原训练命令需要调整输出规则,把所有终端运行日志同步写入本地文件,必须加-map参数才会在训练过程中周期输出mAP指标,命令格式如下:
./darknet detector train 你的obj.data路径 你的yolov4-custom.cfg路径 预训练权重路径 -map 2>&1 | tee train.log
运行该命令启动训练后,确认当前目录下已生成train.log文件且文件大小随训练持续增长。

3. 启动实时日志解析脚本

新开一个Colab代码单元,运行以下实时解析脚本,脚本会自动扫描训练日志的新增内容,提取Loss、学习率、mAP等核心指标,转换成TensorBoard可读的日志格式:

import time
import re
from torch.utils.tensorboard import SummaryWriter
# 初始化日志写入器
writer = SummaryWriter(log_dir='./tb_logs')
log_path = './train.log'
last_pos = 0
current_step = 0

# 正则规则匹配训练日志对应字段
loss_pattern = re.compile(r'(\d+):\s+(\d+\.\d+)\s+avg,\s+(\d+\.\d+) rate,')
map_pattern = re.compile(r'mAP@0.5\s*=\s*(\d+\.\d+)')

while True:
    try:
        with open(log_path, 'r', encoding='utf-8', errors='ignore') as f:
            f.seek(last_pos)
            new_lines = f.readlines()
            last_pos = f.tell()
        for line in new_lines:
            # 提取迭代步、平均训练Loss、当前学习率
            loss_match = loss_pattern.search(line)
            if loss_match:
                current_step = int(loss_match.group(1))
                avg_loss = float(loss_match.group(2))
                lr = float(loss_match.group(3))
                writer.add_scalar('Train/AvgLoss', avg_loss, current_step)
                writer.add_scalar('Train/LearningRate', lr, current_step)
            # 提取验证集mAP@0.5指标
            map_match = map_pattern.search(line)
            if map_match:
                map_val = float(map_match.group(1))
                writer.add_scalar('Val/mAP@0.5', map_val, current_step)
        writer.flush()
    except FileNotFoundError:
        print("未检测到训练日志,等待训练启动...")
    time.sleep(10) # 每10秒扫描一次日志增量

脚本启动后会持续驻留运行,不需要额外手动操作。

4. 启动TensorBoard面板

再新开一个Colab代码单元,运行以下命令启动TensorBoard:
%tensorboard --logdir ./tb_logs
命令运行后Colab会直接内嵌展示TensorBoard面板,训练过程中的Loss、学习率、mAP曲线会随训练推进实时更新。

补充说明

  • 如果需要展示IOU、召回率、分类精确率等其他指标,只需要在解析脚本里新增对应正则匹配规则,从train.log中提取对应数值后,调用writer.add_scalar()方法写入即可
  • 训练中断重启前,记得删除旧的train.log文件和tb_logs目录下的历史日志,避免不同训练轮次的指标曲线错位
  • 不要在训练命令里加-dont_show以外的日志屏蔽参数,否则会导致正则规则匹配不到对应指标字段

内容的提问来源于stack exchange,提问作者Rawan Al Maawali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 19:51:18