当初理解这个问题时,查了很多资料,特写下自己的理解。
mAP(mean average precision )平均精度均值
precision:检出目标正确率;
recall:目标检出率(很多人翻译为召回率,不好理解);
real A | real B | |
test A | TP(true positive) | FP(false positive) |
test B | FN(false negative) | TN(true negative) |
A.precision=TP/(TP+FP)
A.recall=TP/(TP+FN)
很明显,一个目标检测系统性能的好坏,需要使用precision和recall两个参数,但是我们从小被教育‘简单才是美’,所以我们想要用一个参数来描述目标检测系统性能的好坏。这里我们引入AP(average precision)。
我们可以以precision和recall为笛卡尔坐标系的纵/横坐标轴,根据不同的recall值及其对应的precision值,绘出PR曲线,PR曲线下边的面积就是AP值。
至于不同的recall值(或precision值),可以通过改变IoU(intersection over union)值来实现。
实际上我们使用的时候并不是计算PR曲线下边的面积。假如总样本数是N,A类有M个样本,对其进行Top-N划分:
top-N | precision | recall | max precision | AP |
1 | 1/1 | 1/3 | 1/1=1 | // |
2 | 2/2 | //:与下方单元格合并 | // | // |
3 | 2/3 | // | // | // |
4 | 2/4 | // | // | // |
5 | 2/5 | // | // | // |
6 | 2/6 | // | // | // |
7 | 2/7 | 2/3 | 2/2=2 | // |
8 | 3/8 | // | // | // |
9 | 3/9 | // | // | // |
10 | 3/10 | 3/3 | 3/8 | (1+1+3/8)/3=19/24 |
表格中以N=10,M=3为例,计算AP值。
至于mAP的计算,实际上目标检测不可能只是一类目标,我们将各类的AP值求加权平均和就得到了mAP值。