First, the application looks for a face in the image using the Face Detection algorithm. Until a face is detected the Face Reidenfication Network is not run. Face Detection can be triggered by an external signal such as a Passive Infrared Sensor (PIR) to further reduce power consumption when no face is present. Once a face is detected the Face Detection algorithm outputs the coordinates of the detected face in the image. This area of the image is extracted and scaled to a 128 x 128-pixel image. This extracted portion of the image is provided as input to the Face Reidentification CNN. The output of the CNN is 512 parameters (16-bit size) signature of the detected face.
Signature of a face to be recognised is stored in the database. Presenting another image of the same person to the Face Reidentification network will result in a set of parameters that are closely related to the stored signature. So to ‘learn’ a face one or more images are taken and the sets of resulting parameters stored into the database. Once a face is learned the values in output by the Face Reidentification CNN are compared with the database and if close a match is made.
The input image is taken at Quarter VGA (QVGA) resolution (320 x 240 pixels). The Face Detection algorithm consumes around 1 mW per frame per second and frame rate of 10 frames per second consumes 1/7th fraction of GAP8’s compute power.
In its best power performance Face Reidentification CNN consumes 22mW per frame per second. This is only run when a face is detected and takes approximately 400mSec to evaluate. The CNN evaluated on the Labelled Faces in the Wild dataset (LFW) reaches 96% accuracy.
At these power levels, face identification can be integrated into a wide range of different devices with a very small effect on their battery life.
GreenWaves has released the full face identification stack including the training scripts and the GAP AutoTiler model under Apache 2.0 license. You can access it at https://github.com/GreenWaves-Technologies/FaceReID