如何计算人脸识别模型的LFW精度?

时间:2020-03-03 10:17:29

标签: machine-learning computer-vision data-science face-recognition

在我的研究中,我观察到许多人脸识别算法都提出了LFW数据集精度的模型精度。我看到LFW数据集包含5749个不同的人的图像,并且没有训练和测试的分离。

我已经开发了自己的DNN模型,该模型用于人脸识别,类似于facenet体系结构。有人可以帮助解决以下问题吗?

1)每个人都在谈论LFW的哪个特定精度参数?我知道精度参数,例如ROC,精度,召回率以及FAR与FRR图。与这些参数有关吗?

2)计算我的模型的LFW精度的过程? [任何开源链接都是可观的]

2 个答案:

答案 0 :(得分:1)

我看到LFW数据集包含5749个不同的人的图像,并且没有培训和测试的分离。

实际上,LFW为火车和测试提供拆分。 http://vis-www.cs.umass.edu/lfw/#views中的详细信息。

每个人都在谈论LFW的哪个特定精度参数?我知道精度参数,例如ROC,精度,召回率以及FAR与FRR图。与这些参数有关吗?

LFW采用ROC曲线(图中),平均分类精度u和平均值S_E(表)的标准误差。 LFW使用的ROC曲线是用FPR(假阳性率)和TPR(真阳性率)绘制的。

计算我的模型的LFW精度的过程?

两个有用的链接:

  1. FPR, TPRTP, FN, TP, TN的定义:https://en.wikipedia.org/wiki/Confusion_matrix

  2. Facenet github存储库中有一个Wiki页面,您可以在其中阅读源代码以了解如何绘制ROC曲线并计算uS_E:{{3} }

获取ROC曲线以及uS_E的过程:

  1. 我们需要LFW的测试部分中的pairs.txt,该部分包含10组300对匹配和300对不匹配的对。因此,总共有6,000对,其中一半是匹配的,另一半是不匹配的。

  2. 设置阈值范围从0到1,例如,间隔0.001,产生1,000个阈值。

  3. 计算所有对上的距离d。对于阈值t,如果d <= t,则预测对匹配。否则,将预测为不匹配。

  4. 对于每个阈值t

    1. 对于每个匹配对,

      1. 如果预测为匹配,则TP+=1;

      2. 如果预测为不匹配,请FN+=1

    2. 对于每个不匹配的对,

      1. 如果预测为匹配,则FP+=1;

      2. 如果预测为不匹配,请TN+=1

    3. 计算TPR, FPR, Acc

      1. TPR = TP / (TP + FN);

      2. FPR = FP / (FP + TN);

      3. Acc = (TP + TN) / (TP + FN + FP + TN)

  5. 我们得到一个长度为1000的列表,如[(TPR_t1, FPR_t1, Acc_t1), (TPR_t2, FPR_t2, Acc_t2), ...]。可以通过针对FPR绘制TPR来生成ROC曲线。 uAcc s的平均值,而S_EAcc s的标准偏差。

答案 1 :(得分:0)

LFW已在scikit-learn中分为训练,测试和10倍。

from sklearn.datasets import fetch_lfw_pairs
lfw_pairs_test = fetch_lfw_pairs(subset = 'test')
pairs = lfw_pairs_test.pairs
target = fetch_lfw_pairs.target

对存储2个图像项。您可以在自定义模型中测试这些对,然后将预测值与目标值进行比较。