CSE 455 Winter 2006

Computer Vision

Project 4 Experiment Results

 

Tsz Ng (Oscar)

 

Results:

  1. Recognition
  2. Cropping Faces
  3. Finding Faces
  4. Verifying Faces

 

Recognition

In this experiment, all eigenfaces are in the dimension of 25 pixels by 25 pixels. Using the non-smiling faces of the 27 students to compute 10 eigenfaces, we obtain the following results:

 

Average Face:

 

10 Eigenfaces (with the highest eigenvalue on the left):

 

The following graph shows the results of running the recognizing program with different numbers of eigenfaces:

The data in the graph shows that as the number of eigenfaces increases, the number of correct identification increases very rapidly in the beginning. However, the number of correct identification reaches a ceiling value very quickly. Small number of eigenfaces will reduce your computing time by a small amount, but it will also reduce the accuracy. On the other hand, a large number of eigenfaces doesn’t increase the accuracy very much compare to a medium number of faces and the accuracy also fluctuate a bit. There is no clear answer as to the number of faces to use, but we can make a conclusion that we don’t want to use any number greater than 15 faces since the accuracy doesn’t improve at all beyond that point.

 

The following table shows a couple of incorrect matching in the recognition program using 10 eigenfaces.

Smiling

Mismatched

Non-smiling

Corresponding

Non-smiling

Rank of the Corresponding

Non-smiling

 

2nd

24th

 

 

Looking at the first smiling image, you can see that the eyebrows and the contour around the mouth are very similar between the smiling and mismatched non-smiling photo. However, the actual corresponding non-smiling image ranks second. Therefore, the mismatch is reasonable in this case. It just got fooled by a similar face.

 

If you look at the second smiling image, the two matches are also very similar. The slight smile makes it very similar to a non-smiling face. It is reasonable up to this point. However, the actual non-smiling face ranks at 24th. This seems somewhat unreasonable because there are faces with glasses and many other different features.

 

Return to top

Cropping and Finding Faces

Using the 10 eigenfaces generated from the above section, I tried to crop and find faces.

Cropping Faces:

The elf.tga file

max_sacle: 0.45, min_scale = 0.55, step: 0.01

     result:

 

My Digital Portrait

max_scale: 0.4, min_scale: 0.7, step: 0.05

     result:

 

George Bush Portrait

max_scale: 0.5, min_scale: 0.7, step: 0.01

     result:

Comment: This particular image is very sensitive on the scale. I tried using step of 0.05. I only got back the left half of his face.

 

Return to top

Finding Faces:

 

Test Image

max_scale: 0.3, min_scale: 0.5, step: 0.05

 

IMG_0031.tga

max_scale: 0.5, min_scale:0.7, step: 0.05

 

Comment: In this image, the faces on the right are the first two choices. However, the face on the right ranks fifth. In order to fix that problem, I used an enhanced version of MSE (MSE * distance / variance) to eliminate some region that is close to the face space. Once I had done that, the third face came up as third output.

 

Class Group Photo

max_scale: 0.4, min_scale: 0.95, step: 0.05

 

Comment: This is a rather difficult photo to find faces on. Some of the faces are slanted or partially behind another face, and they are all in a slightly different sizes. This makes the range of scales really large. However, you don’t want to scale down any lower than 0.4 because some faces will end up grouping as one “super” face. It took quite a few trials and errors to get the right range of scales to capture more faces. You can clearly see that if we have some sort of color cue implemented, we will be able to eliminate some of the wrong selections.

 

Web Photo 1

max_scale: 0.7, min_scale: 1, step: 0.01

 

Comment: The photo has too much texture and confuses the program.

 

Web Photo 2

Max_scale: 0.4,min_scale: 0.7, step: 0.05

 

Conclusion:

It seems to work well for most of the images. However, it doesn’t work well with the group images from the Internet. As you can see, it just barely finds one face in either photo. One reason might be that the eigenfaces are bias towards the shapes of faces of our classmates. Another reason is that as the photo contains more texture, the regular MSE will get fooled very easily. I attempted to use color cues to correct this problem. It works well if I know what threshold to use for each picture. The problem is that each picture has different lighting conditions and makes it hard to decide what threshold to use for color cues error. That’s why it works well sometimes depending on the amount of textures and lighting of the image.

 

Return to top

Extra Credits:

 

  1. Whistle: I have implemented the speedup for finding the eigenfaces. With this speedup, even generating 100 pixels by 100 pixels eigenfaces is very fast.
  2. Bell: I have also implemented the verify faces functionality. See below for the experiment detail.

 

Verify Faces

I used 6 eigenfaces to test the verify faces function. In this experiments, looked at what the MSE range are for the recognized faces in the first part. Most of the MSEs start around 12,000. So I decided to try a wider range of MSE, which is 5,000 to 47,000. I stopped at 47,000 because the result will stay the same until you get past 110,000. Therefore, I focused on just the range that has more interest changes. For the false positives, I compared only a face with the next one based on the numerical order in their name (e.g 01 vs. 02 and 02 vs. 03). The following table shows the experiment results.

 

MSE Threshold

Correct Matches

False Negatives

False Positives

5,000

1

26

0

7,000

1

26

0

9,000

2

25

0

11,000

5

22

0

13,000

8

19

0

15,000

9

18

0

17,000

11

16

0

19,000

13

14

0

21,000

14

13

0

23,000

14

13

1

25,000

14

13

1

27,000

14

13

1

29,000

15

12

1

31,000

17

10

1

33,000

17

10

1

35,000

18

9

1

37,000

19

8

1

39,000

20

7

1

41,000

21

6

1

43,000

22

5

1

45,000

22

5

1

47,000

23

4

1

 

As I mentioned above, the results stay the same until around 110,000. However, most of the MSE score for false positive is also in the range of beyond 110,000. Therefore, the false positive will increase while the false negative falls. This will lead to a greater error rate again. Taking this into account and from the table above, 47,000 is probably the best MSE threshold within this range. It has the lowest number of false negatives and false positives. The false negative rate is 15% (4/27) and the false positive rate is 4% (1/27). That’s a total error rate of 19%.