
Eigen Face 0![]() |
Eigen Face 1![]() |
Eigen Face 2![]() |
Eigen Face 3![]() |
Eigen Face 4![]() |
Eigen Face 5![]() |
Eigen Face 6![]() |
Eigen Face 7![]() |
Eigen Face 8![]() |
Eigen Face 9![]() |

Using 10 eigen faces my recognition rate was 80% (20/25).
From the plot we can see that recognition rate increases as
the number of eigen faces used increases, until around 10 eigen
faces are used. After that there is no increase in recognition rate.
This suggests that 10 eigen faces is a good number to use for this
data set.
A couple of the images were not recognized consistently:
![]() |
![]() |
01.tga |
![]() |
![]() |
07.tga |
![]() |
![]() |
11.tga |
![]() |
![]() |
14.tga |
![]() |
![]() |
01.tga |
![]() |
![]() |
03.tga |






My program seems to do all right on finding single faces and multiple faces
that are all oriented toward the camera. But it seems to fail on faces of
different sizes and ones that are oriented away from the camera.
For a user database using 6 eigenfaces with this dataset I decided
the best threshold for verifyface is:
0.002425
I decided on this threshold using recognizeface (uses the same underlying
logic), because it can output if the match is correct and what the mse
(threshold) is for an except and for a reject (by looking at the mse for the
highest and second highest matches). I ignored the 7 cases where it recognized
the wrong face, but I included those cases in the statistics below:
| case | instances | rate |
| total positives | 17 | |
| total negatives | 7 | |
| false positives | 2 | 29% |
| false negatives | 2 | 29% |
The only extra credit I did was to implement the speed up to calculating
the eigen vectors, as described on the project page.