Eigenfaces - experiments - Markus Hornsten


First I'd like to point out that I apparently did some mistake when I implemented Amir's speedup, so there's something wrong with the eigenfaces calculation. I obviously didn't test it sufficiently during the implementation, but discovered it when I did the artifact. Hence (most of) the results below are false.

Eigenfaces

Average face:
Top 10 eigenfaces:


Plot


The graph shows a peak where the number of eigenfaces is 17-19, so this should obviously the prefered choice in this case. However, since my eigenfaces algorithm doesn't work correctly, most of the plots are probably false, so I can't make any real conclusions (other than that if the algorithm was working properly, the number of correctly recognized faces would most certainly be larger in most cases).


Recognition error

 
The smiling face on the left above, was often mistaken to be the non-smiling face on the right above. But since the faces are very similar, this is a pretty reasonable mistake.


Dan Goldman


The cropping of Dan turned out very well. I used .45, .55 as min/max scale.

Myself

 
I used a pretty bad picture of myself, it's is a bit blurred, I'm not facing the camera and I'm holding my hand on my forehead. The crop is done a bit too high, but it's fairly good. I used .40, .50 as min/max scale.


Three amigos


This recognition also turned out very good. I used .45, .55 as min/max scale.



The recognition of the big group image turned out poorly. Only 8 of 28 faces were recognized correctly. So it resulted in 20 false negatives and 20 false positives. Most of them can probably be explained by the error in my eigenfaces algorithm. Some of them can be explained by the poor quality of the image and some of the false positives can be explained by very high variance/standard deviation (which makes the error small). And perhaps some false positives are due to the fact that the grey scale of an area is similar to the average face, more similar than some of the actual faces. I used .60, .78 as min/max scale. This might be a too narrow interval, thus might be an explanation to some of the mistakes.


Extra credit

I implemented the speedup by Amir Akbarzadeh (but apparently not correctly).