Dallas Jacobsen

Write up

Testing recognition with cropped class images:

1.  It correctly recognized 19 faces, and 3 were incorrect.  An example of correct matching was myself:

2. The incorrect faces were at place 2,7 & 4 in the list of closest matches.

3.  More often than not, it it correctly identifies a face, the next few faces are the same gender.  For example:  correctly identified jwkim, then suggests esp, squinn all three are females.  In fact, only in two or three cases was the second person of the wrong gender when the face was correctly recognized.

4.  I don't think I would use all the faces, I would just use a few faces with distinct characteristics.  Using all of them would not produce much better results than using a few- because the results are still limited in precision by the number of eigenvectors you chose.

5.  Might be better to use a face set independent of user set so the chances of getting a good distribution over the face space is greater.

 

Recognizing undergraduate faces:

1.  For 12 eigenfaces, it correctly recognized: 0, and incorrectly chose 22.

For 5 eigenfaces, it correctly recognized: 0 and 22 incorrectly.

For 10 eigenfaces, it correctly recognized: 0 and 22 incorrectly.

For 15 eigenfaces, it correctly recognized: 0 and 22 incorrectly.

For 20 eigenfaces, it correctly recognized: 0 and 22 incorrectly.

 

2.  The matches it did make were not all that reasonable, in my opinion.  The only thing that was close is skin color.  For example these two matched

and these two matched:

 

3.  It performs more poorly here than in the previous task because a) the exposure on the pictures is drastically different, b) on different days, people's expressions are drastically different (see example below of myself) and c) the heads are more likely to be at different angles since in previous example, the smiling and non-smiling were taken right after each other, whereas in this test, the pictures were taken on different days, so position is different and d) not all the faces from non_smiling are in ugrads, so it isn't possible for some matches to be made.

4.  Changing the number of eigenfaces didn't change my result.

5.  It is best to use as few eigenfaces as possible because we are trying to do dimensionality reduction, if we have too many eigenfaces, we aren't really reducing any thing.

Cropping Faces:

1.  I ended up using a scale of 0.18 for beginning and end, it was the scale that was the same size as the face, and so to keep the running time down, I didn't iterate over different sizes.

2.  None of the cropped images look exactly correct, they are all either a bit to the left, or a bit to the right.  A somewhat successful example is:

and a badly unsuccessful one is

3.  Problem with using min scale too small is it takes way too long.

Finding Faces in a group photo:

Friends:

Famous people:

2.  For the friends picture I used min scale of .9 and max scale of 1 with a step of 0.1, because that is the size of the faces.  For the famous people I ran it at 0.9 scale and 1 scale, again a step of 0.1

3.  There are plenty of errors.  I'm really not sure why it is grabbing some of the things it is.  I think some of the problem is with forcing rectangles not to overlap, and knowing which rectangles to kick out.  I made it so if it overlapped any rectangles, it had to be better than all the rectangles it overlapped in order to take their place, then it would kick out all the ones it overlapped.  So, it is possible that towards the end of the algorithm, it could find one rectangle that would kick out several others, and then I would have to use the 'left over' rectangles that really aren't that good.  Basically, it is very possible to kick out a fairly good rectangle and leave in a poor one.  One thing I could improve, is to keep all the possible rectangles until the very end, then chose the best ones, that don't cross.  This would take a significant amount of memory so I didn't do it.

 

Extra Images:

An average face from all undergrads.

average face for class:

eigenfaces from undergrads:

eigenfaces from class: