一、前言
最近在做行人检测相关的东西,用到一个指标叫做miss rate versus false positives per-image (FPPI),但是搜了一圈网上发现相关的资料很少,所以自己再梳理一下这个指标相关的知识,也方便后续的人使用这个,如果有不对的地方欢迎指正。
二、miss rate versus false positives per window (FPPW)
在介绍miss rate versus false positives per-image(后文简称FPPI)之前,就不得不先说另一个指标,名字叫
miss rate versus false positives per window(后文简称FPPW) 。
起初呢,大家是使用FPPW作为评价行人检测指标的。这个指标最早出现在文章 Histograms of Oriented Gradients for Human Detection。这篇文章中发表了INRIA行人数据集,评估性能的时候就是用这个FPPW(值得一提的是,HOG+SVM这个经典的行人检测方法也是在这篇文章中提出的)
下面简单介绍下FPPW的检测原理:
在行人检测中,因为我们只关注检测框的情况,所以结果主要可以分为三种情况:
- 若ground truth为【有行人】,detection检测到了该行人,则这个检测结果为 true positive
- 若ground truth为【有行人】,但detection没有检测该行人,则这个行人为 false negative,也就是漏检了
- 若ground truth为【没有行人】,但detection检测结果为有行人,则这个行人为 false positive,也就是检测到了空气、误检
其中,positive = true positive+false negative,即真实行人的数量。
true negative表示【没有行人】且detection检测结果为无行人,但是这个是无意义的,我们不关心这个,所以构建评价指标的时候不需要用到。
(如果你觉得TP、TN这些很容易弄混的话,可以参考下这个记忆方法:【机器学习】TP、TN、FP、FN记忆方法)
FPPW的纵轴是miss rate,横轴是false positives per window,两个坐标轴都是采用对数坐标轴表示:
- miss rate = false negative / positive,即1-recall,即表示所有存在的行人中(positive),漏检的行人(false negative)占了多少
- false positives per window = false positive / the number of window
为什么要用the number of window呢,因为这和HOG+SVM的原理相关,他的检测过程大概是这样的:
- 输入一张待检测的图片
- 首先用滑窗法,选取图片上的某一块区域(后面称这块区域为window)
- 提取这个区域的HOG特征
- 将HOG特征输入SVM中,利用SVM进行分类,判断是否为行人
通过上面的过程我们可以看到,因为SVM仅仅只是作为分类器,所以如果要检测到不同size的行人的话,就需要在滑窗法中用很多不同size的窗口去滑动,每滑动一次,就对应一个window,因此诞生了很多window,每个window都对应一个SVM的预测结果。
对于一张图片来说,我们关注的是SVM是否能够对这些window判断准确,所以用false positive / the number of window,就可以评估SVM在这张图片上的检测性能如何。
那如何得到多个miss rate与fppw值呢?
这和ROC曲线的套路比较类似,即通过调整检测的阈值,来得到一系列的miss rate与fppw。
例如,阈值越高,说明只有置信度越高的检测框才能被认为是检测器的输出,所以输出的实际检测框越少、检测框越准确,检测到空气的可能性越低,这也会导致漏检概率越大(置信度低的true positive变为了false negative),所以此时miss rate增加,fppw减少。反之同理。
上面是只有一个图片时的计算方法,对于多张的图片来说,其实也是类似的。首先先把所有图片的结果都放在一起,按照置信度由高到低排序,然后按照置信度的高