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".