学习资源站

论文必备-绘制RT-DETR模型在训练过程中,精准率,召回率,mAP_0.5,mAP_0.50.95,以及各种损失的变化曲线_detr模型如何绘制结果-

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

一、本文介绍

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

在这里插入图片描述

在这里插入图片描述

二、results.csv文件结构介绍

results.csv 文件是模型在训练过程中,实时记录训练的结果,和当时控制台输出的信息一致。当然还包含一些验证损失,学习率变化等数据。详细的记录项包括: epoch train/box_loss train/cls_loss train/dfl_loss metrics/precision metrics/recall metrics/mAP_0.5 metrics/mAP_0.5:0.95 val/box_loss val/cls_loss val/dfl_loss x/lr0 x/lr1 x/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_loss val/cls_loss val/dfl_loss :在验证集上的损失变换。

x/lr0 x/lr1 x/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指标绘制效果如下:

在这里插入图片描述