目标检测之评论指标

目标检测指标主要有两项一个是AP一个就是mAP。

一、 AP(Average Precision)


1、我们就拿faster rcnn预测出的bounding box进行举例。

a. 首先将模型预测的结果进行置信度筛选,选择置信度高的bounding box。
b. 第二步,我们会对预测结果通过置信度进行降序排列,形成排列rank。
c. 第三步, 给定rank级别,计算recall以及precision。
d. 第四步, 计算AP

* 这里需要强调的是第四步计算AP的过程:

VOC 计算过程
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值。

TP IOU>0.5检测框的数量
FP IOU<0.5的检测框
FN 没有检测的GT数量

TP+FN 为总GT数量

Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
参考链接: https://www.bilibili.com/video/BV1ez4y1X7g2/?spm_id_from=333.337.search-card.all.click&vd_source=d308c0d18acce00fe04e14a7b7c80f00

image.png

相同的recall 保留最大的precision

2. 示例
Rank Rrecision Recall 计算过程
Rank = 1 Precision = 1.00 Recall = 0.14 表示只预测出来了一个框BB1,这个框BB1恰好是和ground truth的IoU > 0.5,所以可以作为一个TP。TP=1,没有预测出错误的飞机,所以FP=0,但是实际上一共有5+2=7个真值飞机(这里的2没有表示出来,是confidence score低于0.5即还有BB10 以及BB11),所以相当于漏检了6个飞机,即FN=6,。因此,可以计算出Precision=1/1=1;Recall=1/7=0.14
Rank=2 Precision=1.00 Recall=0.29 表示预测出来了两个框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 Precision=0.66 Recall=0.29 表示预测出来了三个框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=4 Precision=0.50 Recall=0.29 ...
Rank=5 Precision=0.40 Recall=0.29 ...
Rank=6 Precision=0.50 Recall=0.43 ...
Rank=7 Precision=043 Recall=0.43 ...
Rank=8 Precision=0.38 Recall=0.43 ...
Rank=9 Precision=0.44 Recall=0.57 ...
Rank=10 Precision=0.50 Recall=0.71 ...
  • VOC2010之前的做法
Recall 条件 Prercision最大值
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。

  • 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(mean Average Precision)

mAP 就是所有类别的 AP 的均值.

  • 当我们计算 mAP 值时,需要注意一些 “点”:
    mAP 的计算通常都是在一个数据集上计算的。

  • 尽管很难去解释模型的绝对性能,但 mAP 作为一个较好的相对指标,有助于评价模型。当我们在一些流行的公开数据集上计算该指标时,可以很容易地使用 mAP 去比较目标检测新旧算法的性能。

  • 根据训练集的类别分布情况,不同类别的 AP 值可能会出现较大差异(训练数据较好的类别有较高的 AP 值,训练数据不好的类别有较低的 AP 值)。所以你的 mAP 可能是稳健的,但是你的模型可能对某些类别的效果较好,对于某些类别的效果不好。因此在分析模型时,建议去查看下各类别的 AP 值。这些值可以作为添加训练数据的一个参考指标。

参考

  1. 目标检测评价指标Precision Recall AP mAP
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容