Eigenfaces

Andrew Reusch

The eigenfaces face recognition system I implemented differs from the standard system by implementing lighting normalization and red-blue color filtering to improve recognition.

Here are the ten eigenfaces and the average face:

|

Experiments

Testing recognition with cropped class images

The following graph relates the number of eigenfaces used to perform identification to the number of successful identifications made by the system. There were 24 faces total, so the system achieved an 83% recognition rate.

As you can see, at 10 eigenfaces, the system gets as well-equipped to handle identification as it will ever get. Overall, it's a pretty bad system and wouldn't work in any sort of production environment.

Cropping and Finding Faces

The find faces system is quite finicky, but works well for the cases given. Because it divides each face by its magnitude before comparing it to the eigenfaces (which have also undergone this same transformation), it doesn't use Mean Squared Error as a filter, instead it uses it only to rank and decide the best matches. It filters false positives by examing the ratio of red to blue in the given window. Any window with a ratio less than 1.6 or greater than 4.0 is filtered.

Elf

=> 0.45 0.55 0.01

Me

=> 0.5 0.5 0.1

Group Serious

0.5 0.5 0.1

Group Smiling

0.5 0.5 0.1

IMG_0002.tga

0.9 1.1 0.05

Other group picture

False positives/negatives

It found them quite a bit on the group smiling photos. This was partially my fault as the red-blue system was on occasion not tuned to handle some of the clothes people would wear. Also, "warm" images, or images high in orange or red, like those taken into the sun, did not prove as effective at eliminating false positives.

Verify Face

Because the system normalizes the faces first before finding eigenfaces, the MSE is always between 0 and 1. The maximum MSE given by a match was just below 0.0081, so initially I tried this with other faces. This gave 8 false positives. By first reducing the MSE cutoff to 0.006, then to 0.004, and finally increasing it to 0.005, I was able to reduce the total number of false positives and negatives to 6, three of each.