前言

使用FDDB数据库评估人脸检测的效果时,需要计算人脸区域的得分,具体问题请参考FDDB-FAQ

实现过程

根据herehere的描述,可以使用cascade.detectMultiScale函数中的参数来表示,但是也有问题。一种是前者,得到的候选区域过多,基本不能使用;一种是后者,通过更改opencv库的源程序文件cascadedetect.cpp,但是试过之后并没有什么作用。

For each resulting detection, levelWeights will then contain the certainty of classification at the final stage. This value can then be used to separate strong from weaker classifications.

To make this change, in OpenCV-2.4.5, find the file modules/objdetect/src/cascadedetect.cpp (line 182)

// modules/objdetect/src/cascadedetect.cpp (line 200)
// int n1 = levelWeights ? rejectLevels[i] : rweights[i]; //< comment out this line
int n1 = rweights[i]; //< the change

最后,根据人脸检测的函数定义、以及各个参数的意义,结合IOU等,较好地确定了人脸区域的得分。

参考

1.opencv-detectmultiscale-output-detection-score

2.opencv输出人脸检测得分

3.fddb-FAQ

4.stackoverflow解释

05-08 08:12