Face Identification on mW power budget using GAP8
Face Identification has attracted a lot of press relating to uses in security applications. It is, however, an interesting feature in many applications. Identifying the owner of a device versus another person can have many uses in creating user experiences. What if one could add face detection to a product at an extra cost of a few euros and at a power consumption compatible with many years of operation on a battery. GAP8 makes this possible!
GreenWaves has released a full software stack with a demonstration application for our GAPPoC-A vision applications board. The Face Identification algorithm is a combination of a face detector and then a face reidentification engine. The Face Detection algorithm is an implementation of the classical Viola-Jones face detector. Face Reidentification is implemented using a SqueezeNet based Convolutional Neural Network (CNN). This software stack is a perfect demonstration of GAP8’s flexibility in running different algorithms at extremely low power levels.
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