English | 한국어
Recognizes faces and trains models, brings in the pictures and provides identification predictions and face classification. It also performs semi-supervised learning.
- Recognize faces.
- Train the model through semi-supervised learning with labeled or unlabeled pictures.
- Predicts if the face belongs to someone it knows and whose face it is.
- Python 3.9+
- Versions below 3.9 have not been tested, and pickle module must be installed via pip.
- dilb
First, you need to install dilb. You can install it by following the instructions on the here.
Then, you can install VisageSnap by using pip:
pip install visagesnap
Assign a label to the face
You should assign a NameLabel to the face you want to classify first.
vs = VisageSnap.Core()
people = ['Tom', 'Jerry']
# ['NameLabel1', 'NameLabel2', 'NameLabel3'...]
vs.set_label(people)
You can also do it like this so that assign a NameLabel and NumberLabel: (NumberLabel MUST NOT BE -1)
people = {
# 'NameLabel': NumberLabel
'Tom': 0,
'Jerry': 1
}
Put the picture files to be used during training in the directory. In this case, the file name follows the following rules:
(NameLabel)-(Any character).extension
Tom-123.png
Tom-124.jpg
Tom-126.jpeg
Jerry-2.png
Jerry-3.png
Jerry-4.png
Recognize faces and train the model
Before training, you need to load model. You don't have a model? It's okay. It'll be created automatically if it doesn't exist.
vs.load_model()
Train with the picture files in the directory.
vs.train_labeled_data()
If you want to train with unlabeled data, you can also try to like this:
vs.train_unlabeled_data()
Identification predictions
Put the picture files you want to predict into the directory.
result = vs.predict_all()
print(result)
{
"target1.png": "Tom",
"target2.jpeg": "Jerry",
"target3.jpeg": ["Tom", "Jerry"], # multiple faces in one picture
"target4.jpeg": None # If the face is unknown
}
Full example
You can see the full code here.
To change the directory you work with
You should put the picture files into configured directory, and also model file is stored in model directory.
from VisageSnap import Directory
my_dir = Directory( "labeled_pic",
"unlabeled_pic",
"my_model.d",
"predict_dir")
vs.set_directory(my_dir)
Default Directory:
{
"labeled": "labeled",
"unlabeled": "unlabeled",
"model": "model"
}
To get the face information
You can get the faceObject by using get_faceObject
method. The faceObject is a dataclass that contains the face information.
from visagesnap import From
# From.LABEL, From.FILENAME
face_tom = vs.get_faceObject(From.LABEL, "Tom")
face_tom = vs.get_faceObject(From.FILENAME, "Tom-123.png")
# face_tom = Face(label, encodings, filenames)
name: str = face_tom.label
encodings: NDArray = face_tom.encodings
filenames: list = face_tom.filenames
To change prediction threshold
vs.threshold = 0.5 # Default: 0.48