views:

287

answers:

2

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?

A: 

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

Glycerine
I am talking about face recognition not detection.EDIT: thanks anyway.
Maarten
+4  A: 

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, aka 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.

Dima
Like I said I was thinking of making sth like myheritage where you can input a wide range of photos and match it against a large database of examples (which might contain the same person with different expression, pose and lighting) to find the closest match
Maarten
However you made things a lot more clearer for me.
Maarten
No, actually you did not explain what your specific goal was. But it sounds like you want to do retrieval, not classification. So what you really want is to choose a suitable feature representation, and to define a distance measure between two such representations.
Dima