【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 之间。

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

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

相关文章

数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计

前言 在上一篇文章中。我们完成了Qt环境的安装,同时完成了有关项目需求的分析并绘制了整体的项目架构图,而在图书管理系统中,其实我们主要完成的就是对数据的增删改查,并将这些功能通过信号与槽机制和可视化界面绑定在一起&#…

二、双fifo流水线操作——verilog练习与设计

文章目录 一、案例分析二、fifo_ctrl模块设计2.1 波形设计:2.2 代码实现2.2.1 fifo_ctrl2.2.2 顶层文件top_fifo_ctrl(rx和tx模块省略)2.2.3 仿真文件tb_fifo_ctrl 2.3波形仿真 一、案例分析 案例要求:写一个 fifo 控制器&#x…

WSL安装及使用

一、强烈推荐使用win11系统 二、优先参考官方链接 Install WSL | Microsoft Learn 三、其次参考链接 Manual installation steps for older versions of WSL | Microsoft Learn 四、本次测试安装过程记录 1:准备工作 Step 1 - Enable the Windows Subsystem for Linux dism.ex…

探索网站支付系统的奥秘,从Vue3和Spring Boot开始(入门级项目实战+在线教程)附赠项目源码!

你是否曾经在购物时,对着电脑屏幕前的“支付成功”四个字感到好奇?这背后的秘密究竟是什么? 今天,让我们一起揭开支付系统的神秘面纱,探索其背后的技术实现。 在这个基于Vue3和Spring Boot的支付项目实战中&#xff…

网贷大数据查询要怎么保证准确性?

相信现在不少人都听说过什么是网贷大数据,但还有很多人都会将它跟征信混为一谈,其实两者有本质上的区别,那网贷大数据查询要怎么保证准确性呢?本文将为大家总结几点,感兴趣的朋友不妨去看看。 想要保证网贷大数据查询的准确度&am…

经常使用的正则分割

背景: 工作中经常需要对一串数据进行分割,最简单的办法就是使用正则表达式。 常见符号: \:\后跟一个特殊字符,表示匹配这个字符,例如\$,表示匹配数据中的$。 ^:^后跟一个特殊字符&a…

virtualbox kafka nat + host-only集群 + windows 外网 多网卡

virtualbox kafka nat + host-only集群 + windows 映射访问 kafka集群搭建背景kafka集群搭建 背景 使用virtualbox搭建kafka集群,涉及到不同网络策略的取舍 首先 桥接 网络虽说 啥都可以,但是涉及到过多ip的时候,而且还不能保证使用的ip不被占用,所以个人选择kafka虚拟机…

用龙梦迷你电脑福珑2.0做web服务器

用龙梦迷你电脑福珑2.0上做web服务器是可行的。已将一个网站源码放到该电脑,在局域网里可以访问网站网页。另外通过在同一局域网内的一台windows10电脑上安装花生壳软件,也可以在外网访问该内网服务器网站网页。该电脑的操作系统属于LAMP。在该电脑上安装…

Mysql报错红温集锦(一)(ipynb配置、pymysql登录、密码带@、to_sql如何加速、触发器SIGNAL阻止插入数据)

一、jupyter notebook无法使用%sql来添加sql代码 可能原因: 1、没装jupyter和notebook库、没装ipython-sql库 pip install jupyter notebook ipython-sql 另外如果是vscode的话还需要安装一些相关的插件 2、没load_ext %load_ext sql 3、没正确的登录到mysql…

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发 搭建短视频矩阵系统源码的交付步骤可以概括为以下几个关键环节: 1. **系统需求分析**:明确系统需要支持的功能,如短视频的上传、存储、播放、分享、评论、点赞等。 2. **技术选…

计算机体系结构:6、指令流水线

6.指令流水线 6.1 流水线概述 6.1.1 流水线的执行效率 ​ 一条指令的执行过程可被分为若干阶段,每个阶段由相应的功能部件完成。一般而言,一条指令的流水线由如下5个流水段组成: 取指令(IF):从存储器取指令指令译码(ID):产生指令执行所需…

QLabel 如何同时显示图片和文字?

效果: align="top"表示图片和文字底部对齐。 img src=":/img/qrc_img.png"表示此图片被添加到qrc的相对路径。 完整: QString content =QString("<html><head/><body><p><img src=\":/img/qrc_img.png\"…

Linux i2c工具——i2c_tools

1 简介 i2c-tools是一个用于处理I2C&#xff08;Inter-Integrated Circuit&#xff09;总线的工具集&#xff0c;它在Linux环境中广泛使用。这个工具集包含了一系列命令行工具&#xff0c;用于在I2C总线上执行各种操作&#xff0c;例如扫描设备、读取/写入寄存器、检测设备等。…

CMakeLists.txt语法规则:部分常用命令说明一

一. 简介 前一篇文章简单介绍了CMakeLists.txt 简单的语法。文章如下&#xff1a; CMakeLists.txt 简单的语法介绍-CSDN博客 接下来对 CMakeLists.txt语法规则进行具体的学习。本文具体学习 CMakeLists.txt语法规则中常用的命令。 二. CMakeLists.txt语法规则&#xff1a;…

二手手机店需要用专业erp软件进行管理吗?

2024年在科技发展迅速的今天&#xff0c;手机批发和零售行业正迎来前所未有的革新。为了在这个变革中抓住机遇&#xff0c;提升竞争力&#xff0c;二手手机店需要寻找一种全面、高效、智能的管理工具。基于这个原因&#xff0c;超机商城为众多二手手机店商家量身打造的一款二手…

掌控网络流量,优化网络性能 - AnaTraf网络流量分析仪登场

在当今日新月异的网络环境中,网络流量监控和性能诊断已成为企业IT部门不可或缺的重要工作。只有充分了解网络流量状况,才能有效优化网络性能,提高业务运营效率。针对这一需求,全新推出的AnaTraf网络流量分析仪应运而生,为企业提供全面的网络监控和性能诊断解决方案。 快速定位…

地道俄语口语,柯桥俄语培训哪家好

1、по-моему 依我看&#xff1b;在我看来 例&#xff1a; По-моему, сегодня будет дождь. 依我看, 今天要下雨。 Сделай по-моему. 按我的办法干吧 2、кажется 似乎是&#xff1b;看起来 例&#xff1a; Парень, …

3D 交互展示该怎么做?

在博维数孪&#xff08;Bowell&#xff09;平台制作3D交互展示的流程相对简单&#xff0c;主要分为以下几个步骤&#xff1a; 1、准备3D模型&#xff1a;首先&#xff0c;你需要有一个3D模型。如果你有3D建模的经验&#xff0c;可以使用3ds Max或Blender等软件自行创建。如果没…

.NET_NLog

步骤 1. 添加依赖 ①Microsoft.Extensions.DependencyInjection ②NLog.Extensions.Logging&#xff08;或Microsoft.Extensions.Logging.___&#xff09; Tutorial NLog/NLog Wiki GitHub 2.添加nlog.config文件(默认名称, 可改为其他名称, 但需要另行配置) 文件的基础…

贪吃蛇小游戏(c语言)

1.效果展示 屏幕录制 2024-04-28 205129 2.基本功能 • 贪吃蛇地图绘制 • 蛇吃食物的功能 &#xff08;上、下、左、右方键控制蛇的动作&#xff09; • 蛇撞墙死亡 • 蛇撞自身死亡 • 计算得分 • 蛇身加速、减速 • 暂停游戏 3.技术要点 C语言函数、枚举、结构…