目标检测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 *

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

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

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第六十九期】Wed, 3 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 3 Jan 2024 Totally 24 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers An Autoregressive Text-to-Graph Framework for Joint Entity and Relation Extraction Authors Zaratiana Ur…

鸿蒙系列--组件介绍之Video

接口 Video(value: {src?: string | Resource, currentProgressRate?: number | string |PlaybackSpeed, previewUri?: string |PixelMap | Resource, controller?: VideoController}) 参数&#xff1a; src&#xff1a;视频播放源的路径。支持本地路径和网络路径currentP…

网络安全保险发展起始阶段的挑战及应对措施

文章目录 前言一、网络安全保险的有序发展二、当前我国网络安全保险发展的初期态势&#xff08;一&#xff09;网络安全风险类型&#xff08;二&#xff09;网络安全保险的作用&#xff08;三&#xff09;与外国网络安全保费的规模对比 三、我国网络安全保险发展初期面临的挑战…

MYSQL双主节点–更换ip

MYSQL双主节点–更换ip 一、更换双主节点ip 1.停止mysql服务 #安装了supervisor supervisorctl stop mysql #未安装 systemctl stop mysqld2.修改网卡配置信息 注&#xff1a;ens33是网卡名称&#xff0c;可能网卡不叫ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens333…

ConcurrentHashMap的原理分析学习

ConcurrentHashMap 的初步使用及场景 CHM 的使用 ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap&#xff0c;所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高&#xff0c;那么这一节课我们就从ConcurrentHashMap 的使用上以及源码层面来…

亚马逊鲲鹏系统:点赞提升评论排名的得力助手

作为一个卖家&#xff0c;我深知在亚马逊和其他电商平台上&#xff0c;用户评论对商品销售的重要性。在这个竞争激烈的市场中&#xff0c;点赞已经成为提升评论排名、吸引更多顾客的有效手段之一。在我经营店铺的过程中&#xff0c;亚马逊鲲鹏系统给予了我巨大的帮助&#xff0…

msckf-vio 跑Euroc数据集,并用evo进行评估

所需材料&#xff1a; Euroc数据集主页&#xff1a;https://projects.asl.ethz.ch/datasets/doku.php?idkmavvisualinertialdatasetsevo评估工具代码&#xff1a;https://github.com/MichaelGrupp/evo向msckf-vio中添加保存位姿的代码&#xff0c;可参考https://blog.csdn.ne…

SpringBoot整合Activiti7——终止结束事件(十三)

文章目录 终止结束事件终止结束事件代码实现xml文件测试流程流程执行步骤 终止结束事件 终止结束事件 主要是对流程进行终止的事件&#xff0c;可以在一个复杂的流程中&#xff0c;如果某方想要提前中断这个流程&#xff0c;可以采用这个事件来处理。terminateAll属性&#xf…

mysql服务多实例运行

1、官网下载mysql安装包 https://downloads.mysql.com/archives/community/ 2、解压安装包 tar -zxvf mysql-8.1.0-linux-glibc2.28-aarch64.tar.xz -C /usr/localmv /usr/local/mysql-8.1.0-linux-glibc2.28-aarch64 /usr/local/mysql 3、创建mysql用户组 groupadd…

某月瓜网站js盾动态调试方案

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;若有侵权&#xff0c;请添加&#xff08;wx&#xff1a;wyqlxl99&#xff09;联系删除 本文章同步微…

express框架

目录 一、express介绍二、express 使用2.1 express下载2.2 express初体验 三、express 路由3.1 路由的使用3.2 获取参数3.3 获取路由参数 四、express响应设置五、express中间件5.1 什么是中间件5.2 中间件的作用5.3 中间件的类型5.3.1 定义全局中间件5.3.2 多个全局中间件5.3.…

一种创新的白细胞检测方法:多级特征融合与变形自注意力DETR(MFDS-DETR)

论文&#xff1a;https://arxiv.org/abs/2401.00926 引言 在标准的医院血液检查中&#xff0c;传统的流程需要医生通过显微镜手动从患者的血液显微图像中分离白细胞&#xff0c;然后通过自动白细胞分类器对分离的白细胞进行分类&#xff0c;以确定血样中不同类型白细胞的数量…

ooTD I 撞色插肩长T真的怎么搭都好看

这款撞色插肩长T真的很难不爱 三种色调&#xff0c;每种撞色都清新自然 青春活力感十足&#xff0c;真的很好看 它用的是32S紧密双纱绒面料 手感细腻柔软&#xff0c;有弹力上身也很舒适 衣服上的印花图案精致又可爱 小朋友穿简直不要太好看 撞色插肩的设计又有弱化肩部…

【REST2SQL】04 REST2SQL第一版Oracle版实现

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 REST2SQL的第一个版本&#xff0c;只支持Oracle数据库&#xff0c;以后会逐步加入其它数据看的支持。 项目文件组织如下&#xff1a; 1 REST2SQL为项目主目录 …

005-Zynq基操之如何去玩EMIO接口(走过路过千万不要错过)

文章目录 前言一、EMIO是啥含义二、两种EMIO的使用1.PS端外设引出来的EMIO2.正常的EMIO口3.PS端驱动源码 总结 前言 今天分享这个主要原因是&#xff0c;把最基础的EMIO接口弄清楚咋操作的&#xff0c;咱们就可以做一些由PS端控制PL端的器件小功能&#xff0c;最常见的就是我们…

SqueezeNet:通过紧凑架构彻底改变深度学习

一、介绍 在深度学习领域&#xff0c;对效率和性能的追求往往会带来创新的架构。SqueezeNet 是神经网络设计的一项突破&#xff0c;体现了这种追求。本文深入研究了 SqueezeNet 的复杂性&#xff0c;探讨其独特的架构、设计背后的基本原理、应用及其对深度学习领域的影响。 在创…

vue项目中的录屏插件recordrtc且带声音

vue项目中的录屏插件recordrtc且带声音 一、效果图二、安装插件三、直接上代码 一、效果图 其中窗口录屏不带声音&#xff0c;chrome标签和整个屏幕的录屏是带声音的 二、安装插件 npm i recordrtc 三、直接上代码 <template><div class"record-page">…

Qt优秀开源项目之二十:RedPanda-CPP(小熊猫C++)

小熊猫C是跨平台、轻量易用的开源C/C集成开发环境。 官网&#xff1a;http://royqh.net/redpandacpp github&#xff1a;https://github.com/royqh1979/RedPanda-CPP 小熊猫C&#xff08;原名小熊猫Dev-C 7)是基于Qt开发的Dev-C替代版本。和经典的Dev-C 5.11、新的Embarcadero …

Minio部署在服务器上,分享图片等文件提示,签名不对

问题描述: 上传没问题 下载没问题 就是分享有问题,签名有问题 找了很多解释,什么nginx代理问题啊,什么端口问题啊 什么防火墙问题啊 都是扯淡,一点用没有 最后发现,我的分享链接是127.0.0.1的地址,并不是我的服务器本机的地址 我访问图片都是要把ip改了再去访问,但是一开始并没…

C#,数值计算,求平方根之巴比伦算法(Babylonian algorithm)的源代码

平方根的巴比伦算法。 1 巴比伦算法介绍一 巴比伦算法可能算是最早的用于计算$sqrt{S}$的算法之一&#xff0c;因为其可以用牛顿法导出&#xff0c;因此在很多地方也被成为牛顿法。其核心思想在于为了计算x的平方根&#xff0c;可以从某个任意的猜测值g开始计算。在真实的运算…