Vision Project 3: Eigenfaces

Erik Andersen




Testing recognition with cropped class images

The Eigenfaces

Average Face:

Eigenfaces:

Recognition Graph

Questions

1. It seems like the more Eigenfaces that are used, the better. However, using more Eigenfaces also takes more resources (takes longer, uses more memory, etc). Using many, many Eigenfaces may be unreasonable. Additionally, after a certain point, the addition of more Eigenfaces only helps a small amount; therefore, there is probably an optimal amount of Eigenfaces to use, depending on the application.

2. The Eigenfaces matcher had a hard time with some pairs of faces. Here are a few examples.

Picture:
Real match:
Program thought it was

The two correctly matching faces are pretty different from one another, so that might have made them hard to recognize. The face that the program matched the face to was not that different. The correct entry usually did show up further down the list, in 3rd place.

Picture:
Real match:
Program thought it was

I'm not really sure why this one didn't work. Maybe they are long-lost cousins. The correct match generally came in 2nd place.




Cropping and finding faces

In some cases I just used the MSE between the test face and the projected face, and in some cases I tried using the MSE times the distance of the test face from the average face divided by the variance of the test face.

I found that using scales of 0.45 to 0.55 with step 0.1 worked well. If the image size changed, then, of course, the scales would need to change, but most of the images I considered were within this range.







(Scales: 0.45 - 0.55, step 0.01. Using just MSE.)





(Scales: 0.45 - 0.55, step 0.01. Using MSE*dist/variance.)

Now I tried pictures from my own collection. These images are all noisier, and have totally different lighting conditions. They also all have interesting backgrounds. These factors combined to make them harder to parse.

Myself:





(Scales: 0.45 - 0.55, step 0.01. Using just MSE.)

Group:





(Scales: 0.45 - 0.55, step 0.01. Using just MSE.)
There were some false positives here, mostly on my friend's shirt. It missed my face completely (as well as his), maybe because my face is rather flushed and probably looks different from what it normally looks like. In Eigenspace, the elaborate garment might look surprisingly like a face.

Bad Errors

However, when I used MSE*dist/variance, I got bad false positives (even worse than before):


(Scales: 0.45 - 0.55, step 0.01. Using MSE*dist/variance.)

So, in some cases, just the simple MSE works better.



(Scales: 0.45 - 0.55, step 0.01. Using MSE*dist/variance.)

This totally did not work, possibly due to bad lighting conditions, and the fact that we are wearing facepaint.