Experiments with Eigenfaces

Testing Recognition with Cropped class images.

1. The various eigenvectors calculated are :

The first one here is the average face and the rest of them are the various eigen vectors.

Plot of number of faces correctly recognised v/s number of eigenfaces used

As we can see that around 19 the result becomes the best, and stays there for sometime, after which the quality deteriorates. The reason for this is probably that, since different eigenvectors capture different features of the face, as the number grows more and more features get incorporated making the definition of a face more and more complete. However, as this number grows large, the more unnecessary and less general features tend to get into the system which are more data-specific. Thus the program can't identify some normal faces which don't have those additional peculiarities. This phenomena looks quite close to the idea of overfitting in a machine learning scenario.

Some errors in matching

was matched to and not to

 

was matched to and not to

was matched to and not to

As one can see that in the first case, the faces do look close, however at least the second example it seems that the code makes a mistake. I looked at the top 10 close resemblances with the incorrect faces. About 1 in 2 incorrect cases have the correct faces in top 3. however in the others they are not even close, which makes me feel that either there is some bug in my code, or we have to really go a long way in recognising faces.

CROPPING AND FINDING FACES

Here's a cropped image of Aseem :

My image :

And see my marked face :

Isn't this a powerful tool :)

Finally for the group photo , I got about 50% success if I was conservative about the qualities of the software and much less if I was not... Here are the results :

For 10 faces : I get 5 correct :

But for 30, I only get only 10 :(