3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)
目录
- 1 准确率和召回率
- 2 P-R曲线的绘制
- 3 AP R11与AP R40标准
- 4 实际案例
1 准确率和召回率
首先给出 T P TP TP、 F P FP FP、 F N FN FN、 T N TN TN的概念
- 真阳性
True PositiveT P TP TP
预测为正(某类)且真值也为正(某类)的样本数,可视为 I o U > I o U t h r e s h o l d \mathrm{IoU>IoU_{threshold}} IoU>IoUthreshold的检测框数量 - 假阳性
False PositiveF P FP FP
预测为正(某类)但真值为负(另一类)的样本数,可视为 I o U ≤ I o U t h r e s h o l d \mathrm{IoU\le IoU_{threshold}} IoU≤IoUthreshold的检测框数量 - 真阴性
True NegativeT N TN TN
预测为负(不是某类)且真值也为负(不是某类)的样本数 - 假阴性
False NegativeF N FN FN
预测为负(不是某类)但真值为正(某类)的样本数,即在真值区域没有给出检测框
基于上述概念给出准确率和召回率的计算方法
- 准确率
Precision
P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP
- 召回率
Recall
R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
准确率 P P P又称为查准率,反映了目标检测的正确性;召回率 R R R又称为查全率,反映了目标检测的泛化性。



2 P-R曲线的绘制
P-R性能也称为准确率-召回率性能,或称查准率-查全率性能,常用于信息检索、Web推荐引擎等应用中。体现P-R性能的主要是P-R曲线,P-R曲线是用于评估二分类模型性能的重要工具,它展示了在不同阈值下模型的准确率和召回率之间的变化关系
P-R曲线的绘制过程是:将预测置信度从高到低排序,依次选择置信度为预测阈值(即大于该阈值的判定为正样本,否则为负样本),计算该阈值下的TP、FN、FP,从而得到准确率和召回率,从高到低移动阈值形成P-R曲线
以一个实例说明绘制过程
假设有10个样本,其中正负样本各5个,按照预测置信度从高到低排序,依次计算准确率和召回率

将形成的(Precision, Recall)坐标对画到坐标系上可得

随着样本增加,折现会趋于曲线
3 AP R11与AP R40标准
P-R曲线围成的面积称为平均准确率(Average Precision, AP),用于衡量模型的综合性能

对于面积的计算,一种方法是积分,但由于曲线形态各异,积分比较耗费计算资源;另一种方法是离散化求和,即用若干个矩形面积来近似曲线下面积

具体的公式为
A P ∣ R = 1 ∣ R ∣ ∑ r ∈ R ρ i n t e r ( r ) AP\mid_{R}^{}=\frac{1}{\left| R \right|}\sum_{r\in R}{\rho _{\mathrm{inter}}\left( r \right)} AP∣R=∣R∣1r∈R∑ρinter(r)
其中 R = { r 1 , r 2 , ⋯ , r n } R=\left\{ r_1,r_2,\cdots ,r_n \right\} R={r1,r2,⋯,rn}是等间隔的召回率点, R 11 R_{11} R11和 R 40 R_{40} R40分别指
R 11 = { 0 , 1 10 , 2 10 , ⋯ , 1 } R 40 = { 1 40 , 2 40 , 3 40 , ⋯ , 1 } R_{11}=\left\{ 0,\frac{1}{10},\frac{2}{10},\cdots ,1 \right\} \\ R_{40}=\left\{ \frac{1}{40},\frac{2}{40},\frac{3}{40},\cdots ,1 \right\} R11={0,101,102,⋯,1}R40={401,402,403,⋯,1}
相当于把召回率等分为 ∣ R ∣ \left| R \right| ∣R∣个矩形,高度为P-R曲线在该召回率点的准确度。但问题是可能原曲线在该点没有计算准确度指(因为本质上还是离散曲线),因此就引入准确度插值函数
ρ i n t e r ( r ) = max r ′ : r ′ > r ρ ( r ′ ) \rho _{\mathrm{inter}}\left( r \right) =\max _{r':r'>r}\rho \left( r' \right) ρinter(r)=r′:r′>rmaxρ(r′)
就是取召回率为 r ′ r' r′的位置之后所有准确率的最大值,作为该点的插值准确率,相当于把P-R曲线化成阶梯矩形,如下图蓝色曲线所示,接着按公式计算即可

R 40 R_{40} R40一定程度上削弱了 R 11 R_{11} R11在准确率很低时,AP结果仍然很高的情况,举例而言
假设一个场景中有20个
Ground Truth,但是算法只给出了一个检测结果,且检测的IoU大于阈值,即这是一个TP样本。该置信度下, P r e c i s i o n = 1.0 Precision=1.0 Precision=1.0, R e c a l l = 1 20 = 0.05 Recall=\frac{1}{20}=0.05 Recall=201=0.05
- 计算 A P ∣ R 11 = 1 11 = 0.0909 AP\mid_{R_{11}}^{}=\frac{1}{11}=0.0909 AP∣R11=111=0.0909,这里的1对应 R 11 R_{11} R11中召回点0,而这个准确率已经超过了很多单目3D检测算法的准确率,显然不合理

- 计算 A P ∣ R 40 = 1 + 1 40 = 0.05 AP\mid_{R_{40}}^{}=\frac{1+1}{40}=0.05 AP∣R40=401+1=0.05,这里的1对应 R 40 R_{40} R40中召回点 1 40 \frac{1}{40} 401和 2 40 \frac{2}{40} 402
目前KITTI官方也认可了 A P ∣ R 40 AP\mid_{R_{40}}^{} AP∣R40指标,后续基本也采用 A P ∣ R 40 AP\mid_{R_{40}}^{} AP∣R40进行实验评估
以下是KITTI数据集AP检测的实例
Car AP@0.70, 0.70, 0.70:
bbox AP:90.7769, 89.7942, 88.8813
bev AP:90.0097, 87.9282, 86.4528
3d AP:88.6137, 78.6245, 77.2243
aos AP:90.75, 89.66, 88.66
Car AP_R40@0.70, 0.70, 0.70:
bbox AP:95.5825, 94.0067, 91.5784
bev AP:92.4184, 88.5586, 87.6479
3d AP:90.5534, 81.6116, 78.6108
aos AP:95.55, 93.85, 91.33
解释如下:
-
第一行
Car AP@0.70, 0.70, 0.70Car表示类别,AP表示基于AP R11的平均准确率,后面三个0.70分别指代2D检测框、BEV检测框和3D检测框的IoU阈值,即大于这个阈值才认为是正样本 -
第二、三、四行
每一行指代一种检测模式,即2D检测框、BEV检测框和3D检测框,每一行的三个数值分别对应Easy、Moderate和Hard三种检测难度的的结果,难度越大(例如遮挡严重),检测准确度越小 -
第五行
aos表示平均朝向相似度(average orientation similarity),用于评价预测输出的朝向与真实框朝向的相似程度
4 实际案例
在KITTI数据集中,按以下步骤计算AP数值
-
计算IoU,这部分原理参考3D目标检测实战 | 详解2D/3D检测框交并比IoU计算(附Python实现)
frame_overlaps, parted_overlaps, gt_num, dt_num = iou(gt_annos, dt_annos, method, num_parts) -
以0置信度阈值计算置信度列表,即只要IoU符合条件的都视为TP样本,提取其置信度评分
rets = compute(frame_overlaps[i], gt_data_list[i], dt_data_list[i],ignored_gts[i], ignored_dts[i], min_overlap=min_overlap, thresh=0.0) _, _, _, _, scores_i = rets -
对置信度列表均匀采样41个点,得到40个召回点对应的置信度阈值
thresholds = getThresholds(np.array(scores), valid_gt_num)def getThresholds(scores: np.ndarray, num_gt, num_sample_pts=41):scores.sort()scores = scores[::-1]current_recall = 0thresholds = []for i, score in enumerate(scores):l_recall = (i + 1) / num_gtif i < (len(scores) - 1):r_recall = (i + 2) / num_gtelse:r_recall = l_recallif (((r_recall - current_recall) < (current_recall - l_recall))and (i < (len(scores) - 1))):continuethresholds.append(score)current_recall += 1 / (num_sample_pts - 1.0)return thresholds -
遍历每个阈值,计算该阈值下的TP、FP和FN,从而计算准确率和召回率
for i in range(len(thresholds)):recall[m, l, k, i] = pr[i, 0] / (pr[i, 0] + pr[i, 2])precision[m, l, k, i] = pr[i, 0] / (pr[i, 0] + pr[i, 1])if compute_aos:aos[m, l, k, i] = pr[i, 3] / (pr[i, 0] + pr[i, 1]) -
取PR曲线外接矩形
for i in range(len(thresholds)):precision[m, l, k, i] = np.max(precision[m, l, k, i:], axis=-1)recall[m, l, k, i] = np.max(recall[m, l, k, i:], axis=-1)if compute_aos:aos[m, l, k, i] = np.max(aos[m, l, k, i:], axis=-1) -
计算AP
def mAP(prec):sums = 0for i in range(0, prec.shape[-1], 4):sums = sums + prec[..., i]return sums / 11 * 100def mAPR40(prec):sums = 0for i in range(1, prec.shape[-1]):sums = sums + prec[..., i]return sums / 40 * 100

本文完整工程代码请通过下方名片联系博主获取
🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …
相关文章:
3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)
目录 1 准确率和召回率2 P-R曲线的绘制3 AP R11与AP R40标准4 实际案例 1 准确率和召回率 首先给出 T P TP TP、 F P FP FP、 F N FN FN、 T N TN TN的概念 真阳性 True Positive T P TP TP 预测为正(某类)且真值也为正(某类)的样本数,可视为 I o U > I o U t…...
制作一个ros2机器人需要学习的课本(还不全面)
1《C语言》---这个是基础200页左右 2《C》-----500-600页 3《高等数学》-----没有这个无法计算动态电路 4《电路分析》-----没有这个没法设计硬件电路 5《英语5000词汇》最少也得达到美国小学生毕业时候的词汇水平5000词汇量 6《ros1》因为ros2没有一本中文课本---有那么一…...
Qt OpenGL相机系统
文章目录 一、简介二、实现代码三、实现效果参考资料效果展示 一、简介 一直偷懒没有学习OpenGL,乘着这段有点时间重新学习一下OpenGL,做一个简单的小工具,有助于后面理解OSG。我们都知道OpenGL中存在着下面几个坐标空间:模型空间(物体空间)、世界空间、观察空间(或者称…...
英语语音识别,语言评测,语音打分实践与代码实现
项目在这:couldn/speech-evaluation-of-english 详细的可查看项目内的md文档...
【SpringBoot篇】SpringBoot整合Mybatis实战
🎊专栏【SpringBoot】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🌺Spring Boot和MyBatis的好处🌺创建工…...
android c++ 硬编码硬解码官方demo
参考: https://fossies.org/linux/opencv/modules/videoio/src/cap_android_mediandk.cpp 代码: // This file is part of OpenCV project.// It is subject to the license terms in the LICENSE file found in the top-level directory// of this d…...
Python之Excel数据相关
Excel Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsof…...
Ubuntu网络IP地址一直显示127.0.0.1
问题描述: 终端输入ip a显示127.0.0.1,原来类似192.168.231.1的地址不见了。 ip a 点击网络配置(ubuntu桌面版),发现无线网络模块看不见了 正常情况应该有wired 模块,就是下面标红的 解决方案:…...
Vulnhub-DC-3 靶机复现完整过程
啰嗦两句: 提权之前完成是一个月前做的,当时在提权处出了点问题就搁置了,今天才完成,所以IP地址可能会会有变化 注意:后续出现的IP地址为192.168.200.55同样是靶机IP地址,若本文能有帮助到你的地方…...
Dubbo篇---第三篇
系列文章目录 文章目录 系列文章目录一、Dubbo 容错策略二、Dubbo 动态代理策略有哪些?三、说说 Dubbo 与 Spring Cloud 的区别?一、Dubbo 容错策略 failover cluster 模式 provider 宕机重试以后,请求会分到其他的 provider 上,默认两次,可以手动设置重试次数,建 议把写…...
Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用
java连接上redisjava操作redis的常见类型数据存储redis中的项目应用 1.java连接上redis package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** author zlj* create 2023-11-03 19:27*/ public class Demo1 {public static void main(String[] args) { // …...
react 使用笔记
1.学习:https://reactjs.bootcss.com/learn 2.项目启动报错:Delete ␍ prettier/prettier 解决:https://blog.csdn.net/qq_30272167/article/details/133280165 3.访问地址配置 文件:config-overrides.js devServer: functio…...
Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录
Ubuntu下启动Apache对.htaccess 的支持步骤 1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称,输入: rewrite 2. 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件) 把(默认的www目录、或者需要应用.htacc…...
C++常用格式化输出
在C语言中可以用printf以一定的格式打印字符,C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。 在C中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2…...
QCC TX 音频输入切换+提示声音
QCC TX 音频输入切换提示声音 QCC蓝牙芯片(QCC3040 QCC3056 等等),AUX、I2S、USB输入 蓝牙音频输入,模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 针对TX切换EQ,调节音量不能出提示声音问题,可以增…...
【Java】封装、继承、多态
面向对象的重要特征:封装、继承、多态; 面向对象的语言的语言并不止Java,C也是面向对象的语言; 访问限定符 public:在哪里都可以使用(公开的);private:仅在当前类可以使用…...
第九章 异常处理
系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…...
(四) Python Pandas入门
一、介绍 Pandas是Python中一个强大的数据处理库,它提供了许多功能强大的数据结构和数据分析工具。在本文中,我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件。 Pandas提供了大量的数据结构和数据分析工…...
软件测试面试最经典的5个问题
软件测试面试灵魂五问! 请做一下自我介绍?你为什么从上家公司离职?为什么转行做测试? 你对测试行业的认识?你的期望薪资是多少?最后,你要问我什么? 一、请做一下自我介绍 简历上有的可以一两…...
从公共业务提取来看架构演进——功能设置篇
1.引言 上一篇文章我们以帐号权限的提取为例,介绍了当架构跟不上业务发展时及时调整架构的一种思路。这篇文章我们以功能设置为例,进一步讨论公共业务提取这个话题。 功能设置在本文中是指产品开放给企业和用户的一些功能设置项,以视频会议…...
从理论推导到代码实现:手把手教你用Python/Numpy写出守恒形式的NS方程求解器
从理论推导到代码实现:手把手教你用Python/Numpy写出守恒形式的NS方程求解器计算流体力学(CFD)的魅力在于它将抽象的数学方程转化为可执行的代码,让流体运动的奥秘在计算机中重现。对于已经掌握流体力学理论的中高级学习者来说&am…...
动物森友会岛屿设计终极指南:用Happy Island Designer打造梦想岛屿
动物森友会岛屿设计终极指南:用Happy Island Designer打造梦想岛屿 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Anim…...
5分钟掌握文件完整性验证:HashCalculator终极免费批量哈希计算工具指南
5分钟掌握文件完整性验证:HashCalculator终极免费批量哈希计算工具指南 【免费下载链接】HashCalculator 哈希值计算工具,批量计算/批量校验/查找重复文件/改变哈希值等,支持集成到系统右键菜单 项目地址: https://gitcode.com/gh_mirrors/…...
Akagi麻将AI助手:5分钟搭建你的实时对局分析系统,告别盲目打牌!
Akagi麻将AI助手:5分钟搭建你的实时对局分析系统,告别盲目打牌! 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majs…...
一小时搭建爬虫数据提取智能体 · 数据矿工
🧑💻 博主介绍 & 诚邀关注 作者:专注于 Java、Python、前端开发的技术博主 | 全网粉丝 30 万 在校期间协助导师完成毕业设计课题分类、论文格式初审及代码整理工作;工作后持续分享毕设思路,助力毕业生顺利完成…...
企业官网后台的工程化设计:内容建模、所见即所得与源码自主可控
企业官网后台的工程化设计:内容建模、所见即所得与源码自主可控 “网站做完我们自己能改吗?要不要技术?”——这个业务问题,在工程层面其实是问:这套 CMS 的内容模型、编辑体验、权限和可维护性设计得怎么样。 后台&qu…...
SPSS+Excel搞定SCI必备技能:零代码绘制Logistic回归亚组交互效应图
SPSSExcel零代码绘制Logistic回归亚组交互效应图:临床研究者的可视化救星"统计结果显著,但图表被审稿人打回重做"——这可能是临床研究者最头疼的问题之一。亚组交互效应分析作为高分SCI文章的"黄金标配",其可视化呈现直…...
【DeepSeek边缘部署实战指南】:20年架构师亲授5大避坑法则与3步极简上线法
更多请点击: https://codechina.net 第一章:DeepSeek边缘部署的演进逻辑与核心挑战 随着大模型从云端向终端下沉,DeepSeek系列模型在边缘侧的部署正经历从“能跑”到“稳跑”、从“单点适配”到“全栈协同”的范式跃迁。这一演进并非单纯的技…...
Gemini模型迭代、推理成本、合规折旧、业务适配率——四大价值损耗源深度拆解,附可落地的季度健康度自检表
更多请点击: https://codechina.net 第一章:Gemini生命周期价值分析 Gemini 模型作为 Google 推出的多模态大语言模型系列,其生命周期价值不仅体现在推理性能与响应速度上,更贯穿于训练、部署、监控、迭代与退役全过程。理解这一…...
基于减法优化算法(SABO)优化CNN-BiGUR-Attention风电功率预测研究附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 dz…...
