Karl's Eigenfaces Results

Karl's Eigenfaces Results

Comparison of eigenfaces generated by the regular and optimized methods

I implemented both the regular method of finding eigenfaces and the optimized method for extra credit. The optimized method produces some eigenfaces that were inverted from the regular eigenfaces, but this isn't an issue since the coefficients from face projections for those eigenfaces will be equal in magnitude but opposite in sign. It was also pointed out to me that the optimized method is only benefitial when the number of training faces is much smaller than the dimensionality of the eigenface vectors.
 Avg.12345678910
Regular Method
Optimized Method

Comparison of face recognition results

A perl script was written to automatically generate 1-27 eigenfaces (at two step intervals) based on the non-smiling training images, run the eigenfaces program in recognition mode on the smiling images, and produce a CSV file with the number of correct matches for each number of eigenfaces. The experiment was repeated for the optimized method of generating eigenfaces.

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.


A closer look at the recognition results (11 eigenfaces, regular method)

Input ImageBest Match2nd Best3rd Best
As you can see, most faces are recognized as the best match, or at least in the top three.

Find Face Results

Find Face on IMG_0031.tga:

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.