Junebae Kye

Computer Vision (CSE 455), Winter 2012

Project 4: Eigenfaces

Project Abstract

Objectives

The objectives of this project is to find and recognize faces

Challenges

Most of the challenges with this project is to get the high accuracy level fixing code.

Lessons Learned

Eigenfaces algorithm works pretty good. It achieves about 75% accuracy of recognizing faces.

Experiment: Recognition

Methodology

I generated the different number of eigenfaces starting from one eigenface at a granularity of 2. Based on the eigenfaces I generated, I ran the recognition to see the accuracy level of the eigenface algorithm.

Sample Results

Average face

10 eigenfaces

When using one eigenface, the accuracy of recognizing faces is very low. But, as up to about 5 ~ 6 eigenfaces are used to generate the average face, the accuracy is going up. However, although I used more than 6 eigenfaces, the accurate was not really going up at all. Rather, it stays at the about 65% accuracy level. When I used more than 30 eigenfaces, the accuracy slightly goes up and reached about 75% accuracy. As the result shows, using a lot of eigenfaces is not really helping acheive the high accuracy rate. So, since too small number of eigenfaces acheives very low accuracy level, the moderate number of eigenfaces will be necessary to get some reasonable accuracy.

This is one of the recognition erros in step 3. Based on the smiling image, the one on the left, it predicted the best match candidate. This error is reasonable. The eyebrows of two people and hair are similar. Besides, the noses are similar, too. So, the two images are projected onto the close area of the subspace. Eventually, the eigenface algorithm could guess the second image as the match image. Nevertheless, the correct match image was in the sorted results.

Both of two are wearing glasses. They basically look very similar. Their hair, face shape, noses look similar. So, it makes sense that it could not find the right match since those two images are so similar. And the correct match image was not in the sorted results.

Experiment: Find Faces

Methodology

With 25 x 25 eig10.face I used different scale ranges and steps to find out which scale range and step are working well to find faces. For example, I used 0.2 0.8 0.1, 0.5 1.0 1.0 or 0.5 1.0 0.05

Sample Results

elf and cropped elf image with 0.45 0.55 0.01

Left is the original image. The right one is the cropped one. It completely failed to find a face at all. I ran with 1) 0.5 1.0 0.1 2) 0.2 1.0 0.1 3) 0.2 0.8 0.05 4) 0.5 0.8 0.02, etc. All those failed to find a face.

I ran the program with 0.5 0.8 0.1. It found the faces so accurately. It was perfect.

I used the old class picture. I ran the program with 0.5 1.0 0.05. It found the faces pretty good. Although it shows some false positives, it still finds the most of the faces.

Questions

1. What min_scale, max_scale, and scale step did you use for each image? For the first image, I used 1) 0.5 1.0 0.1 2) 0.2 1.0 0.1 3) 0.2 0.8 0.05 4) 0.5 0.8 0.02, etc. For the second image, I used 0.5 0.8 0.1. For the third image, I used 0.5 1.0 0.05.

2. Did your attempt to find faces result in any false positives and/or false negatives? Discuss each mistake, and why you think they might have occurred.

The program found all the faces perfectly with the second image. However, it didn't work with the first image. It worked pretty well with the third image since it found most of the faces. The reason why it did not work perfect is that although it is not an actual face, it is projected onto the subspace close to those that are actually faces. Similar features or colors could cause it. So, the eigenface algorithm shows some less accuracy.

Experiment: Verify Faces

Methodology

Using 6 eigenfaces and nonsmiling images, I generated the userbase. With the eigenfaces and userbase I ran the tests by using different mse values from 10k to 200k to find the best mse. With the best mse, I did the tests to compute the false negative rate and false positive rate.

Questions

I tried from 10k to 200k at a granularity of 10k. The tests I did shows that it works pretty well with a mse of 100k. Few images require mse to greater than 100k. Most of the images can easily verify the faces with a mse of 100k.

With mse = 100k, I did the tests. It turned out that the false negative rate = 12.12% and false positive rate = 0%.