如何在 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 数据集。)的主要内容,如果未能解决你的问题,请参考以下文章

当第一个数字较小时,模运算如何工作?

Python中负数的模运算

python设计模式之代理模

Python中的模运算符

Python笔记-取模运算%

如何在 JavaScript 中使用模运算符 (%)? [复制]