Question

I have looked a little bit into face recognition recently. However I am overwelmed by the number of algorithm that there are.

PCA, LDA, IDA, Gabor Wavelets, AAM ...

Say you wanted to make something like this... Which algorithms would you use or which papers would you read?

Was it helpful?

Solution

I think the first thing you should do is realize that the algorithms you've listed are used at different stages of face recognition.

First, you need to decide on the representation, i. e. the features to use. These could be raw pixels, Gabor filters, some kind of shape descriptors, deformable models, etc.

Then, you typically want to reduce the dimensionality of your features. This is where algorithms like PCA, ICA, or LDA come in, which project data points into a lower dimensional space trying to preserve most of the variance (PCA) or to ensure the optimal separation of points of different categories (LDA).

Then you probably want to train a classifier on your features to distinguish between the faces of different people. There is a plethora of algorithms to choose from here, such as the Nearest Neighbor, Support Vector Machines, Hidden Markov Models, Bayes Nets, etc.

Note that the choice of an algorithm for a particular stage may or may not depend on the algorithms for other stages. For instances, PCA can be used to reduce dimensionality of almost any type of features. On the other hand, it is not immediately obvious how one can use a support vector machine classifier for faces represented by a deformable mesh.

I guess the first thing you should try to do is to define your problem very precisely. Do you want to distinguish between faces of only a few people, such as recognize your family members in photos? Do you want to recognize people from a huge database? Do you have lots of training images for each face, or only a few? Do you want to handle different orientations and lighting conditions?

The answers to these questions determine how complicated your problem is, and will certainly affect your choice of algorithms.

EDIT: Here's a thesis of somebody who tried solving a similar problem. It is from 2002, but IMHO it is a good place to start.

OTHER TIPS

You want to consider depth maps. That is state of the art. Try to read about sparse spherical representations. Eigen faces is just not very robust. Its not invariant to several factors. State of the art face recognition is using 3d PCL which has depth information. This would allow you to recognize even in the dark. You could use an Asus camera or a Kinect camera to collect depth info. Hope that helps!

Haar cascade running on a Marilena Port.

A Haar cascade is an algorithm which reads a file and tells the computer what something looks like. I've used it in the past to detect faces, glasses, just a smile, hands and a coke can.

http://en.wikipedia.org/wiki/Haar-like_features

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top