目标检测COCO数据集与评价体系mAP

news2025/5/25 15:27:35

1.mAP

2.IoU

IoU也就是交并比,也称为 Jaccard 指数,用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框,用于指定对象图像的位置以及预测的边界框来自模型的位置。

下图是真实值边界框与预测边界框的直观示例,其目标是计算这两个边界框之间的交并比。

                图1 检测停车标志,预测的边界框以红色绘制,而真实边界框以绿色绘制。

交并比的计算非常简单,只需将边界框之间的重叠区域除以并集面积即可。

IoU 分数是标准化的(因为分母是并集区域面积),范围从 0.0 到 1.0。此处,0.0 表示预测边界框和真值边界框之间没有重叠,而 1.0 是最优值,这意味着预测的边界框与真值边界框完全重叠。

  IoU> 0.5 通常被认为是“良好”的预测。反之, IoU < 0.5  视为预测不合格,予以舍弃。

通常我们并不关心边界框的 (x, y) 坐标与Ground Truth边界框的 (x, y) 坐标的精确匹配,但我们希望确保预测的边界框尽可能接近 — 也就是交集可以考虑这一点。

上图中,与真实边界框严重重叠的预测边界框比重叠较少的边界框具有更高的IoU分数。这使得交并比成为评估自定义对象检测器的绝佳指标。尽管如此,IoU的简单计算还是会存在各种各样的局限,具体需进一步查阅IoU的各种扩展,本文不涉及这方面的讨论。

3.精确率和召回率

要了解 mAP,我们先来看看精确率与召回率。召回率是真正率,即在所有实际正例中,有多少是真正例的预测结果。精确率是预测正率,即在所有预测正类结果中,有多少是真正例的预测结果。

                                        {Recall} = \frac{​{TP}}{​{TP} + {FN}} = \frac{​{TP}}{​{​{\#}ground truths}} \\ {Precision} = \frac{​{TP}}{​{TP} + {FP}} = \frac{​{TP}}{​{​{\#}predictions}}

对于mAP的计算,主要针对两种数据集展开具体讨论。

Pascal VOC

Pascal(VOC2012) 是一项挑战赛,即在现实场景中识别来自各种视觉目标类的对象。这是一项监督学习比赛,其中提供了标记的Ground  Truth图像。该数据集有 20 个目标类,如人、鸟、猫、狗、自行车、汽车、椅子、沙发、电视、瓶子等。

PASCAL VOC 的历史可以追溯到 2005 年,当时数据集仅包含四类:自行车、汽车、摩托车和人。它共有 1578 张图像,包含 2209 个带标注的目标。

下图显示了 20 个类中每个类的示例图像,正如我们所看到的,第一行倒数第二张图像中有几把(三)把椅子。

                         PASCAL VOC 数据集中描述所有 20 个类别的示例图像

VOC2012 数据集由 11,530 张图像和 27,450 个感兴趣区域 (ROI)标注目标组成,并带有 train/val 拆分。27,450 ROI 是指整个数据集中的边界框,因为每个图像可以有多个目标区域或 ROI。因此,与图像相比,ROI数量是图像数量的2 倍以上。

为了计算 mAP,首先需要计算每个类的 AP。

考虑以下图像,其中包含特定类的ground truths(绿色)和 bbox 预测(红色)。

bbox的详细信息如下:

在此示例中,如果 IoU > 0.5 视为TP,否则 FP。现在,根据置信度分数对图像检测结果排序。注意,如果单个object有多个检测,则具有最高 IoU 的检测被视为 TP,其余为 FP,如下图所示。

在 VOC 指标中,召回率定义为排名高于给定排名的所有正例的比例。精确率是该排名以上所有示例中来自正类的比例。

因此,在 Acc (accumulated) TP 列中,从顶部写下遇到的 TP 总数,并对 Acc FP 执行相同的操作。现在,对于P4计算精确率与召回率:Precision = 1/(1+0) = 1Recall = 1/3 = 0.33

然后绘制这些精确率和召回率值,以获得 PR(精确召回率)曲线。PR 曲线下的面积称为平均精度 (AP)。PR 曲线遵循一种锯齿形模式,因为召回率绝对增加,而精确率总体上随着零星上升而降低。

AP 总结了精确召回率曲线的形状,在 VOC 2007 中,它被定义为一组 11 个等距召回水平 [0,0.1,...,1](0 到 1,步长为 0.1)的精确值的平均值,而不是 AUC

        ​​​​​​​        ​​​​​​​        ​​​​​​​        AP = \frac{1}{11} \sum_{r \in (0,0.1,...,1)}{p_{interp(r)}}

每个召回率水平 r 的精度是通过取相应召回率超过 r 的方法测量的最大精度来插值的。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        p_{interp(r)} = \max_{\tilde{r}:\tilde{r}\geq r}{p(r)}

即在 11 个等距召回点 [0:0.1:1] 处取右边的最大精度值,并取它们的平均值得到 AP。

然而,从 VOC 2010 开始,AP 的计算发生了变化。

通过将召回率 r 的精度设置为任何召回率获得的最大精度,计算精确率单调递减的测量精度-召回率曲线的版本 \tilde{r}>r 然后通过数值积分将 AP 计算为该曲线下的面积。

即,给定橙色的 PR 曲线,计算所有召回点右侧的最大精度,从而获得绿色的新曲线。现在,在绿色曲线下使用积分进行 AUC,这就得到AP。与 VOC 2007 的唯一区别是,我们不仅考虑了 11 点,还考虑了所有要点。

现在,我们有每个类(对象类别)的 AP,平均精度 (mAP) 是所有对象类别的平均 AP。

对于VOC中的分割挑战,以分割精度(使用IoU计算的每像素精度)作为评价标准,其定义如下:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \text{segmentation accuracy} = \frac{\text{TP}}{\text{TP + FP + FN}}

COCO

Microsoft Common Objects in Context  (MS COCO) 是 2014 年推出的大规模目标检测、分割和字幕数据集,借助使用新颖用户界面的广泛众包数据。该数据集包含 80 个对象类别的图像,在 328k 图像中具有 250 万个标记实例。

下图显示了 COCO 数据集中标有实例分割的示例图像。

 

COCO 还具有出色的用户界面,可以探索数据集中的图像。例如,您可以从 80 个类中选择缩略图;它会将它们作为标签放在搜索栏中,当您搜索时,它将显示数据集中带有这些标签(类)的所有图像,如下图所示。

 

此外,当显示生成的图像时,所有类(超过搜索的类)都显示为缩略图。也就是可以通过进一步单击这些缩略图来可视化与这些类相关的分割掩码来使用它。

通常,与 VOC 一样,IoU > 0.5 的预测被视为真正例预测。这意味着 IoU 0.6 和 0.9 的两个预测将具有相等的权重。因此,某个阈值会在评估指标中引入偏差。解决此问题的一种方法是使用一系列 IoU 阈值,并计算每个 IoU 的 mAP,并取它们的平均值来获得最终的 mAP。

请注意,COCO 使用 [0:.01:1] R=101 召回阈值进行评估。

在 COCO 评估中,IoU 阈值范围为 0.5 至 0.95,步长为 0.05 表示为 AP@[.5:.05:.95]。

IoU=0.5 和 IoU=0.75 等固定 IoU 的 AP 分别写为 AP50 和 AP75。

除非另有说明,否则 AP 和 AR 在多个并集交集 (IoU) 值上取平均值。具体来说,我们使用 10 个 IoU 阈值 .50:.05:.95。这与传统不同,在传统中,AP 以 .50 的单个 IoU 计算(对应于我们的指标一个AP^{IoU=.50}).对 IoUs 进行平均会奖励具有更好定位的检测器。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        \mathit{mAP_{\text{COCO}} = \frac{mAP_{0.50} + mAP_{0.55} + ... + mAP_{0.95}}{10}}

AP 是所有类别的平均值。传统上,这被称为“平均精度”(mAP)。我们没有区分 AP 和 mAP(以及 AR 和 mAR),并假设从上下文中可以清楚地看出区别。

两分钟的补充:通常,平均值以不同的顺序进行(最终结果是相同的),在 COCO 中,mAP 也称为 AP,即

  • 步骤1:对于每个类,计算不同 IoU 阈值下的 AP,并取其平均值以获得该类的 AP。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        {AP[class]} = \frac{1}{​{​{\#}thresolds}} \sum_{​{iou \in thresholds}}{AP[class, iou]}

  • 步骤2:通过对不同类的 AP 求平均值来计算最终 AP。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        {AP} = \frac{1}{​{​{\#}classes}} \sum_{​{class \in classes}}{AP[class]}

AP 实际上是一个平均、平均、平均的精度。

4.结论

  • PascalVOC2007 在 PR 曲线上使用 11 个召回点。
  • PascalVOC2010–2012 在 PR 曲线上使用(所有点)曲线下面积 (AUC)。
  • MS COCO 在 PR 曲线上使用 101 个召回点以及不同的 IoU 阈值。

5.参考资料

  1. COCO evaluation metrics
  2. VOC2007 metrics
  3. VOC2012 metrics
  4. Object detection metrics
  5. mAP (mean Average Precision) for Object Detection
  6. Evaluation metrics for object detection and segmentation: mAP (kharshit.github.io)

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

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

相关文章

软件安全测试有哪些测试方法?安全测试报告如何申请?

随着网络条件越来越好&#xff0c;软件产品质量和软件安全处于同等重要的地位&#xff0c;一款好的软件产品安全系数至关重要&#xff0c;因此安全测试必不可少&#xff0c;那么软件安全测试有哪些测试方法呢?安全测试报告又该如何申请&#xff1f; 软件安全测试是指测试人员…

BUUCTF--ciscn_2019_n_31

这是一题32位的堆题&#xff0c;照常看看保护&#xff1a; 没有开启PIE&#xff0c;接着进行黑盒测试&#xff1a; 菜单题&#xff0c;扔进IDA看看代码逻辑&#xff1a; 4这个功能是提供所谓的进阶版&#xff0c;当时我测试的时候以为是里面有后门还是什么的。结果发现是虚晃一…

(17)Linux的进程阻塞进程程序替换 exec 函数簇

前言&#xff1a;本章我们讲解它的 options 参数。在讲解之前我们需要理解进程阻塞&#xff0c;然后我们重点讲解二进程程序替换&#xff0c;这是本章的重点&#xff0c;然后介绍一个进程替换函数 execl&#xff0c;通过介绍这个函数来打开突破口&#xff0c;引入进程创建的知识…

dubbo使用的三种配置

一. 准备注册中心 dubbo的注册中心在生产环境中&#xff0c;一般都会选择 ZooKeeper 下载 ZooKeeper ZooKeeper_3.4.14下载地址启动ZK # 解压安装包 tar -zxvf zookeeper-3.4.14.tar.gz# 进入安装目录&#xff0c; cp conf/zoo_sample.cfg conf/zoo.cfg# 启动ZK ./bin/zkServ…

Vue3-33-路由-路由的别名配置 alias

别名的作用 路由中的别名配置&#xff0c;可以实现 多个路径 对应 同一个路由。 例如 &#xff1a; 路由的路径是 /a; 配置别名为 &#xff1a; /a2; 则 访问 /a 或 /a2 的时候&#xff0c;都可以访问到 同一个组件。 别名的特点 关键字 &#xff1a; alias 当通过别名进行路由…

【期末复习向】数据可视化技术

一、重点复习 题型&#xff1a;填空题&#xff08;15道&#xff0c;2分一个&#xff09;与简答题&#xff08;3道题目&#xff0c;10分一个&#xff09;与绘图题&#xff08;选画2个类型的图&#xff09; 1.什么是数据可视化 在计算机视觉领域&#xff0c;数据可视化是对数据的…

Docker入门教程(详解)

Docker容器化 一 入门 1. 引言 &#xff08;1&#xff09;单机部署 场景&#xff1a; 将多个应用部署一台服务器上。 问题 每个应用软件&#xff0c;都会消耗物理资源&#xff0c;共用计算机资源&#xff0c;彼此之间会形成竞争关系。 &#xff08;2&#xff09;多机部署 …

技术大拿私房课:掌握Task、Thread、ThreadPool的终极秘籍!

大家好&#xff0c;我是小米&#xff01;在这个充满技术和创新的时代&#xff0c;作为一名喜欢分享的技术探索者&#xff0c;我想和大家聊一聊一些在社招面试中常常被提到的热门话题——task、thread、threadpool。这是一组关于并发编程的核心问题&#xff0c;也是我们在日常工…

速学python·变量和类型

变量是什么 变量是在计算复杂程序过程中&#xff0c;用于保存中间结果的东西&#xff0c;这个东西一般是可变的量&#xff0c;也就是变量。 例如&#xff1a; 计算方差 1.计算平均值 2.计算每个数字与平均值的差值再平方 3.相加每一项平方值 4.除项数 Average (77.588.599.510…

C语言——表达式的求值

表达式求值有以下几种决定因素。 一、操作符优先级和结合性 类别 操作符 结合性 后缀 () [] -> . - - 从左到右 一元 - ! ~ - - (type)* & sizeof 从右到左 乘除 * / % 从左到右 加减 - 从左到右 移位 << >> 从左到右 关系 < < > > 从左…

Spark内核解析-内存管理7(六)

1、Spark内存管理 Spark 作为一个基于内存的分布式计算引擎&#xff0c;其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理&#xff0c;有助于更好地开发 Spark 应用程序和进行性能调优。本文中阐述的原理基于 Spark 2.1 版本。 在执行 Spark 的…

聚丙烯腈,到预测期结束时将达到36亿美元的市场规模

聚丙烯腈 (PAN) 是一种合成聚合物&#xff0c;广泛用于各种应用&#xff0c;包括纺织品、碳纤维生产和水处理。近年来&#xff0c;受航空航天、汽车和建筑行业对碳纤维增强复合材料需求不断增长的推动&#xff0c;全球 PAN 市场稳步增长。 全球 PAN 市场预计从 2020 年到 2025 …

Typora+PicGo+Gitee构建云存储图片

创建Gitee仓库 首先&#xff0c;打开工作台 - Gitee.com&#xff0c;自行注册一个账户 注册完后&#xff0c;新建一个仓库&#xff08;记得仓库要开源&#xff09; 然后创建完仓库后&#xff0c;鼠标移动到右上角头像位置&#xff0c;选择设置&#xff0c;并点击&#xff…

prometheus grafana redis安装配置监控

文章目录 前传安装redis-exporterredis_exporter参数配置参考配置prometheus查看promethues redis job节点grafana配置外传 前传 prometheus grafana的安装使用&#xff1a;https://nanxiang.blog.csdn.net/article/details/135384541 本文说下监控nginx&#xff0c;promethe…

关于户口本等户籍材料翻译

户籍材料&#xff0c;作为证明公民户籍与身份的关键文件&#xff0c;在每个实施户籍制度的国家中均不可或缺。它们不仅是登记、变更或注销户籍的依据&#xff0c;更是多种生活场景中不可或缺的证明。举例来说&#xff0c;一个在国外出生的孩子若想在中国落户&#xff0c;就必须…

【进程间通信】

什么是进程通信 进程通信&#xff08; InterProcess Communication&#xff0c;IPC&#xff09;就是指进程之间的信息的传播和交换。 进程是分配系统资源的单位&#xff0c;包括内存地址空间&#xff0c;为了保证安全&#xff0c;一个进程不能直接访问另一个进程的地址空间&a…

AI:106-基于卷积神经网络的遥感图像地物分类

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

数字孪生与大数据和分析技术的结合

数字孪生与大数据和分析技术的结合可以为系统提供更深入的见解、支持实时决策&#xff0c;并优化模型的性能。以下是数字孪生在大数据和分析技术中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

富文本BraftEditor引起的bug

1、BraftEditor踩坑1 #基于之前写的一篇BraftEditor的使用# 1. 问题起源&#xff1a; 打开编辑弹窗--> 下面页面所示--> 当进行分类选择时候&#xff0c;就会报错&#xff0c;并且这个报错还不是一直都有&#xff0c;6次选择出现一次报错吧 2. 解决&#xff1a; 2.1 起…

工具-cmd命令行默认以管理员模式运行

不知道你们电脑是不是遇到过&#xff0c;直接打开命令行&#xff0c;如果执行一些npm nodejs的命令经常会报错&#xff1a; 就必须使用管理员模式才可以。很麻烦&#xff0c;下面是如果设置不管在哪里打开都是管理员模式的方式&#xff1a; 首先找到npm在哪里&#xff1a; 直…