目标检测中map的计算

文章目录

  • 前言
  • 一、IoU和TP、FP、TN、FN的概念
    • IoU(Intersection over Union):
    • TP、FP、TN、FN
  • 二、Precision和Recall
    • 1.Precision
    • 2.Recall
  • 三、AP(P-R曲线下的面积)
  • 四、map的计算


前言

如何评估一个训练好模型的好坏,是目标检测中一个很重要的因素,如常见的TP、FP、AP、PR、map等,这些概念很容易混淆,搞了两天才搞明白,写一篇博客总结一下,方便以后复习。


一、IoU和TP、FP、TN、FN的概念

IoU(Intersection over Union):

IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。
计算公式为:
目标检测中map的计算_第1张图片
目标检测中map的计算_第2张图片

目标检测中map的计算_第3张图片
两个框交域和并域的比值就是交并比。

TP、FP、TN、FN

TP:被正确分类为正样本的数量;实际是正样本,也被模型分类为正样本
FP:被错误分类为正样本的数量;实际是负样本,但被模型分类为正样本
TN:被正确分类为负样本的数量;实际是负样本,也被模型分类为负样本
FN:被错误分类为负样本的数量;实际是正样本,但被模型分类为负样本

举个例子,比如下面这张图:
目标检测中map的计算_第4张图片

红色是预测框,绿色是真实框。
假设阈值为0.5,意思就是预测框与真实框的IoU大于等于0.5时认为检测到目标了。
TP是IoU>0.5的检测框数量(在同一真实框下只计算一次),图中的框①。
FP是IoU<=0.5的检测框数量,图中的框②。
FN是没有被检测到的框数量,图中的框③。

二、Precision和Recall

1.Precision

计算公式:

P = TP / (TP + FP)

Precision是针对预测结果而言的,含义是在预测结果中,有多少预测框预测正确了。
但是光靠一个Precision指标是有缺陷的,比如在下面这种情况中:

目标检测中map的计算_第5张图片

在预测结果中,预测正确的目标有一个,预测错误的目标有0个,所以TP=1,FP=0,则P=1,但是图中除了①,②③④⑤都没有检测出来,所以单靠一个Precision指标肯定是不行的。

2.Recall

计算公式:

R = TP / (TP + FN)
Recall是针对原样本而言的,含义是在所有真实目标中,模型预测正确目标的比例。
但是单靠Recall来判断模型预测结果好坏也不行,比如下面这种情况:

目标检测中map的计算_第6张图片
此时目标都没有漏检,TP=5,FN=0,R=1,但是检测效果并不好。因此我们需要用Precision和Recall共同来评判我们模型的好坏,也就是AP。

三、AP(P-R曲线下的面积)

这里推荐b站一位up的视频,讲的非常详细
对于以下三张猫的图片,分别对每张图片进行统计,并存入一个表格中,这个表格是按照置信度降序排序的:

目标检测中map的计算_第7张图片
此时真实框有两个,所有num_ob=2(num_ob是累加起来的),当IoU大于等于0.5时,认为检测到了目标。
目标检测中map的计算_第8张图片


目标检测中map的计算_第9张图片
此时num_ob=3,这张图片只有一个真实框,所以num_ob+=1,
目标检测中map的计算_第10张图片


目标检测中map的计算_第11张图片
目标检测中map的计算_第12张图片
最后得到左边的一张表格,先从第一个元素开始计算Precision和Recall,一次累加一个元素,直到表格中所以元素计算完成为止。
目标检测中map的计算_第13张图片

目标检测中map的计算_第14张图片
此时我们会得到右边的一张表格,按照这个表格,我们就可以绘制P-R曲线了,在绘制前需要删除一些Recall重复的数据,如图中的第五和第六个数据。

目标检测中map的计算_第15张图片
AP = (当前点的Recall值 - 上一个点的Recall值)x 当前点以及后面所有Precision值最大的点
在这里插入图片描述

四、map的计算

上面的0.6694就是猫所对应的AP值,采用这个方法,我们可以计算出所有类别所对应的AP值,再除以类别的个数,就得到了map。


你可能感兴趣的:(深度学习,目标检测,机器学习,深度学习)