原文链接:
目标检测中的mAP是什么含义?
1. 基本概念
(1)交并比 - Intersection Over Union (IOU)
交并比(IOU)是度量两个检测框(对于目标检测来说)的交叠程度,公式如下:
I
O
U
=
a
r
e
a
(
B
p
∩
B
g
t
)
a
r
e
a
(
B
p
∪
B
g
t
)
IOU = \frac{area(B_p \cap B_{gt})}{area(B_p \cup B_{gt})}
IOU=area(Bp∪Bgt)area(Bp∩Bgt)
B_gt 代表的是目标实际的边框(Ground Truth,GT),B_p 代表的是预测的边框,通过计算这两者的 IOU,可以判断预测的检测框是否符合条件,IOU 用图片展示如下:
![img](https://img-blog.csdnimg.cn/img_convert/e1bcd60a30b1cb67f1b0bdcee7c782f0.png#pic_center)
(2)TP、FP、FN、TN
-
True Positive (TP): IoU>
I
O
U
t
h
r
e
s
h
o
l
d
IOU_{threshold}
IOUthreshold 一般取 0.5 ) 的检测框数量(同一 Ground Truth 只计算一次)。
-
False Positive (FP): IoU<=
I
O
U
t
h
r
e
s
h
o
l
d
IOU_{threshold}
IOUthreshold的检测框数量,或者是检测到同一个 GT 的多余检测框的数量。
-
False Negative (FN): 没有检测到的 GT 的数量。
-
True Negative (TN): 在 mAP 评价指标中不会使用到。
(3)查准率、查全率
- 查准率(Precision):
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision = \frac{TP}{TP + FP}
Precision=TP+FPTP
- 查全率(Recall):
R
e
c
a
l
l
=
T
P
T
P
+
F
N
Recall = \frac{TP}{TP + FN}
Recall=TP+FNTP
二者绘制的曲线称为 P-R 曲线:
![img](https://img-blog.csdnimg.cn/img_convert/6b350aa49998a3cc8421b47dafa2c7d4.png#pic_center)
(4)AP & mAP
2. PR曲线的绘制与mAP的计算
先规定两个公式,一个是 Precision,一个是 Recall,这两个公式同上面的一样,我们把它们扩展开来,用另外一种形式进行展示,其中 all detctions
代表所有预测框的数量, all ground truths
代表所有 GT 的数量。
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
=
T
P
a
l
l
d
e
t
e
c
t
i
o
n
s
Precision = \frac{TP}{TP + FP}=\frac{TP}{all\ detections}
Precision=TP+FPTP=all detectionsTP
R
e
c
a
l
l
=
T
P
T
P
+
F
N
=
T
P
a
l
l
g
r
o
u
n
d
t
r
u
t
h
s
Recall = \frac{TP}{TP + FN}=\frac{TP}{all\ ground\ truths}
Recall=TP+FNTP=all ground truthsTP
AP 是计算某一类 P-R 曲线下的面积,mAP 则是计算所有类别 P-R 曲线下面积的平均值。
假设我们有 7 张图片(Images1-Image7),这些图片有 15 个目标(绿色的框,GT 的数量,上文提及的 all ground truths
)以及 24 个预测边框(红色的框,A-Y 编号表示,并且有一个置信度值)
![img](https://img-blog.csdnimg.cn/img_convert/f431d35f00e6fa45d68656a6388bccbd.png#pic_center)
根据上图以及说明,我们可以列出以下表格,其中 Images 代表图片的编号,Detections 代表预测边框的编号,Confidences 代表预测边框的置信度,TP or FP 代表预测的边框是标记为 TP 还是 FP(认为预测边框与 GT 的 IOU 值大于等于 0.3 就标记为 TP;若一个 GT 有多个预测边框,则认为 IOU 最大且大于等于 0.3 的预测框标记为 TP,其他的标记为 FP,即一个 GT 只能有一个预测框标记为 TP),这里的 0.3 是随机取的一个值。
![img](https://img-blog.csdnimg.cn/img_convert/d8f6499a2e163f7311dfe724da09d5a7.png#pic_center)
通过上表,我们可以绘制出 P-R 曲线(因为 AP 就是 P-R 曲线下面的面积),但是在此之前我们需要计算出 P-R 曲线上各个点的坐标,根据置信度从大到小排序所有的预测框,然后就可以计算 Precision 和 Recall 的值,见下表。(需要记住一个叫累加的概念,就是下图的 ACC TP 和 ACC FP)
![img](https://img-blog.csdnimg.cn/img_convert/8ab73f8cef78f742b6ea9ef8b7d5f3de.png#pic_center)
- 标号为 1 的 Precision 和 Recall 的计算方式:Precision=TP/(TP+FP)=1/(1+0)=1,Recall=TP/(TP+FN)=TP/(
all ground truths
)=1/15=0.0666 (all ground truths 上面有定义过了
)
- 标号 2:Precision=TP/(TP+FP)=1/(1+1)=0.5,Recall=TP/(TP+FN)=TP/(
all ground truths
)=1/15=0.0666
- 标号 3:Precision=TP/(TP+FP)=2/(2+1)=0.6666,Recall=TP/(TP+FN)=TP/(
all ground truths
)=2/15=0.1333
- 其他的依次类推
然后就可以绘制出 P-R 曲线
![img](https://img-blog.csdnimg.cn/img_convert/636c8c12fb2229b08fe1617f724e3238.png#pic_center)
得到 P-R 曲线就可以计算 AP(P-R 曲线下的面积),要计算 P-R 下方的面积,一般使用的是插值的方法,取 11 个点 [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1] 的插值所得
![img](https://img-blog.csdnimg.cn/img_convert/638038a699a136ecfd8f8dddfa3c0e01.png#pic_center)
得到一个类别的 AP 结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ea67048e4114121b924adba54dd4904.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5769576KcG9p,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center#pic_center)
要计算 mAP,就把所有类别的 AP 计算出来,然后求取平均即可。