Есть библиотека face_recognition. При загрузки фотографий с лицами, она возвращает кодировку лица (128 цифр, массив, матрица) и затем по ним может эти лица узнавать.
Вопрос:
How do I save face encodings to a file?
Приведён такой код для сохранения в файл:
import face_recognition
import pickle
all_face_encodings = {}
img1 = face_recognition.load_image_file("obama.jpg")
all_face_encodings["obama"] = face_recognition.face_encodings(img1)[0]
img2 = face_recognition.load_image_file("biden.jpg")
all_face_encodings["biden"] = face_recognition.face_encodings(img2)[0]
# ... etc ...
with open('dataset_faces.dat', 'wb') as f:
pickle.dump(all_face_encodings, f)
И такой, для загрузки из файла и для дальнейшего использования:
import face_recognition
import pickle
import numpy as np
# Load face encodings
with open('dataset_faces.dat', 'rb') as f:
all_face_encodings = pickle.load(f)
# Grab the list of names and the list of encodings
face_names = list(all_face_encodings.keys())
face_encodings = np.array(list(all_face_encodings.values()))
# Try comparing an unknown image
unknown_image = face_recognition.load_image_file("obama_small.jpg")
unknown_face = face_recognition.face_encodings(unknown_image)
result = face_recognition.compare_faces(face_encodings, unknown_face)
# Print the result as a list of names with True/False
names_with_result = list(zip(face_names, result))
print(names_with_result)
Если планируется добавлять очень много лиц, лучше разбить dataset на несколько файлов? Правильно ли я понимаю, что чем больше лиц, тем больше расход оперативной памяти? Какое макс. число в одном файле желательно хранить?