目标检测mAP的概念及公式详解

目录
  • 学习前言
  • 什么是TP、TN、FP、FN
  • 什么是Precision和Recall
  • 什么是mAP
    • 1、步骤1:
    • 2、步骤2:
    • 3、步骤3

学习前言

在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值进行求平均即可。

以上就是目标检测mAP的概念及公式详解的详细内容,更多关于目标检测mAP公式的资料请关注我们其它相关文章!

(0)

相关推荐

  • python目标检测IOU的概念与示例

    目录 学习前言 什么是IOU IOU的特点 全部代码 学习前言 神经网络的应用还有许多,目标检测就是其中之一,目标检测中有一个很重要的概念便是IOU 什么是IOU IOU是一种评价目标检测器的一种指标. 下图是一个示例:图中绿色框为实际框(好像不是很绿……),红色框为预测框,当我们需要判断两个框之间的关系时,需要用什么指标呢? 此时便需要用到IOU. 计算IOU的公式为: 可以看到IOU是一个比值,即交并比. 在分子部分,值为预测框和实际框之间的重叠区域: 在分母部分,值为预测框和实际框所占有的

  • 解析目标检测之IoU

    一.IoU的简介及原理解析 IoU 的全称为交并比(Intersection over Union),通过这个名称我们大概可以猜到 IoU 的计算方法.IoU 计算的是 "预测的边框" 和 "真实的边框" 的交集和并集的比值. 开始计算之前,我们首先进行分析下交集和并集到底应该怎么计算:我们首先需要计算交集,然后并集通过两个边框的面积的和减去交集部分即为并集,因此 IoU 的计算的难点在于交集的计算. 为了计算交集,你脑子里首先想到的方法应该是:考虑两个边框的相对位

  • Pytorch搭建YoloV5目标检测平台实现过程

    目录 学习前言 源码下载 YoloV5改进的部分(不完全) YoloV5实现思路 一.整体结构解析 二.网络结构解析 2.构建FPN特征金字塔进行加强特征提取 三.预测结果的解码 1.获得预测框与得分 2.得分筛选与非极大抑制 四.训练部分 1.计算loss所需内容 2.正样本的匹配过程 a.匹配先验框 b.匹配特征点 3.计算Loss 训练自己的YoloV5模型 一.数据集的准备 二.数据集的处理 三.开始网络训练 四.训练结果预测 学习前言 这个很久都没有学,最终还是决定看看,复现的是Yol

  • 教你用YOLOv5实现多路摄像头实时目标检测功能

    目录 前言 一.YOLOV5的强大之处 二.YOLOV5部署多路摄像头的web应用 1.多路摄像头读取 2.模型封装 3.Flask后端处理 4.前端展示 总结 前言 YOLOV5模型从发布到现在都是炙手可热的目标检测模型,被广泛运用于各大场景之中.因此,我们不光要知道如何进行yolov5模型的训练,而且还要知道怎么进行部署应用.在本篇博客中,我将利用yolov5模型简单的实现从摄像头端到web端的部署应用demo,为读者提供一些部署思路. 一.YOLOV5的强大之处 你与目标检测高手之差一个Y

  • 目标检测mAP的概念及公式详解

    目录 学习前言 什么是TP.TN.FP.FN 什么是Precision和Recall 什么是mAP 1.步骤1: 2.步骤2: 3.步骤3 学习前言 在Github上我们可以看到许多模型,他们都有mAP值的评价指标,如下图所示: 这到底是个啥呢?我查了好久的资料… 什么是TP.TN.FP.FN TP的英文全称为True Positives,其指的是被分配为正样本,而且分配对了的样本,代表的是被正确分类的正样本,. TN的英文全称为,其指的是被分配为负样本,而且分配对了的样本,代表的是被正确分类的

  • Java锁擦除与锁粗化概念和使用详解

    目录 一.什么是锁擦除 二.锁擦除的演示 三.什么是锁粗化 四.锁粗化的演示 一.什么是锁擦除 锁擦除是指虚拟机即时编译器(JIT)在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行擦除.锁擦除的主要判定依据来源于逃逸分析的数据支持,如果判断在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把它们当做栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行. 二.锁擦除的演示 public class LockErasureDemo { publi

  • JavaScript中的ajax功能的概念和示例详解

    AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML). 个人理解:ajax就是无刷新提交,然后得到返回内容. 对应的不使用ajax时的传统网页如果需要更新内容(或用php做处理时),必须重载整个网页页面. 示例: html代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>

  • 微信小程序 开发MAP(地图)实例详解

    微信小程序 开发MAP(地图)实例详解 在创建MAP(地图)前,请各位小伙伴们认真的去了解微信小程序开发的说明. https://mp.weixin.qq.com/debug/wxadoc/dev/component/map.html#map 了解完MAP(地图)里的属性之后,接下来我们就来创建一个简单的MAP(地图)控件. 第一步:肯定是创建项目.起项目名.项目地址 PS:我这里以index的文件为名 第二步:我们来写 index.wxml 文件的代码 WXML文件代码: <map id=&quo

  • java中 Set与Map排序输出到Writer详解及实例

     java中 Set与Map排序输出到Writer详解及实例 一般来说java.util.Set,java.util.Map输出的内容的顺序并不是按key的顺序排列的,但是java.util.TreeMap,java.util.TreeSet的实现却可以让Map/Set中元素内容以key的顺序排序,所以利用这个特性,可以将Map/Set转为TreeMap,TreeSet然后实现排序输出. 以下是实现的代码片段: /** * 对{@link Map}中元素以key排序后,每行以{key}={val

  • Python3的高阶函数map,reduce,filter的示例详解

    函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数. 注意其中:map和filter返回一个惰性序列,可迭代对象,需要转化为list >>> a = 3.1415 >>> round(a,2) 3.14 >>> a_round = round >>> a_round(a,2) 3.14 >>> def func_devide(x, y, f): return f(x) - f(y

  • Pyecharts 动态地图 geo()和map()的安装与用法详解

    把一些地域性比较明显的数据显示在一张地图上,远比给别人一个 Excel 文件好得多. Matplotlib 中也有画地图的函数,但是是静态图,因此这里主要讲 Pyecharts 模块中的画图功能. 安装Pyecharts 方法一:pip install ... 方法二:conda install -c anaconda pyecharts 方法三:下载模块--安装 https://pypi.org/project/pyecharts/0.1.9.4/#files下载模块: 将模块放进 xx 路径

  • python压包的概念及实例详解

    对于一些分解后的元素,我们也是有重新归类的需要.那么我们把解包的恢复过程,叫做压包.这里要用到zip函数的方法,对元素重新进行打包处理,在之前的学习中我们已经对zip函数有所接触.下面我们就python压包的概念.方法进行介绍,然后带来相关的实例使用. 1.概念 压包是解包的逆过程,用zip函数实现. 2.方法 (1)zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(Python3). (2)如果各个迭代器的元素个数不一致,则返回列表长

  • Java map.getOrDefault()方法的用法详解

    Map.getOrDefault(Object key, V defaultValue)方法的作用是: 当Map集合中有这个key时,就使用这个key值: 如果没有就使用默认值defaultValue. 代码示例如下: HashMap<String, String> map = new HashMap<>(); map.put("name", "cookie"); map.put("age", "18"

随机推荐