Brad Goring
CSE 455
Project 4: Eigenfaces for Recognition

Testing recognition

Cropping

Verify Face

Testing recognition with cropped class images

Eigenfaces:  Average face first, and then the 10 eigenfaces calculated from cropped, non-smiling students.


Results of using eigenfaces  computed from non-smiling students to try and recognize smiling ones.

Y-axis = number of faces recognized

X-axis = number of eigenfaces used

Clearly, it appears that the more eigenfaces that are used to recognize faces, the better the performance.
This makes sense, as you should be able to get a better average face with more eigenfaces, which is more
representative of what constitutes a "face."

It is interesting to note that face 24 repeatedly got misclassified with lower eigenface values.

Image 24:


Two images that were a best match to Image 24 on different runs of the experiment:

Image 15:

Image 02:


Image 02 makes sense as a misclassification, since the two have similar looking eyes.  Image 15 is a
little puzzling, but it may be that the nose helps give it a good match towards Image 24.

Cropping and finding faces

Cropping Elf:

Original Image:

Cropped Image:

Min_Scale: .45
Max_Scale: .55
Step_Size: .01

Cropping Obama:

Original Image:

Cropped Image:

Min_Scale: .15
Max_Scale: .25
Step_Size: .01

I will note that most of the time I could run the crop function once and get good results,
by following the general rule of thumb that the large the face appeared in the original
image, the smaller the scale range should be (and the opposite is true too).  This makes
sense, as a better face match will be found if your face that you project to face space is
similar in size to the faces used to compute eigenfaces

Nonsmiling image find results:

Min_Scale: .45
Max_Scale: .55
Step_Size: .01

Smiling image find results:

Min_Scale: .45
Max_Scale: .55
Step_Size: .01

Classroom image find results:

Min_Scale: 1.2
Max_Scale: 1.3
Step_Size: .01

Web image find results:

Min_Scale: 1.3
Max_Scale: 1.3
Step_Size: .01

While the first two images for face finding do well, the next two don't fare as well.  However, the images with more errors
do still pick up a decent number of faces, so the results are as to be expected.  In trying to find more faces, more noise
is going to be introduced, and the chance that non-face images can sneak into the top of the list of potential faces goes up.
Again, note that a higher scale was used to find faces in the latter two images.  This is because the faces were smaller in these images.

Verify Face

I ran three experiments at 3 different thresholds (30,000, 60,000, 90,000).  These values were chosen around the suggested
60,000 found in the readme.  To compute differences, image 1 was compared to image 2, image 2 to 3, etc. up to 24 compared
to 1.  I obtained the following results:

Threshold of 30,000:
Number correct that were supposed to be correct: 9/24.
Number different that were supposed to be different: 24/24.

Threshold of 60,000:
Number correct that were supposed to be correct: 18/24.
Number different that were supposed to be different: 22/24.

Threshold of 90,000:
Number correct that were supposed to be correct: 20/24.
Number different that were supposed to be different: 19/24.

From the above, it appears as though when you increase the threshold, the number of correct matches goes up at the cost
of less differences being found.  This makes perfect sense, as the two should be negatively correlated.  If  we say that the
60,000 threshold is the best (because the sum of errors is the smallest), then it had 6 false negatives and 2 false positives.