目标检测mAP

目标检测与图像分类不同,目标检测不仅要对检测出来的目标框正确分类,同时,还需要考虑目标框与target是否贴合。

首先我们需要知道几个常见指标:

在这里插入图片描述

TP (True Positive):iou>0.5的检测框数量。在上图中,绿色的框表示GT,其中cat 0.9的红色框就是TP。
FP (False Positive):iou<=0.5的检测框。cat 0.3的红色框与GT的IOU小于0.5所以是FP。
FN (False Negative):没有检测到的GT(ground truth)数量。上图中右下角的绿色框出现漏检了所以FN+1。

查准率:Precision:TP/(TP+FP) 模型预测的所有目标中,预测正确的比例
在这里插入图片描述
如上图所示,当存在5个GT时,模型仅检测出序号1,此时TP=1,FP=0,查准率是1,无法准确评定模型性能。

查全率:Recall:TP/(TP+FN) 所有真实目标中,模型预测正确的目标比例
在这里插入图片描述
如上图所示,模型预测的检测框超过了GT的数量,其中TP=5,FN=0,召回率=1,所以单召回率也无法准确评定模型性能。

P-R曲线:不同confidence会对应不同TP,FP,将不同confidence下Precision与Recall组成的点连接起来就形成了P-R曲线。
AP:P-R曲线下的面积;mAP:各类别AP的平均值。

下面我们具体讲解如何绘制P-R曲线并计算AP

上图我们可以看到,一共出现了7只小猫,即7个GT,把他们分别按照图上的id编号。其中id:1模型检测出两个预测框,分别是cat 0.98,cat 0.61。很明显cat 0.98与GT1的iou大于0.5,所以当confidence小于0.98时,我们就可以把cat 0.98认为是TP,而cat 0.61如果confidence设置小于0.61我们就认为是FP。id:2出现漏检所以FN+1。我们按照confidence大小将各个检测框进行排序并写入下表中。下面开始计算Precision与Recall。当confidence设置为0.98时,TP=1,FP=0,FN=6,因为只有cat 0.98置信度大于等于0.98,可以看作TP,其余检测框的置信度均小于0.98所以不存在FP,同时其余GT均视为漏检,即FN=6。所以Rank1的Precision=1,Recall=0.14。依次降低置信度,可以得到P-R的值。

在这里插入图片描述

在这里插入图片描述
将左表中的坐标连接绘制出P-R曲线,并计算出面积即AP。

结合目标检测代码来看看具体步。

给定了一个IOU阈值、并给定了一个类别,如何具体地计算检测的性能。首先,我们要先对所有的检测结果排序,得分越高的排序越靠前,然后依次判断检测是否成功。将排序后的所有结果定义为DTs,所有同类别的真实目标定义为GTs。先依序遍历一遍DTs中的所有DT,每个DT和全部GT都计算一个IOU,如果最大的IOU超过了给定的阈值,那么视为检测成功,算作TP(True Positive),并且最大IOU对应的GT被视为匹配成功;如果该DT与所有GT的IOU都没超过阈值,自然就是FP(False Positive);同时,每当一个GT被检测成功后,都会从GTs中“被取走”,以免后续的检测结果重复匹配。因此如果有多个检测结果都与同一个GT匹配,那么分数最高的那个会被算为TP,其余均为FP。遍历完成后,我们就知道了所有DTs中,哪些是TP,哪些是FP,而由于被匹配过的GT都会“被取走”,因此GTs中剩下的就是没有被匹配上的FN(False Negative)。以下是为了方便理解的代码(Python),这段代码仅用于理解,效率较低。真实代码请参考MS COCO的官方源码。
在这里插入图片描述

文章中的图片与表格来自https://www.bilibili.com/video/BV1ez4y1X7g2,视频讲解很棒。

  • 18
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值