Project 3: Eigenfaces

1) It seems that for the most part, the accuracy of the detector increases as the number of eigenfaces used increases. However, in the end, the accuracy goes down even though 33 eigenfaces are used. It seems as though the increasing number of eigenfaces actually starts to hurt the detector at 33 faces. I could not test with more since I was using the speedup. It is probably due to the fact that using 33 eigenfaces probably allows really good detection of nonsmiling faces, but hurts to generality of the detector at detecting all faces. This is a form of overfitting. One should probably use as small a number of eigenfaces possible while still getting good accuracy. The smaller number of eigenfaces allows the detector to work faster. It is hard to say in this case, 19-29 eigenfaces all gives the same accuracy. I would probably use something like 19-23 eigenfaces, but there is not clear answer.


2) When using 29 eigenfaces, the smiling face of Downey was recognized as the face of Eckart. This seems like a reasonable mistake to me. I personally feel that they do look very similar. Also, Hahn was misrecognized as Gauthier. This mistake seems less reasonable. The Hahn smiling and not smiling seem almost the same. There is perhaps a difference in intensity which may have thrown the algorithm off. Downey appears as number 13 on the list. This is pretty low. Hahn appears at number 18, even lower.

 

 

1) I used 25 pixel eigenfaces for all my experiments.
For Aseem, .45, .55, .01
For Bush, .55, .65, .01
For group1, .95, 1.05, .01
For group2, .55, .65, .01

2) The group2 picture shows several false positives and negatives. The false negative seems reasonable. The face is not well lit and also, the face does not seem like any in the database, i.e. his eyes are not visible. The false positive on the robot and also on the left pants seems to be low textured areas. The weight on low textured areas may still be too low. Finally, there are the three remaining false positives on the guy's arm and the robot's leg. These are a bit harder to explain away. They could simply result from the inherent failure of the algorithm.

Extra Credit:

1) Implemented speedup