Jeff West
CSEP 576 Project 4
Winter 2005

Testing recognition with cropped class images

I used the cropped, non-smiling students to compute the following average face:


and the following 10 eigenfaces:



I used this set of images to create a userbase. With 10 eigenfaces my program recognized 20 of the 32 smiling students. Here is a complete plot of the number of smiling students that are recognized compared to the number of eigenfaces:

In my plot there doesn't appear to be any clear answer to how many eigenfaces to use. No more faces are recognized with 32 eigenfaces than with 9. It is clear that 1-7 eigenfaces is not enough. For applications where it must recognize correctly more than 32 eigenfaces should be used. For applications where 20/32 is "close enough" as few as 10 or 15 eigenfaces is probably enough to safely get that ratio.

My program recognized s27 as 29:

Notice that these faces do look somewhat similar. Non-smiling face 27 was fairly high on the list of matches to s27, at 5th place.

and s23 as 14:

These faces also look somewhat similar. Non-smiling face 23 was second on the list of matches to s23, so it was very close!

Cropping and finding faces

I used my program to crop the picture of George W. Bush using .25, .55, .01 for the scale values. The same face was found when marked and when cropped:

The result looks pretty good, although it got a little bit more than just the face.

I attempted to crop the following picture of myself using .05, .35, .05 for the scale values:

and got the following results:

Again, the cropping seems to identify the face but captures a little bit more than just the face in the result.

When I attempted to identify the 4 faces in IMG_8270.tga using .45, .55, .01 for the scale values I got the following result:

I wasn't thrilled with this result. I have read over my code numerous times to try to get a feel for why it might be producing results like this, and I can't find anything at all. I am sure that I just missed some minor detail somewhere or accidentally messed up a loop bound or something, but I cannot find the thing that is causing this.

I also got a disappointing result when I tried to find the faces in a group photo of Bush using .25, .55, .01 for the scale values:

Again, I am not really sure why the results turn out as they do in this photo. I feel that I have the exact right idea in my code, but some minor detail appears to be off.

Extra Credit

I implemented the extra credit method "verifyFace".