Eigenfaces Experiments

Antoine McNamara
5/6/2002


Experiment #1

antoinePlot.gif

The plot shown above graphs the number of correctly identified faces with the number of principle components used in the recognition. In addition, I've included data for how many faces were near the top of their recognition lists.

With few eigenvectors, the system had difficulty matching the faces, but this quickly was overcome. WIth only 5 components, 2/3 of the matches were in the top 5 of their recognition lists. The number of strict correct matches steadily increases as we increase the number of eigenvectors used, as one might expect.

There were 4 sets that never got close, regardless of number of components:

gau
downeyNosmile.jpg downeySmile.jpg

hile
hileNosmile.jpg hileSmile.jpg

lane
laneNosmile.jpg laneSmile.jpg

treuille
treuilleNosmile.jpg treuilleSmile.jpg

Clearly, the teeth has something to do with it...

One other interesting thing to look at is images that were close, but consistently ranked lower than another image. For example, hasselrot smiling was consistently matched to eckart's base image instead of its own:

hasselrotSmile.jpg eckartNosmile.jpg hasselrotNosmile.jpg

Similarly, richardson was consistently mistaken for shon:

richardsonSmile.jpg shonNosmile.jpg richardsonNosmile.jpg

These mistakes all seem forgivable.

Experiment #2

In this experiment, I wasn't quite so lucky. My code ran great on the group image (only bothered running it at a single scale, 1.0):

groupBigOut.jpg

In order to penalize low texture regions and other regions that fall in the space far from the faces, I used the suggestion to multiply by the magnitude of the coefficient vector and to divide by the variance of the overall image. Without this, the above image found the white regions of the blackboard before it found the faces. Unfortunately, on Aseem's image, it still ranked a low texture region best, and only finds the face as the second best match:

aseemOut.jpg

I don't know how to explain this... I was able to get a correct match in this image by instead dividing by the variance SQUARED, but that error function broke the previous result (the group picture), so I got rid of it.

I tried it on two images with multiple faces, both of family members of mine. The results came out about 50/50. I was hoping for more, but I'm not sure if that was realistic. The first image was looking for 5 faces, using scales .5 to .75, with a step of .05:

familyOut.jpg

And this last image was looking for 4 faces, using scales .62 to .82 with a step of 0.02:

family2out.jpg