目标检测常用评价指标
本文主要参考陈恺大佬在B站商汤账号的介绍mmdetection的视频。
检测结果的正确/错误类型
真阳性(Ture Positive):算法检测到了某类物体(Positive),而实际图中也确实有这个物体,检测结果正确(True)。
假阳性(False Positive):算法检测到了某类物体(Postive),但是图中没有这个物体,检测结果错误(False)。 又称为误检
假阴性(False Negtive):算法没有检测到某类物体(Negtive),但是图中有这个物体,检测结果错误(False)。 又称为漏检
左下实线框中确实有只猫,也检测到了,即TP。
右下实线框内没有物体,但是检测到了,即FP。
右上虚线框内有屏幕,但是没有检测到,即FN。
实际上,二元的混淆矩阵是这样的:
一定要注意:初次面对这些概念时,两个字母表示四种可能性,可能会自然而然地认为前后字母分别代表真实值和预测值的真假,但实际上不是这样的。
P/N确实是表示预测值是真或假,而T/F可不是表示真实值的真或假。T/P 和 F/N 的真正含义是:
- T/F:表示预测的对不对,代表的是预测值与真实值之间的关系
- P/N:表示预测值是真还是假,代表模型对某个样本的预测结果
这个一定要弄清楚,别被混淆矩阵把自己搞“混淆”了。
精确率Precision与召回率Recall
召回率=预测为真且实际为真总数实际为真总数, 即 Recall=TPTP+FN召回率=\frac{预测为真且实际为真总数}{实际为真总数}, \ \ 即\ \ \ Recall=\frac{TP}{TP+FN} 召回率=实际为真总数预测为真且实际为真总数, 即 Recall=TP+FNTP
精确率=预测为真且实际为真总数预测为真总数, 即 Precision=TPTP+FP精确率=\frac{预测为真且实际为真总数}{预测为真总数}, \ \ 即\ \ \ Precision=\frac{TP}{TP+FP} 精确率=预测为真总数预测为真且实际为真总数, 即 Precision=TP+FPTP
准确率=预测正确总数全部样本总数, 即 Accuracy=TP+TNTP+FP+TN+FN准确率=\frac{预测正确总数}{全部样本总数}, \ \ 即\ \ \ Accuracy=\frac{TP+TN}{TP+FP+TN+FN} 准确率=全部样本总数预测正确总数, 即 Accuracy=TP+FP+TN+FNTP+TN
召回率是实际为真样本中预测为真的比例,精确率是预测为真样本中真实为真的比例,准确率是预测正确的比例。
两种极端的情况:
- 检测器将所有的锚框都判断为物体,此时召回率 Recall≈100%Recall\approx100\%Recall≈100% ,但是大量的背景都被误检为物体,FP很高,导致准确率很低。
- 检测器只将置信度最高的一个框检测为物体,当然有很大的几率是正确的,准确率 Precision≈100%Precision\approx100\%Precision≈100% ,但是大量的物体被漏检为背景,FN很高,导致召回率很低。
最理想的情况当然是召回率和准确率都为 100%,但在算法能力有限的现实情况下,我们应当尽可能地平衡二者。
通常做法是将检测框按照置信度排序,并设置一个置信度阈值,仅输出置信度大于该阈值的若干个框。
PR曲线和AP值
以上的做法无疑会受到阈值的选取的影响,为了得到和阈值无关的评分,我们可以遍历阈值,并对召回率和准确率求平均。
具体做法:
-
检测框按照置信度排序,取前 KKK 个框计算Precision和Recall。
-
遍历 KKK 从1到全部检测框,将得到的Precision和Recall绘制在坐标系上,得到PR曲线。
- 定义 Average Precision = Precision对Recall的平均值,即PR曲线下的面积,作为检测器的性能衡量指标。
AP=∫01P(R)dRAP = \int_0^1P(R)dR AP=∫01P(R)dR
Mean AP
分类别统计AP,并按类别平均得到Mean AP。
Mean AP的完整计算流程:
- 将数据集中全部图像的预测框按预测类别分类。
- 对于某一类别的所有检测框,计算AP:
- 按置信度将该类别所有检测框排序
- 逐一与真值框比较,判定TP或FP,并绘制PR曲线
- 对PR曲线插值,计算AP
- 求所有类别的AP的平均,得到Mean AP。
mAP=1C∑i=1C∫01P(R)dRmAP=\frac{1}{C}\sum_{i=1}^C\int_0^1P(R)dR mAP=C1i=1∑C∫01P(R)dR CCC 是全部类别数。
部分数据集(如COCO),还需要在不同的IOU阈值下计算Mean AP并平均,作为最终评分,这可以衡量检测器在不同定位精度要求下的性能。
AP、AP50、AP75
以上我们讨论的是在固定 IOU 下的 mAP 结果,我们也提到,有时会对不同的 IOU 也做测试,并记录性能。我们经常在论文中见到 AP、AP50、AP75 这样的指标就是指的在不同的 IOU 下的 mAP 结果。
具体来说:
- AP50、AP75:这样在 AP 后面带数字的,很好理解,即分别是在 IOU 为 50、75 下的 mAP 值。
- AP:这样不带数字的 AP 指标通常指的是 AP@50:5:95,表示 IOU 从 50 ,取到95,步长为5(即50, 55, 60, 65, …, 90, 95),分别计算这些 IOU 值下的 mAP,再求平均。