【问题标题】:How to calculate accuracy for facial recognition system?如何计算人脸识别系统的准确率?
【发布时间】:2021-02-20 08:37:05
【问题描述】:

我是生物特征评估的新手,我希望绘制 ROC 曲线、CMC 曲线和 Genuine Vs Imposter Distribution。我根据https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-and-deep-learning/ 在我的数据集上训练了模型。如果我给出一个测试图像,它工作正常。 但是,对于整个测试数据集,我不知道如何根据这种方法获得真实和冒名顶替的分数。

【问题讨论】:

  • 正确识别的总和除以正确和错误识别的总和

标签: python opencv deep-learning biometrics


【解决方案1】:

所有最先进的模型(例如 VGG-Face、FaceNet 或 DeepFace)都在 LFW(Labeled Faces in the Wild)数据集上进行了测试。幸运的是,Scikit learn 将此数据集作为开箱即用的功能提供。

from sklearn.datasets import fetch_lfw_pairs
fetch_lfw_pairs = fetch_lfw_pairs(subset = 'test', color = True, resize = 1)
pairs = fetch_lfw_pairs.pairs
labels = fetch_lfw_pairs.target

现在,您应该使用您的模型测试每一对。

predictions = []
for i in range(0, pairs.shape[0]):
   pair = pairs[i]
   img1 = pair[0]
   img2 = pair[1]
   prediction = verify(img1, img2) #this should return 1 for same person, 0 for different persons.
   predictions.append(prediction)

然后,您应该比较预测和标签。

from sklearn.metrics import accuracy_score
score = accuracy_score(labels, predictions)

此外,您还可以计算一些其他指标

from sklearn.metrics import precision_score, recall_score, f1_score
    
precision = precision_score(actuals, predictions)
recall = recall_score(actuals, predictions)
f1 = f1_score(actuals, predictions)

【讨论】:

  • {AttributeError}'numpy.ndarray' 对象没有属性'target'。至少从 0.24.0
  • lfw_pairs_test.target 将改为工作。
猜你喜欢
  • 2020-06-15
  • 2012-03-18
  • 2018-05-24
  • 2020-10-18
  • 2018-01-04
  • 2020-06-03
  • 2020-03-10
  • 1970-01-01
  • 2016-04-06
相关资源
最近更新 更多