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

【3D目标检测】常见相关指标说明

一、mAP指标

mean Average Precision(平均精度均值),它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。

1.1 精度(Precision)

表示检索到的目标中实际为正确目标的比例,计算公式为

1.2 召回率(Recall)

表示所有目标中成功被检索到的比例,计算公式为

1.3 平均精度(AP)

  • 平均精度表示的是在不同的召回率阈值下,计算模型的平均精度。通常通过绘制 PR 曲线(Precision-Recall 曲线)计算。

  • PR 曲线的横轴为召回率,纵轴为精度AP 是 PR 曲线下的面积,即对该曲线进行积分的结果。

1.4 mAP的计算

  • mAP 是对多个类别的 AP 求平均得出的数值。

  • 如果目标检测任务中包含 N 个类别,则计算每个类别的 AP,并对所有类别的 AP 取平均,即:\mathrm{mAP}=\frac{\sum_{i=1}^N\mathrm{AP}_i}{N}

1.5 mAP在2D目标检测的计算

在目标检测中,通常设定一个置信度阈值,用于判定检测结果是否被认为是正例(即预测的目标)。常见的阈值有0.5,即 IOU(交并比)≥ 0.5 被视为有效检测。

比如mAP@0.5表示将IoU设为0.5时,计算每一类的所有图片的AP,然后所有类别求平均得到mAP;

mAP@.5:.95表示在不同IoU阈值(从0.5到0.95,步长0.05)(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的平均mAP。

def ap_per_class(tp, conf, pred_cls, target_cls, eps=1e-16):i = np.argsort(-conf)tp, conf, pred_cls = tp[i], conf[i], pred_cls[i]unique_classes, nt = np.unique(target_cls, return_counts=True)nc = unique_classes.shape[0]ap = np.zeros((nc, tp.shape[1]))p, r = np.zeros((nc, 1000)), np.zeros((nc, 1000))for ci, c in enumerate(unique_classes):i = pred_cls == cn_l = nt[ci]n_p = i.sum()if n_p == 0 or n_l == 0:continuefpc = (1 - tp[i]).cumsum(0)tpc = tp[i].cumsum(0)recall = tpc / (n_l + eps)precision = tpc / (tpc + fpc)for j in range(tp.shape[1]):ap[ci, j], _, _ = compute_ap(recall[:, j], precision[:, j])return ap.mean(0)

结合YOLO仓库中的代码进行说明,

np.argsort: 按检测置信度对预测框排序。

unique_classes: 获取数据集中存在的目标类别。

compute_ap 函数:计算PR曲线,并从中得到每个类别的平均精度。通过曲线下面积得到AP,计算上是使用插值方法在固定的召回率点(例如 [0, 0.01, 0.02, ..., 1])计算精度值,并通过梯形法则对这些点进行积分,得到 AP。

def compute_ap(recall, precision):mrec = np.concatenate(([0.0], recall, [1.0]))mpre = np.concatenate(([1.0], precision, [0.0]))mpre = np.flip(np.maximum.accumulate(np.flip(mpre)))method = "interp"if method == "interp":x = np.linspace(0, 1, 101)ap = np.trapz(np.interp(x, mrec, mpre), x)else:i = np.where(mrec[1:] != mrec[:-1])[0]ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1])return ap, mpre, mrec

输入参数:recall: 一个列表或数组,表示不同阈值下的召回率值。precision: 一个列表或数组,表示不同阈值下的精确度值。

输出值:返回三个值:平均精确度(AP),处理过的精确度曲线,以及处理过的召回率曲线。

选择一种计算PR曲线下面积的方法,函数中提供了两种方法:

  • interp:使用插值方法,在 [0, 1] 范围内将召回率分为 101 个点,然后使用 np.interp 进行插值计算,并通过 np.trapz 计算面积,这是COCO 评价标准下的插值方法。

  • continuous:直接根据召回率变化的点计算面积。

说明一下这里的细节:

  • 翻转精确度曲线: 使用 np.flip 将精确度曲线倒置。假设原始精确度数组是 [0.5, 0.6, 0.4, 0.7],翻转后为 [0.7, 0.4, 0.6, 0.5]。

  • 计算累积最大值: 倒置后的精确度数组作为输入,传递给 np.maximum.accumulate 计算累积最大值。该函数在遍历输入数组时,将输出元素设置为从当前索引开始到数组末尾范围内的最大值。np.maximum.accumulate 的计算结果是 [0.7, 0.7, 0.7, 0.7],确保所有值都大于或等于前一个值。

  • 翻转回原始顺序: 最后再使用 np.flip 将累积最大值的数组翻转回原始顺序,得到 [0.7, 0.7, 0.7, 0.7],这样得到的曲线就是非递减的包络线。在现实情况下,精确度曲线有时可能会因为某个特定的召回率阈值而出现波动,使得曲线有时会上升,有时会下降。然而,在计算PR曲线下面积时,为了使结果更具稳定性和准确性,需要将这些下降的部分“填平”以形成一个包络线,确保整个曲线是平滑和非递减的。

1.6 mAP在3D目标检测的计算

在3D目标检测任务中,为了顾及小目标物体,不再适用2D中基于IoU的mAP计算方式,而是计算框在BEV视图下的2D中心点之间的欧氏距离。

设置一个阈值(如2米),如果预测框和真实框的中心点距离小于这个阈值,则认为这两个框匹配。

这种方法特别有利于提高小物体的匹配率。在3D环境中,小物体的IoU可能由于深度和遮挡问题而较难计算或得到较低的匹配度。使用中心点距离作为匹配标准简化了匹配过程,使得评估对于各种尺寸的物体都更为公平。

\text{mAP}=\frac1{|\mathbb{C}||\mathbb{D}|}\sum_{c\in\mathbb{C}}\sum_{d\in\mathbb{D}}\text{AP}_{c,d}

通过BEV的2D中心距离d来计算。这样解耦了物体的尺寸和方向对AP计算的影响。d设置为{0.5,1,2,4}米。在计算AP时,去除了低于10%的recall和precision并用0来代替这些区域(所以这里的PR曲线表示10%以上的召回率和精度,以降低噪声影响)。不同类C以及不同距离难度D用来计算mAP。

二、NDS

2.1 mATE(Average Translation Error)

平均平移误差(ATE)衡量的是预测的物体中心点与真实物体中心点之间的平均欧几里得距离,单位为米。

\mathrm{mATE}=\frac1N\sum_{i=1}^N\sqrt{(x_i^\mathrm{pred}-x_i^\mathrm{true})^2+(y_i^\mathrm{pred}-y_i^\mathrm{true})^2}

2.2 mASE(Average Scale Error)

平均尺度误差(ASE)衡量的是预测的物体尺寸与真实物体尺寸之间的一致性,通过计算1减去角度对齐后的三维交并比(IoU)。

\mathrm{mASE}=1-\mathrm{IoU}

2.3 mAOE(Average Orientation Error)

平均角度误差(AOE)衡量的是预测物体方向与真实物体方向之间的最小偏航角差异。所有角度均在整个360度周期内测量,但障碍物除外,它们是在180度周期内测量的。

\mathrm{mAVE}=\frac1N\sum_{i=1}^N\sqrt{(v_{x,i}^\mathrm{pred}-v_{x,i}^\mathrm{true})^2+(v_{y,i}^\mathrm{pred}-v_{y,i}^\mathrm{true})^2}

2.4 mAVE(Average Velocity Error)

平均速度误差(AVE)是预测物体速度与真实物体速度之间的二维L2范数差(m/s)。

\mathrm{mAAE=1-acc}

其中 vx 和 vy 表示速度在x轴和y轴上的分量。

2.5 mAAE(Average Attribute Error)

平均属性错误(AAE)被定义为类别分类的错误率,即1减去分类准确度。

\mathrm{mAAE=1-acc}

其中 acc 是分类的准确度,即正确分类的样本数占总样本数的比例。

2.6 NDS计算

上述指标称为True Positive 指标。所有TP指标都是在匹配时使用 d=2 米中心距计算的,并且都被设计为正标量。如果特定类别未实现10%以上召回率,则该类别的所有 TP 错误都将设置为1。同时,忽略了一些类别的测量。

  • AVE(平均速度误差):不适用于路标锥和障碍物,因为它们是固定不动的,没有速度可测量。

  • AOE(平均角度误差):不适用于路标锥,因为它们没有明确的方向或朝向,无法评估其角度误差。

  • AAE(平均属性误差):不适用于路标锥和障碍物,因为这些类别没有定义明确的属性,无法计算属性相关的错误率。

\mathrm{NDS}=\frac{1}{10}[5 \mathrm{mAP}+\sum_{\mathrm{mTP}\in\mathbb{TP}}(1-\mathrm{min}(1, \mathrm{mTP}))]

NDS 的一半基于检测性能,而另一半则根据框位置、大小、方向、属性和速度来量化检测质量。由于 mAVE、mAOE 和 mATE 可能大于 1 ,因此会将每个指标限制在 0 和 1 之间。

相关文章:

【3D目标检测】常见相关指标说明

一、mAP指标 mean Average Precision(平均精度均值),它是目标检测和信息检索等任务中的重要性能指标。mAP 通过综合考虑精度和召回率来衡量模型的总体性能。 1.1 精度(Precision) 表示检索到的目标中实际为正确目标…...

QT设计模式:工厂模式

基本概念 工厂模式是一种创建型设计模式,用于将对象的创建逻辑与使用者分离,以实现对象的创建和使用的解耦。工厂模式提供了一个统一的接口来创建对象,而客户端代码只需通过该接口来请求所需的对象,而不需要知道具体的对象创建细…...

【电路笔记】-容抗

容抗 文章目录 容抗1、概述2、容抗示例13、容抗示例 24、容抗示例 35、分压器修订6、总结1、概述 容抗是电容器的复阻抗,其值随应用频率而变化。 与不依赖于频率的电阻不同,在交流电路中,电抗受电源频率的影响,并且其行为方式与电阻类似,两者都以欧姆为单位测量。 电抗会…...

基于若依框架搭建网站的开发日志(一):若依框架搭建、启动、部署

RuoYi(基于SpringBoot开发的轻量级Java快速开发框架) 链接:开源地址 若依是一款开源的基于VueSpringCloud的微服务后台管理系统(也有SpringBoot版本),集成了用户管理、权限管理、定时任务、前端表单生成等…...

Android中Fragment失去焦点的场景

在Android开发中,Fragment的生命周期方法onPause()会在以下几种情况下被调用: 当Fragment所在的Activity开始与其他Activity进行交互时,例如按下Home键或其他Activity获得焦点,导致当前Activity失去焦点,从而使得所有关…...

Linux变量的认识及环境变量配置详解

文章目录 1、变量的划分2、局部变量3、全局变量4、环境变量4.1、概述4.2、配置临时环境变量4.3、配置永久环境变量4.3.1、用户级配置文件1)配置方法一:~/.bashrc文件2)配置方法二:~/.profile文件3)配置方法三&#xff…...

【excel】数据非数值导致排序失效

场景 存在待排序列的数值列,但排序失效,提示类型有问题: 解决 选中该列,数据→分列 而后发现提示消失,识别为数字,可正常排序。...

软件网关--Nginx

Nginx 的多功能用途 Nginx 是构建现代化分布式应用程序的重要工具,它的功能远不止于高性能的 Web 服务器和反向代理。它还能充当 API 网关,处理前后端通信、认证、授权、监控等任务。以下是 Nginx 的主要用途: 前后端通信代理:N…...

sourceTree push失败

新电脑选择commit and push,报错了,不过commit成功,只不过push失败了。 原因是这个,PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink,本地没有这个ssh密钥,改换成openSSH&#xff…...

leetCode33. 搜索旋转排序数组

leetCode33. 搜索旋转排序数组 题目思路 此题的特点是:排好序循环的数组:特点:可以分为两个区间,一半升序,一半降序,或者全部升序 我们可以用二分法,找出升序 到降序的那个临界值,并…...

JS_监听dom变化触发,new MutationObserver

MutationObserver 是一个用于监测 DOM 变化的接口,它提供了一种机制来异步观察在特定元素或文档中发生的 DOM 变化。 MutationObserver 的作用包括: 1.监测 DOM 变化:你可以创建一个 MutationObserver 实例,并指定一个回调函数。…...

什么是驱动数字签名?如何获取驱动数字签名?

Windows 驱动程序承载着计算机实现的各种内核和用户模式功能。如果驱动程序被黑客攻击,可能会产生很多问题。Windows通过数字签名来验证驱动程序包的完整性及发布者的身份。2020年10月的安全更新中,微软加强了对驱动软件的验证,如果Windows无…...

【leetcode】优先队列题目总结

优先队列的底层是最大堆或最小堆 priority_queue<Type, Container, Functional>; Type是要存放的数据类型Container是实现底层堆的容器&#xff0c;必须是数组实现的容器&#xff0c;如vector、dequeFunctional是比较方式/比较函数/优先级 priority_queue<Type>…...

typescript 中的泛型

泛型&#xff1a;解决 类、接口、方法的复用性、以及对不特定数据类型的支持 传入的参数与返回参数类型一致 泛型函数 // T表示泛型&#xff0c;具体什么类型是调用这个方法的时候决定的 function getData<T>(value: T): T {return value } getData<number>(123) …...

计算方法实验2(补充):列主元消元法解线性方程组

C源代码 #include<bits/stdc.h> using namespace std;// 列主元消去法求解线性方程组 vector<long double> Column_Elimination(vector<vector<long double>> A, vector<long double> b);int main() {vector<vector<long double>> …...

Qt扫盲-Qt D-Bus概述

Qt D-Bus概述 一、概述二、总线三、相关概念1. 消息2. 服务名称3. 对象的路径4. 接口5. 备忘单 四、调试五、使用Qt D-Bus 适配器1. 在 D-Bus 适配器中声明槽函数1. 异步槽2. 只输入槽3. 输入输出槽4. 自动回复5. 延迟回复 一、概述 D-Bus是一种进程间通信(IPC)和远程过程调用…...

懒洋洋作业讲解

懒洋洋作业讲解 环境配置 1.软件下载&#xff1a;DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架 2.软件介绍 HBuilder是由DCloud&#xff08;数字天堂&#xff09;推出的一款面向HTML5的Web开发…...

vue3 + ts实现canvas绘制的waterfall

实际运行效果&#xff08;仅包含waterfall图表部分&#xff09; component.vue <template><div ref"heatmap" :style"{ height: props.containerHeight px }" /> </template><script setup> import ColorMap from "color…...

代码随想录算法训练营第四十四天

sad的一天&#xff0c;明天开始上班&#xff0c;而且娃还行&#xff0c;媳妇儿状态不稳定&#xff0c;太难了也&#xff01;&#xff01;&#xff01; 完全背包 #include<vector> #include<iostream> using namespace::std; int main(){int N;//种类int V;//空间ci…...

【3dmax笔记】027:配置修改器集、工具栏自定义与加载

文章目录 一、配置修改器集二、自定义工具栏三、加载工具栏 一、配置修改器集 可以把自己常用的修改命令放到右边框中的部分&#xff0c;便于自己的操作&#xff0c;省去了每次都要花半天时间找命令的尴尬。新建一个二维或者三维物体&#xff0c;点击修改面板&#xff0c;点击…...

Reactor模型详解

目录 1.概述 2.Single Reactor 3.muduo库的Multiple Reactors模型如下 1.概述 维基百科对Reactor模型的解释 The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs.…...

内存卡罢工,数据危机?别急,有救!

在日常生活和工作中&#xff0c;我们越来越依赖于各种电子设备来存储重要数据。其中&#xff0c;内存卡因其便携性和大容量而广受欢迎。然而&#xff0c;当内存卡突然损坏打不开时&#xff0c;我们该如何应对&#xff1f;本文将为您详细解析这一问题&#xff0c;并提供有效的解…...

python爬虫实战

import requests import json yesinput(输入页数&#xff1a;) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…...

k8s 资源文件参数介绍

Kubernetes资源文件yaml参数介绍 yaml 介绍 yaml 是一个类似 XML、JSON 的标记性语言。它强调以数据为中心&#xff0c;并不是以标识语言为重点例如 SpringBoot 的配置文件 application.yml 也是一个 yaml 格式的文件 语法格式 通过缩进表示层级关系不能使用tab进行缩进&am…...

mac系统安装steam报错-解决办法

今天给虚拟机装了个苹果系统&#xff0c;然后想装个steam&#xff0c;从steam的官方下载安装steam_osx.dmg时&#xff0c;总是报“steam_osx已损坏&#xff0c;无法打开&#xff0c;请移动到废纸篓“。搜了一下找到了解决办法&#xff0c;这里记录一下。 双击steam_osx.dmg时&…...

这个簇状柱形图怎么添加百分比?

这个图表是excel默认的图表配色&#xff0c;有的人做出来都那个百分比&#xff0c;一起来做一个这样的图表。 1.插入图表 选中数据区域&#xff0c;点击 插入选项卡&#xff0c;在图表那一栏&#xff0c;点一下柱形图右侧那个倒三角&#xff0c;在弹邮对话框中&#xff0c;选…...

Tomact安装配置及使用(超详细)

文章目录 web相关知识概述web简介(了解)软件架构模式(掌握)BS&#xff1a;browser server 浏览器服务器CS&#xff1a;client server 客户端服务器 B/S和C/S通信模式特点(重要)web资源(理解)资源分类 URL请求路径(理解)作用介绍格式浏览器通过url访问服务器的过程 服务器(掌握)…...

web后端——netbeans ide +jsp+servlet开发学习总结

目录 jsp基础 netbeans开发工具问题HTTP Status 405 - HTTP method POST is not supported......netbeans 提示无法启动GlassFish Server 4.1.1:服务器未运行时, HTTP 或 HTTPS 监听程序端口已被占用404 问题netbeans中项目中有多个html文件,如何单独运行某个文件&#xff1f;n…...

使用request-try-notifyState流程实现UI控制与状态反馈的完整闭环

1. 前言 在Qt编程时&#xff0c;我们经常会在界面上添加一些按钮&#xff0c;当按钮被点击时&#xff0c;执行某段代码&#xff0c;例如显示一个对话框、关闭窗口&#xff0c;保存文件等等。 这种由UI控件触发某种信号&#xff0c;通过信号槽触发目的代码执行的场景非常多。这…...

屏蔽罩材质和厚度对屏蔽效能的影响

​ 一&#xff0e;屏蔽效能的影响因素 屏蔽效能的影响因素主要有两个方面&#xff1a;屏蔽材料的特性和厚度&#xff1b;如下图所示&#xff0c;电磁波经过不同媒介时&#xff0c;会在分界面形成反射&#xff0c;穿过界面的电磁波一部分被反射回去&#xff0c;这部分能量损失…...