[0:03]Now let's talk about the problem of detecting faces in an image. As you probably know, face detection is a very widely used computer vision technology today. So here is the problem. You're given an image, and you simply want to find all the faces in the image. So a typical face detector would give you an output that looks like this, it places a window around each one of the faces in the image. Now, as you can imagine, you want this kind of a detector to be insensitive to lighting changes. You wanted to be able to handle faces of different sizes because people could be at different distances from the camera. And ideally, you would also want it to be able to handle rotations of the head with respect to the camera. But we're going to keep things somewhat simple here and assume that we're looking at frontal faces. This is when the person is looking straight back at the camera, as is the case in this image shown here. So the problem is simply stated as locating human faces in images. We'll start by first looking at some important applications of face detection. And then we'll raise the following question, what are good features to use for face detection? We know how to compute edges, we know how to compute corners, and sift features. But it turns out that faces are a particular type of appearance, and our goal is to simply discriminate between faces and non-faces. For this we use what are called hard features. Haar features are computed using Haar filters, which are based on Haar wavelets or the square function. They're actually in addition to being very effective, they're also very very efficient to compute. And something that makes them particularly efficient is the use of a representation called the integral image. Given an image, you can quickly compute the integral image and then for any Haar filter you can compute the result in a way that is independent of the size of the filter itself. That makes Haar features particularly attractive. So now at each point in the image, you have a Haar feature vector, and you simply want to classify it as being a face or a non-face. So then we look at the problem of classification. And first we look at nearest neighbor classifiers. Given a vector, you want to find the nearest neighbor in feature space, and simply assign the class of that neighbor to the new vector. But we'll see that nearest neighbor classification is computationally prohibitive given that you have to do it for every pixel in the image. It could be millions of pixels. It's much better if we could actually use simple decision boundaries. And that's exactly what we accomplish using what's called a support vector machine. We'll see what decision boundaries are optimal in the context of classifying either vectors into two classes or multiple classes. We'll see how a support vector machine can be computed for the application of face detection and we'll show some results.

Overview | Face Detection
First Principles of Computer Vision
3m 42s513 words~3 min read
Auto-Generated
Watch on YouTube
Share
MORE TRANSCRIPTS


