目标检测评价指标Precision Recall AP mAP

什么是IoU

在目标检测算法中,我们经常需要评价2个矩形框之间的相似性,直观来看可以通过比较2个框的距离、重叠面积等计算得到相似性,而IoU指标恰好可以实现这样的度量。简而言之,IoU(intersection over union,交并比)是目标检测算法中用来评价2个矩形框之间相似度的指标

IoU = 两个矩形框相交的面积 / 两个矩形框相并的面积,如下图所示:
在这里插入图片描述

什么是TP TN FP FN

TP:true positive
TN: true negative
FP:false positive
FN:false negative
positive和negative表示的是你预测得到的结果,预测为正类则为positive,预测为负类则为negative;
true和false则表示你预测的结果和真实结果是否相同,相同则是true,不同则为false,如下图:
在这里插入图片描述

什么是Precision(精确度)和Recall(召回率)

  • Precision(精确度): 挑出来的西瓜中有多少是好瓜
    P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
    表示:预测为正例当中,有多少真正为正例,表示预测的准确性。也可以理解为:挑出来的西瓜当中有多少比例是好瓜。
    衡量的是一个分类器分出来的正类的确是正类的概率

光是精确度还不能衡量分类器的好坏程度,比如50个正样本和50个负样本,我的分类器把49个正样本和50个负样本都分为负样本,剩下一个正样本分为正样本,这样我的精度也是100%,因为分类器分出来1个样本为正类,且这个样本分类正确,则1/1 = 1
所以还需要召回率

  • Recall(召回率): 所有好瓜中有多少比例被挑出来
    R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
    表示:把多少真正的正例召唤回来。也可以理解为:所有的好瓜当中有多少比例被挑出来。
    衡量的是一个分类器能把所有的正类都找出来的能力。

所以说这两个评价指标往往是相互矛盾的。

那么问题来了,如何求TP、FP以及FN呢?

求解 TP TN FP FN

有两个参数影响着TP TN FN的值:置信度和IoU

  • 置信度
    通过改变置信度的阈值,我们可以改变一个预测框是positive还是negative,即改变预测值的正负性。基本上,高于阈值的所有预测(box + class)被认为是 positive boxes,低于阈值则为 negatives。
  • IoU
    如何判断一个预测的结果(positive)是正确的(True)还是错误的(False)的呢?这就需要IoU阈值了。
    ① 对于一张图片,ground truth数据会给出该图片中给个类别实际物体数量
    ② 我们计算 模型预测的 Positive detection 和 Ground Truth 的IoU值,并取最大的IoU值,认为预测框检测到了那个IoU最大的Ground Truth。
    ③ 基于设定的 IoU 阈值(这里我们暂且设置IoU阈值为0.5)。如果IoU值大于阈值0.5,那么认为这个Positive detection为True,即为一个TP;如果IoU值小于阈值0.5,那么认为这个Positive detection为False,即为一个FP。这样,就知道TP和FP的数值了,也就可以求得Precision了。
    ④ FN的意思是:真实值是1,但是我们没能把它预测出来,也就是说FN实际上就是漏检的物体数。我们已经得到了正确预测的数值(TP),那就很容易计算出漏检的物体数FN。其实Recall的分母 T P + F N TP+FN TP+FN就是ground truth的总数。

根据前面的一些概念我们可以知道,至少有两个变量会影响Precision和Recall的计算结果,即IoU和置信度阈值
IoU 是一个简单的几何指标,其可以很容易被标准化,例如:VOC 挑战赛评估指标基于 50% IoU 计算 mAP,然而 COCO 挑战赛更进一步,计算 mAP 时使用的 IoU 阈值从 5%-95%。
不同模型预测值的 confidence 可能不同,你的模型的 50% confidence 可能对应其他人模型的 80% confidence。这将改变 precision recall 曲线的形状。因此 VOC 组织者想出了一个与模型无关的评价方式。
VOC 建议我们计算一个称为 Average Precision(AP) 的指标。

AP

假设我们以Aeroplane类别为例子,只计算Aeroplane类别的AP.

  • 训练好的目标检测模型会给出大量的预测结果,但是其中大多数的预测值都会有非常低的置信度(confidence score),因此我们只考虑那些置信度高于某个阈值的预测结果。 将图片送入训练好的模型,就会预测出一系列框,然后根据置信度进行筛选,大于设置的那个置信度值就是预测的所有结果。
  • 对模型预测结果进行排序(按照各个预测值置信度降序排列)这样形成一个排列rank。
  • 给定一个rank级别,计算Recall和Precision。
    比如:rank=1,那么就认为预测结果框只有框1,计算Recall和Precision。
    rank=2,那么就认为预测结果框有框1和框2,计算Recall和Precision。
    后面有具体例子,在理解。
  • VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,即当recall>0时,Precision的最大值,当recall>0.1时Precision的最大值,依次类推。然后AP就是这11个Precision的平均值。
    VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。
    由于按照置信度排序,所以实际上等于选择了11个不同的置信度阈值。
例子:2010以前VOC。

在这里插入图片描述
我们已经得到了一个排列rank,接着进行计算:给定一个rank级别,计算Recall和Precision。
rank=1:表示只预测出来了一个框BB1,这个框BB1恰好是和ground truth的IoU > 0.5,所以可以作为一个TP。TP=1,没有预测出错误的飞机,所以FP=0,但是实际上一共有5+2=7个真值飞机,所以相当于漏检了6个飞机,即FN=6,。因此,可以计算出Precision=1/1=1;Recall=1/7=0.14
rank=2:表示预测出来了两个框BB1和BB2,BB1和BB2和ground truth的IoU > 0.5,所以都可以作为TP。TP=2,没有预测出错误的飞机,所以FP=0,但是实际上一共有5+2=7个真值飞机,所以相当于漏检了5个飞机,即FN=5,。因此,可以计算出Precision=2/2=1;Recall=2/7=0.29
rank=3:表示预测出来了三个框BB1、BB2和BB3,BB1和BB2和ground truth的IoU > 0.5,所以都可以作为TP。TP=2,BB3预测错误,所以FP=1,但是实际上一共有5+2=7个真值飞机,所以相当于漏检了5个飞机,即FN=5,。因此,可以计算出Precision=2/3=0.66;Recall=2/7=0.29
同理得到所有的rank:
在这里插入图片描述
对于上述PR值,如果我们采用:VOC2010之前的方法,我们选取Recall >= 0, 0.1, …, 1的11处Percision的最大值。
Recall >= 0时,Percision最大为1
Recall >= 0.1时,Percision最大为1
Recall >= 0.2时,Percision最大为1
Recall >= 0.3时,Percision最大为0.5
Recall >= 0.4时,Percision最大为0.5
Recall >= 0.5时,Percision最大为0.5
Recall >= 0.6时,Percision最大为0.5
Recall >= 0.7时,Percision最大为0.5
Recall >= 0.8时,Percision最大为0
Recall >= 0.9时,Percision最大为0
Recall >= 1时,Percision最大为0
此时Aeroplane类别的 AP = 5.5 / 11 = 0.5。

mAP

mAP 就是所有类别的 AP 的均值。
当我们计算 mAP 值时,需要注意一些 “点”:

  • mAP 的计算通常都是在一个数据集上计算的。
  • 尽管很难去解释模型的绝对性能,但 mAP 作为一个较好的相对指标,有助于评价模型。当我们在一些流行的公开数据集上计算该指标时,可以很容易地使用 mAP 去比较目标检测新旧算法的性能。
  • 根据训练集的类别分布情况,不同类别的 AP 值可能会出现较大差异(训练数据较好的类别有较高的 AP 值,训练数据不好的类别有较低的 AP 值)。所以你的 mAP 可能是稳健的,但是你的模型可能对某些类别的效果较好,对于某些类别的效果不好。因此在分析模型时,建议去查看下各类别的 AP 值。这些值可以作为添加训练数据的一个参考指标。

COCO评价指标

在这里插入图片描述

  • A P I o U = . 50 AP^{IoU=.50} APIoU=.50:当设置IoU为0.5时的平均准确率,这个其实就是VOC的评价标准。这里的AP实际上是VOC的评价标准mAP。
  • A P I o U = . 75 AP^{IoU=.75} APIoU=.75 :是严格模式的测量。
  • A P s m a l l AP^{small} APsmall, A P m e d i u m AP^{medium} APmedium, A P l a r g e AP^{large} APlarge :分别对应面积 a r e a < 3 2 2 area<32^2 area<322, 3 2 2 < a r e a < 9 6 2 32^2<area<96^2 322<area<962, a r e a > 9 6 2 area>96^2 area>962 的目标分别测试的值。
  • A P AP AP:COCO数据集,设定多个IOU阈值(0.5-0.95,0.05为步长),在每一个IOU阈值下都有某一类别的AP值,然后求不同IOU阈值下的AP平均,就是所求的最终的某类别的mAP值。最后,mmAP值计算就更为简单了,所有类的mAP值平均值就是mmAP,也就是我们最终的结果AP的值。

参考:
目标检测评价指标—mAP
目标检测模型评估指标——mAP计算的讨论
目标检测的各类评价指标是什么及其计算
目标检测的性能评价指标:coco数据集评价指标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值