| Avg. | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
| Regular Method | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Optimized Method | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
One thing to note is that the regular method acheived optimal recognition at only 11 eigenfaces, while the optimized method required 17 eigenfaces to be optimal. This is likely due to floating point precision errors in the optimized method, since it involves an additional matrix multiplication and normalization step. It is also possible that the normalization step in my implementation contains a bug. For the regular method, 11 eigenfaces produces the best results with the minimum number of eigenfaces, while for the optimized method, using either 11 or 17 should produce good results, depending on how accurate you need the results to be.

| Input Image | Best Match | 2nd Best | 3rd Best |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |

I'm not quite sure what happened here, but the elf.tga image didn't crop correctly:

The marked version of elf.tga provides some insight:
It seems like my algorithm is over-adjusting for high-texture regions, which was added to improve face recognition overall.
An image of me got close, but failed to center on my face. The specular highlights of the flash in my glasses may have affected the results. The minimum scale was 0.45, the maximum scale was 0.55, and the stepping was 0.01. The adjusted mean squared error was 476.48, so based on the MSE alone, it seems like a resonable match. 
Finally, the results of running find faces on the group photo, with minimum scale 0.35, maximum scale 0.65, and stepping 0.01. The results aren't that great, possibly due to over-adjusting for high-texture regions and the noise in the image.