用Python绘制yolo训练结果比较图-论文需要

代码内容来自于网络用博客记录

利用训练生成的result.csv中数据,形成多模型的比较图。

代码中演示的是map50、map50-95、losss的比较图
在这里插入图片描述
在这里插入图片描述

import matplotlib.pyplot as plt
import pandas as pd
import numpy as npif __name__ == '__main__':# 列出待获取数据内容的文件位置# v5、v8都是csv格式的,v7是txt格式的result_dict = {'YOLOv5n-SPPF': r'/Users/Desktop/results/YOLOv5n-SPPF.csv','YOLOv5s-SPPF': r'/Users/Desktop/results/YOLOv5s-SPPF.csv','YOLOv8s-SPPF': r'/Users/Desktop/results/YOLOv8s-SPPF.csv','YOLOv8s-simSPPF': r'/Users/Desktop/results/YOLOv8s-simSPPF.csv','YOLOv8s-RELU': r'/Users/Desktop/results/YOLOv8s-RELU.csv','YOLOv8s-ASPP': r'/Users/Desktop/results/YOLOv8s-ASPP.csv',}# 绘制map50for modelname in result_dict:res_path = result_dict[modelname]ext = res_path.split('.')[-1]if ext == 'csv':data = pd.read_csv(res_path, usecols=[6]).values.ravel()    # 6是指map50的下标(每行从0开始向右数)else:   # 文件后缀是txtwith open(res_path, 'r') as f:datalist = f.readlines()data = []for d in datalist:data.append(float(d.strip().split()[10]))   # 10是指map50的下标(每行从0开始向右数)data = np.array(data)x = range(len(data))plt.plot(x, data, label=modelname, linewidth='1')   # 线条粗细设为1# 添加x轴和y轴标签plt.xlabel('Epochs')plt.ylabel('mAP@0.5')# 添加图例plt.legend()# 添加网格plt.grid()# 显示图像plt.savefig("mAP50.png", dpi=600)   # dpi可设为300/600/900,表示存为更高清的矢量图plt.show()# 绘制map50-95for modelname in result_dict:res_path = result_dict[modelname]ext = res_path.split('.')[-1]if ext == 'csv':data = pd.read_csv(res_path, usecols=[7]).values.ravel()    # 7是指map50-95的下标(每行从0开始向右数)else:with open(res_path, 'r') as f:datalist = f.readlines()data = []for d in datalist:data.append(float(d.strip().split()[11]))   # 11是指map50-95的下标(每行从0开始向右数)data = np.array(data)x = range(len(data))plt.plot(x, data, label=modelname, linewidth='1')# 添加x轴和y轴标签plt.xlabel('Epochs')plt.ylabel('mAP@0.5:0.95')plt.legend()plt.grid()# 显示图像plt.savefig("mAP50-95.png", dpi=600)plt.show()# 绘制训练的总lossfor modelname in result_dict:res_path = result_dict[modelname]ext = res_path.split('.')[-1]if ext == 'csv':box_loss = pd.read_csv(res_path, usecols=[1]).values.ravel()obj_loss = pd.read_csv(res_path, usecols=[2]).values.ravel()cls_loss = pd.read_csv(res_path, usecols=[3]).values.ravel()data = np.round(box_loss + obj_loss + cls_loss, 5)    # 3个loss相加并且保留小数点后5位(与v7一致)else:with open(res_path, 'r') as f:datalist = f.readlines()data = []for d in datalist:data.append(float(d.strip().split()[5]))data = np.array(data)x = range(len(data))plt.plot(x, data, label=modelname, linewidth='1')# 添加x轴和y轴标签plt.xlabel('Epochs')plt.ylabel('Loss')plt.legend()plt.grid()# 显示图像plt.savefig("loss.png", dpi=600)plt.show()

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

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

相关文章

如何通过逆向分析法挖掘真实需求?

逆向分析法从现有问题或现象出发,反向追溯其根本原因,以揭示隐藏需求和潜在问题。此方法有助于深入理解用户的真实需求,提高需求分析质量和效率,优化用户体验,提高用户满意度和忠诚度。如果缺乏逆行分析法,…

MCK主机加固系统——您的数字堡垒

在这个数字化的时代,信息安全如同企业的生命线,而MCK主机加固系统,就是守护这条生命线的坚固堡垒。让我为您揭开这款产品的神秘面纱,带您领略它如何成为企业信息安全的坚强后盾。 主机加固系统——您的数字堡垒 在网络攻击日益猖…

界面控件DevExpress WinForms垂直属性网格组件 - 拥有更灵活的UI选择(一)

DevExpress WinForms垂直&属性网格组件旨在提供UI灵活性,它允许用户显示数据集中的单个行或在其90度倒置网格容器中显示多行数据集。另外,用户可以把它用作一个属性网格,就像在Visual Studio IDE中那样。 P.S:DevExpress Win…

调度系统揭秘(上):调度系统设计思想

前言 在互联网领域中,几乎所有企业需要调度系统,主要原因是企业需要处理大量的数据,并且这些数据需要在不同的系统之间进行传输和处理。一部分是为了满足业务的需要,例如BI决策分析、图表展示、机器学习、数据挖掘;一…

前端项目打包部署

打包 vue-cli脚手架的前端项目,点击npm脚本中的第二条编译命令,即可将项目编译,生成一个dist的文件夹,里面存放的就是编译好的前端项目文件,没有脚手架就在终端敲击npm run build命令编译前端项目 部署 Nginx 介绍:…

linux配置用户

一,安装sudo与确保在管理员用户下 apt update apt install sudo -y 切换用户:密码不会显示,一个个输入然后回车。//图中是zfxt-->Stable用户切换 su root //root为用户名 以其他用户执行命令: su root ping baidu.com //su…

人工智能--制造业和农业

欢迎来到 Papicatch的博客 文章目录 🍉人工智能在制造业中的应用 🍈 应用场景及便利 🍍生产线自动化 🍍质量控制 🍍预测性维护 🍍供应链优化 🍈 技术实现及核心 🍍机器学习和…

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】感知器

感知器是一种非常早期的线性分类模型,作为一种简单的神经网络模型被提出。感知器是一种模拟生物神经元行为的机器,有与生物神经元相对应的部件,如权重(突触)、偏置(阈值)及激活函数(…

CobaltStrike权限传递MSF

一、测试环境 操作系统: 1.VMware17 2.kali 6.1.0-kali5-amd64 3.Win10x64 软件: 1.cs4.0 2.metasploit v6.3.4-dev 二、测试思路 1.cs是一款渗透测试工具,但没有漏洞利用的模块,我们可以在拿到目标主机的权限后,将…

高速直线导轨驱动与控制,精准稳定的运动核心元件

直线导轨在工业生产中,精度和稳定性是至关重要的。而在各种机械设备中,高精度直线导轨是提高设备运动控制精度和平稳性的核心部件,当我们考虑高速运动时,直线导轨的精度和稳定性是非常重要的因素。 直线导轨系统中如何确保高速运动…

怎么更快捷的修改图片大小?压缩图片jpg、png、gif的快捷方法

jpg作为最常用的一种图片格式,在遇到图片太大问题时,该如何操作能够快速在压缩图片jpg的大小呢?图片太大无法上传时目前常见的一个使用问题,只有将图片处理到合适的大小才可以正常在平台上传使用,一般情况下想要快速解…

LLM大模型开发的一般流程

何谓大模型开发? 将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。 主要功能点: 调用工具prompt engineering数据工程业务逻辑拆分 一般开发流程:…

Perl语言入门学习

引言 Perl是一种功能强大的编程语言,广泛用于文本处理、系统管理和Web开发。它以其灵活性和强大的正则表达式处理能力著称。本篇博客将介绍Perl的基础知识,并通过多个例子帮助初学者快速上手。 1. 安装Perl 在开始学习Perl之前,您需要确保…

Stable diffusion 3 正式开源

6月12日晚,著名开源大模型平台Stability AI正式开源了,文生图片模型Stable Diffusion 3 Medium(以下简称“SD3-M”)权重。 SD3-M有20亿参数,平均生成图片时间在2—10秒左右推理效率非常高,同时对硬件的需求…

贪心+构造,CF1153 C. Serval and Parenthesis Sequence

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1153C - Codeforces 二、解题报告 1、思路分析 对于括号匹配问题我们经典做法是左括号当成1,右括号当成-1 那么只要任意前缀非负且最终总和为0那么该括号序列就是合法 对于本题&…

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层(TCP三次握手) 三次握手第一次握手第二次握手第三次握手两次握手行不行? 我们今天来学习TCP的三次握手: 三次握手 TCP三次握手是TCP协议中建立连接的过程,旨在确保双方准备好进行可靠的通信。…

从零开始的<vue2项目脚手架>搭建:vite+vue2+eslint

前言 为了写 demo 或者研究某些问题,我经常需要新建空项目。每次搭建项目都要从头配置,很麻烦。所以我决定自己搭建一个项目初始化的脚手架(取名为 lily-cli)。 脚手架(scaffolding):创建项目时…

本地GPT-window平台 搭建ChatGLM3-6B

一 ChatGLM-6B 介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,新一代开源模型 ChatGLM3-6B 已发布,拥有10B以下最强的基础模型,支持工具调用(Function Call)、代码执行(Code Interpreter&…

webshell获取总结(cms获取方法、非cms获取方法、中间件拿Webshell方法)

目录 前期准备: 1、cookices靶场网站搭建: 2、dedecms靶场环境搭建: 获取Webshell方法总结: 一、CMS获取Webshell方法 二、非CMS获取Webshell方法 1、数据库备份获取Webshell 例如: 2、抓包上传获取Webshell 3、…

新注册与新核准有什么区别?在哪可以找到新注册新核准的企业名单?

新注册:指的是公司刚刚完成工商注册登记,成为法律意义的经营实体。 新核准:指的是企业通过证券监管机构的审核,获得公开发行股票或债券的资格。 注册主要关注企业的基本资质和合规性,而核准是已经注册的公司进行财务…