前言

  • AP(Average Precision,平均精度)是衡量目标检测算法好坏的常用指标,在Faster R-CNN,SSD等算法中作为评估指标。

  • AP等于召回率(Recall)值取0-1时,准确率(precision)值的平均值。

Precision

  • 正确预测结果占所有预测正例的百分比
  • 比如你预测100个图片是苹果,其中80个真的是苹果,则Precision=0.8
    Precision=TPTP+FPPrecision=\frac{TP} {TP+FP}

Recall

  • 正确预测结果占所有事实正例的百分比
  • 比如总共有100个图片是苹果,你成功预测了50个,则Recall=0.5
    Recall=TPTP+FNRecall=\frac{TP} {TP+FN}

IoU

AP

下面的例子演示AP怎么计算的

1

    1. 共进行10次预测,直到recall为1为止;
    1. 第二列表示预测是否正确,标准就是IoU≥0.5;
    1. 随着预测进行,recall值会一直增加,但precision会具有锯齿形状(FP下降,TP上升),如下图所示;

2

    1. AP一般就定义为以上锯齿形所包含的面积 AP=01p(r)drAP=\int_{0}^{1}p(r)\text{d}r
    1. precision 和 recall 总是在0-1之间,所以AP也是在0-1之间;
    1. 通常会首先对锯齿形进行平滑,将每个precision值替换为其右侧最大的precision值,从而使得曲线单调递减而不是呈现锯齿形,这样做的目的是减少因为TP出现的先后次序的差异导致的波动,如下绿线所示:

3

    1. 用公式表示为:pinterp(r)=maxr~rp(r~)p_{interp}(r)=max_{\widetilde{r}\geq{r}}{p(\widetilde{r})}
    1. 进一步可以用11点插值方式计算AP:

4

    1. 公式表示为AP=111r{0,0.1,...,1}pinterp(r)AP={\frac {1} {11}}\sum_{r\in{\{0,0.1,...,1\}}}{p_{interp}(r)}