我想使用"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个测量值。(向下滚动到Step2) -哪种方法更好?我在"face recognition“库中找不到这个功能。
发布于 2017-06-21 04:20:27
我正在做一个和你类似的项目。您必须使用库.Choose训练您的图像数据集,以训练一组图像并将其放置在文件夹中。一定要在人名后面贴上标签。现在选择一组不属于训练图像的测试图像(未知图像),并将其保存在文件夹中。
然后,您只需运行命令face_recognition,传入包含已知人员的文件夹和包含未知人员的文件夹(或单个图像),它就会告诉您每个图像中的人是谁:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person对于每个面,输出中都有一行。数据以逗号分隔,其中包含文件名和找到的人员的姓名。
发布于 2020-09-07 16:24:01
如果在deepface中使用dlib,则不必构建for循环来完成此任务。
#!pip install deepface
from deepface import DeepFace
df = DeepFace.find("obama.jpg", db_path = "C:/my_db"
, model_name = 'dlib', detector_backend = 'dlib')
print(df.head())它将在my_db文件夹中查找img1.jpg的身份。
您也可以对图片对进行人脸验证。
from deepface import DeepFace
obj = DeepFace.verify("obama.jpg", "unknown.jpg"
, model_name = 'dlib', detector_backend = 'dlib')
print(obj["verified"])此外,你也可以采用VGG-Face,Google Facenet,OpenFace,Facebook DeepFace,DeepID来代替Dlib。
models = ["VGG-Face", "Facenet", "OpenFace", "DeepFace", "DeepID", "Dlib"]https://stackoverflow.com/questions/44662149
复制相似问题