把yolov8的loss曲线绘制到一张图上
时间: 2025-04-01 22:12:00 浏览: 72
### 绘制YOLOv8训练过程中损失曲线的方法
为了将YOLOv8的训练过程中的损失曲线可视化到同一张图表中,可以利用深度学习框架 Ultralytics 提供的日志功能以及 Python 的绘图库 Matplotlib 或 Seaborn 来实现。以下是具体方法:
#### 数据提取
Ultralytics YOLOv8 在训练期间会自动记录日志数据,这些数据通常存储在一个 CSV 文件或 TensorBoard 中。可以通过读取该文件来获取每次 epoch 的 loss 值。
如果使用的是默认配置,则可以在 `runs/train` 目录下的子文件夹中找到名为 `results.csv` 的文件[^1]。此文件包含了每轮训练的主要指标,例如 box_loss、cls_loss 和 dfl_loss。
#### 使用Matplotlib绘制Loss曲线
下面是一个完整的代码示例,展示如何加载并绘制多个 Loss 曲线于一张图表上:
```python
import matplotlib.pyplot as plt
import pandas as pd
# 加载 results.csv 文件
csv_path = 'runs/train/exp/results.csv' # 修改为你实际的结果路径
data = pd.read_csv(csv_path)
# 获取不同类型的 Loss 列
box_loss = data[' metrics/box_loss']
cls_loss = data['metrics/cls_loss']
dfl_loss = data['metrics/dfl_loss']
# 创建图形对象
plt.figure(figsize=(10, 6))
# 添加各个 Loss 曲线
plt.plot(box_loss, label='Box Loss', color='blue')
plt.plot(cls_loss, label='Classification Loss', color='green')
plt.plot(dfl_loss, label='Distance Focal Loss', color='red')
# 设置图表属性
plt.title('Training Loss Curves of YOLOv8', fontsize=16)
plt.xlabel('Epochs', fontsize=14)
plt.ylabel('Loss Value', fontsize=14)
plt.legend(fontsize=12)
plt.grid(True)
# 显示图表
plt.show()
```
上述脚本实现了从指定路径加载结果文件,并将其三种主要 Loss 类型 (box_loss, cls_loss, dfl_loss) 可视化为一条折线图上的三条独立曲线[^2]。
#### 自定义TensorBoard可视化
另一种更高级的方式是直接通过 TensorBoard 查看训练过程中的动态变化情况。只需运行以下命令启动 TensorBoard 即可访问实时更新的数据面板:
```bash
tensorboard --logdir runs/train/
```
打开浏览器输入地址 http://localhost:6006 后能够看到更加详细的统计信息和趋势分析界面[^3]。
#### 注意事项
当尝试手动解析日志或者调整超参数重新开始新一次实验之前,请务必确认旧有记录不会被覆盖;另外也要注意保存好重要阶段产生的权重文档以防丢失。
阅读全文
相关推荐


















