在我的研究中,我观察到许多人脸识别算法提出了它们的模型精度与LFW数据集精度之间的关系。我看到LFW数据集有5749个不同的人的图像,并且没有分割训练和测试。
我已经开发了我自己的DNN模型,用于人脸识别,它类似于facenet架构。有人能帮我回答以下问题吗?
1( 每个人都在谈论LFW上的哪个特定精度参数?我知道准确度参数,如ROC、精密度、召回率和FAR与FRR的关系图。这与这些参数有关吗?
和
2( 计算我的模型LFW精度的程序?【任何开源链接都是可观的】
我看到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 repo中有一个wiki页面,您可以在其中阅读源代码,了解如何绘制ROC曲线并计算
u
和S_E
:https://github.com/davidsandberg/facenet/wiki/Validate-on-LFW
获取ROC曲线和u
和S_E
的程序:
-
我们需要LFW测试部分的
pairs.txt
,它分别包含10组300个匹配和300个不匹配对。所以总共有6000对,其中一半是匹配的,另一半是不匹配的。 -
设置阈值的范围从0到1,例如间隙0.001,这将产生1000个阈值。
-
计算所有对上的距离
d
。对于阈值t
,如果d
<=t
,对被预测为匹配。否则,配对被预测为不匹配。 -
对于每个阈值
t
:-
对于每个匹配的对,
-
如果预测为匹配,则
TP+=1
; -
如果预测为不匹配,则
FN+=1
。
-
-
对于每个不匹配的配对,
-
如果预测为匹配,则
FP+=1
; -
如果预测为不匹配,则
TN+=1
。
-
-
计算
TPR, FPR, Acc
:-
TPR = TP / (TP + FN)
; -
FPR = FP / (FP + TN)
; -
CCD_ 22。
-
-
-
我们得到一个1000长度的列表,如
[(TPR_t1, FPR_t1, Acc_t1), (TPR_t2, FPR_t2, Acc_t2), ...]
。ROC曲线可以通过绘制FPR
s与TPR
s来产生。u
是Acc
s的平均值,而S_E
是Acc
s的标准差。
LFW在scikit learn中已经分为train、test和10_folds。
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个图像项目。您可以在自定义模型中测试这些对,并将预测与目标值进行比较。