通俗地讲解目标检测中AP指标

声明:以下内容全是我的个人见解,如有问题,欢迎指正!

AP(Average Precision)即平均精度,是目标检测中的一个常用指标。

一、精确率和召回率

说道AP,那不得不提准确率和召回率。首先我们来看他们的计算公式

精确率:Precision = \frac{TP}{TP+FP}

召回率:Recall = \frac{TP}{TP+FN}

其中,TP,FP,FN出自一个混淆矩阵,这里我们不展示这个混淆矩阵的定义,我们直接说这些变量的定义。

TP:检测器输出的结果中正确的个数

FP:检测器输出的结果中错误的个数

FN:ground truth中未被找出的个数,FN = ground truth总数 - TP

可以看出,精确率的分母部分即检测器检测出该类别的框的总数;召回率的分母部分即ground truth给出的该类别的框总数。

那么通俗的说:精确率表示检测器找出的框有多少是对的,衡量误检程度。召回率表示检测器找出的正确框占ground truth的百分之多少,衡量漏检程度。

扫描二维码关注公众号,回复: 16570010 查看本文章

举个例子:

对于某一个类别,检测器输出有5个框,其中有3个框是正确的,有2个框是错误的。而这张图像中该类别共有10个框。

可得:TP = 3,FP = 2,FN = 7

准确率Precision = \frac{3}{3+2} = 0.6

召回率Recall = \frac{3}{3+7} = 0.3

我们可以试想一下以下两个极端情形:

当一个检测器给出了数量巨多的目标框,它将很容易找出所有的ground truth,即广撒网。那么它的召回率将是100%,而它的精确率将会非常低。

当一个检测器只检测出了一个目标,并且这个目标是正确的,但是ground truth有10个目标。那么它的精确率将是100%,而它的召回率将会很低。

通过这两个情形可以知道,精确率和召回率是有一定矛盾的存在。

那么有没有什么指标能够综合一下精确率和召回率呢,那么AP就登场啦~

二、PR曲线

很多AP的定义中都有说,AP是PR曲线的曲线下面积,那么PR曲线是什么呢?它是怎么绘制出来的呢?

PR曲线即精确率-召回率曲线,它的绘制过程我们用一个实例来说明会更简单些,这个例子来自(目标检测中的AP,mAP),下面例子相关的图片也来自这里,如有侵权,我删了自己画……
假设一张图像中有5个待检测目标,而我们的检测器给出了10个框,根据框的置信度由高到低进行排序,得到下表(图):

表中,Rank一列表示框按置信度由高到低排列后的序号,correct表示该框是否正确,Precision表示计算出的精确率,Recall表示计算出的召回率。

精确率和召回率的计算是一个不断累计的过程,而不是每个框独立的。

例如:

在第一个框时,精确率 = 1/1 =1.0,召回率 =1/5 = 0.2;

在第二个框时,精确率 = 2/2 = 1.0,召回率 = 2/5 = 0.4;

在第三个框时,精确率 = 2/3 = 0.67,召回率 = 2/5 = 0.4;

……

这时,我们根据精确率和召回率,就能绘制出PR曲线:

这时我们需要求精确率的平均值,就等于该曲线的曲线下面积取平均。

三、AP计算

通过上面的讲解,AP的计算应该就很简单了,求曲线下面积就类似积分。因为数据是离散的,所以一般会设定采样点,一般在横轴0~1范围内平均分为10或者100段,最后采样的值相加除以采样点数即可。在大多数标准中还会对曲线做平滑处理方便计算,可以免去插值的烦恼。

四、mAP

在多类别的目标检测任务中能看到mAP这个指标,m是mean平均值,它是指所有类别的AP的平均值。

一个超级好用个调试APP,前往应用市场 

猜你喜欢

转载自blog.csdn.net/qq_19313495/article/details/115030614