CV03_mAP计算以及COCO评价标准

news2024/10/5 14:07:17

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以获得模型性能的更全面视图。

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

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

相关文章

IDEA如何引入外部jar包

导了3次,记不住,写篇博客记一下; 1、File->Project Structure->项目名称->JARs or Dircetories... 2、选择所要导入的jar包【可多选】;此处图片略; 3、选中后点击确定,jar会显示在idea的目录中&…

昇思25天学习打卡营第11天|ResNet50图像分类

文章目录 昇思MindSpore应用实践基于MindSpore的ResNet50图像分类1、ResNet50 简介2、数据集预处理及可视化3、构建网络构建 Building Block构建 Bottleneck Block构建 ResNet50 网络 4、模型训练5、图像分类模型推理 Reference 昇思MindSpore应用实践 本系列文章主要用于记录…

51单片机嵌入式开发:2、STC89C52操作GPIO口LED灯

STC89C52操作GPIO口LED灯 1 芯片介绍1.1 芯片类型1.2 芯片系列说明 2 GPIO引脚寄存器说明3 GPIO操作3.1 GPIO输入3.2 GPIO输出3.3 GPIO流水灯3.4 Protues仿真 4 总结 1 芯片介绍 1.1 芯片类型 芯片采用宏晶科技品牌下的STC89C52RC单片机 选择STC89C52RC系列STC89C58RD系列单片…

ArrayList综合案例-模拟外卖中的商家系统

一案例要求: 二代码要求: package 重修;import java.util.ArrayList; import java.util.Random; import java.util.Scanner;import static java.lang.System.exit;public class first {public static void main(String[] args) {Scanner scnew Scanne…

迎接AI新时代:GPT-5即将登场的巨大变革与应用前瞻

迎接AI新时代:GPT-5即将登场的巨大变革与应用前瞻 💎1. GPT-5 一年半后发布:AI新时代的来临1.1 GPT-5的飞跃:从高中生到博士生 💎2. GPT-5的潜在应用场景💎2.1 医疗诊断和健康管理💎2.2 教育领域…

【LeetCode:3101. 交替子数组计数 + 滑动窗口 + 数学公式】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

基于Android Studio零食工坊

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 用户 可以浏览商品 , 查询商品 , 加入购物车 , 结算商品 , 查看浏览记录 , 修改密码 , 修改个人信息 , 查询订单 管理员 能够实现商品的…

Appium Inspector介绍和使用

一、什么是Appium Inspector 官方介绍:Overview - Appium Inspector 检查器的主要目的是提供应用程序页面源代码的检查功能。它主要用于测试自动化开发,但也可用于应用程序开发 - 或者如果只是想查看应用程序的页面源代码! 从本质上讲&…

Tkinter布局助手

免费的功能基本可以满足快速开发布局, https://pytk.net/ iamxcd/tkinter-helper: 为tkinter打造的可视化拖拽布局界面设计小工具 (github.com) 作者也把项目开源了,有兴趣可以玩玩

【TB作品】数码管独立按键密码锁,ATMEGA16单片机,Proteus仿真 atmega16数码管独立按键密码锁

文章目录 基于ATmega16的数码管独立按键密码锁设计实验报告实验背景硬件介绍主要元器件电路连接 设计原理硬件设计软件设计 程序原理延时函数独立按键检测密码显示主函数 资源代码 基于ATmega16的数码管独立按键密码锁设计实验报告 实验背景 本实验旨在设计并实现一个基于ATm…

固态,机械,移动(U盘),sd卡,哪个更适合长期储存数据 保存数据用什么硬盘可靠 硬盘数据丢失怎么找回 硬盘维护注意事项

有关硬盘数据丢失的恢复技巧,这篇文章一定要收藏好。在硬盘使用过程中,很多情况都会导致数据丢失,例如硬盘跌落、病毒感染、系统文件损坏等。这时候,一定要采用正确的方法,抢救硬盘中存储的珍贵数据和文档。 有关长期保…

解决C++编译时的产生的skipping incompatible xxx 错误

问题 我在编译项目时,产生了一个 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的编译错误,如下图所示: 解决方法 由图中的错误可知,在编译时,是能够在我们指定目录下的 *.so 动态库的…

三丰云评测:免费虚拟主机与免费云服务器的全面对比

三丰云是一家知名的互联网服务提供商,专注于虚拟主机和云服务器的服务。在互联网技术日新月异的今天,选择一个优质的云服务提供商至关重要。本次评测将重点对比三丰云的免费虚拟主机和免费云服务器,帮助用户更好地选择适合自己需求的服务。首…

Apache Seata分布式事务原理解析探秘

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fesca…

【代码随想录】【算法训练营】【第60天】 [卡码107]寻找存在的路径

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 60,周六,ding ding~ 题目详情 [卡码107] 寻找存在的路径 题目描述 卡码107 寻找存在的路径 LeetCode类似题目1971 寻找图中是否存在路径 解题思路 前提: 思…

TQ15EG开发板教程:MPSOC创建fmcomms8工程

链接:https://pan.baidu.com/s/1jbuYs9alP2SaqnV5fpNgyg 提取码:r00c 本例程需要实现在hdl加no-OS系统中,通过修改fmcomms8/zcu102项目,实现在MPSOC两个fmc口上运行fmcomms8项目。 目录 1 下载文件与切换版本 2 编译fmcomms8项…

从0到1制作单只鳌虾运动轨迹追踪软件

前言 需要准备windows10操作系统,python3.11.9,cuDNN8.9.2.26,CUDA11.8,paddleDetection2.7 流程: 准备数据集-澳洲鳌虾VOC数据集 基于RT-DETR目标检测模型训练导出onnx模型进行python部署平滑滤波处理视频帧保留的…

Linux Centos7部署Zookeeper

目录 一、下载zookeeper 二、单机部署 1、创建目录 2、解压 3、修改配置文件名 ​4、创建保存数据的文件夹 ​5、修改配置文件保存数据的地址 ​6、启动服务 7、api创建节点 一、下载zookeeper 地址:Index of /dist/zookeeper/zookeeper-3.5.7 (apache.org…

在5G/6G应用中实现高性能放大器的建模挑战

来源:Modelling Challenges for Enabling High Performance Amplifiers in 5G/6G Applications {第28届“集成电路和系统的混合设计”(Mixed Design of Integrated Circuits and Systems)国际会议论文集,2021年6月24日至26日,波兰洛迪} 本文讨…

Stream 很好,Map 很酷,但答应我别用 toMap()

文章目录 Collectors.toMap() 的常见问题替代方案1. 使用 Collectors.groupingBy()2. 处理空值3. 自定义合并逻辑 总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博…