Computer Vision: Face Detection with Support Vector Machines
One component on Face Detection is the support vector machines. Detecting faces is finding human faces in images.
We will look at a few different aspects of face detection techniques, including a few classifiers and a couple of machine learning problems as well.
The first question is: Why do we want to detect faces in the first place? Search engines are very effective at face detection. We can prune results saying that we are only look for images of xxxx in them. Another system is tagging people with faces in amages, and now people are tagging faces with high accuracy. Then there is surveillance and monitoring. There are conferences dedicated to all of the faces and images.
Let's now talk about humans. How do humans detect faces? We don't know for sure, but we think we have a description of a model of faces in our memory and match images to that model. There's also gamma neurons, which fire when we come accross a specific person, whether it's our grandmas and Jennifer Aniston. Finally, there is some parallel computing going on, we can do this on multiple scales and faces depending on how far or close they are.
We slide windows of different sizes at each location, and match the window to face model.
For each of these windows, we extract features from the image, from a representation of an image to get a formal representation of faces. In the second step, we match these features to the model of the face to make a decision whether the window matches a face or not. To make this decision, we use machine learning algorithms, and then we look at a couple of decision.
For each window, extract the features, and then use some machine learning algorithm for classification, for 2-way decisions.
We want to discriminate face/non-face. The features from a face and non-face images are very different. Typically we need to evaluate millions of windows in an image, and it can be done for many milliseconds at a time.
Face No face. Both are very good looking but one is a human and the other isn't.
Facial components are easy to compute but the rest is not.
These are good candidates for facial features. Given these 2 requirements, let's go into SIFT. The problem is that SIFT can be very slow to compute.
Here is what the facial components have.
There are certain applications that are subject for concern, and there are systems that will still use these 2 features.
Fortunately, there is 1 features which has been quite popular for face detection, and they are called the Haar filters. White is +1 black is -1. There are a lot of values and for HAAR filters, there are 2 values, +1 and -1.
The filters are fixed and pre-defined like Gaussian Filters and Laplacian Filters. There is no real fixed number of filters, but there is a general recipe for creating these filters, which you can follow to create any number of these filters.
It's not obvious that these filters can be used as interest points, because these are not defined for image pixels but image windows. These are not useful for image stitching, not for local points, but more for windows. All that the feature is doing is extracting some type of representation from the tasks. The Haar features are a very general tool that extend beyond facial recognition, and these are extremely useful where speed is an issue.
This high-level intuition is that these filters look like the gradient filters that we saw earlier. This is because computing gradients is like taking the difference of neighboring pixels. Some filters compute a horizontal difference of pixel directions at a courser scale. Image locations where there is a strong horizontal gradient will get a high response. Not it there is uniform noise. If we have a different filter. like Hd, they are sensitive to intensity gradients in the diagonal direction. These features are not as sophisticated as sift-like features.
SIFT is robust to the scale of objects as well. Haar features have a scale to a certain extent by computing these features at different scales.
Speed nearly compensates for limited flexibility. Remember white means +1 and black means -1.
The correlation is a weighted sum of the image pixels. This is where the special structure of the filter comes in, with +1 and -1. It means that a correlation. We want to take the difference of the sum of pixel intensities in the white area vs the black area.
The computation costs can be expensive, there can be over a trillian (N x M - 1) computations just to process one image. Can we exploit the special structure of these filters. Can we share the computation results across multiple of these computations. Can we leverage filters to get the measurements right?
Suppose there is an integral image, for every location, you store the sum of the intensities of all the pixels to the left of a location and above a location. We will store all of the pixels for a particular rectangular window. We then get a data structure called the integral image, which stores the sum of the integral of pixel intensities. For an [i,j] set it stores the sum of all the pixel intensities from [0,0] to [i,j].
We can use integral imaging to compute the sum of pixel intensities in a rectangular window.
First we see in a green shaded region and see the sum of a rectangular window. The problem is certain windows are wayyy too large, and we want to reduce the size of the window and remove the pixels that are not 100% essential.
Again we are going to find values in this integral image corresponding to chunks of the pixels we want to remove. We subtract the value from the first one and subtract certain corners to get certain values.
In here the sum is Hp - Hq - Hs + Hr, and we can compute the sum of these pixels with only and exactly 3 additions.
To take the sum of pixels and the white window and the sum of pixels in the black windows, we need 7 computations.
A classifier that uses the linear boundary with the maximum margin is called the support vector machine, one of the most common algorithms for classification. This is good to know about. The support vectors are the sample that are the closest to the boundary, and they should be able to support the boundary. It can be shown that the decision boundary and margin depend only on the support vectors.





Comments
Post a Comment