使用python实现yolov5运行结果生成的CSV文件实现曲线处理

本文详细介绍了如何使用Python读取并绘制yolov5模型在不同数据集上的训练过程中的mAP曲线,通过csv文件对比'改进数据集'与'原数据集'的性能。适合数据处理人员理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、功能介绍

通过训练yolov5模型后在tensorboard中下载相关CSV文件进行曲线绘制

1、处理代码

代码如下:

import csv
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib as mpl
import numpy as np
from matplotlib.font_manager import FontProperties
mpl.rcParams['font.family'] = 'sans-serif'
# mpl.rcParams['font.sans-serif'] = 'NSimSun,Times New Roman' #设置字体
plt.rcParams['font.sans-serif']=['SimHei'] #正常显示中文标签
plt.figure()                      #设置图框
df = pd.read_csv("run-exp7-tag-metrics_mAP_0.5.csv")   #读取文件1
step = df["Step"].values.tolist()                     #通过文件表头信息读取文件内容
map = df["Value"].values.tolist()
plt.plot(step,map,color='red',label='yolov5s+改进数据集')       #设置曲线相关系数
df = pd.read_csv("run-exp9-tag-metrics_mAP_0.5.csv")   #读取文件1
step = df["Step"].values.tolist()                     #通过文件表头信息读取文件内容
map = df["Value"].values.tolist()
plt.plot(step,map,color='black',label='yolov5s+原数据集')       #设置曲线相关系数
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)

plt.ylim(0, 1)
plt.xlim(0, 300)                        #设置坐标轴取值范围
plt.xlabel('epochs', fontsize=10)
plt.ylabel('mAP', fontsize=10)
plt.legend(fontsize=8,loc="upper right") #设置标签位置及大小
plt.show()

提示

可以通过如下代码块添加多组csv文件进行数据对比
df = pd.read_csv("run-exp7-tag-metrics_mAP_0.5.csv")   #读取文件1
step = df["Step"].values.tolist()                     #通过文件表头信息读取文件内容
map = df["Value"].values.tolist()
plt.plot(step,map,color='red',label='yolov5s')       #设置曲线相关系数

ps: 希望对使用python进行数据处理的同志们有用呀

### 查看和分析YOLOv5训练时的损失函数结果YOLOv5的训练过程中,监控损失函数的结果对于评估模型收敛性和性能至关重要。通常情况下,在训练期间会记录三种主要类型的损失:置信度损失、分类损失以及边界框回归损失。 #### 使用日志文件查看损失变化趋势 YOLOv5默认会在每次迭代后打印当前批次的损失情况到控制台,并且还会定期保存包含这些信息的日志文件。可以通过读取位于`runs/train/expX/`目录下的`.txt`或`.csv`格式的日志文件来获取详细的数值化历史记录[^2]。 ```bash cat runs/train/exp/results.txt ``` 此命令可以显示整个训练周期内的所有损失数据点。 #### 可视化工具的应用 为了更加直观地理解损失的变化规律,推荐利用可视化库如TensorBoard或者Matplotlib绘制图表: - **TensorBoard**: 如果选择了支持TensorBoard选项,则可以直接启动服务并访问Web界面观察实时更新的曲线图。 ```python from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter('logs') for epoch, loss in enumerate(losses): writer.add_scalar('Loss', loss.item(), global_step=epoch) ``` - **Matplotlib**: 对于离线数据分析来说,加载已有的日志文件并通过Python脚本生成静态图像也是一种常见做法。 ```python import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('path_to_your_log_file.csv') epochs = range(len(df)) fig, ax = plt.subplots() ax.plot(epochs, df['box_loss'], label='Box Loss') ax.plot(epochs, df['obj_loss'], label='Objectness Loss') ax.plot(epochs, df['cls_loss'], label='Classification Loss') ax.set_xlabel('Epochs') ax.set_ylabel('Loss Value') ax.legend() plt.show() ``` 通过上述方法可以获得关于不同阶段下各类损失项的具体表现,进而帮助调整超参数设置以优化最终效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值