| ||||
Eigenface #1 | Eigenface #2 | Eigenface #3 | Eigenface #4 | Eigenface #5 |
Eigenface #6 | Eigenface #7 | Eigenface #8 | Eigenface #9 | Eigenface #10 |
Using the non-smiling students database I generated the average face plus the top ten eigenfaces. Each face was resized to be 25x25 pixels in dimension. The results are displayed is the table above. Using this model for faces I tried to identify which student was which in the smiling students database. A plot of the results is below. Ploted on the x-axis is the number of eigenfaces and on the y-axis is the number of face identified correctly. Notice how the performance appears to level off once the number of eigenfaces in more than fifteen.
These results lead me to believe that after a certain point using more eigenfaces can only bring incremental improvements in performance.
The algorithm did make quite a few mistakes at times when trying to identify
faces. In situations where the algorithm failed, as the number of eigenfaces
increased, so did the ranking of the true identity of the person in the photo.
Here are a few comical failures.
Original Face |
Reconstructed Face |
Matched Face |
Original Face |
Reconstructed Face |
Matched Face |
Original Face |
Reconstructed Face |
Matched Face |
Here are some results of the cropping and marking capabilities of the program.
The cropping results look good, but the marking results are far from perfect. The poor performance in the marking photos could be attributed to a couple of things. For one, there are smiling faces in the group shots. The model was trained on non-smiling faces. Also, the algorithm has to deal with a lot of visual "clutter" in the group photo, that is there is a lot of texture that could have the same kind of variations that are present in faces.
I implemented, but did not test the verify face routine. :(