Face recognition has wide applications, from consumer electronics to automotive solutions like driver monitoring (SAE- L3 and above). In this article we talk about how face recognition is done and how advances in artificial intelligence are making face recognition easier for varied applications.
Face Detection- Detecting all the faces in a given image and creating a bounding box around the same
Face Alignment- This is an optional step in face recognition which crops the faces detected in the image with a set of predefined points (for various facial elements)
Face Representation- Discriminative feature vector, which is unique to each individual
Face Matching to Database- Based on discriminative feature vector grouping or collecting all the faces that have same the value (i.e., identical faces)
Some of the challenges in face recognition
Face recognition is recognised as the most challenging research topic in computer vision. From position of the sensor on the device to integrating complex CNN (convolutional neural network) on an embedded platform there are various challenges in developing a face recognition system. Some of the key challenges are listed below:
- Illumination variation (lighting conditions)- Changes in lighting condition should not affect the accuracy of recognition. There are two possible approaches to address this issue, one being collecting images of a single user in varied lighting conditions and the other being using IR sensors (both puts forth the challenge of data collection).
- Pose variation- Changes in head position within the camera’s field of view
- Expression variation-Identifying macro and micro changes in facial expression
- Occlusion- Beards, glasses, change in hairstyle etc.
Algorithms for face recognition can broadly be classified as traditional compute vision and neural network based.
- Non-CNN-based face recognition (Sparse coding and discriminant analysis)
- CNN-based face recognition
Developing a CNN-based approach for face recognition
The CNN based approach is used for face recognition because unlike non-CNN-based approaches it does not require additional efforts for occlusion and lighting conditions. Various steps involved in the recognition process are listed below
- Data collection
- Deep learning model design
- Training and optimization
One first needs a dataset for training purposes. The sample dataset should cover variety of images from different ethnicities, genders, occlusions and expression. Publicly available data or any custom data set with voluntaries will do the trick.
Designing a deep learning module/CNN model
This is the step where one needs to spend time designing a network depending on the end application of the face recognition.
- Architecture design- CNN architecture can be of low complexity or server grade high complexity depending on the end application. For an application like diver monitoring where edge computing is needed a robust, low complexity system is required. For an application like surveillance, server-grade-high-complexity architecture can be designed.
- Depth of the neural network- This determines the level of the network which in turn decides the accuracy of the network. The deeper the network, the more vigorous and thorough the training is, making the network robust for variety of applications.
- Pruning and imaging- This helps in negating unwanted information from the images in the dataset, making it more accurate.
Deep learning training and optimization
Deep learning modules need to be pre- trained on the dataset that was prepared initially. Additionally, developers, can use dataset that is available in public for research purpose (like ImageNet, MS Cocoa, Pascal, etc.). The next step would be batch normalization, which brings in uniform variance that helps in convergence.
Development and work flow tools
There are various opensource tools to accelerate the development of various machine learning frameworks. Some of the tools that available are:
Apart from these tools there are various tools for computation backend work (like CUDA, openBLAS, etc.), data visualisation (like pandas, Tensorboard, Matplotlib, etc.), and statistic workbench (like python).
Some application of face recognition systems
The applications of face recognition range beyond one’s imagination; however, there are quite a few applications in use currently that use advanced CNN models for face recognition.
- Criminal identification
- Security of the assets
- Retail monitoring
- Attendance tracking
- Driver monitoring for accident prevention
Face recognition has numerous applications across domains. Until now, with traditional machine learning techniques, its development was hindered. With a deep learning approach for face recognition, we are on the brink of a new wave of applications for face recognition.