Project 4 - Eigenfaces

CSE 455 - Computer Vision

Winter 2012


By: Josh Scotland

Results

  1. Recognition
  2. Cropping & Finding Faces
  3. Verifying Faces
  4. Extra Credit

Recognition

In this experiment, all eigenfaces are in the dimension of 25 pixels by 25 pixels. Using the non-smiling faces of the 33 students to compute 10 eigenfaces, we obtain the following results:

Average Face:


10 Eigenfaces (highest eigenvalue on the left):


The following graph shows the results of running the recognizing program with different numbers of eigenfaces:


Questions:

I ran the program on every user with variation of 1-33 eigen faces at granularity of 2. I was impressed that even with one eigenface, 8 faces were correctly matched. The results continue to climb quickly until at 9 eigenfaces with a matching of 23 faces. There was a dip of matched faces with 11 eigenfaces. Interestingly, the results max out to 24 correct matches when the number of eigenfaces reaches 31. The "best" number of faces would be around 9 or 13 because that is the smallest representative size that has the highest accuracy. There is no clear answer.
-->
You can see the goatee and cheeks are what makes the first face match the second. The rank of the corresponding non-smiling image ranks somewhat close at a distance of 3. Thus, the match is reasonable.

--> 
You can see the mouth, nose, and glasses are what makes the first face match the second. The rank of the corresponding non-smiling image ranks at a reasonable distance of 9. Again, the match is reasonable. If the skin color was taken into account, better results would follow.


Cropping Faces & Finding Faces

Scale from 0.45 to 0.55, step 0.01.

As you can see, the highest valued face is the wall. There are too many false positives. However, at least the program did find the two faces if the number of boxes increases. The issue is that the trick of multiplying each potential match's mean squared error by the match's distance from the face mean and dividing by its variance didn't work out so well.

Scale from 0.45 to 0.55, step 0.02.

Turned out well. I had a slightly bigger image before and for some reason it identified a pocket on my shirt as a better face. I think it looked better because of the lighting in the scene. There is a light source from the left side of the image that created a nice facial shadow from my shirt pocket.

Scale from 0.65 to 0.75, step 0.02.

Turned out well again. If the scale is higher, then parts of the wall get identified. This can be resolved by manipulating the MSE some more.

Scale from 0.75 to 0.85, step 0.2.

Not too accurate, but then again, there is a lot of noise in the image. The cool thing is that some of the phantom faces are correctly identified. However, many clear (to us humans) faces are being missed.

Verifying Faces

Questions:

I tried values between 10000 and 150000. I searched by plotting the results and narrowed down which one was best (essentially a binary search). I'm not going to lie -- this was really tedious even with scripting.
The best threshold was around 50000. The false negative rate was 10/33 and the false positive rate was 13/33.

Extra Credit

(neutral_10 --> neutral_1)