CV03_mAP计算以及COCO评价标准

COCO数据集回顾:CV02_超强数据集:MSCOCO数据集的简单介绍-CSDN博客

1.1 简介

在目标检测领域中,mAP(mean Average Precision,平均精度均值)是一个广泛使用的性能评估指标,用于衡量目标检测模型在检测不同类别目标时的综合性能。以下是mAP的几个关键点:

  1. 定义:mAP是所有类别平均精度(Average Precision, AP)的平均值。AP是针对单个类别计算的,表示在不同召回率(Recall)下精度(Precision)的平均值,或者说是PR曲线(Precision-Recall Curve)下的面积。而mAP则是将所有类别各自的AP值取平均得到的结果,从而提供一个跨类别的整体性能评估。

  2. 计算流程

    • 确定TP/FP:首先,根据预测框与真实框之间的交并比(IoU,Intersection over Union)阈值,确定每个预测框是真阳性(True Positive, TP)还是假阳性(False Positive, FP)。
    • 排序:将预测框按其置信度(confidence score)从高到低排序。
    • 计算Precision和Recall:遍历排序后的预测框,逐步累加TP以计算Recall,同时计算每个步骤的Precision(即当前TP除以总的预测阳性数)。
    • 绘制PR曲线:以Recall为横轴,Precision为纵轴,绘制PR曲线。曲线下的面积即为AP。
    • 计算mAP:对所有类别的AP求平均得到mAP。
  3. 重要性:mAP综合考虑了检测模型的精确度(Precision)和召回率(Recall),是衡量模型在准确检测目标的同时,能否尽可能多地找出所有目标的能力。因此,mAP值越高,表示模型的整体性能越好。

  4. 变体:mAP的计算可以根据不同的应用场景有所变化,比如在某些情况下,会根据不同的IoU阈值计算多个mAP值,或者分别计算不同难度级别(如小目标、中目标、大目标)的mAP,以更全面地评估模型性能。

  5. 应用场景:mAP常用于评估和比较各种目标检测算法,如Faster R-CNN、YOLO、SSD等,在学术研究和工业界均有广泛应用,特别是在自动驾驶、监控系统、医疗影像分析等领域。

在我们使用目标检测网络训练时,最后在验证集上会得到一个coco的评价列表。那么它每个数据的含义都代表什么呢?

1.2 目标检测中常见指标

Precision和Recall

假阳性FP:本来不是目标,但是预测成了目标。

假阴性FN:漏检的目标个数,或者说本来有目标但没有预测出来。

对于Precision和Recall,我们来举几个例子:

图片里有5个GT,模型检测出来一个,那么Precision就是1(TP/(TP+FP)),Recall就是0.2(TP/(TP+FN))。

第二个例子,同样5个GT,查准率大概是5/11,查全率是1。

很显然,只看查准率或者只看查全率是不靠谱的,需要综合起来看。

AP和P-R曲线

AP(Average Precision,平均精度)是一个关键的性能评估指标,用来衡量模型在某一特定类别上检测性能的好坏。

  1. 定义:AP是 Precision(精确率)和 Recall(召回率)之间关系的一种综合度量。它通过计算Precision-Recall曲线(PR曲线)下的面积得到,反映了模型在不同召回率水平下的平均精确度。

  2. PR曲线:在计算AP之前,需要绘制Precision-Recall曲线。随着阈值的调整,模型会输出不同数量的预测框,对应不同的Precision和Recall值。将这些点连接起来形成的曲线即为PR曲线,反映了精确率与召回率之间的权衡。

  3. 计算AP

    • 通常,会在Recall的0到1范围内均匀选取一些点(例如11个点,从0到1每隔0.1取一个点),然后在这些点上计算相应的Precision值。
    • 接着,将这些点的Precision值相加后除以点的数量,得到的就是AP的近似值。有时也会使用数值积分或插值方法来更准确地计算曲线下的面积。
  4. IoU阈值的影响:在计算AP时,通常会涉及到交并比(Intersection over Union, IoU)阈值,用以判断预测框与真实框是否匹配。不同的IoU阈值会得到不同的AP值,常见的IoU阈值有0.5或者更高,这取决于具体的评估标准。

  5. 用途:AP值越高,说明模型在确保召回率的同时,也能保持较高的精确率,是衡量目标检测算法性能好坏的重要标准。在多类别目标检测任务中,还会计算所有类别的AP值的平均值,即mAP(mean Average Precision),以评估模型在所有类别上的平均性能。

AP是目标检测中衡量单一类别检测效果的核心指标,通过综合考虑精确率和召回率,提供了对模型性能全面且直观的评估方式。

举个例子:假设我们已经训练好了模型,下面是用于验证的三张图片。首先累加训练集中目标的个数。接下来通过一个列表来统计我们的网络所检测到的目标信息。第二个检测ID=1的bounding box 的IOU值明显小于0.5,所以被标记为false。

整张表格是按置信度(confidence)排序的。

下面检测下一张图片,此时num_ob的值变为3,表格如下所示:

再检测下一张图片。

接下来我们用拿到的这个表格去计算查准率和查全率。我们将阈值设置到0.98,那么只有一个被筛选出来,我们计算一下此时的查准率和查全率。以此类推,不断降低阈值来计算。

我们以Recall为横坐标,Precision为纵坐标,就能得到一个PR曲线。我们要注意一个问题,对于Recall,我们需要过滤掉一些重复的信息,像0.57的时候我们有三个值,此时我们只需要保留precision最大的这个情况就可以了。右图方框框住的点就是我们的数值。

计算出该类别的AP后,我们再计算出其他类别的AP,然后再求和求均值就得到了MAP。

需要注意的是,网络最终给出的预测结果都是经过NMS(非极大值抑制)之后所得到的目标边界框。

1.3  COCO评价指标每一条数据的含义

虽然下图说的是AP,实际上就是我们之前说的mAP

第一类,就是IOU阈值不同的情况下的mAP,第一行是从IOU0.5开始以步长0.05,直到0.95的是个mAP

对于第二类(AP Across Scales),是针对检测小、中、大物体的mAP。小物体的定义是像素面积小于32的平方,中等物体,大物体如下图所示。第二类就可以衡量模型对不同尺度的目标的检测效果

对于第三类(AR不是AP),先看最后一行是AR max=100, 就是我们每张图片限定只检测100个目标,就是经过NMS后我们最多只提供100个目标。我们得到的相应的recall值

AP和AR的区别

Average Precision (AP):

  • 定义: AP衡量的是模型在不同召回率(Recall)水平下的平均精确度(Precision)。它通过计算Precision-Recall曲线下的面积得到,体现了模型在提升召回率的同时保持高精确度的能力。
  • 计算: AP计算过程中,首先会根据预测框与真实框的交并比(IoU)设定阈值,以此来确定预测是否为真阳性(TP)。然后,通过改变置信度阈值,计算出一系列的Precision和Recall值,进而绘制出PR曲线。AP即为该曲线下方的面积,反映了模型在不同决策阈值下的综合性能。
  • 意义: AP值越高,说明模型在召回所有相关对象(即高召回率)的同时,预测正确的比例也很高(即高精确度),是衡量目标检测算法准确性和全面性的重要指标。

Average Recall (AR):

  • 定义: AR侧重于衡量模型在不同IoU阈值下的平均召回率。与AP不同,AR主要关注模型找到所有相关对象的能力,而不直接考虑预测的精确度。
  • 计算: 在COCO数据集中,AR通常是在多个固定的IoU阈值(例如从0.5到0.95,步长为0.05)下计算召回率,然后取这些召回率的平均值。这种做法考虑了模型在不同定位精度要求下的召回表现。
  • 意义: AR强调模型的召回能力,即检测出所有应该检测到的目标的比例。高AR意味着模型很少漏检,即使某些预测框可能不够精确。

总结:

  • AP更注重精确度和召回率之间的平衡,是综合评价模型在不同置信度阈值下表现的指标。
  • AR则更专注于评估模型召回目标的能力,特别是在不同定位精度标准下的召回一致性。

在实际应用中,两者通常会结合使用,比如mAP(mean Average Precision)是多个类别AP的平均值,而COCO数据集评估时,除了mAP,也会报告AR以获得模型性能的更全面视图。

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

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

相关文章

【Unity2D 2022:Particle System】添加命中粒子特效

一、创建粒子特效游戏物体 二、修改粒子系统属性 1. 基础属性 (1)修改发射粒子持续时间(Duration)为1s (2)取消勾选循环(Looping) (2)修改粒子存在时间&…

数据库管理工具 -- Navicat Premium v17.0.8 特别版

软件简介 Navicat Premium 是一款功能强大的数据库管理工具,适用于Windows、Mac和Linux平台。它支持多种数据库,包括MySQL、MariaDB、SQL Server、PostgreSQL、Oracle、SQLite等。用户可以通过Navicat Premium轻松地连接到各种数据库服务器,…

mac怎么压缩pdf文件,mac压缩pdf文件大小不改变清晰度

在数字化时代,pdf文件因其良好的兼容性和稳定性,已经成为我们日常办公和学习中不可或缺的文件格式。然而,随着文件内容的增多,pdf文件的体积也往往会变得越来越大,给文件的传输和存储带来不便。本文将为你介绍几种简单…

视觉语言模型:融合视觉与语言的未来

1. 概述 视觉语言模型(Vision-Language Models, VLMs)是能够同时处理和理解视觉(图像)和语言(文本)两种模态信息的人工智能模型。这种模型结合了计算机视觉和自然语言处理的技术,使得它们能够在…

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

​ 常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode,简称LED)是一种能够将电能转化为光能的固态的半导体器件…

016-GeoGebra基础篇-加载项错误_使用此功能所需的服务已关闭,请检查你的隐私设置,

最近有伙伴说遇到一个问题:“加载项错误_使用此功能所需的服务已关闭,请检查你的隐私设置”,该怎么解决? 若大家也遇到同样的问题,建议按照我下边的步骤逐个排查下,基本可以解决“GeoGebra无法完美插入PPT…

计算机网络——数据链路层(以太网)

目录 局域网的数据链路层 局域网可按照网络拓扑分类 局域网与共享信道 以太网的两个主要标准 适配器与mac地址 适配器的组成与运作 MAC地址 MAC地址的详细介绍 局域网的mac地址格式 mac地址的发送顺序 单播、多播,广播mac地址 mac帧 如何取用…

破解宇宙终极奥秘,战胜昊天无上束缚

在幽邃的暗夜下,细品着夫子与昊天跨越千年的智勇交锋,我的思绪不禁飘向了更加深远的宇宙边际,回响起那些关于人类如何挑战天命、战胜上天的过往。 宇宙奥秘 在浩瀚无垠的宇宙深渊中,隐藏着一段超越凡尘的规则。昊天,…

数字信号处理中的难点

数字信号处理中的难点可以归纳为多个方面,这些难点不仅体现在理论知识的理解和掌握上,还涉及到实际工程应用中的各种问题。以下是对这些难点的详细分析: 一、理论知识的难点 信号与系统的基本概念: 理解和区分连续时间信号与离…

【搭建Nacos服务】centos7 docker从0搭建Nacos服务

前言 本次搭建基于阿里云服务器系统为(CentOS7 Linux)、Nacos(2.0.3)、Docker version 26.1.4 本次搭建基于一个新的云服务器 安装java yum install -y java-1.8.0-openjdk.x86_64安装驱动以及gcc等前置需要的命令 yum install …

树型结构数据存储实践

很多业务场景会遇到树形结构的数据,如公司的人员职级树、行政区划树等。 使用类似MySQL的数据库进行存储,需要将树形结构(二维)存储到行格式(一维)的db中。 本文介绍了树型结构数据存储的三种方式&#xf…

【6】图像分类部署

【6】图像分类部署 文章目录 前言一、将pytorch模型转为ONNX二、本地终端部署2.1. ONNX Runtime部署2.2. pytorch模型部署(补充) 三、使用flask的web网页部署四、微信小程序部署五、使用pyqt界面化部署总结 前言 包括将训练好的模型部署在本地终端、web…

ubuntu22 sshd设置

专栏总目录 一、安装sshd服务 sudo apt updatesudo apt install -y openssh-server 二、配置sshd 使用文本编辑器打开/etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config (一)配置sshd服务的侦听端口 建议将ssh的侦听端口改为7000以上的端口&#…

Autosar Dcm配置-0x85服务配置及使用-基于ETAS软件

文章目录 前言Dcm配置DcmDsdDcmDsp代码实现总结前言 0x85服务用来控制DTC设置的开启和关闭。某OEM3.0架构强制支持0x85服务,本文介绍ETAS工具中的配置 Dcm配置 DcmDsd 配置0x85服务 此处配置只在扩展会话下支持(具体需要根据需求决定),两个子服务Disable为0x02,Enable…

pytest使用报错(以及解决pytest所谓的“抑制print输出”)

1. 测试类的类名问题 #codingutf-8import pytestclass TestClass1:def setup(self) -> None:print(setup)def test_01(self) -> None:print(test_01111111111111111111111)def test_02(self) -> None:print(test_02)以上述代码为例,如果类名是Test开头&am…

Docker部署Seata与Nacos整合

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Docker部署Seata与Nacos整合 Docker 部署 Seata 与 Nacos 整合 运行所使用的 demo项目地址 …

I2C接口+高度集成的电源管理芯片(PMIC)-iML1942

电源管理芯片 - iML1942是一个高度集成的电源管理IC为TFT液晶面板。它具有完整的I2C接口来编程各种参数。该设备包括一个针对AVDD的电流模式升压调节器,一个针对VBK1的同步升压转换器。VGL可选的反相转换器或负电荷泵调节器,VSS1负线性调节器&#xff0c…

【C++:类的基础认识和this指针】

C的类与C语言的struct结构体有啥区别? 默认的访问限定符不同 类的简要 关键字:class{}里面是类的主体,特别注意:{}后面的;不可以省略类中的变量叫做成员变量,类中的函数叫做成员函数类中访问有三种访问权限…

系统集成项目管理工程师第12章思维导图发布

今天发布系统集成项目管理工程师新版第12章脑图的图片版

Ubuntu基本环境配置

#Jdk 安装 #--查看 已安装 的jdk软件 java -version # 安装jdk软件(如果有选择请选 y) sudo apt install openjdk-11-jdk # 自行学习 vi 或 vim 学习网址如下: # https://www.runoob.com/linux/linux-vim.html #-- 修改系统级 path : /etc/profile 文件 (注意要…