Brian C. Becker
Arcane Robotic Incantations
   

  Home
  News
  Projects
   - Face Recognition
     - Facebook Downloader
     - Facebook Extractor
     - Face Rec Evaluation
   - Compiler Tutorial

  Personal
  Professional
  Contact

  Photo Gallery
  

Face Recognition

"Do I know you? You don't look familiar. Oh wait, weren't you the guy from my biology class a semester back? I recognize your face - you always used to sit in the back and make fun of the professor's toupe." How often have you had an experience like that? Better yet, how often have you seen somebody and done a double-take because they looked exactly like insert friend/celebrity name here? Face recognition deals with these issues by attempting to identify somebody based on a photo of their face.

Quick Links

On this page you can find information about face recognition, Facebook apps for creating face datasets, and a face recognition evaluator written in Matlab. This set of Matlab scripts is a good starter for those new to face recognition. Most of the common algorithms are coded and available to run immediately. PCA (eigenfaces), LDA (Fisherfaces), SVMs, ICA, Incremental PCA, and others are all available.

Facebook Downloader
Facebook Extractor
MATLAB Face Recognition Evaluator

History

Taking my first computer vision course at CMU in Fall 2007, I became interested in the topic of face recognition. My good friend Enrique G. Ortiz who was also taking a computer vision course but at UCF, had a pretty good suggestion: do our final class project on applying face recognition to Facebook. Being a fresh grad student not working at the Robotics Lab @ UCF and looking for a new interesting project, I jumped at this opportunity.

For those unfamiliar with Facebook, it is a very popular social networking site originally designed for college students but later opened up internationally. It revolves around two key concepts: keep in contact with a select group of "friends" and share information with them, especially images from that party you attended last week. Facebook went a step further and allowed users to tag people in the image, which associates that picture with your account. Pretty ingenous because suddenly pictures taken of you by friends (most likely when you were completely drunk and in horrifyingly unflattering circumstances) are tagged with your name and are listed in your account. However, this process of tagging is pretty boring, in fact it is downright annoying. Thus our goal was to automate this process using face recognition.

Obtaining Facebook Data

First we needed to do was gather some data from Facebook. Luckily, using the Facebook API we were able to develop a simple C# GUI that connected to a user's account and downloaded all their pictures (taken by them or others) and the associated tags identifying people in the image. You can read more about it on the Facebook Downloader page and even download a copy for your research.

Extract Faces from Pictures

Once we have Facebook images and tags we need a method to match faces detected in the images to the tags so we can build a face database. That's where our tool the Facebook Extractor comes into play. This uses the Viola-Jones face/eye detector to build a database of each individual's faces from the downloaded Facebook data.

Face Recognition Evaluator

With a dataset of faces, there are many many different face recognition algorithms available that we could use. They all seem to claim that they are the best and it can be confusing to figure out which algorithm is best suited to your needs. So we developed the Face Recognition Evaluator Toolbox for MATLAB, which is a nice little package that lets you test many different face recognition algorithms on many different datasets. The accuracy, training/testing times, memory consumed, etc are all recorded and logged. It is very easy to add datasets obtained from Facebook or other sources and add your own algorithms to the mix. Currently, both batch and incremental versions of PCA, LDA, and SVMs are all features as well as batch ICA and a few other common algorithms.

  

Copyright © Brian C. Becker @ www.BrianCBecker.com, design based on Steve's Template