YOLOv8 目标检测程序的输出 (1, 84, 8400)的解释

YOLOv8 目标检测程序的输出 (1, 84, 8400)的解释

flyfish

完整代码请看

# 使用预处理后的图像数据进行推理
outputs = session.run(None, {model_inputs[0].name: img_data})

也就是这个outputs 输出结果代表什么

outputs = session.run(None, {model_inputs[0].name: img_data})
for i in outputs:print("outputs:",i.shape)

看下数据的形状
outputs: (1, 84, 8400)
主要看后处理函数

def postprocess(self, input_image, output):"""对模型的输出进行后处理,以提取边界框、置信度分数和类别ID。参数:input_image (numpy.ndarray): 输入图像。output (numpy.ndarray): 模型的输出。返回值:numpy.ndarray: 带有绘制检测结果的输入图像。"""# 转置并压缩输出以匹配预期的形状outputs = np.transpose(np.squeeze(output[0]))# 获取输出数组中的行数rows = outputs.shape[0]# 用于存储检测到的边界框、置信度分数和类别ID的列表boxes = []scores = []class_ids = []# 计算边界框坐标的缩放因子x_factor = self.img_width / self.input_widthy_factor = self.img_height / self.input_height# 遍历输出数组中的每一行for i in range(rows):# 从当前行中提取类别分数classes_scores = outputs[i][4:]# 找到类别分数中的最大值max_score = np.amax(classes_scores)# 如果最大值大于置信度阈值if max_score >= self.confidence_thres:# 获取具有最高分数的类别IDclass_id = np.argmax(classes_scores)# 从当前行中提取边界框坐标x, y, w, h = outputs[i][0], outputs[i][1], outputs[i][2], outputs[i][3]

np.squeeze(output[0]) 使输出变为 (84, 8400)。
np.transpose(np.squeeze(output[0])) 使输出变为 (8400, 84)。
通过 for 循环遍历 8400 个预测结果,每个预测结果包含 84 个元素,其中:
前4个元素是边界框的坐标(x, y, w, h)。
剩下的80个元素是类别得分。即上面的classes_scores 大小是84个元素

classes_scores 举个例子

import numpy as np
# 给定的类别得分数组
classes_scores = np.array([0.00000435, 0.00001967, 0.00215656, 0.00022084, 0.00057742, 0.74860954,0.00164768, 0.03239807, 0.00080997, 0.00000623, 0.00000075, 0.00000647,0.00002846, 0.00000814, 0.00000036, 0.00000006, 0.00000072, 0.00000253,0.00000009, 0.00000092, 0.00013593, 0.00000077, 0.00000054, 0.00001895,0.0000006,  0.00005892, 0.00000218, 0.00000054, 0.00002104, 0.0000011,0.00000218, 0.00000054, 0.00000077, 0.00003156, 0.00000322, 0.00000063,0.0000045,  0.00000995, 0.00001228, 0.00001022, 0.00001442, 0.00000474,0.00000358, 0.00000057, 0.00000063, 0.00000146, 0.00000024, 0.00000033,0.00000212, 0.00000137, 0.0000003,  0.00000134, 0.0000011,  0.00002801,0.00000012, 0.00000027, 0.00005212, 0.00000951, 0.00000188, 0.00000769,0.0000264,  0.0000006,  0.00002939, 0.00000092, 0.00000092, 0.00000072,0.0000056,  0.00004569, 0.00002474, 0.00001526, 0.00000927, 0.00000009,0.00002173, 0.00001624, 0.00002348, 0.00000826, 0.00000083, 0.00000036,0.0000011,  0.00000036
])# 找到最大得分
max_score = np.amax(classes_scores)
print("Max Score:", max_score)# 找到最大得分的索引
class_id = np.argmax(classes_scores)
print("Class ID:", class_id)# 设置置信度阈值
confidence_thres = 0.01# 只有最大得分大于置信度阈值时才处理
if max_score >= confidence_thres:print(f"The class with the highest score is {class_id} with a score of {max_score:.6f}.")
else:print("No class score exceeds the confidence threshold.")

np.amax(classes_scores) 返回数组 classes_scores 中的最大值,即 0.74860954。
np.argmax(classes_scores) 返回数组 classes_scores 中最大值的索引,即 5。
因此,最高的类别得分是 0.74860954,对应的类别 ID 是 5。5对应的是bus

三个不同尺度的特征图
( 80 × 80 + 40 × 40 + 20 × 20 ) × 84 = ( 6400 + 1600 + 400 ) × 84 = 8400 × 84 (80×80 + 40×40 + 20×20)×84 = (6400 + 1600 + 400)×84 = 8400×84 (80×80+40×40+20×20)×84=(6400+1600+400)×84=8400×84

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

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

相关文章

CSS3 多列布局

CSS3 多列布局 CSS3 多列布局是一种强大的布局技术,它允许开发者将内容分为多个列,类似于报纸或杂志的布局。这种布局方式不仅提高了页面设计的灵活性,还增强了用户阅读体验。本文将详细介绍 CSS3 多列布局的相关属性,并通过示例展示其应用。 多列布局的基本概念 在 CSS…

Android :unable to instantiate application

前言 如题 app在运行的时候,打开就崩溃了。 错误日志:Android :unable to instantiate application. 以下是原因分析和解决方法: 可能原因1: 可能是com.xxx.xxx.MyApplication路径配置错误了,在移动完文件的时候&a…

单门户上集成多种数据库查询入口

(作者:陈玓玏) 开源项目,欢迎star哦,https://github.com/tencentmusic/cube-studio 在一家公司,我们通常会有多种数据库,每种数据库因为其特性承担不同的角色,比如mysql这种轻量…

ECharts 响应式设计

ECharts 响应式设计 ECharts 是一个由百度开源的,基于 JavaScript 的可视化库,它提供了一系列丰富的图表类型和灵活的配置选项,使得数据可视化变得简单而高效。在当今数据驱动的世界中,ECharts 已经成为许多开发者和设计师的首选工具,用于创建交互式和视觉吸引力强的图表…

AI-024人工智能指数报告(三):经济

概述 人工智能融入经济会引发许多很迷人的问题。有人预测人工智能会推动生产力得到改进,但其影响程度仍未确定。其中一个主要关切是大规模劳动替代的可能性——工作究竟会在多大程度上被自动化还是人工智能主要起到增强作用?各个行业的企业已经在用各种…

基于FPGA的温湿度检测

初始化部分就不过多赘述,我会给出对应的文件,我只说明这部分里面涉及到使用的代码部分 1、数据的读取和校验 数据的读取和检验代码如下 always (posedge clk_us)if (data_temp[7:0] data_temp[39:32] data_temp[31:24] data_temp[23:16] data_te…

SpringBoot+Vue集成富文本编辑器

1.引入 我们常常在各种网页软件中编写文档的时候,常常会有富文本编辑器,就比如csdn写博客的这个页面,包含了富文本编辑器,那么怎么实现呢?下面来详细的介绍! 2.安装wangeditor插件 在Vue工程中,…

基于 SpringBoot + Vue 的图书购物商城项目

本项目是一个基于 SpringBoot 和 Vue 的图书购物商城系统。系统主要实现了用户注册、登录,图书浏览、查询、加购,购物车管理,订单结算,会员折扣,下单,个人订单管理,书籍及分类管理,用…

PCL 使用列文伯格-马夸尔特法计算变换矩阵

目录 一、算法原理1、计算过程2、主要函数3、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、计算过程 2、主要函数 void pcl

深度分析SQL与NoSQL数据库:优缺点、使用场景及选型指南

在大数据和云计算时代,数据库技术的发展日新月异。SQL(关系型数据库)和NoSQL(非关系型数据库)作为两大主流数据库技术,各有其独特的优势和使用场景。本文将深入分析SQL和NoSQL的定义、优缺点、使用场景&…

EXCEL快速填充空白内容

** EXCEL快速填充空白内容 ** 1.全选所有需要填充的内容,按住电脑的F5或者CTRLG点击定位 2.可以看到空白处被自动选定,之后按电脑和⬆,最后CTRLenter 可以看到空白处已经被填充。

计网入门还没到放弃

TCP报文段格式 源端口:标识报文的返回地址 目的端口:指明计算机上的应用程序接口 序号:通过SYN包传给接收端主机,每传送一次就1,用来解决网络包乱序的问题。 确认号:期望下一次收到的数据的序列号&#xff…

Spring MVC数据绑定和响应——简单数据绑定(一)默认类型数据绑定

一、Spring MVC常见的默认类型 当使用Spring MVC默认支持的数据类型作为处理器的形参类型时,Spring MVC的参数处理适配器会默认识别这些类型并进行赋值。Spring MVC常见的默认类型如下所示。 • HttpServletRequest:获取请求信息。 • HttpServlet…

长连接与短连接比较与选择(附C++代码示例)

长连接(Long Connection)和短连接(Short Connection)是网络通信中的两种连接方式。作为一个C程序员,理解这两种连接方式的优缺点以及使用场景,对于设计高效、稳定的网络应用至关重要。 长连接与短连接 1. …

酷开科技用酷开系统打造数字化家庭娱乐与教育的新天地

家庭教育的重要性不言而喻,俗话说:父母是孩子的第一任老师,也是终生的老师。一个人是否能够成长成才,家庭教育是基础和前提,学校教育能够起到促进和引导作用,社会教育也会对一个人的成长产生重要影响。在数…

【YOLOv5/v7改进系列】引入PConv——轻量快速的卷积块

一、导言 《奔跑吧,别走:追求更高的FLOPS以实现更快的神经网络》,主要探讨了如何设计快速且高效的神经网络模型。文章指出,尽管许多研究致力于减少浮点运算次数(FLOPs)来提升模型速度,但FLOPs的减少并不直接等同于延迟…

Zookeeper部署

Zookeeper部署 下载安装包Linux解压安装包修改配置文件编辑zoo.cf配置 启动服务停止服务常用zookeeper指令查看namespace列表创建namespace删除namespace 注意:该文章为简单部署操作,没有复杂的配置内容,用的是3.7.2版本。 下载安装包 进入z…

python爬虫需要什么HTTP代理?

用来爬虫的话,还是建议用高匿名代理,但显然题主用了高匿名代理还是出现了一部分问题,我们可以先找到问题关键再解决它,一般爬虫用了高匿名代理出现被封会有以下几种原因: 1.代理IP的质量不过关 一般来说每个网站都有…

算法训练 | 动态规划Part8 | 121.买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III

目录 121.买卖股票的最佳时机 暴力法 贪心法 动态规划法 122.买卖股票的最佳时机II 动态规划法 123.买卖股票的最佳时机III 动态规划法 121.买卖股票的最佳时机 题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode) 文章讲解&#…

rust嵌入式开发之总结 (二)Embassy的不足

我们用rustEmbassy开发的新版产品已经投产了一个多月了,经历过近距离的强干扰、连绵的阴雨天失电等考验,初步证明了整个产品体系的稳定性。 经历过开发、测试以及这段时间的运行后,我也发现了Embassy的一些问题,之前的几篇文章都…