Eigenfaces在python中用于人脸识别的问题

时间:2020-04-19 17:09:03

标签: python scikit-learn pca face-recognition

我正在尝试使用numpy和scikit learning为PCA实现python中人脸识别的特征脸算法,然后计算PCA生成的展开矩阵之间的欧式距离。

问题是我在同一个人的面孔之间和不同的人之间的距离都不很近:

import numpy as np
from sklearn.decomposition import PCA
from PIL import Image

person1_1 = Image.open('person1/1.jpg').convert('LA')
person1_2 = Image.open('person1/2.jpg').convert('LA')

person2_1 = Image.open('person2/1.jpg').convert('LA')
person2_2 = Image.open('person2/2.jpg').convert('LA')


person1_1 = np.asarray(person1_1)[:,:,0]
person1_2 = np.asarray(person1_2)[:,:,0]

person2_1 = np.asarray(person2_1)[:,:,0]
person2_2 = np.asarray(person2_2)[:,:,0]


pca = PCA(n_components=100)

person1_1_pca = pca.fit_transform(person1_1)
person1_2_pca = pca.fit_transform(person1_2)

person2_1_pca = pca.fit_transform(person2_1)
person2_1_pca = pca.fit_transform(person2_2)

print("Same person: {}".format(np.linalg.norm(np.ravel(person1_1_pca)-np.ravel(person1_2_pca))))
print("Different person: {}".format(np.linalg.norm(np.ravel(person1_1_pca)-np.ravel(person2_1_pca))))

代码产生:

Same person: 9293.360941013
Different person: 10218.849581657663

有时候我对同一个人的距离要比不同人的距离大。

问题出在哪里

0 个答案:

没有答案