【转载】目标检测mAP的含义

转载自三叔家的猫
https://blog.csdn.net/qq_39056987
https://blog.csdn.net/qq_39056987/article/details/104348493

            <div id="content_views" class="markdown_views prism-atom-one-light">
                <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                    <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                </svg>
                <p>相信大家在看一些目标检测论文中经常会看到作者将自己的模型和其他的模型做了mAP比较,mAP作为目标检测中一个非常重要的评估指标,是对模型好坏的评价标准,当时在看YOLOv3、SSD、Faster R-CNN等这些论文的时候,对mAP还不是很熟悉,看了很多的博文,写得都很零碎,很难理解,虽然大概能明白其原理,但是可能对于很多刚进入这个领域的同学来说,难度还是很大的,刚好这几天被困在家没事做,在复习之前的东西,也重新整理一下本人对mAP的理解,用这篇博客记录下来。</p> 

YOLOv3论文中的各个模型的mAP对比图:
在这里插入图片描述
目标检测问题中,每张图片可能包含多个不同类别的不同物体,需要评测模型的分类和定位性能.

因此,图像分类问题中的精度指标是不能直接适用的. 这就是为什么采用 mAP 的原因.

一、理解mAP前要知道的一些基础概念

1.IOU

IoU 的全称为交并比(Intersection over Union),在目标检测中即计算预测边界框与真实边界框的重叠程度,重叠程度越高,说明越接近真实框。IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值,即公式等于:

IOU = 相交的面积 / 相并的面积

在这里插入图片描述

2. 混淆矩阵

混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值,矩阵的列表示预测值,矩阵表现形式,如下:
在这里插入图片描述
为了更好的理解,我们把矩阵中英文翻译成字面信息,True(对)、False(错)、Positive(正例)、Negative(负例),混淆矩阵重新整理一下:
在这里插入图片描述
现在我们来分析一下这个混淆矩阵,在mAP计算中,混淆矩阵的概念是非常重要的,如果你这步都没有理解的话,那接下来的mAP计算你肯定也看不懂。

2.1 真正例 TP(True Positives):

预测结果是True(对),真实值为Positives(正例),模型认为它也是Positives(正例);在一般情况下,会认为IOU>0.5时为真正例,在一些数据集上的指标也是为0.5;

2.2 假正例 FP(False Positives)

预测结果是False(错),真实值为Negative(负例),模型却认为它是Positives(正例);同理,一般情况下会认为 IOU<0.5 时为假正例;

2.3 假反例 FN( False Negatives)

预测结果是False(错),真实值为Positives(正例),模型预测它为Negative(负例);

2.4 真反例 TN(True Negatives)

预测结果为True(对),真实值为Negative(负例),模型预测它为Negative(负例);一般用不到这个

理解了混淆矩阵里的元素概念后,我们就可以继续了解以下概念

2.5 准确率(Accuracy)

即表示分类模型所判断的所有结果中,预测正确的结果占比,公式为:
在这里插入图片描述
一般不会作为模型的评估标准;

2.6 精准率或者查准率(precision)

即表示在所有预测值为正例中,有多少正例被预测出来,计算公式为:
在这里插入图片描述
相对于准确率来说,对模型的好坏评估结果会更好,注意和上面的准确率区分;

2.7 召回率(Recall)

即表示所有真实值为正例中有多少被预测出来,可以理解为有多少正确的目标被召回(找出),计算公式为:
在这里插入图片描述
在一些特定场景中,会将其作为模型评估标准;

2.8 平均精度 AP(Average Precision)

PR曲线(红线)以下与横轴、纵轴之间的面积。PR曲线是由Precision(精准率或者查准率)与Recall(召回率或者查全率)构成的曲线,横轴为Recall,纵轴为Precision。
在这里插入图片描述
2.9 mAP(mean Average Precision)

AP衡量的是对一个类检测好坏,mAP就是对多个类的检测好坏。在多类多目标检测中,计算出每个类别的AP后,再除于类别总数,即所有类别AP的平均值,比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么mAP=(0.5+0.2)/2=0.35。

二、mAP计算过程

要计算mAP,首先要计算每一类的AP,比我我们有一个项目,有一个类别检测的是人脸,模型训练完后,我们有一组测试图片,每张图片上都有已经标记好的人脸 label ,这样我们就有了人脸的真实边界框(Ground Truth),在每张图片输入模型后会得到一系列人脸类别的预测边界框,每一个框上面都有一个置信度(暂时不考虑其他类别的框)。

将每张测试图片进行检测后,会得到一系列预测边界框集合,然后将这个预测边界框集合按照置信度降序排序。对于某一张测试图片,我们先计算该图片上人脸类别的预测边界框和真实的边界框的重叠度(IOU),当重叠度(IOU)大于设定的阈值(一般为0.5,可以自己设置)则将该边界框记作真正例(TP),否则记为假正例(FP)。对于测试集中的每一张图片均进行上述的操作(注意:在计算某一张图片的预测框是否为TP时,会从预测框集合中选取出该图片的预测框和真实框做对比)由此可以判定预测边界框集合中的所有预测框属于TP或者是FP。

比如下面三张测试图片,检测的是人脸,绿色框表示真实边界框,红色框表示预测边界框,旁边的红色数字为置信度。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以得出三个真实边界框(GT1、GT2、GT3),三个预测框边界框(BBox1,BBox2, BBox3)。

  1. 首先按照置信度进行降序排序;
  2. 对于每张图片中的预测框计算IOU,可以很清楚的看出:BBox1为TP,BBox2为FP,BBox3为TP;
  3. 之后计算不同召回率(Recall)下的精准率(Precision)值。对于第一个预测边界框BBox1,其Precision = TP / (TP+NP)=1/(1+0)=1Recall = TP / GT(总真实框数)= 1/3,同理,排序后的前两个预测边界框BBox1、BBox3,计算Precision = 1+1 / (1+1)= 1 ,Recall = 2/3,接下来三个预测边界框BBox1、BBox2、BBox3,Precision = 1+1 / (1+1+1)= 2/3 ,Recall = 2/3,这样我们就有了一组Precision、Recall值[(1,1/3),(1,2/3),(2/3,2/3)]
  4. 绘制PR曲线如下图,然后每个“峰值点”往左画一条线段直到与上一个峰值点的垂直线相交。这样画出来的黄色线段与坐标轴围起来的面积就是AP值。这里
    AP = (1/3 - 0)x 1 + (2/3 - 1/3)x 1 + (1 - 2/3)x 0 = 0.667
    在这里插入图片描述

按照如上方法计算其他所有类的AP,最后取平均值即为mAP(mean Average Precision)
在这里插入图片描述

其中C表示总类别数目,APi表示第i类的AP值。

三、例子(AP计算)

再通过个例子来更好的理解mAP计算过程,该部分摘自这篇博客,原文链接:目标检测中的评价指标mAP理解及计算

比如说我们的测试集中类A的GT(真实框)有7个,经过目标检测模型预测到了10个边界框,经过上次排序及判断操作,有如下结果:
在这里插入图片描述
按照confidence(置信度)降序排序。从上表TP可以看出我们预测正确5个(TP=5),从FP看出预测错误5个(FP=5)。除了表中已预测到的5个GT,还有2个GT并未被预测出来(FN=2)。
接下来计算AP,计算前*个BBox得到的precision和recall:
在这里插入图片描述
在计算precision和Recall时Rank指的是前个预测边界框的TP和FP之和。

于是我们得到了一个recall阈值列表[0,0.14,0.29,0.43,0.57,0.71,1],为recall阈值列表中的各值生成对应的precision列表,选择recall>=阈值元素所对应的precision的最大值。为此可得precision列表为[1,1,1,0.5,0.5,0.5,0]。

在这里举个计算的例子吧,比如找recall阈值列表中0.57所对应的precision,当recall>=0.57时,由上表可得precision为max{0.44,0.5}=0.5,其他recall对应precision的选取同理。

有了这两个列表就可以计算类A的AP了:
AP=(0.14−0)∗1+(0.29−0.14)∗1+(0.43−0.29)∗0.5+(0.57−0.43)∗0.5+(0.71−0.57)∗0.5+(1−0.71)∗0=0.5。

同样可以通过绘制PR曲线计算线下面积,如下图所示:
在这里插入图片描述
AP值即浅蓝色图形的面积,蓝色折线为recall、precision点,同理求出其他类的AP,即可算出mAP值。


参考文档:

  1. 理解目标检测当中的mAP

  2. 目标检测中的评价指标mAP理解及计算

  3. 目标检测评测指标mAP及计算[译]

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

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

相关文章

rocketmq实现限流

目录 问题背景 技术方向 方案确认 消息队列&#xff08;√&#xff09; 分布式锁&#xff08;&#xff09; 方案实现 监控方向 业务方向 问题背景 公司邮件服务token有 分钟内超200封的熔断机制&#xff0c;当前token被熔断后&#xff0c;系统发邮件操作会被忽略&…

使用F1C200S从零制作掌机之构建debian文件系统

前情&#xff1a;使用buildrootfs构建的文件系统调试了很久NES模拟器&#xff0c;执行InfoNES模拟器的时候一直黑屏&#xff0c;无内容显示&#xff0c;调不通了&#xff0c;所以改用debian系统试试。 一、环境配置 首先下载两个工具&#xff1a;qemu-arm-static和debootstra…

如何在 Microsoft Edge 上使用开发人员工具

Microsoft Edge 提供了一套强大的开发人员工具&#xff0c;可帮助 Web 开发人员检查、调试和优化他们的网站或 Web 应用程序。 无论您是经验丰富的 Web 开发人员还是刚刚起步&#xff0c;了解如何有效地使用这些工具都可以对开发过程产生重大影响。 在本文中&#xff0c;我们…

vb.netcad二开自学笔记8:界面之任务窗格

使用net可以创建一个类似属性面板的自定义的任务窗格&#xff0c;从而实现应用程序更丰富的人机交互。 1、添加一个自定义控件 2、在前面创建的代码框架内增加一个命令函数ShowMyPalette Imports System.Windows.Media.Imaging Imports Autodesk.AutoCAD.ApplicationServices …

电机控制杂谈——位置环到底该用什么调节器?

1.为什么位置环用P调节器尽可以实现无静差调节&#xff1f; 当时在学《运动控制》这门课程时&#xff0c;用的是陈伯时老师的教材。在介绍调节器的时候&#xff0c;教材中说到&#xff0c;P&#xff08;比例&#xff09;调节器会存在稳态误差&#xff0c;所以在转速环和电流环…

html——VSCode的使用

快捷键 快速生成标签&#xff1a;标签名tab 保存文件&#xff1a;CtrlS 设置自动保存【文件】→【自动保存】 快速查看网页效果&#xff1a;右击→Open in Default Browser 快捷键&#xff1a;altb 注意&#xff1a;必须安装了open in brows…

显示渲染-OSG框架解析

1.背景介绍 1.1 OSG介绍 OSG的全称&#xff1a;OpenSceneGraph&#xff0c;它是一个开放源码&#xff0c;跨平台的图形开发包&#xff0c;它为诸如飞行器仿真&#xff0c;游戏&#xff0c;虚拟现实&#xff0c;科学计算可视化这样的高性能图形应用程序开发而设计。 它基于场…

生成图质量评价

1. RichHF-18K 论文地址 解决问题&#xff1a; 如何对生成图质量进行算法评价&#xff0c;以优化图片质量&#xff0c;提升模型生成能力 解决思路&#xff1a; 参考多模态模型&#xff0c;构建评价模型&#xff0c;从7个维度分三个分支对生成图进行测评&#xff1a; Tips&…

简单仿写MVC

代码地址&#xff08;需要自取&#xff09;&#xff1a;mvc_Imitation: 简单仿写实现MVC (gitee.com) 项目目录 先把架子搭好 Controller注解 Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) public interface Controller { }RequestMapping Do…

java设计模式(十一)组合模式(Composite Pattern)

1、模式介绍&#xff1a; 组合模式是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 2、应用场景&#xff1a; 表示树形结构&#xff1a;当你需要表示对象的部分-整体…

2024年06月CCF-GESP编程能力等级认证Python编程四级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…

前端视角下的Spring-Boot语法学习:打印 hello-world

今日话题 基于 Spring Boot 打印输出 hello world 作者&#xff1a;云层上的光 时间&#xff1a;2024年6月20日 14时25分14秒 主线任务 一、打印 hello world 1、点击 “新建项目”用来演示 打印输出 “hello world” 2、填写项目配置&#xff1a;&#xff08;详细版见&a…

Python基础知识——(002)

文章目录 P8——7. input函数的使用 基本的输入函数input P9——8. Python中的注释 P10——9. Python中的缩进与本章总结 本章总结 P11——10. 章节习题 P8——7. input函数的使用 基本的输入函数input 语法结构&#xff1a; x input(提示文字) 注意事项&#xff1a;无论输…

【matlab】【python】爬虫实战

目录 引言 具体步骤 1.设置请求选项 2.发送请求并获取响应 3.设置正则表达式 4.执行正则表达式匹配 matlab完整代码 python代码示例 引言 在当今这个信息爆炸的时代&#xff0c;数据已成为推动社会进步和企业发展的核心动力之一。随着互联网的普及和技术的飞速发展&am…

前端视角下的Spring-Boot语法学习:demo-crud 实现增删改查

今日话题 基于 Spring Boot 实现增删改查&#xff0c;仅仅只是提供接口不涉及数据库增删改查 作者&#xff1a;云层上的光 时间&#xff1a;2024年6月21日 15时19分14秒 主线任务 一、项目创建 1、基于 idea 创建项目 2、选择项目依赖 Spring Web 二、实现增删改查 1、新…

Pix4Dmapper:无人机测绘的革命性工具

在现代测绘和地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;Pix4Dmapper无疑是一款革命性的工具。作为一名长期使用这款软件的用户&#xff0c;我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不仅仅是一款软件&#xff0c;更是测绘工作者的得力助手&#xff…

Selenium 的基本操作你知道哪些?

1. 前言 今天的推文&#xff0c;我们就来说说看&#xff0c;怎么实现模拟真人去打开微信读书网站。 2.需求分析和准备 整体的需求大致可以分为以下步骤&#xff1a; 打开chrome浏览器 打开百度网页 搜索“微信读书” 点击进入“微信读书”官网 搜索关键词“长安的荔枝” 点…

2023.2版IDEA复制配置修改端口增加一个当前运行服务的操作流程

文章目录 前言操作流程截图 前言 在微服务技术学习中很多学习场景会使用到运行多个服务节点进行调试&#xff0c;想要去模拟集群部署&#xff0c;就需要去复制配置&#xff0c;本文讲解一下如何复制&#xff0c;以及修改端口号。 操作流程截图

现代化木工装备建设新颖校园木工创客室

校园木工创客室是一个集木工制作、创意设计、科技融合与教育实践于一体的多功能空间。它为学生提供了一个动手实践、创新创造的平台&#xff0c;旨在培养学生的动手能力、创新思维、解决问题的能力以及团队协作能力。 木工创客室的设备选择应综合考虑需求、预算、品牌、质量、安…

Git常用技能速成

文章目录 一.版本控制二.提交并推送代码三.提交推送代码 一.版本控制 接下来&#xff0c;我们就需要对我们的功能进行优化&#xff0c;但是需要说明的是&#xff0c;我们不仅仅要对上述提到的缓存进行优化&#xff0c;还需要对我们程序的各个方面进行优化。我们本章节主要是针…