face-detectionobject-detectionviola-jones

Viola - jones adaboost method


I have read the paper about Viola-Jones method for object detection and am confused by a few things.

1 - For Adaboost does each round mean that we calculate all the 160k features across all images then find the one with the least error (which as i understand is a 'weak classifier? please correct me if I am wrong). If yes then won't this take extremely long to train on a large set of images which can take months ? And also how many rounds will you run it for if this is correct.

2- If the above point is wrong then does it mean that for each feature, we evaluate all the non-face and face images with one feature and compare it to a certain acceptable threshold of error, and if it lies below this acceptable threshold then we take this feature as a weak classifier and then update the weights before using the next feature from the 160k features.

I have tried understanding the MATLAB code in this link http://www.ece301.com/ml-doc/54-face-detect-matlab-1.html but not sure if the way he implemented adaboost was correct.

It would also be a great help if there was a link that would explain adaboost used by Viola-Jones in a simple and clear way.


Solution

  • AdaBoost tries out multiple weak classifier over several rounds , Selecting the best weak classifier in each round and combining the best classifier to create a strong classifier.

    Example for adaboost :

     Data point    Classifier 1  Classifier 2     Classifier 3
     x1             Fail           pass             fail     
     x2             Pass           fail             pass 
     x3             fail           pass             pass 
     x4             pass           fail             pass
    

    AdaBoost can use classifier that are consistently wrong by reversing their decision .