PR曲线

指标

Precision查准率。
Recall查全率。​​​
mAP和IOU以及置信度阈值关系
TP: IoU>0.5的检测框数量(同一Ground Truth只计算一次)
FP: IoU<=0.5的检测框,或者是检测到同一个GT的多余检测框的数量

增加置信度阈值,我们会对预测值更有信心,即增加了查准率。但这样会降低查全率。(High Precision, Low Recall)
减小置信度阈值,则模型放过的真例就变少,查全率就增加。(Low Precision, High Recall)
进而得到PR曲线上不同的点

PR曲线:设置不通的阈值(score)可以得到不同的(P,R)点,将这些点连接起来就是PR曲线

PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即Map
在这里插入图片描述
如果其中一个学习器的PR曲线A完全包住另一个学习器B的PR曲线,则可断言A的性能优于B。但是A和B发生交叉,那性能该如何判断呢?我们可以根据曲线下方的面积大小来进行比较,但更常用的是平衡点F1。平衡点(BEP)是P=R时的取值(斜率为1),F1值越大,我们可以认为该学习器的性能较好。F1的计算如下所示:F1 = 2 * P * R /( P + R )

  • 非VOC2007的算法:对于某类下全部的真实目标,将IOU>=0.5 的作为检测出来的目标,取不同的confidence 阈值计算对应的precision 和recall,对于每个recall,取其对应的最大precision,对这些precision 求平均即为该类的AP 值。所有类的AP 值求平均即为mAP。
  • 在评测时,COCO评估了在不同的交并比(IoU)[0.5:0.05:0.95]共10个IoU下的AP,并且在最后以这些阈值下的AP平均作为结果,记为mAP@[.5, .95]。而在Pascal VOC中,检测结果只评测了IOU在0.5这个阈值下的AP值。
    因此相比VOC而言,COCO数据集的评测会更加全面:不仅评估到物体检测模型的分类能力,同时也能体现出检测模型的定位能力。因此在IoU较大如0.8时,预测框必须和真实的框具有很大的重叠比才能被视为正确。

要计算mAP必须先绘出各类别PR曲线,计算出AP。而如何采样PR曲线,VOC采用过两种不同方法。参见:The PASCAL Visual Object Classes Challenge 2012 (VOC2012) Development Kit

  1. 在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, …, 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值
  2. 在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。

mAP计算示例:假设,对于Aeroplane类别,我们网络有以下输出(BB表示BoundingBox序号,IoU>0.5时GT=1):
BB | confidence | GT
BB1 | 0.9 | 1
BB2 | 0.9 | 1
BB1 | 0.8 | 1
BB3 | 0.7 | 0
BB4 | 0.7 | 0
BB5 | 0.7 | 1
BB6 | 0.7 | 0
BB7 | 0.7 | 0
BB8 | 0.7 | 1
BB9 | 0.7 | 1

因此,我们有 TP=5 (BB1, BB2, BB5, BB8, BB9), FP=5 (重复检测到的BB1也算FP)。除了表里检测到的5个GT以外,我们还有2个GT没被检测到,因此: FN = 2. 这时我们就可以按照Confidence的顺序给出各处的PR值,如下:
rank=1 precision=1.00 and recall=0.14(recall = TP / (TP+FN) , 到rank=1 时,预测到的TP= 1 , 针对假设,GT有7个,因此recall = 1/7 = 0.14)
rank=2 precision=1.00 and recall=0.29
rank=3 precision=0.66 and recall=0.29
rank=4 precision=0.50 and recall=0.29
rank=5 precision=0.40 and recall=0.29
rank=6 precision=0.50 and recall=0.43
rank=7 precision=0.43 and recall=0.43
rank=8 precision=0.38 and recall=0.43
rank=9 precision=0.44 and recall=0.57
rank=10 precision=0.50 and recall=0.71

对于上述PR值,如果我们采用:

  1. VOC2010之前的方法,我们选取Recall >= 0, 0.1, …, 1的11处Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。此时Aeroplane类别的 AP = 5.5 / 11 = 0.5
  2. VOC2010及以后的方法,对于Recall >= 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1,我们选取此时Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。此时Aeroplane类别的 AP = (0.14-0)*1 + (0.29-0.14)*1 + (0.43-0.29)*0.5 + (0.57-0.43)*0.5 + (0.71-0.57)*0.5 + (1-0.71)*0 = 0.5
    mAP就是对每一个类别都计算出AP然后再计算AP平均值就好了

参考资料
https://www.zhihu.com/question/53405779
https://blog.csdn.net/guzhao9901/article/details/107961184
https://www.zhihu.com/question/53405779/answer/419532990

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值