在我的研究中,我观察到许多人脸识别算法都提出了LFW数据集精度的模型精度。我看到LFW数据集包含5749个不同的人的图像,并且没有训练和测试的分离。
我已经开发了自己的DNN模型,该模型用于人脸识别,类似于facenet体系结构。有人可以帮助解决以下问题吗?
1)每个人都在谈论LFW的哪个特定精度参数?我知道精度参数,例如ROC,精度,召回率以及FAR与FRR图。与这些参数有关吗?
和
2)计算我的模型的LFW精度的过程? [任何开源链接都是可观的]
答案 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精度的过程?
两个有用的链接:
FPR, TPR
和TP, FN, TP, TN
的定义:https://en.wikipedia.org/wiki/Confusion_matrix
Facenet github存储库中有一个Wiki页面,您可以在其中阅读源代码以了解如何绘制ROC曲线并计算u
和S_E
:{{3} }
获取ROC曲线以及u
和S_E
的过程:
我们需要LFW的测试部分中的pairs.txt
,该部分包含10组300对匹配和300对不匹配的对。因此,总共有6,000对,其中一半是匹配的,另一半是不匹配的。
设置阈值范围从0到1,例如,间隔0.001,产生1,000个阈值。
计算所有对上的距离d
。对于阈值t
,如果d
<= t
,则预测对匹配。否则,将预测为不匹配。
对于每个阈值t
:
对于每个匹配对,
如果预测为匹配,则TP+=1
;
如果预测为不匹配,请FN+=1
。
对于每个不匹配的对,
如果预测为匹配,则FP+=1
;
如果预测为不匹配,请TN+=1
。
计算TPR, FPR, Acc
:
TPR = TP / (TP + FN)
;
FPR = FP / (FP + TN)
;
Acc = (TP + TN) / (TP + FN + FP + TN)
。
我们得到一个长度为1000的列表,如[(TPR_t1, FPR_t1, Acc_t1), (TPR_t2, FPR_t2, Acc_t2), ...]
。可以通过针对FPR
绘制TPR
来生成ROC曲线。 u
是Acc
s的平均值,而S_E
是Acc
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个图像项。您可以在自定义模型中测试这些对,然后将预测值与目标值进行比较。