目标检测中mAP的定义

el/2024/7/13 11:50:01

作者:nowgood
链接:https://www.zhihu.com/question/53405779/answer/506000532
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

目标检测中衡量识别精度的指标是mAP(mean average precision)。多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值

然后重点计算某一个类别的 AP 了, 也就是如何画 P-R 曲线, 就目标检测而言, 可能大家困惑的点在于 TP, FP 如何计算, 下面以猫咪这一类为例说明

2. 基础概念

召回率(Recall)是从数据集的同一类的样本抽样, 而Precision是从已经预测为同一类别的样本抽样

Precision

查准率(Precision)是针对预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。

\begin{align}  Precision = \frac{TP}{TP+FP}  \tag{1}\\ \end{align}

TP+FP 所有预测为猫咪类的框

Recall

召回率(Recall, 又称为 TPR)是针对原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。

\begin{align} Recall = \frac{TP}{TP+FN}  \tag{2} \end{align}

TP+FN 样本中猫咪的所有真实框, 这个容易知道

3. 重点是 \bf TP和FP 如何定义呢?

在所有预测为猫咪类的框中, 具有怎么样的特征的框才是 TP 和 FP 呢?

计算流程

  1. 猫咪类别的Prediction下,对于某一确定 score threshold
  • 将 Prediction 按照 score 排序
  • score 大于 score threshold 的 Prediction 的定义为 Positive

2. 猫咪类别的Positive Prediction下,对于某一确定 IOU threshold,

  • 与猫咪类别的GT的 IOU 大于 threshold 的 Prediction 标记为 True Positive(TP)
  • 与猫咪类别的GT的 IOU 小于 threshold 的 Prediction 标记为 False Positive(FP)

 


http://www.ngui.cc/el/5179134.html

相关文章

java jdk中的动态代理和Cglib中的动态代理的解析

为什么要用动态代理? 因为静态代理需要额外编写代理类,对于每一个要代理的对象,都要书写一个额外的代理类。 使用代理的原因? 有些类是不能够直接访问的或者有些访问要经过特殊处理。 1. Java JDK中的动态代理 java jdk中的动态…

求1+2+3+4+5+..+n

题目描述 求123...n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 其主要思想是递归,这个程序很美。 package cn.cqu.edu;public class Sum_Solution1 {public int Sum_Solution(in…

tomcat运行java web时,报这个错:org.springframework.beans.factory.BeanCreationException

具体出错信息如下: 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error creating bean with name userController: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.Bea…

eclipse下springmvc+spring+maven+mybatis+mysql的搭建,并实现增删改查

eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建 这篇文章主要讲解在eclipse环境下SpringMVC+Maven+Mybatis+MySQL的项目搭建过程。 创建Maven工程。右击-->New->Other 点击->Manven Porject 点击->勾选快速框架 输入项目名,包(Packaging,如果只是普通的项目,…

大数据笔试面试题

问题: 有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数,但是内存限制只有2G. 解题思路:先将这个20亿个整数进行哈希分流,比如说分别分流到16个小文件中,然后用哈希表分别计算出每一个小…

c/c++中动态内存分配与回收与从void*类型隐式转换为int*类型

最常见的差异之一是,C允许从void*隐式转换到其它的指针类型,但C++不允许。下列是有效的C代码。从void*类型隐式转换为int*类型,但要使其在C和C++两者皆能运作,就需要使用显式转换。 c语言版本的: #include <stdio.h> #include <stdlib.h>#define high 2 #de…

c语言数据类型本质及其分析

c语言的数据类型如下&#xff1a; 数据类型的本质是固定内存大小区域的别名。数据类型的作用是编译器预算对象&#xff08;变量&#xff09;的内存大小&#xff0c;从而为其分配。求数据类型的大小可以用sizeof&#xff08;int&#xff09;。数据类型的别名可以用typedef来自定…

c语言中的内存4区域模型(堆,栈,全局区,代码区)

理解c语言的4个内存区域模型&#xff0c;对于学习好c语言是十分重要的。c语言的内存4区域模型如下&#xff1a;

c语言中栈和数组buf的生长方向

对于c语言中&#xff0c;栈是向上还是向下生长&#xff0c;一般由操作系统决定。一般是栈是向下生长&#xff0c;因为一旦是向下生长&#xff0c;最高地址确定之后&#xff0c;就不会发生溢出。但是不管是栈是向下生长还是向上生长&#xff0c;buf的生长的方向都是向上的&#…