如何在 python 中使用 Skylearn 模块进行人脸识别,使用 AT&T 数据库(fetch_olivetti_faces 数据集。)
Posted
技术标签:
【中文标题】如何在 python 中使用 Skylearn 模块进行人脸识别,使用 AT&T 数据库(fetch_olivetti_faces 数据集。)【英文标题】:How can I use skylearn module in python for face recognition using AT & T database(fetch_olivetti_faces data sets.) 【发布时间】:2017-03-11 07:29:08 【问题描述】:我想对使用 SVM 和 LDA 的人脸识别性能进行基准测试。你能告诉我如何实现它吗
【问题讨论】:
【参考方案1】:我想 LDA 是指潜在狄利克雷分配,如果您是指线性判别分析,则可以简单地使用 sklearn.discriminant_analysis.LinearDiscriminantAnalysis 作为分类器并比较准确度或精度以及召回率等。
在将主题表示提供给 SVM 之前,您应该使用潜在狄利克雷分配作为转换器。例如下面的代码就是这样做的(你当然可以使用管道和交叉验证,但这只是一个例子)。
import numpy as np
from sklearn.datasets import fetch_olivetti_faces
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.linear_svm import LinearSVC
# get the dataset
faces = fetch_olivetti_faces()
X = (faces.data*255).astype(int)
y = faces.target
# create a test set and a training set
idx = np.arange(len(X))
np.random.shuffle(idx)
train = idx[:2*len(X)/3]
test = idx[2*len(X)/3:]
# create the models
lda = LatentDirichletAllocation(n_topics=10)
svm = LinearSVC(C=10)
# evaluate everything
lda.fit(X[train])
T = lda.transform(X)
print svm.fit(T[train], y[train]).score(T[test], y[test])
LDA 并不是特别well suited for classification,因此已经开发了很多变体。我们开发了一种这样的分类监督变体,我们在今年的 ACM Multimedia 上进行了展示。您可以阅读我们的论文Fast Supervised LDA 并从http://ldapluplus.com/ 获取代码和文档。终于可以看到example of using Olivetti Faces with LDA++了。
【讨论】:
以上是关于如何在 python 中使用 Skylearn 模块进行人脸识别,使用 AT&T 数据库(fetch_olivetti_faces 数据集。)的主要内容,如果未能解决你的问题,请参考以下文章