3

这可能是一个简单的问题,但我有点困惑,所以希望有人能正确指导我。

我正在使用 openCV libfacerec 的人脸识别库,它给出了很好的结果,但我需要估计相似度的百分比。如果我使用未知图像作为输入,那么它仍然会根据最后的距离值预测该人是否存在于系统中

         if(dist < minDist) {
        minDist = dist;
        minClass = _labels[sampleIdx];
    }

我需要定义一些阈值,然后根据该阈值针对某个百分比或距离值验证/无效用户图片,有没有人知道如何使用 libfacerec 库来做到这一点,因为在这个库中没有公共变量可以查看距离或百分比价值?否则我是否需要在库中为它编写代码,因为据我了解它不包含此功能???

4

1 回答 1

5

请确保您正在使用最新版本!libfacerec 的最新版本允许您获得预测和预测的置信度值。您可以在此处查看方法的签名:

它显示在我随库提供的演示应用程序中,请参阅:

就像调用一样简单:

FaceRecognizer::predict(InputArray src, int &label, double &confidence); 

在计算模型上。因此,在您的应用程序中,您只需编写:

Mat testSample; // of course this is set somewhere in your application
int predictedLabel = -1;
double confidence = 0.0;
model.predict(testSample, predictedLabel, confidence);

然后你有预测标签中的预测标签和这个预测的置信度值。

其次,这可能更适合您的问题,您现在可以设置一个阈值,低于该阈值的输入图像被视为未知。您可以在模型的构造函数中设置阈值,也可以使用 setter/getter 方法:

它也显示在我与库一起提供的演示应用程序中:

于 2012-06-13T17:25:47.140 回答