Face Recognition

Troy Johnsen
CSE455 Computer Vision
Project 4 Artifact

Recognition
From left to right: average face, eigen faces 1-10, recognition chart, smiling and non-smiling picture 13.

The plot increases sharply at low numbers of eigen faces, but levels off around 11. The algorithm runs faster for smaller numbers of eigen faces, so the ideal number of faces is 11 in this case. This data indicates that using about 1/3 of the number of total faces for the number of eigen faces is ideal, but more tests would be necessary to verify this.

A few of the smiling faces were difficult to recognize, but they were usually among the top 2 or 3 guesses. The exception was number 13, and the reasons are plenty and obvious. The face is tilted, the eyes are squinted, and a lot of teeth are showing in the smiling photo.
Face Detection
From left to right:
elf: min_scale = 0.5, max_scale = 0.5, step = 0.1

me: min_scale = 0.34, max_scale = 0.34, step = 0.1

group31: min_scale = 0.5, max_scale = 0.5, step = 0.1

family: min_scale= 0.6, max_scale = 0.6, step = 0.1

My code creates a very large array which is sorted using bubble sort. When several steps are checked, the array becomes prohibitively large. I instead ran the method manually at different scales for each image until I found a good fit.

The algorithm works well for images that resemble the training images (light background and no teeth), but failed on the last image. It probably failed because the background is close to skin color in many places, and because everyone in the picture is smiling.