目标检测中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。


  • 31
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值