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 1024 parameters (16-bit values) 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 a BSD, open-source license. You can access it at https://github.com/GreenWaves-Technologies/FaceReID