Face detection and recognition algorithms

FaceSpeaker uses face detection and recognition algorithms from the emgu CV library, which is a C# wrapper for the openCV computer vision library. By combining accurate Fisherface and LBPH face recognition algorithms, FaceSpeaker can recognize faces in a variety of lighting conditions while limiting the number of misidentifications. This is certainly not a perfect solution but does work well enough for the purpose of building a usable prototype. More details will be added here. This article was the main reference for learning how to perform face detection and recognition using emguCV.

Alternative face recognition systems

As for open source face recognition systems, the openCV library is the de facto standard recommended by all experts consulted. No realistic open source alternatives have been found or explored. While astler et al. refer to another LBPH face recognition implementation available somewhere on the internet (they don't specify where), the current version of openCV already contains an LBPH recognizer and it did not seem worthwhile to invest time into this vaguely documented alternative option which Astler et al. abandoned.

On the other hand, many commercial face recognition libraries are available. The initial FaceSpeaker plan involved using the Luxand face SDK , The same SDK successfully used by Astler et al. The earliest FaceSpeaker prototype relied on Luxand's product, and this appeared to work well. Many comparable products are available. Examples include Betaface and Cognitec.

However using a commercial solution would have had various disadvantages. Commercial SDK's are quite costly and probably could not have been purchased given FaceSpeaker's extremely limited budget. Even if this financial issue had been resolved, FaceSpeaker could not have been released as an open source product and it might not even have been possible to offer it as a free download. This would have made gathering feedback a lot harder and would certainly have limited FaceSpeaker's potential value to the (scientific) community.

Astler et al. did not use openCV's eigen face recognizer because it was extremely sensitive to changes in lighting conditions and did not meet their quality requirements in other ways. This finding was confirmed. The eigen face recognizer, depending on its configuration, would either make a totally unacceptable number of misidentifications or would not recognize people anymore if there was a minimal change in lighting conditions. Fortunately, it turned out the LBPH and Fisherface algorithms worked much better. While they are probably inferior to proprietary algorithms available on the market, they performed acceptably for the purposes of designing a usable prototype. FaceSpeaker's goals are, however, much more limited than Astler et al's goals. Whereas FaceSpeaker only aims for face recognition Astler et Al. also aimed for facial expression recognition, which is a considerably harder problem. This partially explains their higher quality requirements. In addition, OpenCV's face detection and recognition features have rapidly improved in recent years and the openCV version available at the time of Astler et al's research probably did not have the same level of features and performance as openCV version 2.4.2.