Recall, Precision, AP, mAP的计算方法(看一次就懂系列)

2023-11-15

Recall, Precision, AP, mAP的计算方法(看一次就懂系列)

 mAP全称是mean Average Precision,这里的Average Precision,是在不同recall下计算得到的,所以要知道什么是mAP,要先了解recall(召回率)和precision(精确率)。

Recall and Precision

 recall和precision是二分类问题中常用的评价指标,通常以关注的类为正类,其他类为负类,分类器的结果在测试数据上有4种情况:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举例说明:
 假设我们在数据集上训练了一个识别猫咪的模型,测试集包含100个样本,其中猫咪60张,另外40张为小狗。测试结果显示为猫咪的一共有52张图片,其中确实为猫咪的共50张,也就是有10张猫咪没有被模型检测出来,而且在检测结果中有2张为误检。因为猫咪更可爱,我们更关注猫咪的检测情况,所以这里将猫咪认为是正类:
所以TP=50,TN=38,FN=10,FP=2,P=50/52,R=50/60,acc=(50+38)/(50+38+10+2)

为什么要引入recall和precision?

 recall和precision是模型性能两个不同维度的度量:
 在图像分类任务中,虽然很多时候考察的是accuracy,比如ImageNet的评价标准。但具体到单个类别,如果recall比较高,但precision较低,比如大部分的汽车都被识别出来了,但把很多卡车也误识别为了汽车,这时候对应一个原因。如果recall较低,precision较高,比如检测出的飞机结果很准确,但是有很多的飞机没有被识别出来,这时候又有一个原因。

Recall度量的是「查全率」所有的正样本是不是都被检测出来了。比如在肿瘤预测场景中,要求模型有更高的recall,不能放过每一个肿瘤。
Precision度量的是「查准率」在所有检测出的正样本中是不是实际都为正样本。比如在垃圾邮件判断等场景中,要求有更高的precision,确保放到回收站的都是垃圾邮件。

mAP(mean Average Precision)

 在查找资料的过程中,发现从信息检索的角度出发更容易理解mAP的含义。
 在信息检索当中,比如我们搜索一个条目,相关的条目在数据库中一共有5条,但搜索的结果一共有10条(包含4条相关条目)。这个时候精确率precision=返回结果中相关的条目数/返回总条目数,在这里等于4/10。召回率recall=返回结果中相关条目数/相关条目总数,在这里等于4/5。但对于一个搜索系统,相关条目在结果中的顺序是非常影响用户体验的,我们希望相关的结果越靠前越好。比如在这个例子中,4个条目出现在位置查询一(1,2,4,7)就比在查询二(3,5,6,8)效果要好,但两者的precision是相等的。这时候单单一个precision不足以衡量系统的好坏,于是引入了AP(Average Precision)——不同召回率上的平均precision。对于上面两个例子。
查询一:
在这里插入图片描述
查询二:
在这里插入图片描述
 AP(查询一) = (1+1+3/4+4/7+0)/5 = 0.664

 AP(查询二) = (1/3+2/5+3/6+4/8+0)/5 = 0.347

 这个时候mAP = (0.664+0.347)/2 = 0.51

 分析:对于上面的例子,最好的结果就是5个条目全部被检索到,并且分别排在rank=1、2、3、4、5的位置,这时AP=1。所以可以得出即使条目被全部检索到,但结果的先后顺序决定了一个系统的好坏。这个结论会用在目标检测当中。

目标检测中的mAP

 图像分类任务通常用accuracy来衡量模型的准确率,对于目标检测任务,比如测试集上的所有图片一共有1000个object(这里的object不是图片的数量,因为一张图片中可能包含若干个object),两个模型都正确检测出了900个object(IOU>规定的阈值)。与图像分类任务不同的是,目标检测因为可能出现重复检测的情况,所以不是一个n to n的问题。
 在上面的例子中也就不能简单用分类任务的accuracy来衡量模型性能,因为模型A有可能是预测了2000个结果才中了900个,而模型B可能只预测了1200个结果。模型B的性能显然要好于A,因为模型A更像是广撒网,误检测的概率比较高。想象一下如果将模型A用在自动驾驶的汽车上,出现很多误检测的情况对汽车的安全性和舒适性都有很大影响。
 那在目标检测任务中,应该怎样衡量模型的性能?其中一个标准就是信息检索那样,不仅要衡量检测出正确目标的数量,还应该评价模型是否能以较高的precision检测出目标。也就是在某个类别下的检测,在检测出正确目标之前,是不是出现了很多判断失误。AP越高,说明检测失误越少。对于所有类别的AP求平均就得到mAP了。

MAP计算方法:

 这里讲一下VOC2007和VOC2010的计算方法。

voc2007的计算方法:

 在计算AP时,首先要把结果按照置信度排序(排序是为了方便计算,后面看例子很好懂不难),公式如下:
在这里插入图片描述
 其实也叫11点法,就是将结果先按置信度顺序排序,然后分别将recall大于0,大于0.1,大于0.2的…大于1的数据找出来,然后分别取这11组数据中的precision最大的找出来,这时,我们将会得到11个precision值。将其加起来除11j即为mAP了。

voc2010的计算方法:

 比起07年,10年以后的新方法是取所有真实的recall值,按照07年的方法得到所有recall/precision数据点以后,计算recall/precision曲线下的面积。差不多的方法吧,改成了求面积。

举例说明:
 目标检测中,这里假设我们算一个目标的AP。我们有以下输出(BB表示Bounding Box序号,IOU>0.5时GT=1):
在这里插入图片描述
 因此,我们有 TP=5 (BB1, BB2, BB5, BB8, BB9), FP=5 (重复检测到的BB1也算FP)。除了表里检测到的5个GT以外,我们还有2个GT没被检测到,因此: FN = 2. 这时我们就可以按照Confidence的顺序给出各处的PR值,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 计算出每个类别的AP以后,对于所有类别的AP取均值就得到mAP了。

参考链接:https://zhuanlan.zhihu.com/p/43068926

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Recall, Precision, AP, mAP的计算方法(看一次就懂系列) 的相关文章

随机推荐

  • 虚拟机出现错误:“无法连接MKS:套接字连接尝试次数太多,正在放弃“,无法进入系统的解决方法

    开发环境 我在windows上使用的是VMware Workstation 14 Pro Ubuntu16 04的组合进行开发 原因 自从将vm从12pro升级成了14pro之后就出现了这种问题 应该是14pro版本本身还有些问题吧 解决方
  • JVM--基础--22--字节码指令

    JVM 基础 22 字节码指令 1 字节码简介 Java字节码由操作码和操作数组成 操作码 1个字节长度 代表某种特定操作含义的数字 操作数 零至多个代表此操作码所需参数 2 字节码与数据类型 在字节码指令集中 大多数指令都有操作所对应的数
  • 力扣412 Fizz Buzz(java+python)

    给你一个整数 n 找出从 1 到 n 各个整数的 Fizz Buzz 表示 并用字符串数组 answer 下标从 1 开始 返回结果 其中 answer i FizzBuzz 如果 i 同时是 3 和 5 的倍数 answer i Fizz
  • Python3,20行代码,通过微信电脑版爬取朋友圈数据,老板再也抓不到我上班看手机了!!!

    爬取微信电脑版朋友圈数据 1 引言 2 桌面图形界面工具介绍 2 1 PyAutoGUI 2 2 PyWinAuto 3 代码实战 1 引言 小屌丝 鱼哥 忙吗 小鱼 忙 小屌丝 想问你件事 小鱼 在忙 没时间 小屌丝 关于妹子的事 小鱼
  • 【Detectron2】入门06:各种模型测试

    FPN voc 训练配置 FPN coco 训练配置 C4 voc 训练配置 Faster RCNN FPN 50 clearn data voc Faster RCNN FPN 50 corrupted data voc Mask RCN
  • github上star较多的三个c++ 内存池memory pool分析

    前言 笔者在写libuv的时候遇到太多uv type t和buffer需要维护了 如果不通过内存池维护 一个是new delete效率非常低 另一个是这种callback和作用域所有权互相耦合的场景 即便是很好的维护了new delete
  • Python处理气象信息grib,grib2文件

    写这篇博客源于博友的提问 1 效果图如下 2 安装 pip install pygrib pip install gributils GRIB 是世界气象组织 World Meterological Organization WMO 用于分
  • windows启动时出现:THE SYSTEM FOUND UNAUTHORIZED CHANGES ON THE FIRMWARE,OPERATIONG SYSTEM OR UEFI DRIVERS

    在启动windows系统容易遇到THE SYSTEM FOUND UNAUTHORIZED CHANGES ON THE FIRMWARE OPERATIONG SYSTEM OR UEFI DRIVERS 尤其是安装完系统以后 尤其针对华
  • MySQL--实战总结

    1 将存在更新部分字段信息 不存在则执行插入合并为一个SQL 需要创建唯一索引 CREATE TABLE user id int 11 NOT NULL AUTO INCREMENT name varchar 255 DEFAULT NUL
  • #CSDN精选博文##学习必备##IT技术学习#系统化学习的第一步:建构自己的知识体系

    大家好 我是小C 全名是CSDN高校俱乐部 我的职责之一是担任 文章过滤器 精选大咖干货 助力学习之路 你是否曾面对海量信息而无从下手 你是否曾苦恼学习效果不佳 事倍功半 你是否曾感叹知识零碎而无法发挥用途 针对这些问题 小C将开启一个全新
  • 数值计算之 最小二乘法(3)最小二乘的矩阵解法

    数值计算之 最小二乘法 3 最小二乘的矩阵解法 前言 回顾最小二乘的线性解 列满秩矩阵的最小二乘解法 Cholesky分解求线性最小二乘解 QR分解求线性最小二乘解 亏秩矩阵的最小二乘解法 SVD分解求亏秩最小二乘解 补充1 超定齐次方程组
  • C++基础STL-deque容器

    双端数组 可以对头端进行插入删除操作 deque 容器和 vecotr 容器有很多相似之处 比如 deque 容器也擅长在序列尾部添加或删除元素 时间复杂度为O 1 而不擅长在序列中间添加或删除元素 deque 容器也可以根据需要修改自身的
  • esxi ssd磁盘IO,IOPS 速度过慢解决方法

    登录SSH 先查看一下加载的驱动 esxcli software vib list grep ahci sata ahci 3 0 26vmw 650 1 26 5969303 VMW VMwareCertified 2020 09 17
  • 全网最全HTML基础

    目录 1 HTML结构 2 HTML 文件基本结构 3 HTML常见标签 3 1注释标签 3 2标题标签 h1 h6 3 3 段落标签 p 3 4 换行标签 br 3 5格式化标签 3 6图片标签 img 3 8表格标签 3 9 合并单元格
  • 禁用 第三方cookie 之后,百度统计会发生什么?

    禁用 第三方cookie 之后 经过亲测 结论是 不一定 百度统计还是有可能知道你是谁的 但可能失准 本想研究一下百度统计是如何统计数据的 发现基本上是利用cookie 大致情况是这样的 名称 用途 有效期 类型 HMACCOUNT Vis
  • Python之sys模块详解

    sys模块 sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分 常见用法 sys argv 命令行参数List 第一个元素是程序本身路径 sys modules keys 返回所有已经导入的模块列表 sys exc
  • CAS5.3 服务器集成MySQL8数据库

    MySQL 相关准备 1 安装MySQL8 并安装相关数据库实例 省略一千字 2 新建ucas auth user表 并增加相关用户条记录 DROP TABLE IF EXISTS ucas auth user CREATE TABLE u
  • 解决tomcat安装配置后localhost 打不开

    为了这只丑猫能用的方法都用了 终于出来了 也不知道到底哪些是必须的 建议 1 检查端口8080是否被占用 被占用的话参照下方改端口 2 环境变量肯定是要配置的 3 如果以上不可以 那么什么方法都试试吧 前提 下载安装tomcat9和jdk
  • JAVA【设计模式】抽象工厂模式

    抽象工厂模式 一 定义 二 示例 传统硬编码方式 都在一个类里面实现 多重if else嵌套使用 抽象工厂模式 UML关系图 一 定义 抽象工厂模式 类似于动态代理对象的生成工厂 集中管理各个代理对象 使用代理对象解决实际业务场景 减少代码
  • Recall, Precision, AP, mAP的计算方法(看一次就懂系列)

    Recall Precision AP mAP的计算方法 看一次就懂系列 mAP全称是mean Average Precision 这里的Average Precision 是在不同recall下计算得到的 所以要知道什么是mAP 要先了解