如何使用libfacerec Opencv库获取相似性百分比

3

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

我正在使用OpenCV libfacerec的人脸识别库,它可以给出良好的结果,但我需要估算相似度的百分比。如果我将未知图像作为输入,则仍然会根据上次距离值预测该人是否存在于系统中。

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

我需要定义一些阈值,然后根据该阈值对用户图片进行验证/无效化,检查其与某些百分比或距离值之间的关系。有人知道如何使用libfacerec库来实现这一点吗?因为在这个库中没有公共变量来查看距离或百分比值。否则,我需要在库内编写代码,因为据我所知,它不包含此功能?

2
嗨。我在文档中搜索了一下,但是没有找到一个简单的方法来获取它,除非深入代码挖掘。你可能直接想在Gituh上发布一个问题,项目托管在那里:https://github.com/bytefish/libfacerec/issues。我相信开发人员会很快回复你! - jlengrand
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);

然后,您将在predictedLabel中得到预测的标签,并在confidence中得到此预测的置信度值。

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

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


谢谢 bytefish!它像魔法一样运行。还有一件事,GIT没有更新整个源主干目录。我不得不通过libfacerec库的zip归档文件更新整个主干。还要感谢您的提供,我一定会与您保持联系以进行贡献。 - wolvorinePk
太棒了!我已经准备好更新版本,将在周日上传。如果您能仔细阅读并告诉我哪里需要改进/有什么不清楚的地方,那就太好了。 - bytefish
你好,bytefish先生。我一直在使用最新版本的libfacerec,但是在Python中。是否有办法在Python中使用这个置信度值来进行预测呢?如果能够判断给定的人是否未知,对我的应用程序将会很有帮助。 - Fábio Constantino
Bytefish先生。哈哈哈,不用那么客气!你是指http://github.com/bytefish/facerec吗? - bytefish
好的,bytefish先生:p 我正在使用该软件包中的一个facerec示例 - apps / videofacerec / videofacerec.py来尝试我的人脸识别,但是在那份文档中,我找不到任何关于接受个人识别的阈值的内容(我对此有些新,抱歉)。 - Fábio Constantino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接