Results:
In this experiment, all
eigenfaces are in the dimension of 25 pixels by 25 pixels. Using the
non-smiling faces of the 27 students to compute 10 eigenfaces, we obtain the
following results:
Average Face:
![]()
10 Eigenfaces (with the
highest eigenvalue on the left):
![]()
The following graph shows
the results of running the recognizing program with different numbers of
eigenfaces:

The data in the graph
shows that as the number of eigenfaces increases, the number of correct
identification increases very rapidly in the beginning. However, the number of
correct identification reaches a ceiling value very quickly. Small number of
eigenfaces will reduce your computing time by a small amount, but it will also
reduce the accuracy. On the other hand, a large number of eigenfaces doesn’t
increase the accuracy very much compare to a medium number of faces and the
accuracy also fluctuate a bit. There is no clear answer as to the number of
faces to use, but we can make a conclusion that we don’t want to use any number
greater than 15 faces since the accuracy doesn’t improve at all beyond that
point.
The following table shows
a couple of incorrect matching in the recognition program using 10 eigenfaces.
|
Smiling |
Mismatched Non-smiling |
Corresponding Non-smiling |
Rank of the Corresponding Non-smiling |
|
|
|
|
2nd |
|
|
|
|
24th |
Looking at the first
smiling image, you can see that the eyebrows and the contour around the mouth are
very similar between the smiling and mismatched non-smiling photo. However, the
actual corresponding non-smiling image ranks second. Therefore, the mismatch is
reasonable in this case. It just got fooled by a similar face.
If you look at the second
smiling image, the two matches are also very similar. The slight smile makes it
very similar to a non-smiling face. It is reasonable up to this point. However,
the actual non-smiling face ranks at 24th. This seems somewhat
unreasonable because there are faces with glasses and many other different
features.
Using the 10 eigenfaces
generated from the above section, I tried to crop and find faces.
The elf.tga file
max_sacle: 0.45, min_scale = 0.55, step: 0.01
result: ![]()
My Digital Portrait
max_scale: 0.4,
min_scale: 0.7, step: 0.05
result:![]()
George Bush Portrait
max_scale: 0.5, min_scale: 0.7, step: 0.01
result:![]()
Comment: This particular image
is very sensitive on the scale. I tried using step of 0.05. I only got back the
left half of his face.
Test Image
max_scale: 0.3, min_scale:
0.5, step: 0.05

IMG_0031.tga
max_scale: 0.5, min_scale:0.7, step: 0.05

Comment: In this image,
the faces on the right are the first two choices. However, the face on the
right ranks fifth. In order to fix that problem, I used an enhanced version of
MSE (MSE * distance / variance) to eliminate some region that is close to the
face space. Once I had done that, the third face came up as third output.
Class Group Photo
max_scale: 0.4, min_scale: 0.95, step: 0.05

Comment: This is a rather
difficult photo to find faces on. Some of the faces are slanted or partially
behind another face, and they are all in a slightly different sizes. This makes
the range of scales really large. However, you don’t want to scale down any
lower than 0.4 because some faces will end up grouping as one “super” face. It
took quite a few trials and errors to get the right range of scales to capture
more faces. You can clearly see that if we have some sort of color cue
implemented, we will be able to eliminate some of the wrong selections.
Web Photo 1
max_scale: 0.7, min_scale: 1, step: 0.01

Comment: The photo has too
much texture and confuses the program.
Web Photo 2
Max_scale: 0.4,min_scale:
0.7, step: 0.05

It seems to work well for
most of the images. However, it doesn’t work well with the group images from
the Internet. As you can see, it just barely finds one face in either photo.
One reason might be that the eigenfaces are bias towards the shapes of faces of
our classmates. Another reason is that as the photo contains more texture, the
regular MSE will get fooled very easily. I attempted to use color cues to
correct this problem. It works well if I know what threshold to use for each
picture. The problem is that each picture has different lighting conditions and
makes it hard to decide what threshold to use for color cues error. That’s why
it works well sometimes depending on the amount of textures and lighting of the
image.
I used 6 eigenfaces to
test the verify faces function. In this experiments, looked at what the MSE
range are for the recognized faces in the first part. Most of the MSEs start
around 12,000. So I decided to try a wider range of MSE, which is 5,000 to
47,000. I stopped at 47,000 because the result will stay the same until you get
past 110,000. Therefore, I focused on just the range that has more interest
changes. For the false positives, I compared only a face with the next one
based on the numerical order in their name (e.g 01 vs. 02 and 02 vs. 03). The
following table shows the experiment results.
|
MSE Threshold |
Correct Matches |
False Negatives |
False Positives |
|
5,000 |
1 |
26 |
0 |
|
7,000 |
1 |
26 |
0 |
|
9,000 |
2 |
25 |
0 |
|
11,000 |
5 |
22 |
0 |
|
13,000 |
8 |
19 |
0 |
|
15,000 |
9 |
18 |
0 |
|
17,000 |
11 |
16 |
0 |
|
19,000 |
13 |
14 |
0 |
|
21,000 |
14 |
13 |
0 |
|
23,000 |
14 |
13 |
1 |
|
25,000 |
14 |
13 |
1 |
|
27,000 |
14 |
13 |
1 |
|
29,000 |
15 |
12 |
1 |
|
31,000 |
17 |
10 |
1 |
|
33,000 |
17 |
10 |
1 |
|
35,000 |
18 |
9 |
1 |
|
37,000 |
19 |
8 |
1 |
|
39,000 |
20 |
7 |
1 |
|
41,000 |
21 |
6 |
1 |
|
43,000 |
22 |
5 |
1 |
|
45,000 |
22 |
5 |
1 |
|
47,000 |
23 |
4 |
1 |
As I mentioned above, the
results stay the same until around 110,000. However, most of the MSE score for false
positive is also in the range of beyond 110,000. Therefore, the false positive
will increase while the false negative falls. This will lead to a greater error
rate again. Taking this into account and from the table above, 47,000 is
probably the best MSE threshold within this range. It has the lowest number of
false negatives and false positives. The false negative rate is 15% (4/27) and
the false positive rate is 4% (1/27). That’s a total error rate of 19%.