Andrew Lau

Computer Vision (CSE 455), Winter 2012

Project 4: Eigenfaces

Thoughts

The project itself was not very difficult to code. The only hard part was the fact that some information were not on the slides. Also, the link on the course calendar is broken. Besides that, finding a good mse to recognize faces by was very difficult, since the most simple methods of calculating mse seemed to work the best.

I believe the experiments turned out the way they did because of the training images used, the size of eigenfaces, and the image itself that was used. A lot of factors contributed to the results, which are discussed minorly in each section.

Experiment: Recognition

Methodology

Use the cropped, non-smiling students (in class_nonsmiling_cropped) to compute 10 eigenfaces.

Use the same set of images to compute a userbase.

Have the program recognize the cropped, smiling students using eigenfaces from 1 to 33 in steps of 2.

Average Face and Top 10 Eigenfaces

Above are the eigenfaces. The first is the average face and the rest, from left to right, are the top 10 eigenfaces.

Above is a plot that plots the eigenfaces used vs the number of correctly recognized faces.

Questions

1. From the plot above, we can see that, very rapidly, the number of correctly increases as we increase the number of eigenfaces used. It would seem that 5 eigenfaces provides a reasonable amount of correctness as well as speed since one does not need to compute and use all 33 eigenfaces. There is no clear answer, if you want to achieve close to perfection you should use as many eigenfaces as you can, but if you want to do it fast, 5 seems to work relatively well.



2. The mistakes were relatively reasonable. Some of the pictures I see some similarity, but I can tell why it was hard for the recognition to recognize the faces. They were seriously contorted weird. The correct answers, when sorted by MSE seemed to induce a pattern where all correct answers had low MSE as the false positives had low MSE also.

Experiment: Find Faces

Methodology

Use the 10 eigenfaces file computed in the previous problem.

Use the program to crop the elf.tga image. Use min_scale,max_scale, step parameters of .45, .55, .01.

Find a digital picture of myself. Use the program to crop the picture.

Experiment with min_scale, max_scale, and step parameters to find ones that work robustly and accurately.

Find the faces in two different photos (use the crop=false option). First, try the group1.tga image given. Find and try another group photo.

Sample Results

elf.tga

myself.tga

group1.tga

groupofpeople.tga

Questions

1. For elf.tga, I used the specified values of .45, .55, and a step of .01. For myself, I went with .7 to .8 with a step of .01. For the group1.tga, I used .3 to .4 and a step of .01. For the group of people, I used .3 to .4 with a scale of .01.

2. Actually, a lot of mistakse with images that weren't given to me. elf.tga and group1.tga worked fine. The picture of me, not so much. It's probably because my face wasn't part of the training set (though it recognized my girlfriend's face). Also, the random photo I stole from the internet wasn't in the training set, but I was able to get about 3 faces!

Experiment: Verify Faces

Methodology

Use the cropped, non-smiling students to compute 6 eigenfaces.

Use the same set of images to compute a userbase.

Have the program verify the cropped, smiling student images in the smiling userbase. Test by verifying each student against his or her smiling face, as well as each student against a smiling face which is of someone else.

Experiment with various thresholds to find the one that gives the fewest false positives and fewest false negatives.

Sample Results

Questions

1. I tried thresholds from 20000 to 200000 with a step of 2500. The maximum threshold worked the best for recognizing correct matches, but at the same time, generated the most false positives. Conversely, the smallest threshold made no false positives, but matched the least amount of faces correctly. The one that worked the best was about 70000. I found this by taking the ratio of corrects to false positives (ignoring the ones with with 0 false positives and low correct counts).

2. With the best MSE, the false negative rate was 10/33 while the false positive was 1/33.