YOLOv9推理结果可视化:seaborn/matplotlib绘图实战

YOLOv9推理结果可视化:seaborn/matplotlib绘图实战

你有没有遇到过这种情况:YOLOv9模型跑完了推理,生成了一堆检测框和类别信息,但除了看几张带框的图片外,根本不知道模型到底“看见”了什么?比如哪些类别最容易被识别?哪些图像里目标最多?误检集中在哪些场景?

别急——这正是我们今天要解决的问题。本文不讲训练、不谈部署,专注一个实用又常被忽略的环节:如何用matplotlibseaborn把 YOLOv9 的推理结果变成清晰直观的图表,让你一眼看懂模型的表现。

我们将基于官方镜像环境,从实际输出文件出发,一步步带你解析检测日志、提取关键数据,并绘制出柱状图、热力图、置信度分布图等常见可视化图表,真正实现“让数据说话”。


1. 镜像环境说明

本镜像基于 YOLOv9 官方代码库构建,预装了完整的深度学习开发环境,集成了训练、推理及评估所需的所有依赖,开箱即用。

  • 核心框架: pytorch==1.10.0
  • CUDA版本: 12.1
  • Python版本: 3.8.5
  • 主要依赖: torchvision==0.11.0,torchaudio==0.10.0,cudatoolkit=11.3, numpy, opencv-python, pandas, matplotlib, tqdm, seaborn 等
  • 代码位置:/root/yolov9

这些常用的数据分析与可视化库(尤其是pandas+matplotlib+seaborn)已经默认安装,省去了手动配置的麻烦,让我们可以直接进入数据分析阶段。


2. 推理结果结构解析

2.1 输出目录结构

当你运行如下命令进行推理:

python detect_dual.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './yolov9-s.pt' --name yolov9_s_640_detect

系统会在项目根目录下生成一个路径为runs/detect/yolov9_s_640_detect的文件夹,其中包含:

  • horses.jpg:原始图像
  • labels/:对应.txt标注文件(每行格式:class_id center_x center_y width height conf
  • labels_with_names/:如果启用了命名功能,则会保存含类名的文本
  • 日志或控制台输出中可能还会打印每张图的检测统计信息

我们要做的第一件事,就是把这些分散的.txt文件读取进来,整理成结构化数据。

2.2 检测结果字段含义

每个检测行由6个数值组成:

class_id x_center y_center width height confidence

例如:

0 0.45 0.67 0.2 0.3 0.93

表示:

  • 类别是0(假设为 'person')
  • 中心点位于图像水平方向 45%、垂直方向 67%
  • 占据图像宽度的 20%,高度的 30%
  • 模型对该预测的置信度为 93%

我们的目标是从大量这样的记录中提取出可分析的信息。


3. 数据准备:从文本到DataFrame

3.1 批量读取检测结果

我们先写一段脚本,遍历labels/目录下的所有.txt文件,将它们合并成一个统一的pandas.DataFrame

import os import pandas as pd # 定义类别映射(COCO数据集前10类为例) class_names = { 0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light' } def load_detection_results(label_dir): data = [] for file_name in os.listdir(label_dir): if not file_name.endswith('.txt'): continue image_name = file_name.replace('.txt', '') file_path = os.path.join(label_dir, file_name) with open(file_path, 'r') as f: for line in f.readlines(): parts = line.strip().split() if len(parts) == 6: cls_id, cx, cy, w, h, conf = map(float, parts) data.append({ 'image': image_name, 'class_id': int(cls_id), 'class_name': class_names.get(int(cls_id), 'unknown'), 'confidence': conf, 'bbox_area_ratio': w * h # 归一化面积比例 }) return pd.DataFrame(data) # 加载数据 df = load_detection_results('/root/yolov9/runs/detect/yolov9_s_640_detect/labels') print(f"共加载 {len(df)} 条检测记录")

这样我们就得到了一个结构化的数据表,可以开始做各种统计和绘图了。


4. 可视化实战:五种经典图表

4.1 图表一:各类别检测数量柱状图

想知道模型最常识别出哪些物体?这个图告诉你答案。

import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize=(10, 6)) sns.countplot(data=df, x='class_name', order=df['class_name'].value_counts().index) plt.title('各类别检测频次统计', fontsize=16) plt.xlabel('类别名称') plt.ylabel('检测次数') plt.xticks(rotation=45) plt.tight_layout() plt.savefig('class_distribution.png', dpi=300) plt.show()

提示:使用seaborn.countplot()能自动排序并美化颜色,比原生matplotlib.bar()更简洁专业。


4.2 图表二:置信度分布直方图

模型有多“自信”?看看置信度的整体分布就知道了。

plt.figure(figsize=(10, 6)) sns.histplot(df['confidence'], bins=50, kde=True, color='skyblue') plt.title('检测结果置信度分布', fontsize=16) plt.xlabel('置信度') plt.ylabel('频次') plt.axvline(df['confidence'].mean(), color='red', linestyle='--', label=f'平均值: {df["confidence"].mean():.2f}') plt.legend() plt.tight_layout() plt.savefig('confidence_hist.png', dpi=300) plt.show()

你会发现大多数高置信度集中在 0.7~0.9 区间,低于 0.3 的可能是噪声或误检。


4.3 图表三:不同图像中的目标数量对比

哪张图最“热闹”?我们可以统计每张图检测到的目标总数。

img_counts = df.groupby('image').size().reset_index(name='detection_count') plt.figure(figsize=(10, 6)) sns.barplot(data=img_counts, x='image', y='detection_count', palette='viridis') plt.title('各图像中检测到的目标数量', fontsize=16) plt.xlabel('图像名称') plt.ylabel('目标数量') plt.xticks(rotation=45) plt.tight_layout() plt.savefig('per_image_count.png', dpi=300) plt.show()

这对判断复杂场景下的模型表现很有帮助,比如是否在密集场景漏检严重。


4.4 图表四:类别与置信度箱线图

不同类别的置信度稳定性如何?是否存在某些类别总是低分?

plt.figure(figsize=(12, 6)) sns.boxplot(data=df, x='class_name', y='confidence') plt.title('各类别检测置信度分布(箱线图)', fontsize=16) plt.xlabel('类别') plt.ylabel('置信度') plt.xticks(rotation=45) plt.ylim(0, 1) plt.tight_layout() plt.savefig('confidence_boxplot.png', dpi=300) plt.show()

通过箱体和须线可以看出:

  • 分布集中程度(稳定性)
  • 是否存在大量低分异常值(如 'traffic light' 经常低置信)

4.5 图表五:类别共现热力图(同一图像中同时出现的频率)

两个物体经常一起出现吗?比如“人”和“自行车”,“车”和“红绿灯”。

from collections import defaultdict import numpy as np # 构建图像内类别组合 pair_counter = defaultdict(int) for img in df['image'].unique(): classes_in_img = df[df['image'] == img]['class_id'].tolist() for i in range(len(classes_in_img)): for j in range(i+1, len(classes_in_img)): a, b = sorted([classes_in_img[i], classes_in_img[j]]) pair_counter[(a, b)] += 1 # 创建共现矩阵 classes = sorted(class_names.keys()) co_matrix = np.zeros((len(classes), len(classes))) for (i, j), count in pair_counter.items(): if i in classes and j in classes: co_matrix[i][j] += count co_matrix[j][i] += count # 对称 # 绘图 plt.figure(figsize=(10, 8)) sns.heatmap(co_matrix, annot=True, fmt='g', xticklabels=[class_names[c] for c in classes], yticklabels=[class_names[c] for c in classes], cmap='Blues') plt.title('类别共现热力图', fontsize=16) plt.xlabel('类别') plt.ylabel('类别') plt.tight_layout() plt.savefig('co_occurrence_heatmap.png', dpi=300) plt.show()

这张图能帮你发现潜在的应用逻辑,比如:

  • “人”和“自行车”高频共现 → 可用于骑行行为分析
  • “车”和“红绿灯”关联强 → 适合交通监控场景

5. 进阶技巧:动态更新与批量处理

5.1 自动化脚本封装

你可以把上述流程打包成一个脚本,在每次推理后自动执行:

#!/bin/bash # run_visualization.sh cd /root/yolov9 python detect_dual.py --source ./data/images --weights yolov9-s.pt --name latest_run python visualize_results.py --run_name latest_run

配合定时任务或CI/CD流程,实现全自动分析。

5.2 添加过滤条件提升洞察力

比如只关注高置信度(>0.7)的结果,或者排除小目标(bbox_area_ratio < 0.01),可以让图表更聚焦真实有效信息。

filtered_df = df[(df['confidence'] > 0.7) & (df['bbox_area_ratio'] >= 0.01)]

再基于filtered_df做图,避免被噪声干扰。

5.3 导出统计报告

最后别忘了导出一份 CSV 报告,方便团队共享:

summary = df.groupby(['class_name']).agg( detection_count=('confidence', 'size'), avg_confidence=('confidence', 'mean'), min_confidence=('confidence', 'min'), max_confidence=('confidence', 'max') ).round(3) summary.to_csv('detection_summary.csv') print(summary)

6. 总结

6.1 关键收获回顾

本文带你完成了从 YOLOv9 推理结果到数据可视化的完整闭环:

  • 解析了detect_dual.py输出的文本格式
  • 使用pandas将非结构化检测结果转为结构化数据
  • 利用matplotlibseaborn实现了五类核心图表:
    • 类别频次柱状图
    • 置信度分布直方图
    • 每图目标数对比图
    • 类别置信度箱线图
    • 类别共现热力图
  • 提供了自动化脚本思路和进阶优化建议

这些图表不仅能帮助你快速评估模型表现,还能作为项目汇报中的有力支撑材料。

6.2 下一步建议

  • 如果你在做特定场景检测(如工地安全、零售货架),可以定制自己的类别映射和配色方案
  • 结合 OpenCV 在原图上叠加统计信息,实现“可视化+标注”一体化输出
  • 将整个流程集成进 Web 页面(Flask/Dash),打造简易版 AI 分析仪表盘

记住:好的模型不仅要跑得快,更要让人看得懂。掌握可视化技能,是你从“会调参”迈向“懂业务”的关键一步。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

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

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

相关文章

从0开始学PDF解析:MinerU镜像保姆级入门教程

从0开始学PDF解析&#xff1a;MinerU镜像保姆级入门教程 1. 引言&#xff1a;为什么你需要MinerU&#xff1f; 你是否曾为处理一份复杂的PDF文档而头疼&#xff1f;那些包含多栏排版、复杂表格、数学公式和嵌套图片的学术论文或技术报告&#xff0c;用传统方法提取内容简直是…

BSManager实战手册:轻松玩转Beat Saber版本管理与内容定制

BSManager实战手册&#xff1a;轻松玩转Beat Saber版本管理与内容定制 【免费下载链接】bs-manager An all-in-one tool that lets you easly manage BeatSaber versions, maps, mods, and even more. 项目地址: https://gitcode.com/gh_mirrors/bs/bs-manager 还在为Be…

Windows优化新纪元:ExplorerPatcher深度定制指南

Windows优化新纪元&#xff1a;ExplorerPatcher深度定制指南 【免费下载链接】ExplorerPatcher 项目地址: https://gitcode.com/gh_mirrors/exp/ExplorerPatcher 你是否曾因Windows系统界面的频繁更新而感到困扰&#xff1f;是否渴望拥有一个真正符合个人使用习惯的操作…

2026年武汉重型货架供应商综合评估:如何精准选择助力仓储升级

在制造业回流、电商物流持续扩张以及供应链精益化管理的多重驱动下,仓储空间的高效利用已成为企业降本增效、提升核心竞争力的关键环节。重型货架作为仓储系统的骨架,其质量、设计与服务的专业性直接关系到仓库的存储…

视频下载神器res-downloader:智能批量下载,彻底告别手动保存烦恼

视频下载神器res-downloader&#xff1a;智能批量下载&#xff0c;彻底告别手动保存烦恼 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址…

FactoryBluePrints:戴森球计划工厂蓝图库完整使用手册

FactoryBluePrints&#xff1a;戴森球计划工厂蓝图库完整使用手册 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为戴森球计划中复杂的工厂布局而烦恼吗&#xff1f;是…

广西定制水市场盘点:2026年值得关注的五家实力厂家深度解析

在健康消费意识日益增强的今天,饮用水的品质与个性化需求正成为市场关注的焦点。广西,作为中国生态环境优越、水资源丰富的地区,孕育了众多优质水源地,也催生了一批专注于高品质定制水生产与销售的企业。无论是企业…

Qwen-Image-Edit-2511实测功能:支持中英文混合指令

Qwen-Image-Edit-2511实测功能&#xff1a;支持中英文混合指令 你有没有遇到过这种情况&#xff1a;想让AI把一张产品图的背景换成“海边日落”&#xff0c;同时在T恤上加一句“Limited Edition”&#xff1f;以前&#xff0c;很多图像编辑模型对中文还勉强能应付&#xff0c;…

专题三:【Android 架构】全栈性能优化与架构演进全书

专题三&#xff1a;【Android 架构】全栈性能优化与架构演进全书适用人群&#xff1a;Android 系统工程师、ROM 定制专家、性能优化工程师核心议题&#xff1a;Binder IPC、HIDL/AIDL、A/B OTA、LMK 保活、Native 内存泄漏、Perfetto&#x1f3db;️ 第一章&#xff1a;架构演进…

强力解锁微信读书助手wereader:从碎片阅读到系统知识管理的效率革命

强力解锁微信读书助手wereader&#xff1a;从碎片阅读到系统知识管理的效率革命 【免费下载链接】wereader 一个功能全面的微信读书笔记助手 wereader 项目地址: https://gitcode.com/gh_mirrors/we/wereader 还在为微信读书中零散的划线笔记无法整理而烦恼吗&#xff1…

2026年第一季度,广西知名定制水销售厂家综合评估与精选推荐

随着健康消费理念的深入人心和市场竞争的加剧,品牌化、定制化的包装饮用水已成为企业提升品牌形象、增强客户粘性、开拓高端市场的重要战略工具。从企业接待、会议活动到员工福利、礼品馈赠,一瓶高品质的定制水不仅是…

Steam插件神器:让每个Steam玩家都成为游戏专家的秘密武器 [特殊字符]

Steam插件神器&#xff1a;让每个Steam玩家都成为游戏专家的秘密武器 &#x1f3ae; 【免费下载链接】BrowserExtension &#x1f4bb; SteamDBs extension for Steam websites 项目地址: https://gitcode.com/gh_mirrors/br/BrowserExtension 还在为Steam游戏购买决策发…

第一卷:【外设架构】嵌入式外设移植实战与连接性故障“考古级”排查全书

第一卷&#xff1a;【外设架构】嵌入式外设移植实战与连接性故障“考古级”排查全书 卷首语&#xff1a; 在嵌入式 Android 开发中&#xff0c;外设驱动&#xff08;Peripherals&#xff09;往往是系统稳定性的第一道防线&#xff0c;也是“技术债”最集中的地方。本卷基于真实…

FastAPI脚手架:从繁琐配置到一键生成的开发革命

FastAPI脚手架&#xff1a;从繁琐配置到一键生成的开发革命 【免费下载链接】fastapi-scaf This is a fastapi scaf. (fastapi脚手架&#xff0c;一键生成项目或api&#xff0c;让开发变得更简单) 项目地址: https://gitcode.com/gh_mirrors/fa/fastapi-scaf 还记得那个…

Oracle Cloud ARM服务器免费获取全攻略:突破容量限制的自动化方案

Oracle Cloud ARM服务器免费获取全攻略&#xff1a;突破容量限制的自动化方案 【免费下载链接】oci-arm-host-capacity This script allows to bypass Oracle Cloud Infrastructure Out of host capacity error immediately when additional OCI capacity will appear in your …

3步转型法:用微信读书助手wereader实现从碎片化阅读到系统化知识管理的完美蜕变

3步转型法&#xff1a;用微信读书助手wereader实现从碎片化阅读到系统化知识管理的完美蜕变 【免费下载链接】wereader 一个功能全面的微信读书笔记助手 wereader 项目地址: https://gitcode.com/gh_mirrors/we/wereader 你是否曾在微信读书中读了很多书&#xff0c;却感…

LaWGPT完整部署教程:手把手教你搭建法律大模型

LaWGPT完整部署教程&#xff1a;手把手教你搭建法律大模型 【免费下载链接】LaWGPT LaWGPT - 一系列基于中文法律知识的开源大语言模型&#xff0c;专为法律领域设计&#xff0c;增强了法律内容的理解和执行能力。 项目地址: https://gitcode.com/gh_mirrors/la/LaWGPT …

TradingAgents-CN终极指南:从零搭建智能投资分析系统

TradingAgents-CN终极指南&#xff1a;从零搭建智能投资分析系统 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN TradingAgents-CN是一个革命性的…

社交媒体素材制作利器:麦橘超然快速产出广告图

社交媒体素材制作利器&#xff1a;麦橘超然快速产出广告图 在社交媒体内容竞争日益激烈的今天&#xff0c;高质量、高频率的视觉素材已成为品牌传播的核心驱动力。无论是短视频平台的封面图、朋友圈推广海报&#xff0c;还是小红书种草配图&#xff0c;都需要具备强吸引力和风…

UI-TARS桌面智能助手:3步实现自然语言控制计算机

UI-TARS桌面智能助手&#xff1a;3步实现自然语言控制计算机 【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS(Vision-Lanuage Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/GitHub_…