目标检测中map的计算


前言

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


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

IoU(Intersection over Union):

IoU是一种测量在特定数据集中检测相应物体准确度的一个标准。
计算公式为:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
两个框交域和并域的比值就是交并比。

TP、FP、TN、FN

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

举个例子,比如下面这张图:
在这里插入图片描述

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

二、Precision和Recall

1.Precision

计算公式:

P = TP / (TP + FP)

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

在这里插入图片描述

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

2.Recall

计算公式:

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

在这里插入图片描述
此时目标都没有漏检,TP=5,FN=0,R=1,但是检测效果并不好。因此我们需要用Precision和Recall共同来评判我们模型的好坏,也就是AP。

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

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

在这里插入图片描述
此时真实框有两个,所有num_ob=2(num_ob是累加起来的),当IoU大于等于0.5时,认为检测到了目标。
在这里插入图片描述


在这里插入图片描述
此时num_ob=3,这张图片只有一个真实框,所以num_ob+=1,
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
最后得到左边的一张表格,先从第一个元素开始计算Precision和Recall,一次累加一个元素,直到表格中所以元素计算完成为止。
在这里插入图片描述

在这里插入图片描述
此时我们会得到右边的一张表格,按照这个表格,我们就可以绘制P-R曲线了,在绘制前需要删除一些Recall重复的数据,如图中的第五和第六个数据。

在这里插入图片描述
AP = (当前点的Recall值 - 上一个点的Recall值)x 当前点以及后面所有Precision值最大的点
在这里插入图片描述

四、map的计算

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


版权声明:本文为CSDN博主「RooKiChen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/RooKichenn/article/details/123097375

RooKiChen

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

行人和人脸识别数据集

推荐一个可应用于无人车/无人机/监控识别相关的数据集 行人和人脸检测数据集(FEEMS): GitHub - neverland7D/Face-and-Pedestrian-Detection-Da