目录
前言
本文主要介绍目标检测模型的性能评价指标——mean Average Precision(mAP)。本文的第一部分主要介绍传统二分类模型的性能评价指标(都是基本概念,熟悉可以直接跳过),然后在第二部分介绍mAP的计算方式。
一. 普通二分类模型的性能评价指标
1. Precision,Recall和F1score
在传统的二分类问题中,衡量分类模型性能的指标通常使用Precision(查准率)和Recall(查全率),以及在此基础上的F1score和PR图。
对一个二分类模型,我们可以根据其分类结果构建混淆矩阵并根据混淆矩阵计算Precision和Recall,过程如下:
预测正例 | 预测负例 | |
---|---|---|
真实正例 | TP (True Positive) | FN (False Negative) |
真实负例 | FP (False Positive) | TN (True Negative) |
由于单独考察Precision或Recall都是很片面的,因此实际情况下通常使用F1score衡量模型的性能,其计算公式为:
在对模型进行性能评价时,认为Precision,Recall和F1score越大则模型的性能越好。
2. PR图和BEP
PR图通过曲线的形式反应模型的性能,为了理解其绘制过程,下面以最简单的二分类模型进行说明。下图所示为一个简单的感知机(perceptron),其中
(
x
1
,
x
2
,
…
,
x
n
)
(x_1,x_2,…,x_n)
(x1,x2,…,xn)是输入的n维数据,b是一个常数偏置,∑为一个求和单元,∅是激活函数。
perceptron的计算过程为
y
=
y=
y=∅
(
∑
i
=
1
n
w
i
∗
x
i
+
b
)
(∑_{i=1}^nw_i*x_i +b)
(∑i=1nwi∗xi+b),其中激活函数∅的作用是引入非线性便于模型优化。以sigmoid激活函数为例,它将
∑
i
=
1
n
w
i
∗
x
i
+
b
∑_{i=1}^nw_i*x_i +b
∑i=1nwi∗xi+b的结果映射到[0,1]区间上,其函数曲线如下,横轴为
∑
i
=
1
n
w
i
∗
x
i
+
b
∑_{i=1}^nw_i*x_i +b
∑i=1nwi∗xi+b而纵轴为
y
=
y=
y=∅
(
∑
i
=
1
n
w
i
∗
x
i
+
b
)
(∑_{i=1}^nw_i*x_i +b)
(∑i=1nwi∗xi+b)。
perceptron的工作原理为:若
∑
i
=
1
n
w
i
∗
x
i
+
b
>
0
∑_{i=1}^nw_i*x_i +b>0
∑i=1nwi∗xi+b>0则认为输入样本为正样本,反之则为负样本。换言之,如果
y
>
0.5
y>0.5
y>0.5则认为输入样本为正样本,反之则认为输入样本为负样本。即,此时模型使用的分类阈值为0.5。
因此,如果我们选择不同的阈值,我们就可以得到不同的预测结果,也就可以得到不同的混淆矩阵,进而得到不同的Precision和Recall。PR图的绘制过程为:以P为纵坐标,R为横坐标,选择不同的阈值计算Precision和Recall并绘制曲线上的一个点,最终由多个点拟合出一条PR曲线。BEP则为PR曲线上P=R处的点,称为平衡点。使用PR图和BEP评价模型性能时,认为PR曲线越靠外或BEP越靠外则模型性能越好。
二. 目标检测模型的性能评价指标
目标检测模型比传统的二分类模型复杂得多,因为其检测结果同时包括了目标位置(bounding box的中心坐标和宽高)和目标类别。
1. IOU
IOU全称为交并比(intersection over union),即两个bounding box交集面积和并集面积之比,用于衡量检测出的bounding box和真实bounding box的贴近程度。显然IOU越大表示两个bounding box的位置越接近。
2. Precision和Recall
目标检测问题中的Precision和Recall的计算方式与传统二分类问题存在差异。假设我们使用的IOU阈值为0.5,混淆矩阵中TP, FN, FP的具体含义如下:
- TP: 检测出的bbox中,与真实bbox的IOU≥0.5的bbox数目。可理解为真实情况中是目标且检测结果中也是目标的个数,其中若某个真实的bbox与多个检测出的bbox的IOU≥0.5,TP只能统计一次。
- FN: 漏检的bbox数目。可理解为真实情况中是目标但检测结果中不是目标的个数。
- FP: 检测出的bbox中,与真实bbox的IOU<0.5的bbox数目以及冗余的bbox数目。可理解为真实情况不是目标但检测结果中是目标的个数,其中若某个真实的bbox与多个检测出的bbox的IOU≥0.5,TP只能统计一次,其余情况均算作FP。
简言之,Precision和Recall可以衡量模型在检测目标数量和目标位置的优劣程度。
3. PR图
针对某个类别的所有检测结果,我们可以绘制该类别的PR 图,绘制方式如下:
- Step1: 将该类别的所有检测结果按照置信度阈值由大到小排列,其中若检测出的bbox与某个真实bbox的IOU≥0.5,则认为该bbox检测正确,其Ground Truth标签为True;
- Step2:从列表的第一行开始,依次选择它们的置信度为阈值,将该阈值以上的标签视为True,该阈值以下的标签视为False;
- Step3:计算当前阈值下的Precision和Recall,然后绘制PR曲线上的一个点;
- Step4:重复step2和step3直到绘制结束。
下面以一个实际例子介绍PR图的绘制步骤:
假设图像中共有5个类别为A的目标,我们共检测出了10个类别为A的目标。首先将我们的检测结果按照置信度由大到小排列,并确定它们的Ground Truth标签(表格的前三列)。
ID | Confidence | GT | Rank1 | Rank2 | Rank3 | …… |
---|---|---|---|---|---|---|
1 | 0.9 | True | Ture | True | True | …… |
2 | 0.9 | True | False | True | True | …… |
3 | 0.8 | False | False | False | True | …… |
4 | 0.8 | False | False | False | False | …… |
5 | 0.7 | False | False | False | False | …… |
6 | 0.7 | True | False | False | False | …… |
7 | 0.7 | True | False | False | False | …… |
8 | 0.7 | False | False | False | False | …… |
9 | 0.6 | False | False | False | False | …… |
10 | 0.6 | True | False | False | False | …… |
以列表第一行的Confidence为阈值时(表格第4列),TP=1,FP=0,FN=4,P=1,R=0.2;
以列表第二行的Confidence为阈值时(表格第5列),TP=2,FP=0,FN=3,P=1,R=0.4;
以列表第三行的Confidence为阈值时(表格第6列),TP=2,FP=1,FN=3,P=0.67,R=0.4;
以此类推即可绘制出该类别的PR曲线。
4. AP
AP全称为Average Precision,即平均查准率。Pascal Voc 2008和Pascal Voc 2009分别使用了不同的计算方式。假设我们绘制出的PR曲线如下图蓝色实线所示,对PR曲线做平滑处理(曲线上每个点的precision是该点右侧最大的precision)的曲线如下图黄色实线所示。
Pascal Voc 2008对AP的计算方式为:在平滑后的PR曲线上,取Recall在[0,1]上的十等分点(共11个点),并计算它们Precision的均值。其计算公式为:
A
P
=
1
11
∗
∑
i
=
0
,
0.1
,
…
,
1.0
P
s
m
o
o
t
h
(
i
)
AP=\frac 1{11}*\sum_{i=0,0.1,…,1.0} P_{smooth}(i)
AP=111∗i=0,0.1,…,1.0∑Psmooth(i)
Pascal Voc 2009之后对AP的计算方式为:平滑后的PR曲线去横轴围成的区域面积。其计算公式为:
A
P
=
∫
0
1
P
s
m
o
o
t
h
(
i
)
d
i
AP=\int_0^1 P_{smooth}(i)di
AP=∫01Psmooth(i)di
5. mAP
mAP的全称是mean Average Precision,是各个类别AP的均值。