【计算机视觉 | 目标检测】目标检测中的评价指标 mAP 理解及计算(含示例)

news2024/9/22 21:25:59

文章目录

  • 一、目标检测的评价指标
    • 1.1 Precision
    • 1.2 Recall
    • 1.3 Average Precision(AP)
    • 1.4 mean Average Precision(mAP)
    • 1.5 Intersection over Union(IoU)
    • 1.6 F1-score
  • 二、基础知识
    • 2.1 Precision
    • 2.2 Recall
    • 2.3 IoU
  • 三、mAP 的计算
  • 四、AP 计算的例子

一、目标检测的评价指标

在目标检测中,有几个常用的评价指标用于衡量算法的性能。以下是其中几个重要的评价指标:

1.1 Precision

Precision(精确率):Precision 衡量了在所有被检测为正样本的样本中,有多少是真正的正样本。

Precision 的计算公式为:Precision = TP / (TP + FP),其中 TP 是真正的正样本数量,FP 是将负样本错误地标记为正样本的数量。较高的 Precision 表示算法在正样本的判定上更准确。

1.2 Recall

Recall(召回率):Recall 衡量了在所有真正的正样本中,有多少被算法正确地检测出来了。

Recall 的计算公式为:Recall = TP / (TP + FN),其中 TP 是真正的正样本数量,FN 是错误地未能检测到的正样本数量。较高的 Recall 表示算法能够更好地检测出真实目标。

1.3 Average Precision(AP)

AP 是根据 Precision-Recall 曲线计算的面积。它对不同召回率下的 Precision 进行插值,并计算插值曲线下的面积。AP 是评估目标检测算法在不同召回率下的综合性能指标。

1.4 mean Average Precision(mAP)

mAP 是所有类别的 AP 值的平均值。它是评估多类别目标检测算法整体性能的重要指标。

1.5 Intersection over Union(IoU)

IoU 是用于衡量预测边界框与真实边界框之间重叠程度的指标。IoU 计算为预测框与真实框的交集面积除以它们的并集面积。IoU 通常用于确定预测框是否与真实框匹配。

1.6 F1-score

F1-score 是 Precision 和 Recall 的调和平均值,用于综合考虑算法的准确性和召回能力。

F1-score 计算公式为:F1-score = 2 * (Precision * Recall) / (Precision + Recall)。

需要注意的是,评价指标的选择和解释应该结合具体的任务和应用场景,综合考虑多个指标可以更全面地评估目标检测算法的性能。

二、基础知识

当评估分类或目标检测算法性能时,Precision(精确率)和 Recall(召回率)是两个重要的指标。它们用于衡量算法在识别目标时的准确性和召回能力。

2.1 Precision

  • 定义:Precision 衡量了在所有被分类为正样本或检测为目标的样本中,有多少是真正的正样本或真实目标。
  • 计算公式:Precision = TP / (TP + FP),其中 TP 是真正的正样本或目标数量,FP 是将负样本或非目标错误地标记为正样本或目标的数量。
  • 解释:Precision 告诉我们,当算法判断某个样本为正样本或目标时,有多大概率它是正确的。较高的 Precision 表示算法在正样本或目标的判定上更准确。

2.2 Recall

  • 定义:Recall 衡量了在所有真正的正样本或目标中,有多少被算法正确地检测出来了。
  • 计算公式:Recall = TP / (TP + FN),其中 TP 是真正的正样本或目标数量,FN 是错误地未能检测到的正样本或目标数量。
  • 解释:Recall 告诉我们算法在找出真实目标方面的能力。较高的 Recall 表示算法能够更好地检测出真实目标。

精确率和召回率之间存在一种权衡关系。增加阈值可以提高精确率,但可能会导致召回率降低,因为更少的样本被分类为正样本或目标。降低阈值可以提高召回率,但可能会导致精确率降低,因为更多的样本被分类为正样本或目标。

精确率和召回率经常一起使用,以综合评估算法的性能。同时考虑这两个指标可以帮助我们了解算法的分类或检测能力,并找到适合特定任务需求的平衡点。

在某些情况下,比如类别不平衡的数据集中,仅使用精确率或召回率可能会导致评估结果不准确。因此,使用其他指标如 F1-score(精确率和召回率的调和平均值)、AP(平均精确率)等能够提供更全面的性能评估。

2.3 IoU

在目标检测中即计算预测边界框与 GT 边界框的重叠程度。

在这里插入图片描述

IoU(Intersection over Union)是目标检测中常用的评价指标,用于衡量预测边界框与真实边界框之间的重叠程度。它是通过计算两个边界框的交集面积除以它们的并集面积得到的。

具体而言,IoU 的计算公式如下:

IoU = Intersection Area / Union Area

其中,Intersection Area 是预测边界框与真实边界框的交集面积,而 Union Area 是它们的并集面积。

IoU 的取值范围是0到1,其中0表示没有重叠,1表示完全重叠。

IoU 在目标检测中具有重要的应用,常用于以下几个方面:

  1. 用于判断目标检测算法的预测结果是否正确,通常通过设置 IoU 阈值来决定预测框是否与真实框匹配。
  2. 在训练目标检测算法时,用于计算正样本与预测框之间的 IoU,以确定哪些预测框是与真实目标重叠较好的正样本。
  3. 在评估目标检测算法性能时,常用 IoU 作为指标之一,用于衡量算法的准确性和召回能力。

需要注意的是,IoU 只关注边界框之间的重叠程度,不考虑其它因素,如类别信息。因此,对于多类别目标检测任务,通常会结合 IoU 与类别预测的准确性来综合评估算法性能。

三、mAP 的计算

参考文献:

https://blog.csdn.net/NooahH/article/details/90140912

首先要计算每一类的 AP(Average Precision)。比如我们计算 person 这一类的 AP。

这里有一组测试集图片,每张图片都事先标记或未标记出 person,这样我们就有了 person 的 GT(Ground Truth)边界框。

在每张测试图片输入模型后会得到一系列 person 类的预测边界框,每个边界框都附带有一个置信度。(注意当我们计算 person 的 AP 时就只关注这一类的边界框,不考虑其他类的,即使该图片中存在如 dog 类的 GT 边界框。)

将每张测试集中的图片进行检测后会得到一系列预测边界框集合,之后将该预测边界框集合按照置信度降序排序。

然后对于某一张测试集图片,我们计算在该图片上 person 类的预测边界框与 GT 边界框重叠程度(即 IoU),如果 IoU 大于设定阈值(IoU 阈值的典型值为0.5)则将该边界框标记为 TP,否则标记为 FP。

对测试集中每张图片的预测边界框均进行如上操作(注意:在计算某一张图片的预测框时会从预测框集合中选取该图片的预测框)。由此会判定预测边界框集合中每个预测边界框属于 TP 或者 FP。

如下面3张图,我们要检测人脸,蓝色框表示 GT,绿色框表示预测边界框,旁边的红色数字为置信度:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以得出有3个 GT(GT1,GT2,GT3),3个预测框(BBox1,BBox2, BBox3)。

  1. 我们按照置信度降序排序预测框,这里的预测框正好是降序排序的。
  2. 对每张图片中的预测框计算 IoU,可以看出 BBox1 标记为 TP,BBox2 标记为 FP,BBox3 标记为 TP。
  3. 之后计算不同recall情况下 precision 值。前1个框,即 BBox1,计算precision = TP / (TP + FP) = 1 / (1 + 0) = 1,recall = TP / # GT = 1 / 3。(#GT 指的是测试集中所有 GT 数目,这里即为3)同理前2个框,即 BBox1,BBox2,计算 precision = 1 / (1 + 1) = 0.5,recall = 1 / 3。前3个框,即 BBox1,BBox2,BBox3,计算 precision = 2 / (2 + 1) = 2 / 3,recall = 2 / 3。我们就有了一组recall、precision值[(1 / 3, 1), (1 / 3, 0.5), (2 / 3, 2 / 3)]
  4. 绘制 PR 曲线如下图,然后每个“峰值点”往左画一条线段直到与上一个峰值点的垂直线相交。这样画出来的红色线段与坐标轴围起来的面积就是 AP 值。这里:

在这里插入图片描述

在这里插入图片描述

按照如上方法计算其他所有类的 AP,最后取平均值即为 mAP(mean Average Precision):

在这里插入图片描述
其中 C C C 表示总类别数目, A P i AP_i APi 表示第 i i i 类的 AP 值。

四、AP 计算的例子

比如说我们的测试集中类 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 之和。

同样可以通过绘制 PR 曲线计算线下面积,如下图所示:

在这里插入图片描述
AP值即浅蓝色图形的面积,蓝色折线为recall、precision点。

在这里插入图片描述

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

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

相关文章

5.20下周黄金行情走势分析及开盘独家交易策略

近期有哪些消息面影响黄金走势?下周黄金多空该如何研判? ​黄金消息面解析:周五(5月19日),现货黄金价格下跌又反弹,现货黄金持续走高美联储主席鲍威尔:那些积极的供应冲击不太可能重复出现,美联…

初阶数据结构之单链表的实现(四)

文章目录 链表的概念及结构一、链表的逻辑结构是什么样的?二、链表的初始化2.1链表初始化的示意2.2链表初始化代码实现 三、链表的各类接口函数定义四、链表的各类接口函数的代码实现4.1链表的打印代码实现4.1.1打印代码的实现 4.2链表的尾插代码实现4.2.1尾插代码实…

Mongodb 6.0 变化的配置参数与连接的方式变化

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

【故障排查】【伪处理】Jenkins在iframe窗口无法添加secret text凭证

问题描述 环境的ingress是,有个 svc 暴露 30080 -> 80 大致流程: svc(ingress-nginx) 30080端口 -> pod (nginx-ingress-controller ) 80端口 -> ingress -> svc -> pod (Jenkins 8080端口&#xff0…

基于粒子群优化算法的路径问题优化研究及其在Python中的实现

基于粒子群优化算法的路径问题优化研究及其在Python中的实现 文章目录 基于粒子群优化算法的路径问题优化研究及其在Python中的实现一、简介二、引言1、粒子群优化算法简介2、PSO算法与鸟群的类比 三、PSO算法数学原理1、粒子的位置和速度2、适应度函数3、粒子的个体最优和全局…

基于html+css的图展示80

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

从零开始搭建属于自己的hexo博客

前提要素:一个提供博客运行的服务器或者XX云。 先展示一下搭建好的样子,给大家一点动力: 整个搭建过程大概需要30分钟不到,请各位控制自己的时间~ 好了,废话不多说我们开始! 1、首先登录我们准备好的服…

redis高级篇二(分片集群)

一)进行测试Sentinel池: ​ Controller public class RestController {RequestMapping("/Java100")ResponseBodypublic String start(){//1.配置信息HashSet<String> setnew HashSet<>();// 连接信息 ip:port// set.add("127.0.0.1:27001");se…

[抓包] 微信小程序(PC版)如何抓包

本文抓包环境 Win10&#xff0c;微信(PC版本) v3.9.2.20&#xff0c;Burp Suite v1.7.32&#xff0c;Proxifier v3.42 不使用安卓模拟器 一、下载安装好Burp Suite&#xff0c;Proxifier 链接: https://pan.baidu.com/s/177BIEgCmZG9MfqQ4D0PTsg 提取码: 3hex 二、开始抓包 …

【ASP.NET Core笔记】 使用razor pages构建网站

使用ASP.NET Core Razor Pages 构建网站 sqlite 北风数据库 1. Northwind.Common.DataContext.Sqlite 是Sqlite的数据库上下文&#xff0c;有三个类&#xff1a;ConsoleLogger.csNorthwindContext.csNorthwindContextExtensions.cs 1.1 NorthwindContext 继承自 Microsoft.Enti…

计算机图形学-GAMES101-10

一、纹理 原模型网格->逐面Shading->逐像素Phong Shading->纹理贴图->换个纹理再贴图->环境光照。 &#xff08;1&#xff09;环境贴图 纹理就是一张图&#xff0c;纹理是GPU里的一块内存&#xff0c;可以进行点查询、范围查询、滤波。  环境光贴图、环境光映…

The authenticity of host ‘gitee.com (212.64.63.190)‘ can‘t be established.

在将本地仓库的代码推送到远程仓库时&#xff0c;出现下面报错。 $ git push -u origin master The authenticity of host gitee.com (212.64.63.190) cant be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQpKkGYoFgbVr17bmjey0Wc. Are you sure you w…

Kali-linux分析密码

在实现密码破解之前&#xff0c;介绍一下如何分析密码。分析密码的目的是&#xff0c;通过从目标系统、组织中收集信息来获得一个较小的密码字典。本节将介绍使用Ettercap工具或MSFCONSOLE来分析密码。 8.2.1 Ettercap工具 Ettercap是Linux下一个强大的欺骗工具&#xff0c;也…

Mysql中常用到的查询关键字

文章目录 1、join2、like 模糊查询3、or4、distinct5、in 包含6、group by 分组7、order by8、limit 1、join MySQL 的连接主要分为内连接和外连接。 什么是内连接&#xff1a; 取得两张表中满足存在连接匹配关系的记录。 什么是外连接&#xff1a; 不只取得两张表中满足存在…

设计高端大气上档次的时尚品?!微软工程师借助AIGC成功圆梦!

&#xff08;本文阅读时间&#xff1a;5 分钟&#xff09; 在这个创意横飞、想象力爆棚的时代中&#xff0c;有很多美丽且吸引人的东西围绕在我们身边。然而&#xff0c;遗憾的是&#xff0c;被誉为“攻城狮”的我&#xff0c;内心里虽然非常喜欢且欣赏这些夺目的作品&#xff…

手动输入域账号自动禁用windows域用户的脚本

禁用windows域用户的脚本&#xff0c;需求&#xff1a; 1、显示该域用户的创建时间&#xff0c;最后登录时间和存放的OU&#xff0c; 2、将该账号禁用&#xff1b; 3、禁用后重新返回交互界面等待输入新的域账号。 Powershell脚本内如下&#xff1a; # 无限循环等待用户的输入…

Meta没做成的事OpenAI要干?ChatGPT之父推出加密项目Worldcoin

大模型焦虑还未停歇&#xff0c;鬼才创始人瞄准了加密领域。 继ChatPT之后&#xff0c;OpenAI的首席执行官Sam Altman推出的加密货币项目Worldcoin近日被透露融资近一亿美金&#xff0c;彻底搅翻了科技界与Web3的平静。 据官网描述&#xff0c;Worldcoin由Sam和Max Novendstern…

奇舞周刊第492期:提升 Web 核心性能指标的 9 个建议

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 提升 Web 核心性能指标的 9 个建议 大家好&#xff0c;我是 ConardLi。今天继续来为大家解读今年的 Google I/O&#xff0c;我会重点为大家解读前端开发者应该关注的信息&#xff…

软考初级程序员上午单选题(13)

1、下列不能兼作输入设备和输出设备的是______。 A&#xff0e;可擦除型光盘 B&#xff0e;软盘 C&#xff0e;硬盘 D&#xff0e;键盘 2、文件型计算机病毒主要感染______。 A&#xff0e;.TXT文件 B&#xff0e;.GIF文件 C&#xff0e;.EXE文件 D&#xff0e;.MP3文件 3、_…

【Error】Error: Cannot find module ‘babel-preset-es2015‘

启动项目时出现了下面的错误&#xff0c;错误图如下&#xff1a; 解决办法&#xff1a; 在项目的babel.config.js文件中修改presets的参数&#xff0c;修改如下&#xff1a; 原文件&#xff1a; 修改成babel/preset-env&#xff0c;修改后文件&#xff1a;