Face Detection Algorithms & Techniques

There are many face detection algorithms to locate a human face in a scene – easier and harder ones. Here is a list of the most common techniques in face detection: (you really should read to the end, else you will miss the most important developments!)

Finding faces in images with controlled background:

This is the easy way out. Use images with a plain monocolour background, or use them with a predefined static background – removing the background will always give you the face boundaries. The rest is easy going…

Finding faces by color:

If you have access to color images, you might use the typical skin color to find face segments. The disadvantage: doesn’t work with all kind of skin colors, and is not very robust under varying lighting conditions…

  1. Explanation of basic color extraction for face detection
  2. Face detection in color images (includes some source code)
  3. Face detection in color images using PCA
  4. Skin color detection under changing lighting conditions
  5. Face detection and recognition in color images with a complex background (PhD Work from 2003)
  6. Computer Vision and Human Skin Colour (Moritz Stoerring’s PhD from 2004)

Finding faces by motion:

If you are able to use real-time video, you can use the fact that a face is almost always moving in reality. Just calculate the moving area, and here you go.
Disadvantages: What if there are other objects moving in the background?

  1. Explanation of basic motion detection for face finding
  2. Blink detection: human eyes are simultaneously blinking; this can be used to find and normalize faces

Using a mixture of the above:

Combining several good approaches normally yields an even better result. Here are some works on that:

  1. A mixture of color and 3D
  2. A mixture of color and background removal

Finding faces in unconstrained scenes:

Well here we go – this is the main thing, the top of them all, the most complicated thing maybe in whole object recognition: Given a black and white still image, where is the face? Humans can do it, so where’s the perfect algorithm that can do it, too? Here is some work on it:

  1. Model-based Face Tracking
    There seems to be a revival of edge-based methods, using geometric models. Two top performing methods have been published in the early 2000s:
  2. Weak classifier cascades
    The breakthrough in face detection happened with Viola & Jones. Using a cascade of “weak-classifiers”, using simple Haar features, can – after excessive training – yield impressive results. This approach is now the most commonly used algorithm for face detection. A basic implementation is included in OpenCV.

    Robust Real-Time Face Detection
    Paul Viola, Michael J Jones: International Journal of Computer Vision 57, pp. 137-154, Netherlands, 2004.

    A nice visualization of the algorithm can be found here.

  3. HOGs and Deep Learning
    Deep Learning (using multi-layered Neural Networks), especially for face recognition more than for face finding, and HOGs (Histogram of Oriented Gradients) are the current state of the art (2017) for a complete facial recognition process. Please follow the link above for an excellent explanation of all the necessary steps involved (including source code to help you create your own system!).

 

If you found this information useful, or if it helped you to start your thesis, or if it answered any of your questions regarding facial detection – please don’t forget to share with others: