face_trigger.model.deep package

Contains the class that performs face-recognition based on Deep Metric Learning.

Submodules

face_trigger.model.deep.FaceRecognizer module

Deep Learning based face recognition module.

class face_trigger.model.deep.FaceRecognizer.FaceRecognizer(dnn_model_path=None, classifier_model_path=None, label_map_path=None)

Trains a face recognition model based on deep metric learning. ‘Original paper <https://arxiv.org/abs/1503.03832>’_

embed(images=None, landmarks=None)

Generates embeddings for the given images. THe images should be a result of the face detector phase, i.e these images should contain a face detected by the face detector.

Parameters:
  • images (list of numpy.nadarray: (num_images, image_height, image_width)) – the images to get embeddings of
  • landmarks (list, shape: (num_images, 5, 2)) – the facial landmarks of the images
Returns:

the face embeddings

Return type:

list

Note: The images contain the entire frame, and not just the cropped out face. Alignmnet is taken care of when we generate the embeddings.

infer(embeddings, threshold=0.2, unknown_index=-1)

Infer and return a predicted face identity.

Parameters:
  • embeddings (list) – 128D face embeddings
  • threshold (float) – probability threshold to accept a prediction result
  • unknown_index (int) – a integer id that denotes an unknown class
Returns:

an identity

Return type:

int

load(classifier_model_path)

Load the saved classifier model.

Parameters:classifier_model_path (string) – path to the trained classifier model
load_label_mapping(label_map_path=None)

Loads the mapping between the real labels and the ones used by sklearn during training.

Parameters:label_map_path (str) – path to the pickled label map
Returns:a dictionary mapping from encoded label to real label
Return type:dict
save(classifier_model_path)

Save the trained classifier. Call only after fitting the embeddings, otherwise will throw an exception.

Parameters:classifier_model_path (string) – path along with name specifiying where to save the model. Extension should be .pkl for brevity.
train()

Train the recognizer on the training set. Not required when working with pre-trained models. TODO: Implement the training mechanism

Module contents