【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 == c
        n_l = nt[ci]
        n_p = i.sum()
        if n_p == 0 or n_l == 0:
            continue

        fpc = (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.mfbz.cn/a/604415.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

随着物联网和智能设备的快速发展,嵌入式开发和鸿蒙系统成为了当前技术领域的热门话题。鸿蒙系统作为华为推出的全场景分布式操作系统,旨在连接各种智能设备,提供无缝的跨设备体验。而南向开发则是鸿蒙系统中的一个重要方向,主要涉…

长难句打卡5.6

For H&M to offer a $5.95 knit miniskirt in all its 2,300-plus stores around the world, it must rely on low-wage overseas labor, order in volumes that strain natural resources, and use massive amounts of harmful chemicals. 翻译:H&M若要在其全球总共2…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令,形式如下: # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件&#…

Django-新冠疫情数据分析系统-67684

目 录 摘要 1 绪论 1.1 研究背景 1.2论文结构与章节安排 2 新冠疫情数据分析系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析…

Stuff Error的解决办法

Stuff Error的解决办法 一、问题描述 在使用CANoe、CANalyzer设备做一些总线CAN信号的通信测试过程中,会出现Stuff Error这类的错误,具体trace如下: 二、解决办法 错误原因:Stuff Error通常是物理原因引起的 常见的解决方案有…

Jmeter用jdbc实现对数据库的操作

我们在用Jmeter进行数据库的操作时需要用到配置组件“JDBC Connection Configuration”,通过配置相应的驱动能够让我们通过Jmeter实现对数据库的增删改查,这里我用的mysql数据库一起来看下是怎么实现的吧。 1.驱动包安装 在安装驱动之前我们要先查看当前…

Redis(主从复制搭建)

文章目录 1.主从复制示意图2.搭建一主多从1.搭建规划三台机器(一主二从)2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)1.安装Redis1.yum安装gcc2.查看gcc版本3.将redis6.2.6上传到/opt目录下4.进入/opt目录下然…

ACM实训冲刺第一天

目录 ACM实训课程考核 考核内容 备赛安排 推荐学习资源 ACM实训准备规划 前话 历届习题(未曾改变) 第0套 第1套 第2套 第3套 第4套 规划 5.8 - 5.12 (11周) 5.13-5.19(12周) 5.20-5.26&…

解放双手,利用自动点赞软件提高曝光度

在数字时代,社交媒体如同一片繁茂的森林,每一条动态、每一张照片都是树上挂着的果实,而点赞则仿佛是那些吸引眼球的色彩。在这个以流量为王的网络世界里,点赞数往往与内容的可见度直接相关,它不仅能够增加帖子的权重&a…

智能家居4 -- 添加接收消息的初步处理

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 receive_interface.c #include <pthread.h> #include <mqueue.h> #include <string.h> #include <errno.h> #include <…

渐进淡出背景个人导航页源码(火影版)

渐进淡出背景个人导航页源码&#xff08;火影版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 <!DOCTYPE html> <html> <head> <!--小K网 www.xkwo.com --><meta charset"UTF-8"><title>火影版个人主页<…

如果出现一个工具,可以让前端开发彻底不用再手写UI,这个工具意义大吗?干货!

求这样的一个工具&#xff0c;可以让后端开发、嵌入式开发、产品经理、UI设计师都能用&#xff0c;注意&#xff0c;不是在一个简单的静态页生成&#xff0c;也不是类似飞冰那种 generator &#xff0c;而是真正让设计师和开发者在各自的那侧达成自治&#xff0c;可以做到吗&am…

异构图神经网络——Heterogeneous Graph Neural Networks

相关代码见文末 1.回顾同构图 1.1 GNN GNN基本计算方法——邻接矩阵乘以节点,聚合相邻节点的特征,得到本节点的特征表达 1.2 Graph Attention Network 引入图注意力,实现边的权重可学习,最简单的方法是,将两个节点的特征进行拼接,使用一组可学习的权重参数映射为边的权…

搜狗输入法 PC端 v14.4.0.9307 去广告绿化版.

软件介绍 搜狗拼音输入法作为众多用户计算机配置的必备工具&#xff0c;其功能的全面性已为众所周知&#xff0c;并且以其高效便捷的输入体验受到广大使用者的青睐。然而&#xff0c;该软件在提供便利的同时&#xff0c;其内置的广告元素常常为用户带来一定的干扰。为此&#…

游戏理解入门:Rust+Bracket开发一个小游戏

1. Game loop 使用game loop可以使得游戏运行更加流畅和顺滑&#xff0c;它可以&#xff1a; 初始化窗口、图形和其他资源&#xff1b;每当屏幕刷新他都会运行(通常是每秒30,60 )&#xff1b;每次通过循环&#xff0c;他都会调用游戏的tick()函数。 大致的原理流程如下&…

利用生成式AI重新构想ITSM的未来

对注入 AI 的生成式 ITSM 的需求&#xff0c;在 2023 年 Gartner AI 炒作周期中&#xff0c;生成式 AI 达到预期值达到顶峰后&#xff0c;三分之二的企业已经将生成式 AI 集成到其流程中。 你问为什么这种追求&#xff1f;在预定义算法的驱动下&#xff0c;IT 服务交付和管理中…

又发现一个ai生成音乐的网站-heymusic

网址 https://heymusic.ai/ 尴尬&#xff0c;不挂梯子能登录进来&#xff0c;但是谷歌账号注册不了&#xff0c;刷新了几遍也没注册上。 看了下价格&#xff0c;应该不是免费的&#xff0c;所以也没了试用的兴趣。 我也不想用别的邮箱注册了&#xff0c;所以只能简单的水一…

固定资产管理系统参考论文(论文 + 源码)

【免费】固定资产管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282536 固定资产管理系统 摘 要 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求&#xff0c;利用计算机实现设备及资产的信息化管理已经显得非常重要。 固…

IO 5.8日

1&#xff1a;使用 dup2 实现错误日志功能 使用 write 和 read 实现文件的拷贝功能&#xff0c;注意&#xff0c;代码中所有函数后面&#xff0c;紧跟perror输出错误信息&#xff0c;要求这些错误信息重定向到错误日志 err.txt 中去 2&#xff1a;判断一个文件是否拥有用户可写…
最新文章