参考: https://www.zhihu.com/question/53405779/answer/3270357481
博士论文:复杂场景下高精度有向目标检测的研究_杨学
1.IoU
IoU(Intersection over union),中文称为“交并比”,用于衡量两个区域之间重叠部分的相对大小。在目标检测中,常用IoU来衡量预测框和真实框的重叠程度,交并比越大表示重叠程度越高,即预测框越接近真实框,预测越准确。IoU的计算公式如下:
I
o
U
=
area of overlap
area of union
IoU = \frac{\text{area}\ \text{of} \ \text{overlap}} {\text{area}\ \text{of} \ \text{union}}
IoU=area of unionarea of overlap
假设预测框为A,真实框为B,则IoU的计算方法如下:
I
o
U
=
A
∩
B
A
∪
B
IoU = \frac{A\cap B}{A\cup B}
IoU=A∪BA∩B
2.Precision & Recall
在介绍Precision(精确度)和Recall(召回率)之前,需要先了解机器学习二分类问题中常用的混淆矩阵,如下图
- TP (True Positive): 指预测为正且真实值也为正;
- FN (False Negative): 指预测为负但真实值为正;
- FP (False Positive): 指预测为正但真实值为负;
- TN (True Negative): 指预测为负且真实值也为负。
(T开头即预测正确,F开头即预测错误,FN表示预测成了负,但实际为正。)
在理解混淆矩阵后,即可计算Precision和Recall,其计算公式如下:
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
R
e
c
a
l
l
=
T
P
T
P
+
F
N
Precision = \frac{TP}{TP+FP} \\ Recall = \frac{TP}{TP+FN}
Precision=TP+FPTPRecall=TP+FNTP
精确度Precision表示模型预测的正确率,即网络预测为正确的样本中,实际有多少是正确的(找的准不准)
召回率Recall表示模型预测的查全率,即网络预测到的正确样本中,占实际正样本的比例(找的全不全)
- Precision和Recall是一对矛盾的指标:为了提高精确度Precision,我们需要提高网络预测的置信度,即有把握的时候才将某样本预测为正样本,而这样做无疑会减少模型预测正样本的数量,导致召回率Recall下降。
3.AP与mAP
在计算AP之前,通常会创建一条Precision-Recall曲线(PR曲线)。
该曲线用于衡量不同置信度(Confidence)阈值下Precision和Recall之间的关系。(注:这里的置信度是由模型输出的结果,并不是IoU,IoU阈值是用来判断预测框是否为TP的)。如下是一条PR曲线的示意图,该曲线也反映了Precision和Recall之间的矛盾关系。
计算公式如下:
A
P
i
=
∫
0
1
P
i
(
R
i
)
d
R
,
m
A
P
=
1
N
c
l
s
∑
i
=
0
N
c
l
s
A
P
i
AP_i=\int_0^1 P_i(R_i) \,{\rm d}R,\ mAP = \frac{1}{N_{cls}}\sum_{i=0}^{N_{cls}}AP_i
APi=∫01Pi(Ri)dR, mAP=Ncls1i=0∑NclsAPi
其中
N
c
l
s
N_{cls}
Ncls表示目标类别数量。
AP在实际代码实现中常常用近似计算的方式来加速计算,常用的计算方式方式有三种:
-
VOC2007: 11 个点的插值平均精度 (11-Point Interpolated Average Precisio)。
具体做法是先设定一组阈值 [0, 0.1, 0.2, …, 1],然后对于 Recall 大于每一个阈值时均会得到一个对应的最大 Precision,最后这 11 个 Precision 的平均值就是最终的 AP。
-
VOC2012: 全插值方法。
假设 N 个样本中有 M 个正例,会先得到 M个 Recall 值 (1/M, 2/M, ⋯, M/M),然后 Recall 值 大于每一个阈值(如 3/M)均可以得到一 个最大 Precision,这样就得到了 M 个最大 Precision,最后对这 M 个 Precision 值取平均即可得到 AP。
- COCO
在AP曲线上采样100个点进行计算,而且IoU阈值在0.5~0.95的区间上,每隔0.05计算一次AP,最后取所有结果的平均值,相当于在 0.95 − 0.5 0.05 + 1 = 10 \frac{0.95-0.5}{0.05}+1=10 0.050.95−0.5+1=10条PR曲线上,每条都取100个点,一共对共1000个点取平均。
COCO数据集中各项评价指标的含义如下:
- A P AP AP : 采用COCO数据集标准计算的得到的mAP
- A P 50 AP_{50} AP50 : IoU阈值为0.5时的mAP(一般标准)
- A P 75 AP_{75} AP75 : IoU阈值为0.75时的mAP(较为严格的标准)
- A P s AP_{s} APs : 像素面积小于 3 2 2 32^2 322 的目标框的mAP
- A P M AP_M APM : 像素面积在 3 2 2 ∼ 9 6 2 32^2\sim 96^2 322∼962的目标框的mAP
- A P L AP_L APL : 像素面积大于 9 6 2 96^2 962的目标框的mAP
注:对于目标检测任务中的每个标注框,只能有一个检测结果可以被视为它们的TP。如果有多个检测结果满足TP的条件,则选择与标注框具有最大 IoU 的检测结果作为 TP,而其他结果则被视为假正例 (False Positive, FP)。如果一个标签框没有匹配到任何一个估计框,那么这个标签框就没有被成功检测出来,该标签框被称为假负例 (False Negative, FN)。