一、mAP的定义和意义
mAP(mean of Average Percision)平均精确值的平均,用来衡量Object Detection的性能好坏。
选用mAP的原因是,Detection任务的图像标签不止一个,所以不能采用分类的标准,而是采用类似于信息检索中的方法,即mAP。
在说明mAP如何计算之前,我们先学习几个基本概念:
二、查准率(Precision)和查全率(Recall)
查准率和查全率是二分类问题中常用的指标,以关注的类作为正类,其他类为负类。在讨论查准率和查全率之前,我们先说明分类器在测试结果会出现的4种情况:
2.1 TP、TN、FP和FN
实 | 际 | ||
---|---|---|---|
1 | 0 | ||
预 | 1 | TP(True Positive) | FP(False Positive) |
测 | 0 | FN(False Negative) | TN(True Negative) |
其实,我们从上面的表中就可以看出TP、TN、FN和FP的含义,但是还是说明一下:
- TP:系统认为某个物体属于某个类别,实际上该物体就是属于该类;
- TN:系统认为某个物体不属于某个类别,实际上该物体不属于该类;
- FP:系统认为某个物体属于某个类别,实际上该物体不属于该类;
- FN:系统认为某个物体不属于某个类别,实际上该物体是属于该类
2.2 查准率(Precision)和查全率(Recall)
我们先给出查准率和查全率的定义公式,再说对它们的理解:
P r e c i s i o n = T P T P + F P Precision =\frac{TP}{TP+FP} Precision=TP+FPTP
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN} Recall=TP+FNTP
Precision被称为查准率,其实就是表示系统检测结果中,认为为正的样本占整个检测结果的比例;
Recall被称为查全率,其实是表示系统检测结果中,认为为正的样本占所有正样本的比例;
三、IoU
交并比(Intersection over Union)主要表示2个区域的重叠程度,是评价Detection中边界框正确性的指数,比如说有A、B两个区域,其IoU的计算公式如下:
I o U ( A 、 B ) = A ∩ B A ∪ B IoU(A、B) = \frac{A∩B}{A∪B} IoU(A、B)=A∪BA∩B
四、AP
平均精度(Average Precision, AP)表示在不同recall下的最高precision的均值(一般各个类都会计算其对应的AP)。
其实在Object Detection中,TP、FP和FN的意义会稍微复杂一点,理解这几个概念也是理解AP的基础:
- TP:正确的检测,检测的IoU>=threshold,即预测的边界框(bounding box)的分类正确且边界框坐标正确的数量;
- FP:错误的预测,检测的IoU<threshold,即预测的边界框的分类错误,或者边界框坐标不达标,其实就是所有预测边界框中去掉预测正确的边界框剩下的边界框数量;
- FN:没有别检测出来的ground truth,就是正确边界框中减掉被预测正确的边界框而剩下的边界框数量;
有了上面的这几个概念,那么我们就可以计算查准率和查全率了,而这样计算出来的查准率和查全率只是单个值的,但是对于不同的TP值其查准率和查全率都是不一样的,这样就能画出一个Precision-Recall曲线,计算PR曲线需要得到不同recall下precision的值,而由recall=TP/(all gt nums),而我们在预测结果中会包含对于预测类别的confidence score,confidence score越高表明包含目标的可能性越大,即动态的调整score的阈值,让更多/更少的预测框参与计算。
在得到PR曲线之后,其围成图形的面积就是AP值,下面我们通过一个例子来说明一下:
对于某个类A,我们的预测结果如下,IoU>=0.5时,GT=1;而且结果按confidence降序排序:
BB | confidence | GT |
---|---|---|
BB1 | 0.9 | 1 |
BB2 | 0.9 | 1 |
BB1 | 0.8 | 1 |
BB3 | 0.7 | 0 |
BB4 | 0.7 | 0 |
BB5 | 0.7 | 1 |
BB6 | 0.7 | 0 |
BB7 | 0.7 | 0 |
BB8 | 0.7 | 1 |
BB9 | 0.7 | 1 |
由上可知,TP=5(BB1, BB2, BB5, BB8, BB9),FP=5(BB1,BB3,BB4,BB6,BB7)重复检查到的BB1也算FP,除了表中5个GT外,还有2个GT系统没有检查到,所以