Project 4 - Face Recognition

Biliana Kaneva, CSEP 576


Experiment 1 - Testing recognition with cropped class images

1. 10 eigenfaces of 25x25 pixels


Average face: 10x25x25 average
Eigenfaces:

2. Matching faces

Correct matches: 20/32 faces (62.5%)

Smiling face Matching non-smiling faceRank 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.
accuracy plot

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.