【发布时间】:2019-09-26 06:19:31
【问题描述】:
我正在开发人脸识别系统,但在检测未知人脸时遇到了问题。 问题是系统总是从数据库中为未知人脸返回最近匹配的人脸。
我使用了three algorithms(EIGEN, FISHER & LBPH) 的组合来获得更好的人脸识别准确性。
对于数据库中已经存在的人脸,它给出了 80-90% 的准确率,但对于数据库中不存在的未知人脸,它总是从数据库中返回最佳匹配人脸。
eigenFaceRecognizer = new EigenFaceRecognizer(4,5000);
FisheigenFaceRecognizer = new FisherFaceRecognizer(4, 5000);
LBPeigenFaceRecognizer = new LBPHFaceRecognizer(4, 8, 8, 8, 5000)
var result = eigenFaceRecognizer.Predict(_grayFrame);
var resultFish = FisheigenFaceRecognizer.Predict(_grayFrame);
var LBPresult = LBPeigenFaceRecognizer.Predict(_grayFrame);
if (result.Label != -1 && resultFish.Label != -1 && LBPresult.Label != -1)
{
if ( result.Label == resultFish.Label == LBPresult.Label)
{
return Label;
}
}
else
{
return "Unknown"
}
【问题讨论】:
-
请贴出相关代码
-
你说即使是不知名的人也会从数据库中返回匹配,这是因为面部识别软件只是给你最接近的相似之处,它留下了已知和由您自己决定,您应该选择一个 % 置信度,低于该值您的代码会将人脸视为未知。
-
@Frontear 我没有在 c# 中获得置信度值...我只在预测方法中获得标签和距离值。
-
@Frontear 你能告诉我如何使用这两个参数(标签和距离)来检测未知人吗?
标签: c# opencv emgucv face-recognition