【发布时间】:2017-11-23 12:49:28
【问题描述】:
我想使用 "Face Recognition" 库来识别新面孔。我有一个 100k 用户的数据集,每个用户有 3-5 张图像。我不太明白如何使用这个库。
有这个方法:
import face_recognition
known_image = face_recognition.load_image_file("obama.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
obama_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([obama_encoding], unknown_encoding)
if results[0] == True:
print("It's a picture of Obama!")
else:
print("It's not a picture of Obama!")
我是否必须遍历所有图像(100k 个用户*5 个图像)才能“识别”未知图像中的人?还是我将每个图像的所有face_encodings() 保存在数据库中,然后使用新图像的face_encoding 在数据库中进行搜索?如果是这样,这种方法不会受益于我的数据集有 5 张同一个人的不同图像这一事实吗?
这个库来自@ageitgey,他在article 中描述了另一种使用 OpenFace 和 dlib 的方法,其中 CNN 从该人的 5 张图像组合中计算出 128 个测量值。 (向下滚动到第 2 步) - 哪种方法更好?我在“face recognition”库中找不到这个功能。
【问题讨论】:
-
根据示例,这似乎是一个非常缩减或设计不良的库。不确定是否可以将缺少的步骤添加到此管道(不检查所有对;例如,使用 SVM 分类)。 Openface 可能对此更加开放,并且还应该有一个基于 SVM 的分类示例(并且在度量空间中人脸 -> 点的一般方法具有一些优势)。
标签: python machine-learning face-recognition