目标检测mAP的概念及公式详解
作者:Bubbliiiing 发布时间:2022-05-24 17:55:57
学习前言
在Github上我们可以看到许多模型,他们都有mAP值的评价指标,如下图所示:
这到底是个啥呢?我查了好久的资料…
什么是TP、TN、FP、FN
TP的英文全称为True Positives,其指的是被分配为正样本,而且分配对了的样本,代表的是被正确分类的正样本。
TN的英文全称为,其指的是被分配为负样本,而且分配对了的样本,代表的是被正确分类的负样本。
FP的英文全称为False Positives,其指的是被分配为正样本,但分配错了的样本,代表的是被错误分类的负样本。
FP的英文全称为False Negatives,其指的是被分配为负样本,但分配错了的样本,代表的是被错误分类的正样本。
什么是Precision和Recall
Precision
指的是精度
Recall
指的是召回率
两个分别代表什么意思呢?
Precision的具体含义是:分类器认为是正类并且确实是正类的部分占分类器认为是正类的比例
Recall的具体含义是:分类器认为是正类并且确实是正类的部分占所有确实是正类的比例。
什么是mAP
说到mAP,也要说到,AP是什么。
说到AP,就要联系到上一部分所说的Precision和Recall。
对于目标检测而言任务,每一个类都可以计算出其Precision和Recall,通过合理的计算,每个类都可以得到一条P-R曲线,曲线下的面积就是AP的值。
假设存在M张图片,对于其中一张图片而言,其具有N个检测目标,其具有K个检测类,使用检测器得到了S个Bounding Box(BB),每个BB里包含BB所在的位置以及对于K个类的得分C。
利用BB所在的位置可以得到与其对应的GroundTruth的IOU值。
1、步骤1:
对于每一个类I而言,我们执行以下步骤:
对所有的BB,计算BB所在的位置与其最对应的GroundTruth的IOU值,,记为MaxIOU,此时再设置一个门限threshold,一般设置为0.5。
当MaxIOU<threshold,认为该预测框无真实框与其对应,此时可以记录其属于False Positive,使其FPi = 1,并记录其属于类I的分数C。
当MaxIOU>threshold,认为该预测框与该真实框最对应;
此时再分两类:
当该框的类别属于类型I时,此时可以记录其属于True Positive,使其TPi = 1,并记录其属于类I的分数C。
当该框的类别不属于类型I时,此时可以记录其属于False Positive,使其FPi = 1,并记录其属于类I的分数C。
2、步骤2:
由步骤1我们可以得到K * S个分数C 和 TP 和 FP的元祖,在python中,我们可以将其构成形如(C,TP, FP)的元组,对这K * S个元祖按照得分C进行排序。
3、步骤3:
将得分从大到小排序后进行截取,截取得分最大的S个,通过该步骤可以获得每个框是否成功对应了自己所属的类,计算每次截取所获得的recall和precision。
(此处Recall所用的TP+FN = N(一张图片所具有的N的目标,所有确实是正类的数量))
这样得到S个recall和precision点,便画出PR曲线了。
通过PR曲线便可以得到AP值。
而mAP就是对所有的AP值进行求平均即可。
来源:https://blog.csdn.net/weixin_44791964/article/details/102414522
猜你喜欢
- pycharm常用快捷键1、编辑(Editing)Ctrl + Space基本的代码完成(类、方法、属性)Ctrl + Alt + Spac
- 如何在pytorch中指定CPU和GPU进行训练,以及cpu和gpu之间切换由CPU切换到GPU,要修改的几个地方:网络模型、损失函数、数据
- 最近因为编程,需要大量地看一些说明文档,无奈说明文档都是英文的,可把我这个半桶水折腾死了,太多词汇不知道,一个个复制翻译太麻烦了。于是我根据
- 本文实例讲述了python修改操作系统时间的方法。分享给大家供大家参考。具体实现方法如下:#-*- coding:utf-8 -*-impo
- 方法一:直接右键,将文章路径复制下来点击Copy full Xpath使用selenium+lxml中的etree进行配合使用,使用etre
- 本文实例讲述了Python实现螺旋矩阵的填充算法。分享给大家供大家参考,具体如下:afanty的分析:关于矩阵(二维数组)填充问题自己动手推
- 很多朋友希望,我能把我做网站的一些流程及经验跟大家分享一下,最近刚好做一次内部培训,所以稍微整理了一下,这些只是针对网页初学者,具有一定平面
- 让我们面对现实吧,你的模型可能还停留在石器时代。我敢打赌你仍然使用32位精度或GASP甚至只在一个GPU上训练。我明白,网上都是各种神经网络
- 链接字典chainMap是逻辑上合并两个字典为一个逻辑单元,合并后的结构实际上是一个列表,只是逻辑上是仍然为一个字典(并未生成新的),对此列
- 介绍:仅供技术交流学习探讨,请勿用于非法用途,。本文部分资源来源于网络,如有侵权请联系版主删除。一、简介Burp Intruder是一个强大
- 问题描述今天在使用Numpy中的矩阵做相减操作时,出现了一些本应为负值的位置自动转换为了正值,观察发现转换后的正值为原本的负值加上256得到
- 1 分类图像滤波按图像域可分为两种类型:邻域滤波(Spatial Domain Filter),其本质是数字窗口上的数学运算。一般用于图像平
- 1.在python文件下新建python文件,输入文件名后按Enter键生成,比如: one.py .2.简单输入python代码: pri
- 一、前言在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理
- 使用opencv-python,把一段视频中指定帧频间隔的图像保存到新建的文件中首先安装好python ,配置好opencv-python#
- 本文主要给大家介绍了关于在CentOS 7下安装Python 3.5并与Python2.7兼容并存的相关内容,分享出来供大家参考学习,下面来
- 编写聊天程序的服务端代码和客户端代码。完成后,先启动服务端代码,然 后启动客户端程序输人问题,服务端可以返回相应的答案。要求服务端代码具 有
- python中类的继承:子类继承父类,及子类拥有了父类的 属性 和 方法。python中类的初始化都是__init__()。所以父类和子类的
- 1. 首先,你需要安装最新的服务包为了提高服务器安全性,最有效的一个方法就是升级到SQL Server 2000 Service Pack
- 本文根据自己初学经验编写的使用xlwt模块设置单元格的一些基本样式,如设置单元格的背景颜色,下框线,字体,字体的颜色,设置列宽行高,插入简单