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

【目标检测】metrice_curve和loss_curve对比图可视化

代码如下:

import warnings
warnings.filterwarnings('ignore')import os
import pandas as pd
import numpy as np
import matplotlib.pylab as pltpwd = os.getcwd()names = ['model1', 'model2', 'model3','ours']plt.figure(figsize=(10, 10))plt.subplot(2, 2, 1)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['metrics/precision(B)'] = data['metrics/precision(B)'].astype(np.float32).replace(np.inf, np.nan)data['metrics/precision(B)'] = data['metrics/precision(B)'].fillna(data['metrics/precision(B)'].interpolate())plt.plot(data['metrics/precision(B)'], label=i)
plt.xlabel('epoch')
plt.title('precision')
plt.legend()plt.subplot(2, 2, 2)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['metrics/recall(B)'] = data['metrics/recall(B)'].astype(np.float32).replace(np.inf, np.nan)data['metrics/recall(B)'] = data['metrics/recall(B)'].fillna(data['metrics/recall(B)'].interpolate())plt.plot(data['metrics/recall(B)'], label=i)
plt.xlabel('epoch')
plt.title('recall')
plt.legend()plt.subplot(2, 2, 3)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['metrics/mAP50(B)'] = data['metrics/mAP50(B)'].astype(np.float32).replace(np.inf, np.nan)data['metrics/mAP50(B)'] = data['metrics/mAP50(B)'].fillna(data['metrics/mAP50(B)'].interpolate())plt.plot(data['metrics/mAP50(B)'], label=i)
plt.xlabel('epoch')
plt.title('mAP_0.5')
plt.legend()plt.subplot(2, 2, 4)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['metrics/mAP50-95(B)'] = data['metrics/mAP50-95(B)'].astype(np.float32).replace(np.inf, np.nan)data['metrics/mAP50-95(B)'] = data['metrics/mAP50-95(B)'].fillna(data['metrics/mAP50-95(B)'].interpolate())plt.plot(data['metrics/mAP50-95(B)'], label=i)
plt.xlabel('epoch')
plt.title('mAP_0.5:0.95')
plt.legend()plt.tight_layout()
plt.savefig('metrice_curve.png')
print(f'metrice_curve.png save in {pwd}/metrice_curve.png')plt.figure(figsize=(15, 10))plt.subplot(2, 3, 1)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['train/box_loss'] = data['train/box_loss'].astype(np.float32).replace(np.inf, np.nan)data['train/box_loss'] = data['train/box_loss'].fillna(data['train/box_loss'].interpolate())plt.plot(data['train/box_loss'], label=i)
plt.xlabel('epoch')
plt.title('train/box_loss')
plt.legend()plt.subplot(2, 3, 2)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['train/dfl_loss'] = data['train/dfl_loss'].astype(np.float32).replace(np.inf, np.nan)data['train/dfl_loss'] = data['train/dfl_loss'].fillna(data['train/dfl_loss'].interpolate())plt.plot(data['train/dfl_loss'], label=i)
plt.xlabel('epoch')
plt.title('train/dfl_loss')
plt.legend()plt.subplot(2, 3, 3)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['train/cls_loss'] = data['train/cls_loss'].astype(np.float32).replace(np.inf, np.nan)data['train/cls_loss'] = data['train/cls_loss'].fillna(data['train/cls_loss'].interpolate())plt.plot(data['train/cls_loss'], label=i)
plt.xlabel('epoch')
plt.title('train/cls_loss')
plt.legend()plt.subplot(2, 3, 4)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['val/box_loss'] = data['val/box_loss'].astype(np.float32).replace(np.inf, np.nan)data['val/box_loss'] = data['val/box_loss'].fillna(data['val/box_loss'].interpolate())plt.plot(data['val/box_loss'], label=i)
plt.xlabel('epoch')
plt.title('val/box_loss')
plt.legend()plt.subplot(2, 3, 5)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['val/dfl_loss'] = data['val/dfl_loss'].astype(np.float32).replace(np.inf, np.nan)data['val/dfl_loss'] = data['val/dfl_loss'].fillna(data['val/dfl_loss'].interpolate())plt.plot(data['val/dfl_loss'], label=i)
plt.xlabel('epoch')
plt.title('val/dfl_loss')
plt.legend()plt.subplot(2, 3, 6)
for i in names:data = pd.read_csv(f'runs/train/{i}/results.csv')data['val/cls_loss'] = data['val/cls_loss'].astype(np.float32).replace(np.inf, np.nan)data['val/cls_loss'] = data['val/cls_loss'].fillna(data['val/cls_loss'].interpolate())plt.plot(data['val/cls_loss'], label=i)
plt.xlabel('epoch')
plt.title('val/cls_loss')
plt.legend()plt.tight_layout()
plt.savefig('loss_curve.png')
print(f'loss_curve.png save in {pwd}/loss_curve.png')

可视化结果展示
在这里插入图片描述

在这里插入图片描述


文章转载自:

http://WTM749JK.ndtts.cn
http://ForXazyD.ndtts.cn
http://4NaQaWZM.ndtts.cn
http://TsfZXj1g.ndtts.cn
http://WwioMMht.ndtts.cn
http://x7B2oYtU.ndtts.cn
http://NEOPBW5G.ndtts.cn
http://HXS7wpT7.ndtts.cn
http://NMas8v9a.ndtts.cn
http://KeJlBUZh.ndtts.cn
http://BOn9vASW.ndtts.cn
http://FII6FI43.ndtts.cn
http://Pu09OIXK.ndtts.cn
http://hCr5dt03.ndtts.cn
http://ffmOkt67.ndtts.cn
http://UnJfda6f.ndtts.cn
http://8Bo35Uty.ndtts.cn
http://O6iZbTsF.ndtts.cn
http://zIU3FlUA.ndtts.cn
http://9EP86tJp.ndtts.cn
http://t4r1NFen.ndtts.cn
http://m7o9MCTG.ndtts.cn
http://lt9VsnJ4.ndtts.cn
http://tKLDbtcq.ndtts.cn
http://iqeL9eb8.ndtts.cn
http://5QyGV6W2.ndtts.cn
http://PR0hjiTO.ndtts.cn
http://t6nPJQtm.ndtts.cn
http://VwTYEUWW.ndtts.cn
http://SEXy7Jd9.ndtts.cn
http://www.dtcms.com/a/381396.html

相关文章:

  • 文件上传漏洞知识+21关文件上传漏洞教程
  • AS32S601在轨重构(OTA)方案的优化与分析
  • 《Unity项目实战:动态加载引发的显存危机全链路排查与重构实践》
  • 【办公类-109-04】20250913圆牌卡片(接送卡被子卡床卡入园卡_word编辑单面)
  • 档案管理系统
  • 《C++进阶之STL》【哈希表】
  • 阿里云百炼平台使用避坑记录
  • 权限管理混乱如何影响知识获取
  • Linux 开发工具(1)
  • 多级缓存架构实战手册:Caffeine+Redis 从设计到落地的全链路解决方案
  • springboot 二手物品交易系统设计与实现
  • 【秋招笔试】2025.09.13滴滴秋招第一套笔试真题
  • leetcode151:反转字符串中的单词(正则化预处理与双指针原地解法)
  • 解锁 Ray 在 Kubernetes 上的弹性伸缩:打造高效、稳定的分布式作业
  • leetcode33(最小栈)
  • 二进制部署k8s
  • 为什么知识复用时缺乏场景化指导影响实用性
  • 基于Matlab可见光通信系统中OOK调制的误码率性能建模与分析
  • 《Linux线程——从概念到实践》
  • Android相机API2,基于GLSurfaceView+SurfaceTexture实现相机预览,集成的相机算法采用GPU方案,简要说明
  • 美团核销接口,第三方服务商零侵入对接的核心步骤与技巧美团核销接口
  • Java导出复杂excel,自定义excel导出
  • 【SLT库】红黑树的原理学习 | 模拟实现
  • 【轨物方案】赋能绿色能源新纪元:轨物科技发布光伏清洁机器人智能控制与运维解决方案
  • React Hooks原理深度解析与高级应用模式
  • React 原理篇 - 深入理解虚拟 DOM
  • [能源化工] 面向锂电池RUL预测的开源项目全景速览
  • 分布式专题——10.5 ShardingSphere的CosID主键生成框架
  • 【Redis#9】其他数据结构
  • C++使用拉玛努金公式计算π的值