目前,目标检测模型中性能评估的几个重要参数有定位准确率,精确度和召回率。
定位准确率可以通过检测窗口与我们自己标记的物体窗口的重叠度,即Intersection-Over-Union(IOU)进行度量。设标记窗口为 A ,检测窗口为 B ,则 IOU 的计算公式如下:
其中分子部分表示 A 与 B 窗口的重叠部分面积,分母部分表示 A 与 B
窗口的面积总和。显而易见,IOU 的值在[0,1]之间,同时 IOU 越接近 1
表示两个窗口重叠部分越多,定位准确度也就越好,反之则越差。在 Pascal VOC Challenges中 IOU 设置为 0.5,Microsoft coco 中将 IOU 设置为 0.5-1.0 的综合评价值。随着 IOU 数值的提高,侧面说明了目标检测技术的提升。
IOU示意图:
识别精度主要是由召回率(recall)和精度(precision)表示的。通过绘制
precision-recall 曲线,该曲线下方的面积越大,识别精度也就越高,反之越低。
在说明 recall 和 precision 计算公式之前需要先介绍几个数据定义。
在一个数据集检测中,会产生四类检测结果:
TP:本来是正样本,检测为正样本(真阳性)。
TN:本来是负样本,检测为负样本(真阴性)。
FP:本来是负样本,检测为正样本(假阳性)。
FN:本来是正样本,检测为负样本(假阴性)。
则recall和precision计算公式如下:
也就是说 recall 表示在整个检测结果中有用部分占整个数据集有用部分的比重,precision 表示在整个检测结果中有用部分占整个检测结果为有用的比重。虽然希望两个指标都能越高越好,但是这两个指标在被某些情况下存在着矛盾,所以在实际检测场景中需要根据自己的判断选择取舍或者绘制 precision-recall 曲线(简称PR曲线)帮助分析。
放一张较为经典理解上述公式的图:
直观上说,我们用上述标准来衡量目标检测的好坏似乎已经够了。然而,目标检测问题中的模型的分类和定位都需要进行评估,每个图像都可能具有不同类别的不同目标,因此,在图像分类问题中所使用的标准度量不能直接应用于目标检测问题。
为了解决这一问题,我们把PR曲线下的面积定义为AP,下面我们用一个更为精准的标准 mAP: mean Average Precision, 即各类别AP的平均值来作为目标检测结果衡量标准。
由前面定义,我们可以知道,要计算mAP必须先绘出各类别PR曲线,计算出AP。而如何采样PR曲线,VOC采用过两种不同方法:
![](/qrcode.jpg)
方法一:在VOC2010以前,只需要选取当Recall >= 0, 0.1, 0.2, ..., 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。
方法二:在VOC2010及以后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,然后计算PR曲线下面积作为AP值。
具体可参考这篇论文:
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/htmldoc/devkit_doc.html#SECTION00044000000000000000
此外,ROC指标与PR曲线颇为类似,其区别见下面的博客:
https://blog.csdn.net/tsq292978891/article/details/82997808