Skip to main content

Face Detection using OpenCV and Python.

 

Introduction

Face detection is a computer technology that determines the locations and sizes of human faces in arbitrary (digital) images. It detects facial features and ignores anything else, such as buildings, trees and bodies. Face detection can be regarded as a more general case of face localization. 

The first step in automatic facial recognition is the accurate detection of human faces in an arbitrary scene. When faces are localized exactly, the recognition is performed on the detected face.

Haar Cascade Detection 

It is a machine learning approach where a cascade function is trained from a lot of positive and negative images. This method was proposed by Paul Viola and Michael Jones in their Paper "Rapid Object Detection using a Boosted Cascade of Simple Features" in 2001.
Initially, the algorithm needs a lot of positive (Images of Faces) and negative Images (images without faces) to train the classifier. Then we need to extract Haar features from each image shown below.

Each feature is a single value obtained by subtracting the sum of pixels under white rectangle from the sum of pixels under black rectangle. These features are calculated for all possible location and scale.But among all feature we calculate most of them are irrelevant. 
AdaBoost is used to select the best features out of all possible features.It selects 6000 best features.
These features are applied on each convolutional window of size 24x24 and check out if it is a face or not, it is too much time consuming because most of the region in an image is non-face region.
Therefore we use Cascade of Classifier. Instead of applying all the 6000 feature on a window, group the features into different stages of classifiers and apply one by one.If a window fails at any stage, discard it, we don't consider remaining features on it.

OpenCV comes with a trainer as well as a detector.If you want to train your own classifier for any object like car, planes etc. You can use OpenCV to create your own. I will be covering this in my later post in detail. For now, we will be using a pre-trained classifier.

Implementation in Python

OpenCV contains many pre-trained classifiers for face, body, eyes, number plate etc.

Let's go ahead and dive into some code.


Subscribe and Download Code.
If you like this post,.Subscribe 
To download the code: Click here.

If you have any doubt or suggestion , feel free to ask anything in the comment section.

Thanks.

Comments

  1. Really helpful.
    Very informative blog.
    Thanks for the efforts.

    ReplyDelete

Post a Comment

Popular posts from this blog

Transparent Image overlay(Alpha blending) with OpenCV and Python

(a)Final Blended Image                     (b) Background Image                             (c)Foreground Image                               Alpha blending Alpha blending is the process of overlaying a foreground image with transparency over a background Image. The transparent image is generally a PNG image.It consists of four channels (RGBA).The fourth channel is the alpha channel which holds the transparency magnitude. Image (b) is a background image and image (c) is the foreground / overlay image. Image (a) is the final blended image obtained by blending  the overalay image using the alpha mask.  Below is the image(Fig d) of the alpha channel of the overlay  image. (d).Alpha Channel At every pixel of the image, we blend the background and foreground image color(F) and background color (B) using the alpha mask . At every pixel value of alpha lie in range(0,255), a pixel intensity of 0 means black color and pixel instensity of 255 means whit

Fast Pixel Processing with OpenCV and Python

In this post. I will explain how fast pixel manipulation of an image can be done in Python and OpenCV. Image processing is a CPU intensive task. It involves processing on large arrays. Hence when you are implementing your Image Processing algorithm, you algorithm needs to be highly efficient. The type of operation that can be applied on an Image can be classified into three categories.