Running-Photo-Search / face_recognition.py
AnnasBlackHat's picture
semi final
5d3f355
raw
history blame contribute delete
935 Bytes
from facenet_pytorch import InceptionResnetV1, MTCNN as FACE_DETECTOR
import torch
import numpy as np
device = 'cuda:0' if torch.cuda.is_available() else 'cpu'
print('running device: ', device)
class FacenetPytorch:
def __init__(self):
self.face_detector = FACE_DETECTOR(keep_all=True, device=device, margin=20, thresholds=[0.6, 0.9, 0.9])
self.resnet = InceptionResnetV1(pretrained='vggface2').eval()
def get_embedding(self, image):
faces = self.extract_faces(image)
assert len(faces) == 1, f"total face should be 1, instead of {len(faces)}"
return np.squeeze(self.resnet(faces[0]).detach().numpy())
def extract_faces(self, image):
result = []
faces = self.face_detector(image)
if faces is not None:
print('total face: ', len(faces))
for face in faces:
result.append(face.unsqueeze(0))
return result