[[ Face Detection ]] and Smile Classifier

Patrick Wong, Eric Chan, Gregory Peaker

Home | Face Detection | Smile Classifier | Results | Full Paper

Introduction

The first part of the project is to detect human faces in a given image. Human face detection has become a major field of research over the past decade, and currently there is no deterministic algorithm that accurately detects faces for a variety of environments. Our approach to this problem is to utilize a mixture of these known algorithms to sufficiently detect a face and pass it further to the next part of our project for further analysis. We can define our entire face detection algorithm as a series of rejection blocks, where the input image is passed into several scripts to be filtered and is then passed into the last script for the face detection. The 3 main steps of this series are color segmentation, morphological transformation with size filtering and finally face detection using neural networks. The full explanation of the algorithms we used for each section is described in our paper. Below we demonstrate our algorithm using an image of Metallica as input.

Percentage of white found

Color Segmentation

The first task in our series of rejection to refine the image is skin color segmentation. We used a histogram-based color segmentation approach to accomplish this. Using strict confidence thresholding, we were able to filter out most non-skin colored pixels and obtained the following results:

Percentage of white found

Morphological Image Processing and Size Filtering

The resulting image that we obtained after color segmentation would still contain some noise, which is made up of scattered skin pixels and maybe some arbitrary pixels of other objects that share similar tones to that of the skin. It is also possible that some pixels are missing within regions of a face because the segmentation was too strict, thus removing some pixels which are actually real skin. To obtain a cleaner image, we’ve implemented several morphological operations to fill up holes between skin regions and to remove irrelevant noise. Next, we implement and apply a size filter to filter out remaining regions that are oversized or well below the average size of the human face in a particular image.

Percentage of white found

Face Detection Using Neural Networks

With the previous refinement and filtering procedures, we are finally ready to detect faces. In the final step of face detection, we’ve decided to train our data using a neural network and have it do template matching for face detection. Iterating through the entire picture, the face detector looks for a region and proceeds to extract possible facial features in that region. The features are then tested with the trained neural network to rectify if they are indeed facial features (eyes,mouth,etc). Given that they match within a certain threshold, we label that region as a face.

Percentage of white found