自学内容网 自学内容网

绘制YOLOv11模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线

一、本文介绍

本文用于绘制模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.5:0.95,以及各种损失的变化曲线。用以比较不同算法的收敛速度,最终精度等,并且能够在论文中直观的展示改进效果。支持多文件的数据比较。

在这里插入图片描述

在这里插入图片描述

二、results.csv文件结构介绍

results.csv文件是模型在训练过程中,实时记录训练的结果,和当时控制台输出的信息一致。当然还包含一些验证损失,学习率变化等数据。详细的记录项包括:epochtrain/box_losstrain/cls_losstrain/dfl_lossmetrics/precisionmetrics/recallmetrics/mAP_0.5metrics/mAP_0.5:0.95val/box_lossval/cls_lossval/dfl_lossx/lr0x/lr1x/lr2

epoch:记录训练的轮次,总轮次为训练文件中设置的epochs大小。

train/box_loss:边界框损失。在训练过程中,此值逐渐变小,越小表示模型预测的边界框与真实边界框之间的差异越小。

train/cls_loss:分类损失。在训练过程中,此值逐渐变小,越小表示模型对目标类别的预测越准确。

train/dfl_loss:分布焦点损失。将边界框的回归问题转化为对边界框四个边的分布预测问题,越小表示预测越准确。

metrics/precision:精确率也称为查准率。用于衡量所有被预测为正类的样本中,真正的正类样本所占的比例。

metrics/recall:召回率也称为查全率。用于衡量所有实际为正类的样本中,被正确预测为正类的样本所占的比例。

metrics/mAP_0.5:衡量目标检测模型在IoU 阈值为0.5时,对不同类别的检测性能的平均水平。

metrics/mAP_0.5:0.95:表示在不同IoU阈值(从0.5到0.95,步长0.05)上的平均mAP。

val/box_lossval/cls_lossval/dfl_loss:在验证集上的损失变换。

x/lr0x/lr1x/lr2:训练过程中的学习率变化。

三、各指标绘制

3.1 代码

此处仅以mAP_0.5这一列的数据为例进行展示,其余指标的绘制流程,代码与此完全一致。

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件
data = pd.read_csv('results.csv')  #替换成训练结果的csv路径

# 获取'metrics/mAP_0.5'列的数据
mAP_05_data = data['     metrics/mAP_0.5']

# 绘制曲线
plt.plot(mAP_05_data, label='Model-1', color='red', linewidth=1)

# 添加图例
plt.legend(loc='lower right')

# 添加标题和坐标轴标签
plt.xlabel('Epoch')
plt.ylabel('mAP_0.5(%)')
plt.title('mAP_0.5 Curve')

# 网格线
plt.grid(True)

# 保存图像到同目录下
plt.savefig('mAP_05_curve.png')
# plt.show()

3.2 使用说明

  1. 代码中,每一步均作了注释,可自行修改。
  2. 此代码的位置要和results.csv文件在同一目录下,或者在data = pd.read_csv('results.csv')中指定csv路径。
  3. mAP_05_data = data[' metrics/mAP_0.5']这一行中,要注意列名是要包含前方这些空格的,这里很重要。想要绘制那个指标,直接从csv文件中复制对应的列名,确保无误。要换成其他指标,只需要修改这里的列名即可。

在这里插入图片描述

3.3 效果

单文件的mAP_0.5指标绘制效果如下:

在这里插入图片描述

四、多文件绘制

4.1 代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取 CSV 文件
data = pd.read_csv('results.csv')  #替换成训练结果的csv路径
data_2 = pd.read_csv('results (1).csv') #替换成训练结果的csv路径
data_3 = pd.read_csv('results (2).csv') #替换成训练结果的csv路径

# 获取'metrics/mAP_0.5'列的数据
mAP_05_data = data['     metrics/mAP_0.5']
mAP_05_data_2 = data_2['     metrics/mAP_0.5']
mAP_05_data_3 = data_3['     metrics/mAP_0.5']

# 绘制曲线
plt.plot(mAP_05_data, label='Model-1', color='red', linewidth=1)
plt.plot(mAP_05_data_2, label='Model-2', color='green', linewidth=1)
plt.plot(mAP_05_data_3, label='Model-3', color='blue', linewidth=1)

# 添加图例
plt.legend(loc='lower right')

# 添加标题和坐标轴标签
plt.xlabel('Epoch')
plt.ylabel('mAP_0.5(%)')
plt.title('mAP_0.5Curve')

# 网格线
plt.grid(True)

# 保存图像到同目录下
# plt.savefig('mAP_05_curve.png')
plt.show()

4.2 使用说明

除了满足单文件绘制的要求以外还需注意在添加多个文件时,只需要分别指定文件路径,获取指定列名,绘制曲线,三者全部完成后就可以在一张图上绘制结果并进行比较了。

4.3 效果

多文件的mAP_0.5指标绘制效果如下:

在这里插入图片描述


原文地址:https://blog.csdn.net/qq_42591591/article/details/142818575

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!