Monday, May 21, 2012

Face Recognition in Computer Vision


Hello everybody,
I am doing a project on Image Assessment and thought of sharing my views on this. I’ll try to explain a part of ComputerVision and Machine Learning. Both of these basically lie under the domain of Artificial Intelligence. The main focus of on-going researches in the field of computer vision revolves around object recognition. An object may be a face, person, other body parts or anything. Here we will talk about FACE RECOGNITION which has much broader practical application than any other object recognition.

Face recognition, essentially, is the process of identifying the person from his/her image with the help of algorithms. Just input the image of any person and the machine will tell his/her identity (given that the image is in database). Face recognition is basically a two-step process :

1.       Face Detection : Given an image, we have to detect the location and size of    face. This is a specific case of generic object detection.
2.       Face Recognition : Once a face is detected, we apply standard algorithms to recognize the identity of the person.

Pre-processing of the image is required sometimes to supplement the algorithms. It includes converting the face into grey-scale and then normalizing it. This is done after the detection phase.

Face Detection Algorithms : Viola-Jones Method is one of the widely used face detection algorithm which has features for face extraction and Haar cascade classifiers. You can read more about this algorithm here.

Face Recognition Algorithms : There are many algorithms available on face recognition. All of them  are statistical and probabilistic models in nature and the USP is the dimension reduction of the data which makes the process to occur in real-time scenario.  Some of them are :

1.       PrincipalComponent Analysis(PCA)/Eigenfaces (A very informative blog on     Eigenfaces can be read here.)

A very high level flow of above mentioned algorithms is described here :

IMAGE -> Face Space -> Feature Space -> Classifiers -> IDENTITY

Image is first detected and mapped to face space. Then by using mathematical model, they are mapped to very low dimensional feature space as compared to face space. Now it is compared to the database entries in same format and the entry having closest match with the image will be our result.


Detailed information on face recognition can be obtained from their homepage.

Since these are pure mathematical models and it doesn’t matter how far you go to make these algorithms better, they still cant match human processing efficiency. Some of the basic constraints of these algorithms are :

1.       Viewing angle – tolerant upto 15 degrees in both directions.
2.       Light sensitivity.
3.       Facial expressions.
4.       Background variation.
5.       Scaling.
6.       Occlusion (object coverance).
7.       Resolution of the image.

Some of these constraints can be removed to some extent by building a proper database. The best practice would be to have around 8-10 images of each individual with varying poses, expressions and light settings in the database. This will have enough support in identifying dynamic conditions.


These algorithms can be implemented using various computer vision libraries such as OpenCV by Intel, VXL, Camellia and Blepo. OpenCV is the commonly used one. It can be downloaded from this link.

I hope this post will prompt you to go deep into the world of Computer Vision. This is just a decade old research work and a lot is remaining to be revealed in this field.