这可能是一个简单的问题,但我有点困惑,所以希望有人指导我.
我正在使用openCV libfacerec的人脸识别库,它给出了很好的结果,但我需要估计相似性的百分比.如果我使用未知图像作为输入,那么它仍然根据最后距离值预测好像该人存在于系统中
if(dist < minDist) {
minDist = dist;
minClass = _labels[sampleIdx];
}
我需要定义一些阈值,然后根据该阈值对某个百分比或距离值验证/无效用户图片,是否有人知道如何使用libfacerec库执行此操作,因为在此库中没有公共变量来查看距离或百分比值?否则我需要在库内为它编码,因为据我所知,它不包含此功能???
解决方法:
请确保您正在处理最新版本! libfacerec的最新版本允许您获得预测的预测值和置信度值.您可以在此处查看方法的签名:
> https://github.com/bytefish/libfacerec/blob/master/include/facerec.hpp
它显示在我随库提供的演示应用程序中,请参阅:
> https://github.com/bytefish/libfacerec/blob/master/samples/facerec_demo.cpp
它就像调用一样简单:
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);
然后,您在predictLabel中具有预测标签,并且该置信度的置信度值.
其次,这可能更符合您的问题,您现在可以设置一个阈值,低于该阈值时输入图像被视为未知.您可以在模型的构造函数中设置阈值,也可以使用setter / getter方法设置阈值:
> https://github.com/bytefish/libfacerec/blob/master/include/facerec.hpp(参见createEigenFaceRecognizer,createFisherFaceRecognizer,createLBPHFaceRecognizer)
它也随附在库中的演示应用程序中显示:
> https://github.com/bytefish/libfacerec/blob/master/samples/facerec_demo.cpp