本篇博客将介绍目标检测中常用的性能指标,包括两部分:
一、TP、TN、FP、FN等的记忆。
二、mAP、mmAP之间的联系以及它们的计算公式。
一、TP、TN、FP、FN的记忆。
这几个值的全称分别是:
FP:假正例
FN:假负例
TP:真正例
TN:真负例。
一下子记不住也没关系.
接下来介绍一下我是怎么记忆的:
- 首先看第二个字母,它表示预测的结果(也就是预测为真或预测为假)。
- 然后看第一个字母,它表示本次预测是否预测对了,为防止歧义,可以理解为猜谜猜对了没有。
举个栗子:以FP为例。先看第二个字母:P表示预测的结果为真;再看第一个字母:F表示这个预测结果是错误的,因此真正的类别应该是假。
二、介绍mAP和mmAP
这部分更像一篇读后笔记,因为参考资料的这篇文章写得很详细,本人仅从中提炼摘抄一些我本人觉得比较重要的地方,作为笔记保存。
参考资料:https://zhuanlan.zhihu.com/p/55575423
https://zhuanlan.zhihu.com/p/56899189
----分割线----
首先,介绍了目标检测任务的特殊性:
这个任务有一个特点,就是它的输出是非结构化的。也就是说,它的输出具有很强的不确定性。
而目标检测的输出是图像中的所有目标(类别+位置),图像中到底有多少个目标是不确定的。
关于目标检测,需要先了解几个常用的术语:
- GT(Ground Truth):相当于待检测物体的label,也就是作为标准答案的框。
- DT(Detect Truth):我们的模型得到的框。
以下图为例:绿色的代表GT,是人为事先标记好的;红色框代表DT,由我们的模型得出。
此外还有:
- IoU(Intersection over Union):交并比,计算公式为“交集面积 / 并集面积”。交并比越大越好。
而对于图像检测,我们判断一个物体检测的效果时,主要看两点:
- 物体分类是否分对了
- 检测框是否接近GT(即位置偏差问题)
关于第一点的评价,不必多说。而对于第二点的,我们采用IoU进行评价。
设置一组IOU阈值,这组阈值为 (0.5, 0.55, 0.6, …, 0.9, 0.95),如果DT与GT的IOU超过阈值,则视作检测成功。
这样每给定一个阈值就可以计算出一个性能(也就是mAP,后面详述),然后对这些性能取平均(也就是mmAP,后面详述)就是整个检测算法的性能了。
mmAP为了公平的评价检测器在各个类别上的性能,采用了类别间求平均的方法:先给定一个IOU阈值,然后将所有的GT和DT按照类别先进行划分,用同一类的所有GT和DT计算出一个性能(也就是AP,马上详述),然后对所有类别的性能取平均(mAP),就是检测算法在这个IOU阈值下的性能。
而我们对模型的判断则有其他侧重点:
如果漏掉了一个目标对性能有多大损伤?如果多检测出了一个目标对性能有多大损伤?如果检测出来的位置信息有所偏差对性能有多大损伤?
换言之:一个检测结果对性能的影响,是否应该和检测器对它的满意程度(置信度)相关?以及,检测错了一个稀有的物体和检测错了一个常见的物体所带来的性能损伤是否应该相同?
值得注意的是,目标检测中的TP、FP、FN有一个更为直观的理解:
这里与IoU进行比较的数值是由我们自定义的。
了解了基本概念之后,接下来开始介绍mAP。
mAP的计算与AP有关,而AP的计算与P和R有关。
计算的过程如下:计算出P、R → 绘制出P-R曲线并求出AP → 求出mAP。
接下来我将逐个介绍这些概念。
首先是P、R的计算。
根据TP、FP、FN、TN,我们可以计算出准确率P 和召回率R :
P
=
T
P
T
P
+
F
P
P = {TP \over TP + FP}
P=TP+FPTP
P
=
R
T
P
+
F
N
P = {R \over TP + FN}
P=TP+FNR
准确率P,即所有的检测结果中多少是对的。
召回率R,即所有的真实目标中有多少被检测出来了。
如果对P、R容易混淆,可以从“图像是正样本”与“分类器认为图像是正样本”这两个概念去理解:
TP 表示 “图像本来就是正样本”
TP + FP 表示 “所有分类器认为是正样本的数量”
TP + FN 表示 “所有本来就是正样本的数量”
所以 P 表示准确率,意思是“分类器认为是正样本”中有多少“本来就是正样本”的比例,也就是分对了多少。
R表示召回率,意思是“所有正样本”中“分类器认为是正样本”的比例,也就是有多少正样本被检测出来了,找出来了多少。
理解了P、R之后,我们继续学习P-R曲线和AP。
单纯地用Precision和Recall来评价整个检测器并不公平。
因此我们需要对Precision和Recall做一个整体的评估,而这个评估就是前文提到的AP(Average Precision)。
对于AP的计算,涉及到一个P-R曲线的概念:以R为横轴、P为纵轴画出来的曲线。
随着观察数量的增大,R一定会变大或不变。因此可以以R为横轴,P为纵轴,将每次的“截取”观察到的P和R画成一个点(R,P)。
P-R曲线例子:
而AP的计算公式:可以理解为P-R曲线的面积
下图内容为原文截图:
最后是mAP的计算:
mAP其实就是所有的类的AP值求平均。
最后进行一个总结:
- 首先计算出准确率P 和召回率R
- 进而得到P-R 曲线并计算得到AP
- 将同一阈值下的AP 求一个平均得到mAP
- 将所有阈值的mAP 进行一个平均得到一个mmAP
我们再重新过一遍计算方法:给定一组IOU阈值,在每个IOU阈值下面,求所有类别的AP,并将其平均起来,作为这个IOU阈值下的检测性能,称为mAP(比如mAP@0.5就表示IOU阈值为0.5时的mAP);最后,将所有IOU阈值下的mAP进行平均,就得到了最终的性能评价指标:mmAP。
值得注意的一个细节是:在实际计算时,mmAP并不会把所有检测结果都考虑进来,因为那样总是可以达到Recall=100%,为了更有效地评价检测结果,mmAP只会考虑每张图片的前100个结果。这个数字应该随着数据集变化而改变,比如如果是密集场景数据集,这个数字应该提高。
三、补充
准确率是针对所有类别而言的,精确率P和召回率R是针对单个特定类别而言的。
----分割线----
完结撒花~