【YOLO日志文件】读取和可视化events.out.tfevents文件


前言

目的:读取和可视化events.out.tfevents文件
问题:yolo官方程序默认出的图样式和数据不够详细,如何提取出相应数据,方便自己查看详细和处理数据
方法:通过tensorboardX和tensorboard库读取数据,再通过matplotlib进行可视化

例如yolo结果数据都是固定样式图,不能方便查看其中每个点的具体数值

yolov8结果图

方法

读取数据

为了读取 .tfevents 文件,我们可以使用tensorboardtensorboardX 库的 event_accumulator 模块。展示如何使用 event_accumulator 读取 .tfevents 文件的内容:

如果下载失败可以替换清华园

  1. 安装 tensorboardX

    pip install tensorboardX
    pip install tensorboard
    
  2. 使用 event_accumulator 读取 .tfevents 文件

    from tensorboardX import SummaryWriter
    from tensorboard.backend.event_processing import event_accumulator
    
    # 指定 .tfevents 文件的路径
    log_dir = "path/to/your/tfevents/file"
    
    # 加载事件文件
    ea = event_accumulator.EventAccumulator(log_dir)
    ea.Reload()
    
    # 获取所有标量的标签
    tags = ea.Tags()['scalars']
    
    # 打印所有标量的标签及其对应的值
    for tag in tags:
        events = ea.Scalars(tag)
        for event in events:
            print(f"Step: {event.step}, Value: {event.value}, Timestamp: {event.wall_time}")
    

输出的结果
里面展示了每条日志里面的数据,通过类似event.step调用属性
在这里插入图片描述

通过这种方式,您可以直接从 .tfevents 文件中读取和打印标量值,而无需启动 TensorBoard。

可视化数据

我们可以将读取事件文件的数据与Matplotlib的可视化相结合,生成一个折线图展示标量值随时间或步骤的变化。下面是一个完整的示例代码,将读取事件文件的数据并绘制成折线图。

注意:在使用此代码时,请确保已经安装了matplotlib库。如果未安装,可以使用以下命令进行安装:

pip install matplotlib
import matplotlib.pyplot as plt
from tensorboard.backend.event_processing import event_accumulator

# 指定 .tfevents 文件的路径
log_dir = r"D:\lab\events.out.tfevents.1719811674.autodl-container-b23f4d8ce8-f821a354"

# 加载事件文件
ea = event_accumulator.EventAccumulator(log_dir)
ea.Reload()

# 获取所有标量的标签
tags = ea.Tags()['scalars']

# 绘制折线图
plt.figure(figsize=(10, 6))

# 遍历所有标量标签
for tag in tags:
    events = ea.Scalars(tag)
    steps = [event.step for event in events]
    values = [event.value for event in events]
    
    # 绘制每个标量标签的折线图
    plt.plot(steps, values, marker='o', linestyle='-', label=tag)

# 添加标题和标签
plt.title('Scalar Values Over Steps')
plt.xlabel('Steps')
plt.ylabel('Values')
plt.legend()

# 显示图表
plt.grid(True)
plt.show()
  1. 导入库

    • matplotlib.pyplot:用于绘制图表。
    • event_accumulator:用于读取TensorBoard的事件文件。
  2. 指定事件文件路径

    • 将路径log_dir替换为你的事件文件的实际路径。
  3. 加载事件文件

    • 使用EventAccumulator来加载指定路径的事件文件,并调用Reload方法来读取文件内容。
  4. 获取标量标签

    • 使用Tags()方法获取所有的标量标签。
  5. 绘制折线图

    • 创建一个新的图形窗口,并设置窗口大小。
    • 遍历所有标量标签,对于每个标签,获取对应的所有事件(时间、步骤和值),并提取步骤和值。
    • 使用plt.plot绘制每个标量标签的折线图。
    • 最后,设置图表的标题、标签和图例,并显示图表。

总结

本文主要介绍读取和可视化events.out.tfevents文件,方便自定义的处理数据,例如可视化和分析详细的数据,不局限于原来yolo出现的图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值