Face Detection algorithms used in face processing systems for face recognition, face tracking, facial expression recognition, facial feature extraction, gender classification, etc. Face detection is finding whether or not there are any faces in a given image and, if present, return the image location and content of each face. Face Detection algorithms can be implemented using digital image processing techniques such as edge detection, eye detection, and Matlab tools such as histograms, image graphs, etc. Face Detection algorithms can be implemented using Matlab software with Matlab/C-language code.

How Face Detection Algorithms work?

Most face detection algorithms carry out the task by extracting certain properties (e.g., local features or holistic intensity patterns) of a set of training images acquired at a fixed pose (e.g., upright frontal pose) in an off-line setting. To reduce the effects of illumination change, these images are processed with histogram equalization or standardization (i.e., zero mean unit variance). Based on the extracted properties, these systems typically scan through the entire image at every possible location and scale in order to locate faces.

The face detection problem is challenging as it needs to account for all possible appearance variation caused by change in illumination, facial features, occlusions, etc. In addition, it has to detect faces that appear at different scale, pose, with inplane rotations. In order to detect faces at different scale, the detection process is usually repeated to a pyramid of images whose resolution are reduced by a certain factor from the original one. Such procedures may be expedited when other visual cues can be accurately incorporated (e.g., color and motion) as pre-processing steps to reduce the search space. As faces are often detected across scale, the raw detected faces are usually further processed to combine overlapped results and remove false positives with heuristics (e.g., faces typically do not overlap in images) or further processing (e.g., edge detection and intensity variance).

Different Types of Face Detection Algorithms

Numerous representations have been used for face detection algorithms, including pixel-based, parts-based, local edge features, Haar wavelets and Haar-like features. While earlier holistic representation schemes are able to detect faces, the recent systems with Haar-like features have demonstrated impressive empirical results in detecting faces under occlusion. As face detection can be mainly formulated as a pattern recognition problem, numerous algorithms have been proposed to learn their generic templates (e.g., eigenface and statistical distribution) or discriminant classifiers (e.g., neural networks, Fisher linear discriminant, sparse network of Winnows, decision tree, Bayes classifiers, support vector machines, and AdaBoost). Typically, a good face detection algorithm/system needs to be trained with several iterations. Performance of face detection algorithms can be evaluated using the following terminology:

  • Detection rate: The number of faces correctly detected to the number of faces determined by a human expert (hand-segmented results). 
  • False positives: This is when an image region is declared to be a face but it is not. 
  • False negatives: This is when an image region that is a face is not detected at all. 
  • False detections: False detections = False positives + False negatives.