Here are the ten eigenfaces and the average face:
|
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.
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.
=> 0.45 0.55 0.01
=> 0.5 0.5 0.1
0.5 0.5 0.1
0.5 0.5 0.1
0.9 1.1 0.05
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.
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.