当前位置: 首页 > news >正文

用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()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)
  • 【稳定检索/投稿优惠】2024年智慧金融与财务管理国际会议(SFFM 2024)
  • C#操作MySQL从入门到精通(21)——删除数据
  • C# 设置PDF表单不可编辑、或提取PDF表单数据
  • 开发TEE的踩坑之配置PCCS
  • 子域名爆破工具
  • 拜托:不要像鲍勃大叔那样重构
  • eNSP学习——RIP路由协议的汇总
  • DP:回文串模型
  • 【数据结构】利用单链表再实现通讯录
  • 编程的作品怎么删除编程库:一步步的深入解析
  • 2. Revit API UI 之 IExternalCommand 和 IExternalApplication
  • c++中main(int argc, char* argv[])参数详解
  • PaddleDetection快速体验quick_start
  • 云南区块链商户平台发票助手成品
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python学习笔记 字符串拼接
  • SpriteKit 技巧之添加背景图片
  • Twitter赢在开放,三年创造奇迹
  • 检测对象或数组
  • 深入浏览器事件循环的本质
  • 想写好前端,先练好内功
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 译米田引理
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #FPGA(基础知识)
  • (1)常见O(n^2)排序算法解析
  • (2)nginx 安装、启停
  • (7)摄像机和云台
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (附源码)php投票系统 毕业设计 121500
  • (回溯) LeetCode 78. 子集
  • (力扣)循环队列的实现与详解(C语言)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (算法设计与分析)第一章算法概述-习题
  • (小白学Java)Java简介和基本配置
  • (学习总结16)C++模版2
  • (原创)可支持最大高度的NestedScrollView
  • (转)scrum常见工具列表
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • 、写入Shellcode到注册表上线
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core 中插件式开发实现
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET开发者必备的11款免费工具
  • .net快速开发框架源码分享
  • ::
  • @GetMapping和@RequestMapping的区别
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [22]. 括号生成
  • [BT]BUUCTF刷题第9天(3.27)