Face Tracking
September 1st, 2008
Face tracking, is still a young and experimental science. One often faces efficiency for accuracy and often times simple everyday occurrences (like an obstacle coming between the camera and one’s face) can entirely through off the agent from where the face actually is. In this project the focus was on maintaining tracking accuracy while improving efficiency so that at some point this algorithm could be run in real-time on a handheld device.
The work was published at ICPR10.
The idea
Given that every algorithm has at least one positive and negative quality, the project focused on using several algorithms at the same time. By it self this would be very costly, thus a RL based system was designed to “know” which face detecting algorithm would perform best given the current conditions of the video. Furthermore weights were “learned” to favor faster and less reliable algorithms as opposed to slower but very accurate algorithms. In this manner the final face tracking mechanism was many times faster than previous work while still preserving the accuracy that has been thought to be state-of-the-art.
Implementation
The implementation had been once done in Matlab however due to its limited platform usage and efficiency a C++ version of the algorithm had to be implemented. There were at least 4 iterations of the code and just about every graphical and mathematical library available for C++ was at some point used to see which one was most efficient. It was finally determined that the Eigen library and FFMPEG libraries were the only two libraries that were not only cross-platform but also extensive enough for the purposes of face tracking.
Given the cross-platform nature the code, the project was easily (within a week) also migrated to Linux, Windows and the iPhone. Demos can be found on YouTube.