Yousef Khwaja

CSE 455 - Computer Vision - Winter 2012

Eigenfaces

Project Summary

This project's goal was to use Principal Component Analysis to construct eigen vectors of faces (or Eigenfaces) to recognize faces in an image. Overall, The project was fairly successful given the limitations of the method. Perhaps the oddest part of my implementaion is how much the errors in finding faces varies bewteen scales and face shapes. On the other hand, the method appers to work very well on the class group photos.

Recognition

Question 1:

As expected, there is a logarithmic increase in the benefit of adding more eigen faces and it is espcially obvious as it reaches an asymtote of about 25. On my slower machine, there is a slight increase in computation time as the number of eigen faces increases, but it is not noticible on the lab machine. For this reason, I don't see why the lowest number of eigen faces with the maximum positive results should be used (15 in this case). On the other hand, more eigenfaces could turn up more false positives.

Question 2:

The most common mistakes, as it got higher, were for face 1, 24, and 16. They were most often matched with 11, 3, and 4, respectively, but it varied with each run. These guys made some pretty warped faces. From the perspective of someone who doesn't know these three people, their intersting faces could make them unrecognizable even to a human.

Sample Results

Average face


Eigen Faces

The graph that shows the best number of EigenFaces.


These faces were the most common to have a miss matchs.




Find Faces

Question 1:

I was never able to get the test image to match his face, despite a lot of debugging and tweaking. I tried a very white amount of scales from .4 to 1.2, but his face was never in the top 5 matches. Rather than showing a useless crop, a image outlining the top 5 matches is shown below.
Picture of me: .6 to .86, step .05 - where the actual crop was .6 scale
Group7: .8 to .86, step .05 - spot on first try!
My family portrait: .75 to .86, step .05 - .75 had 2/3 matches, .8 had the 3rd.

Question 2:

My family's group photo (themed "ugly Christmas sweaters, for those curious) obviously has the most false positive errors, my mother's face was always found, but it took some scale experimentation (and some luck it seems) to get any of the others working. I suspect most of the misses are because they are in regions with shadows and clothing creases that match the shading of eyes and noses in the average.

Results Images






Verify Faces

Question 1:

I ran a script that ran through thresholds from 15,000 to 60,000, with a step of 5,000. Once it got to 50,000, almost all of the faces were matches correctly. For reasons apparent in the graph, the first face was thrown out completely.


Here is the script (DOS):
FOR /L %%B in (15000, 5000, 60000) do (FOR /L %%A in (1,1,28) do main --verifyface "D:\Users\Joey\Dropbox\CSE\455\Eigen Artifact\procedure 3\faceImages\Interesting\%%A.tga" user.base faceImages\Neutral\%%A eig6.face %%B)

Question 2:

At a threshold of 50,000, all of the faces are false positives (again, except for face 1, wich was a negative). For this reason, 40,000 seems to be a more reasonable, with 25 matches and only 7 false positives

Graph of MSE values: