Project 4: Eigenfaces

Heather Langfeldt
CSE455 Computer Vision
Experiments

Recognizing | Cropping and Finding | Verifying

Recognizing Faces
Average Face:
EigenFaces:
Recognition Plot:
Discussion: The more eigenfaces that are used, the better the recognition of faces.
The cost of adding more eigenfaces is space and time. It would take longer
to calculate and store the additional eigenfaces, and it would take longer
for the algorithm to go through all of the eigenfaces each time to determine
which face is the best match.

According to my data, the most efficient number of eigenfaces is 5. Any more
than 5 eigenfaces gives approximately the same percent correct recognition, but
takes longer to compute.

The most commonly mistaken faces are pictured below. I think many of these were
inaccurately recognized by my code because each person changed one side of his face
which unevenly distributed the features highlighted by the eigenfaces. Other
mistaken identities could have occurred since faces were sometimes tilted in
and out of the image plane. All but two of these mistaken faces were listed
within the top five results.
Common Errors:

Cropping and Finding Faces
Crop 1:
Crop 2:
Find Faces:
Scales: min_scale = 0.90; max_scale = 0.94; step = 0.2 min_scale = 0.74; max_scale = 0.80; step = 0.2
Find More Faces:
Scales: min_scale = 0.74; max_scale = 0.80; step = 0.2 min_scale = 0.70; max_scale = 0.75; step = 0.005
Discussion: Many of the false positives happened in regions of low texture. I tried to
remedy this by eliminating the "faces" of which the center pixel was not a
"skin" color. I used the true positives to determine the range of skin colors,
but the next false positives usually came from textured object with a skin
hue, such as tan shirts and hands.

I was hoping for not too many false negatives because even if the most of
the skin on the face was not within the range I had selected, it seemed
probable that there was one pixel on the nose that was within the range
and could center the square selection. I assumed this because light usually
hits a person's nose, so there should be a few pixels with varying skin colors.

Since finding the faces in the picture with me did not work well, I used a
random neutral group picture from the class to crop. I have a feeling my own
picture did not work as well because of hair color and the color of the
buildings, both of which have a lot of texture and shadow to fool the algorithm.

Verifying Faces
Discussion: I initially tried using a mse threshold of 6000, but many faces were appearing
to be related, so I first inspected the mse values between true positive pictures,
then took a look at the true negative values. Unfortunately, there is quite a
large range where false positives and true negatives mix.

The threshold that would recognize all of the faces would have to be greater
than 1899, because this is the highest MSE value between the smiling and neutral
picture of the same person, which means a mse threshold of 1899 would give no false
negatives. On the other hand, such a high threshold would give the most false
postives. A better MSE would be about 1000, which excludes four of the highest
MSE scores, but reduces the number of false positives.

As far as I could gather, with a threshold of 1000, the false negative rate
is 4/33 and the false positive rate is about 102/1056.