Eigenfaces

Sam McKennoch

CSE576 – Project 3

May 18, 2003

 

Average Face:

*

 

Eigenfaces:

         

 

Plot of the number of faces recognized vs. the number of eigenfaces used:

 

In general, as one adds to the number of eigenvectors used to reconstruct the image, the more accurately the image can be reconstructed and thus the better the recognition is.  However, as ones uses more and more eigenvectors the advantage of each added eigenvector drops off sharply as the bulk of the variability is contained with the first few eigenvectors.  The use of more eigenvectors also limits the ability of PCA to generalize to data that it hasn’t seen before; similar to the way a neural network works.   In this dataset, it would appear that about 9 eigenvectors is the optimal tradeoff between recognition and generalization, but there is not a clear answer.

 

A couple sample mistakes that occurred, they appear to be somewhat reasonable, and the correct answers did appear highly in the sorted results:

 

 

 

 

 

 

 

Cropping and finding faces:

 

Despite my best effort, my program was not able to crop aseem’s picture or my picture correctly, instead it often found smooth textured areas in the surrounding water such as:

 

 for aseem’s picture and for my picture:

 

 

cut out this->

My error metric was mse multiplied by the distance from the test face to the average face.  In the group1.tga I was able to find one student’s face, however smoothed textured areas again seem to have distorted the results.

 

 

In the picture of my soccer team below there are 17 faces.  The resolution of the faces is fairly poor, and my face is the only one in the training set.

 

 

I choose min_scale and max_scale based on the average size of the heads in the image in pixels.  25 divided by this number gives a number to center min and max scale around.  The smaller the pixel number is, the greater the range that is allowed with a reasonable step dividing up the range into 20 levels or so.  For the first image I used the following parameters (0.9:0.05:1.1).  For the second image I used the following parameters (1.5:0.125:2.5).  The runtime for the second image was much longer in part because the chosen relative window size was smaller, therefore a larger search of the image was made.  These results include both false positives and false negatives.  I was in general surprised that no matches were made in the second image.  17 faces were chosen to be marked, a high incidence of overlapping must have forced the number of squares in the list down to the two shown above.  In general, smooth textured areas seemed to throw the algorithm off.

 

Extra Credit on this was done in the implementation of verifyFace.