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

news2024/10/10 13:47:41

一、本文介绍

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

在这里插入图片描述

在这里插入图片描述

文章目录

  • 一、本文介绍
  • 二、results.csv文件结构介绍
  • 三、各指标绘制
    • 3.1 代码
    • 3.2 使用说明
    • 3.3 效果
  • 四、多文件绘制
    • 4.1 代码
    • 4.2 使用说明
    • 4.3 效果

二、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指标绘制效果如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202154.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React(一) 认识React、熟悉类组件、JSX书写规范、嵌入变量表达式、绑定属性

文章目录 一、初始React1. React的基本认识2. Hello案例2.1 三个依赖2.2 渲染页面2.3 hello案例完整代码 二、类组件1. 封装类组件2. 组件里的数据3. 组件里的函数 (重点)4. 案例练习(1) 展示电影列表 三、JSX语法1. 认识JSX2. JSX书写规范及注释3. JSX嵌入变量作为子元素4. JS…

QT 10.8

Xmind: QT的核心机制 QT对话框

Python Django ORM 的工作原理

在 Web 开发中,处理数据库是非常常见的需求,尤其是在构建动态应用程序时。Django 作为一个流行的 Python Web 框架,提供了一套强大的工具帮助开发者轻松管理数据库。Django 的 ORM(对象关系映射,Object-Relational Map…

【STM32单片机_(HAL库)】4-5-2【定时器TIM】【感应开关盖垃圾桶】HC-SR04超声波模块实验

1.硬件 STM32单片机最小系统HC-SR04超声波模块 2.软件 hcsr04驱动文件添加main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "uart1.h" #include "hcsr04.h"int main(void) {HAL_Init(); …

k8s微服务

一 、什么是微服务 用控制器来完成集群的工作负载,那么应用如何暴漏出去?需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。 借助Service,应用可以实现服务发现和负载均衡。 service默认只支持4层负载均…

全网首创Windows Powershell 批量创建、重命名和拷贝文件夹和文件到指定目录

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL)。 “ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利…

Redis 完整指南:命令与原理详解

目录 1. Redis 概述什么是 RedisRedis 应用场景 2. 安装与启动Redis 安装步骤源代码安装使用包管理器安装(以 Ubuntu 为例) 编译与启动命令编客户端连接 3. Redis 存储结构KV 存储结构数据结构类型String(字符串)List(…

selenium有多个frame页时的操作方法(5)

之前文章我们提到,在webdriver.WebDriver类有一个switch_to方法,通过switch_to.frame()可以切换到不同的frame页然后才再定位某个元素做一些输入/点击等操作。 比如下面这个测试网站有2个frame页:http://www.sahitest.com/demo/framesTest.h…

支付宝开放平台-开发者社区——AI 日报「10 月 10 日」

1 AI逆向绘画火了!一键重绘梵高《星空》,来自华盛顿大学 量子位|阅读原文 这项魔法来自华盛顿大学,项目名为Inverse Painting,相关论文已入选SIGGRAPH Asia 2024,其中两位作者还是东北大学(Bo…

车载SerDes历史和发展概述

1. 场景起源 1.1 原始时代: 在古老的很久很久以前,摄像头和显示屏等接口是多种多样的,丰富多彩的。大家各凭本事,各显神通,在各种地盘上成立各种帮派。比如CVBS、DVP、AHD、USB。 CVBS,包括后面的AHD&a…

【puppeteer】wvp-puppeteer制作 过程

、 制作 docker build -t dxw-pupet4 -f .\dockerfile2 . docker run -itd --name dxw4 -p 35105:35105 dxw-pupet4 推送到私库 docker tag dxw-pupet4:latest dualvenregistry:5000/wvp-puppeteer:v1.0 docker push dualvenregistry:5000/wvp-puppeteer:v1.0 重启桌面上…

2024.10.9 QT事件

1.思维导图 2.一个圆形根据wsad上下左右移动&#xff0c;超出界限则不移动。鼠标点击和双击事件测试。 1.main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();re…

JAVA《接口》

文章目录 一、接口是什么&#xff1f;1.1 接口的概念1.2 接口与类的相似点和区别1.3 接口的特性 二、接口的使用2.1 接口的实现2.2 实现多个接口2.3 接口之间的扩展(继承) 三、接口的使用实例3.1 Comparable接口3.2 Comparator接口3.3 Clonable接口3.3.1 使用Clonable接口3.3.2…

Linux——cp-mv-rm命令

cp命令 复制文件 cp test01.txt test02.txt 复制文件夹 cp -r hsy01 hsy02 mv命令 移动文件/文件夹 rm命令 删除文件 rm test.txt 删除文件夹&#xff08;目录 rm -r hsy01 通配符 * 匹配任意内容 注意* 位置 强制删除-f root超级管理员

数字化转型的深度解析:塑造未来企业的关键策略

在当今技术飞速发展的背景下&#xff0c;数字化转型&#xff08;_Digital Transformation_&#xff09;已成为企业保持竞争力的必要手段。随着云计算、物联网&#xff08;IoT&#xff09;、大数据和人工智能等技术的不断成熟&#xff0c;企业通过数字化手段优化业务流程、提升客…

ESXI 的下载 2024 版

ESXI 的下载 前言 最近收到了部分小伙伴的反馈&#xff0c;VMware 的下载官网上 ESXI 自动跳转进入了 BroadCom 的支持页面&#xff0c;难以找到 ESXI 的官方资源&#xff0c;这里我将为大家做出下载的相关指引。 ESXI 下载指引 跳转进入 BroadCom 的支持页面 &#x1f449; …

Python | Leetcode Python题解之第467题环绕字符串中唯一的子字符串

题目&#xff1a; 题解&#xff1a; class Solution:def findSubstringInWraproundString(self, p: str) -> int:dp defaultdict(int)k 0for i, ch in enumerate(p):if i > 0 and (ord(ch) - ord(p[i - 1])) % 26 1: # 字符之差为 1 或 -25k 1else:k 1dp[ch] max…

Web Service Sender ParseError Invalid byte 1 of 1-byte UTF-8 sequence

说明 发送webservice报错 Invalid UTF-8 start byte 0xfc when using Web Service Sender Web Service Sender error ERROR MESSAGE: Error creating web service dispatch com.sun.xml.ws.streaming.XMLStreamReaderException: XML reader error: javax.xml.stream.XMLStream…

k8s之ingress-nginx-controller安装

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/30 01:25 要在master节点上安装 helm repo add ingress-nginx Welcome - Ingress-Nginx Controller helm search repo ingress-nginx helm pull ingress-nginx/ingress-nginx --version 4.4.2 mv ingress-nginx-4.4.…

为Floorp浏览器添加搜索引擎及搜索栏相关设置. 2024-10-08

Floorp浏览器开源项目地址: https://github.com/floorp-Projects/floorp/ 以下内容同样适用于firefox和大部分基于firefox的桌面版浏览器 1.第一步 为Floorp浏览器添加搜索栏 (1.工具栏空白处 次键选择 定制工具栏 (2. 把 搜索框 拖动至工具栏 2.添加搜索引擎 以添加 搜狗搜索…