Communication Systems Group |
Technische Universität Berlin |
This face detector is a component-based face detector. First it detects the components i.e., nose, mouth, left eye, and right eye, then it uses graph algorithms to detect the faces based on the component detections. The advantage of the component based face detection, compared to holistic approaches, is a higher robustness especially in cases where parts of the face are occluded.
The four face components are detected, using a cascade of boosted classifiers. The classifiers work with Haar-like features. A modified version of the OpenCV Haar detection algorithm is used in this demo, which is based on the paper by Viola and Jones [1] and extended by Lienhardt [2,3].
In real-world applications it is possible that some of the components cannot be detected because of occlusions, which may be caused by sunglasses, scarfs, or beards. Nevertheless, a component-based face detector is able to detect the face even in such situations, because some of the components still can be detected reliably.
In order to achieve this robustness several graph algorithms are applied to the detected components. First a graph is built out of them. Each detection is represented by a vertex and pairs of vertices are connected, if they seem to belong to one face, based on certain criteria. Then a connected component analysis separates possible faces and an error-tolerant graph matching algorithm checks if the configuration of the face components is likely to be a face.
It cannot be guaranteed that every face component has been detected and therefore it is very likely that some of the face components are missing in the connected components which are supposed to be a face. If there are at least two face components, the other, missing components can be estimated.
Note that the error-tolerant graph matching algorithm and the estimation of the missing componentts is only applied on the connected components, which helps to improve the speed significantly.
Based on the coordinates of the detected and estimated face components the bounding boxes of the whole faces are generated. These bounding boxes represent the detected faces and are the output given to the user.