Multi scale face detector using HOG features and support vector machine

In this part, I trained an SVM over images of  “face” or “not face” (36 × 36 pixels), using HOG features. I used VLFeat library for both HOG and the SVM.

Example of face images:

Example of nonface images:

I divided the dataset into a training and a test set (80% and 20% respectively) and computed the HOG features for all of training and validation images. To improve the performance, images in training set could be flipped so we double the number of items in the training set.

Then I trained an SVM on the features from the training set. After finding weights and bias, I tested validation set and these are the results:

Classifier performance on train data:

accuracy: 0.990
true positive rate: 0.493
false positive rate: 0.003
true negative rate: 0.497
false negative rate: 0.007

Classifier performance on validation data:

accuracy: 0.987
true positive rate: 0.490
false positive rate: 0.003
true negative rate: 0.497
false negative rate: 0.010

   

 

Adding non-maximum suppression

“non-maximum suppression” means if two bounding boxes have overlap and the overlap is higher than a given threshold, we take the one has a more confident scorer.

The after and before result of this step can be seen in the following samples:

before non-maximum suppression.

After non-maximum suppression.

before non-maximum suppression.

After non-maximum suppression.

Multiscaling face detection

Our face detector has been trained on the face of size 36×36, so we might get a poor result if the size of person’s face in the image is very larger than 36×36, so we resize our images and then we apply the face detector.

And the results improved:

 

Reference for materials and scripts:

[1] http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/

[2] http://www.cc.gatech.edu/~hays/compvision/proj5/

 

Leave a Reply

avatar
  Subscribe  
Notify of