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

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的简单计算还是会存在各种各样的局限,具体需进一步参阅IoU的各种扩展,本文不涉及这方面的讨论。

3.精确率、召回率和置信度

3.1 TP/FP/TN/FN

首先定义四个新术语:

  1. 真正例 (TP):模型将正输入样本(即 )正确预测为正的次数。
  2. 误报 (FP):   模型错误地将负样本(即 )预测为正样本的次数。
  3. 真反例(TN):模型将负样本(即 )正确预测为负样本的次数。
  4. 假反例 (FN):模型错误地将正例输入(即 )预测为反例的次数。

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

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

为了找出最佳的精确率和召回率,进一步可以使用 F1 分数通过取它们的谐波平均值将精确率和召回率合并到一个指标中。较高的 F1 分数意味着精确率和召回率较高,而较低的 F1 分数表示精确率和召回率(或较低的精确率和召回率)之间的高度不平衡。

\text{F1} = \displaystyle\frac{2 \times \text{精度} \times \text{Recall}}{\text{Precision} + \text{Recall}} = \displaystyle\frac{2\times\text{TP}}{2\times(\text{TP}+\text{FP}+\text{FN})}

3.2 检测环境下的TP/FP/TN/FN

为了进一步了解目标检测上下文中的精确率和召回率,以及 IoU 和置信度分数如何发挥作用。下面分开讨论四种情况

首先,置信度分数反映了框包含对象的可能性(对象性分数)和边界框的准确性。但是,如果该单元格中不存在对象,则置信度分数应为零。

1)检测到真正例TP

仅当模型进行的检测满足以下两个条件时,才被视为真正例:

  • 预测边界框的置信度分数应大于置信度阈值(超参数),这表示我们已找到要查找的目标
  • 预测边界框和真实边界框之间的 IoU 应大于 IoU 阈值。

而上述两个条件意味着,不仅物体被检测到,而且在正确的位置被检测到。下图显示了 IoU 和置信度为 的真正例检测。

                                                                

2)检测被视为误报

  • 如果模型检测到具有高置信度分数的目标,但该目标不存在(无真实值),则 IoU 将等于零。
  • 另一种情况可能是 IoU 小于 IoU 阈值。
  • 如果预测的边界框与真实边界框完全一致,但预测框的类标签不正确。

3)真反例TN

这通常不是必需的,主要是因为它不是精确率和召回率计算的一部分。

检测中的真反性可能是置信度分数小于置信度阈值,并且 IoU(预测框和真实框)小于 IoU 阈值。在物体检测中,可能会有很多真反例,因为背景覆盖的图像区域(真反例)比物体本身多。

4)假反例FN

如果存在一个目标,但模型无法检测到它,则为假反性。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                ​​​​​​​        

3.3 数据集中mAP计算

对于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。下面给出两个例子详细说明之。

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

bbox的详细信息如下:

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

在 VOC 指标中,召回率Recall定义为在所有真实正例中预测出的正确正例(ranked above a given rank的比例。精确率Precision是在所有预测正例(ranked above a given rank中来自真正例的比例。

                        P = Cumulative TP / ( Cumulative TP + Cumulative FP )

                        R = Cumulative TP / Total Ground Truths

因此,在 Acc (accumulated) TP 列的定义为,从上到下遇到的 TP 总数,并对 Acc FP 执行类似定义,也就是累计的FP的总数。现在,对于P4计算精确率与召回率:
                ​​​​​​​                        ​​​​​​​        \\ \\ Precision = 1/(1+0) = 1\\ \\ Recall = 1/3 = 0.33

2)再考虑下面一个例子

下图中有5种不同类别的物(含人),通过预测给出结果。

                                                               Ground truths

                                                        YOLOv5 Nano 预测结果

 YOLOv5 Nano 对上图的预测结果有如下五类。

对于不同的置信度设置,得到的TP与FP结果不一致。具体来说,置信度越高,预测的可信度越高,那么相应的不太确定的结果视为反例。如下展示了置信度对预测结果的影响:

按照上述Cumulative TP、FP对Precision与Recall的定义,得到不同置信度下计算结果:

然后绘制这些精确率和召回率值,以获得 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 对应的的精确率 p(r) 是通过取相应召回率取值右侧,也就是超过 r 的召回率中最大的精确率取值,表达形式如下:

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


​​​​​​​

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

APdog = 1/11 * ( Sum of 11 interpolated Precision values )

             =  1/11 * (1 + 4*0.71 + 6*0)

             =  0.349

             = 34.9%

 类似地,计算得到 Average Precision(AP) 对 person, teddy, sheep, truck的不同结果汇总。

mAP = 1/n * sum(AP), 其中 n 是总类别数.

上述共有5类,得到 mAP 为

mAP = 1/5 * (0.349 + 0.545 + 0 + 1 + 0.5)

         = 0.4788

         = 47.88 %

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

通过单调递减的P-R曲线来计算平均精确率,也就是对应上述的任意召回率r右侧,\tilde{r}\geq r,设置最大的精确率值为p,然后通过数值积分取值p位置与对应PR曲线下的面积。

即上述给定橙色的 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 实际上是一个平均、平均、平均的精度,也就是三次平均,

第1次平均在计算,AP[class, iou]

第2次平均在计算,AP[class]

第3次平均在计算,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) *
  7. Mean Average Precision (mAP) in Object Detection *
  8. Mean Average Precision (mAP) Using the COCO Evaluator - PyImageSearch *
  9. Mean Average Precision (mAP) Using the COCO Evaluator - PyImageSearch *

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

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

相关文章

浅讲人工智能,初识人工智能几个重要领域。

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Javaweb之Mybatis的XML配置文件的详细解析

2. Mybatis的XML配置文件 Mybatis的开发有两种方式&#xff1a; 注解 XML 2.1 XML配置文件规范 使用Mybatis的注解方式&#xff0c;主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能&#xff0c;建议使用XML来配置映射语句&#xff0c;也就是将SQL语句写在…

顺序表的实现(C语言)

本文章主要对顺序表的介绍以及数据结构的定义,以及几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表的静态实现 二、顺序表的动态实现 三.定义打印顺序表函数 四.定义动态增加顺序表长度函数 五.创建顺序表并初始化 六.顺序表的按位查找 七.顺序表的按值…

如何下载 GOES(Geostationary Operational Environmental Satellite)卫星数据

GOES是指地球静止轨道卫星&#xff08;Geostationary Operational Environmental Satellite&#xff09;系统&#xff0c;它是美国国家海洋和大气管理局&#xff08;NOAA&#xff09;和美国国家航空航天局&#xff08;NASA&#xff09;合作开发和运营的一系列气象卫星。这些卫星…

如何编写高效的正则表达式?

正则表达式&#xff08;Regular Expression&#xff0c;简称regex&#xff09;是一种强大的文本处理技术&#xff0c;广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践&#xff0c;帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…

19、Kubernetes核心技术 - 资源限制

目录 一、概述 二、Kubernetes 中的资源单位 2.1、CPU资源单位 2.2、内存资源单位 三、Pod资源限制 四、namespace资源限制 4.1、为命名空间配置内存和 CPU 配额 4.2、为命名空间配置默认的内存请求和限制 4.3、为命名空间配置默认的CPU请求和限制 五、超过容器限制的…

240107-RHEL8+RHEL9配置安装:NVIDIA驱动(15步)+CUDA(4步)+CUDNN(5步)+GPU压力测试

Section 0: 基础知识 CUDA、cuDNN 和 PyTorch 版本的选择与搭配指南 安装优先级: 显卡驱动 → CUDA → CUDA Toolkit → cuDNN → Pytorch 即显卡驱动决定了CUDA版本&#xff0c;CUDA版本决定了CUDA Toolkit、cuDNN、Pytorch各自的版本提前下载 &#xff5c; CUDA提前下载 &am…

超自动化助力企业财务转型升级

在快节奏的财务规划与分析环境中&#xff0c;传统的预算方法虽长期以来一直是企业制定有效决策的支柱&#xff0c;但已不足以驾驭当今复杂的商业环境。不断的经济变化、市场的不确定性以及利益相关者的需求增加促使企业寻求更敏捷的解决方案。如今&#xff0c;部分企业开始尝试…

lc 140. 单词拆分 II

回溯算法查询匹配单词 class Solution { public:unordered_map<string, int> word_map;void mapping(vector<string>& wordDict){for(auto &a : wordDict)word_map[a];}vector<string> ret;// s: 原始字符串// tmp: 已查询到的单词// …

CSS 彩虹按钮效果

<template><view class"content"><button class"btn">彩虹按钮</button></view> </template><script></script><style>body{background-color: #000;}.content {margin-top: 300px;}.btn {width: 1…

Debian12使用Xshell连接失败解决办法详细

1、Debian开启ssh服务 sudo apt update -y sudo apt install ssh2、编辑配置文件 # 安装vim sudo apt install vimvim /etc/ssh/sshd_config3、将#PermitRootLogin prohibit-password的注释去掉&#xff0c;设置为yes 4、将#PasswordAuthentication no的注释去掉&#xff0c;…

JAVA------IO流复制总结

IO流复制文件 方法一 字符 注意点&#xff1a;写和读需要保持一致的编码形式。 public class eee {public static void main(String[] args) {FileInputStream in null;FileOutputStream out null;OutputStreamWriter outw null;InputStreamReader inr null;try{out new …

VX小程序Burp抓包

方法有很多&#xff0c;工具也各有差异&#xff0c;主要是学代理流量的思路 Burp流量代理工具小程序 一、Burp证书导入 1、开启代理 开启浏览器的代理&#xff0c;火狐推荐FoxyProxy&#xff0c;Google推荐SwitchyOmega&#xff0c;设置代理为127.0.0.1:8080。 2、下载证书…

Apache Doris (六十三): Spark Doris Connector - (3)-配置型及列映射关系

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark 操作Doris配置项…

2023量子科技十大人物(团队) | 光子盒年度系列

今年&#xff0c;是量子科学与技术的又一个丰收年&#xff0c;学术研究团体和科技公司纷纷庆祝在量子计算、量子通信和量子计量学以及基础量子科学方面取得的重大成就。面对如此多令人兴奋的进展&#xff0c;我们不能不为这些进展庆祝——而所有这些的一切&#xff0c;都离不开…

深入了解static关键字的作用和应用--java面向对象学习

Static修饰成员变量 Static是什么 叫静态&#xff0c;可以修饰成员变量&#xff0c;成员方法 成员变量按有无static修饰分俩种&#xff1a; 类变量&#xff1a;有static修饰&#xff0c;属于类&#xff0c;在计算机里只有一份&#xff0c;会被类的全部对…

ssm基于Vue.js的网上招聘系统设计与实现+vue论文

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通话…

Qt6入门教程 4:Qt Creator常用技巧

在上一篇Qt6入门教程 3&#xff1a;创建Hello World项目中&#xff0c;通过创建一个Qt项目&#xff0c;对Qt Creator已经有了比较直观的认识&#xff0c;本文将介绍它的一些常用技巧。 Qt Creator启动后默认显示欢迎页面 创建项目已经用过了&#xff0c;打开项目也很简单&#…

漫漫数学之旅002

文章目录 一、经典格言二、数学习题三、古今评注四、科学家小传 - 开普勒开普勒第一定律(椭圆轨道定律)开普勒第二定律(面积定律)开普勒第三定律(调和定律)一、经典格言 自然追求尽可能的简单。——约翰尼斯开普勒(Johannes Kepler) 二、数学习题 假定你只有容量为3夸…

【HDFS】一次备NameNode宕机过久导致的生产事故

一次备NameNode宕机过久导致的生产事故 故障描述 最近发生的一个临时故障&#xff0c;情况是一个启了HA的HDFS集群&#xff0c;在2023年9月份因为两台NameNode同时启动产生一些问题&#xff0c;所以当时将一台节点停止&#xff0c;一直没有启动&#xff0c;具体为什么当时有问…