Project 4 - Face Recognition
Biliana Kaneva, CSEP 576
Experiment 1 - Testing recognition with cropped class images
1. 10 eigenfaces of 25x25 pixels
Average face:
Eigenfaces:
2. Matching faces
Correct matches: 20/32 faces (62.5%)
Smiling face | Matching non-smiling face | Rank of correct match |
s00
| 02
| 12 |
s01
| 25
| 16 |
s02
| 19
| 6 |
s03
| 03
| 1 |
s04
| 04
| 1 |
s05
| 11
| 11 |
s06
| 29
| 7 |
s07
| 19
| 2 |
s08
| 08
| 1 |
s09
| 09
| 1 |
s10
| 19
| 1 |
s11
| 11
| 1 |
s12
| 12
| 1 |
s13
| 18
| 10 |
s14
| 13
| 2 |
s15
| 15
| 1 |
s16
| 16
| 1 |
s17
| 17
| 1 |
s18
| 18
| 1 |
s19
| 19
| 1 |
s20
| 20
| 1 |
s21
| 22
| 2 |
s22
| 22
| 1 |
s23
| 14
| 2 |
s24
| 24
| 1 |
s25
| 25
| 1 |
s26
| 26
| 1 |
s27
| 29
| 5 |
s28
| 28
| 1 |
s29
| 29
| 1 |
s30
| 30
| 1 |
s31
| 31
| 1 |
I performed the above experiment over the range 1-32 eigenfaces with resolution from 4x4 to 80x80 pixels.
The chart below shows the results from several of the experiments.
3. Questions:
1. Trends in the plots
In all of the plots, regardless of the resolution of the eigenfaces, there is a steep incline
for the first 6-7 eigenfaces and then the results more or less stabilize. There is actually a
bit more variance in the matches found with the increase of the number of eigenfaces used than
I was expecting. It seems like the optimal number of faces is somewhere between 6 and 12. After
that the additional eigenfaces do not seem to be providing much benefit. It is interesting to
note that even with images as small as 4x4, the performance seems fairly good comparitively.
And with resolution as low as 8x8, you get pretty good results, very close to the optimal.
2. Errors in finding matches
Above we have shown all the smiling faces and what they were matched too. There are
several faces that were mistakenly matched but the real match was the following face in the list.
Some of the false matches seem to make sense. For example, s05 and s07, their correpsonding
matches seem to have the face in similar direction and pixel intensity. For s07, both faces have glasses as well.
However, some of the matches seem totally random to me (as in the first 3 faces). I guess
there was way too much difference between the smiling and non-smiling faces to be able to
match them in any sort of reasonable way.
Experiment 2 - Cropping and finding faces (10x25x25 eigenfaces)
1. George Bush portrait cropped (.25 .55 .01)
2. A picture of me cropped and marked (.38 .45 .01)
2. A portrait of me cropped (.10 .25 .01)
3. The elf cropped (.45 .55 .01)
4. Group pictures from class (.50 .55 .01)
5. Group picture of friends (.89 .93 .01)
Finding the faces in the above picture did not work as well. The first picture shows
3 faces were marked when searching for 5 faces in the picture. The second pictures
searched for 7 faces and it marked 4 of the faces correctly. It makes some sense that
the arm was mistaken for a face, because of the pixel intensity in the arm image.
The almost black rectangle and the part of the blue shirt don't make much sense.
Given that I was penalizing images with low intensity variance, I would have expected
these face matches to have been discarded. The rest of the marking/cropping worked pretty
well. Naturally, finding the faces in the pictures from class worked perfectly, but
so did cropping of the images from the portraits.
Verify Faces
I ran the experiment using 6 eigen faces 25x25 with threshold from 500 to 3000 step 50 and
2200 to 8000 step 500. I compared each non-smiling face to its corresponding smiling face
and each smiling face i to the non-smiling faces of (i+1)%32. Below is an Excel chart showing summary of the data. It shows
the number of false positive and false negatives given the threshold used. The best threshold
seems to be between 1800 and 2700, in fact 1748.39 was the maximum MSE that produced correct
result for two matching faces. With threshold of 1800, we get 5 false positives and 0 false
negatives.
Extras
1. Implemented the speedup for computing the eigenfaces. I added speedup|nospeedup
parameters to the eigenfaces flag.
2. Plotted recognition rates for other image resolutions
3. Verify face
4. Morph face - I implemented the procedure but didn't have time to do the experiment.