I made a python library on implementing face recognition. In this project I explored 3 different face detection methods
which are Eigenfaces, Fisherfaces and Local Binary Patterns Histograms(LBPH). For more information about the differences
between the three algprithms, check out this pageFace Recognition with OpenCV.
Luckily, OpenCV comes with many image processing methods and the three algorithms are also included so I can use them
directly.
The project cotains three parts
1. Collecting face data
2. Training the algorithm
3. Performing the face recognition
Below is a diagram showing how the three parts are connected
Collecting face data: In my project the face data can be either collected from a live video stream or from a dataset
folder containing a proper number of the person’s frontal face images. In this process, face detection with Harr Cascade
on fontal face classifier is conducted to select the ROI(region of interest) and them cropped and resized to the ideal
size for the next model training process.
Training the Algorithm: First, we need to train the model. To do so, we need to use a dataset with the facial images of
the people we want to recognize. We need to also set an Id (it may be a number or the name of the person) for each
image, so the algorithm will use this information to recognize an input image and give you an output. Images of the same
person must have the same ID.
Performing the face recognition: In this step, the algorithm is already trained. For example, in LBPH method, a
histogram is used to represent each image from the training dataset. So, given an input image, we perform the steps
again for this new image and creates a histogram which represents the image. So to find the image that matches the input
image, we just need to compare two histograms and return the image with the closest histogram.
Links:
github page