Reputation: 5057
I have read Rapid Object Detection using a Boosted Cascade of Simple Features. In part 3, it defines a weak classifier like this:
My question is: how to specify the threshold theta_j
?
And for strong classfier, my question is like this:
Upvotes: 3
Views: 2679
Reputation: 708
The parameter theta_j
is calculated for each feature by the weak learner. Viola and Jones' approach was better documented in their 2004 version of their paper, and, IMHO, is very similar to a ROC analysis. You must test each one of your weak classifiers against the training set looking for the theta_j
that causes the smallest weighted error. We say "weighted" because we use the w_t,i
values associated with each training sample to weight a misclassification.
For an intuitive answer about the strong classifier threshold, consider that all alpha_t = 1
. This means that you should have at least half of weak classifiers output 1 for x
for the strong classifier output 1 for x
. Remember that the weak classifiers output 1 if they think that x
is a face and 0
otherwise.
In Adaboost, alpha_t
can be thought of as a measure of the weak qualifier quality, i.e. the fewer mistakes the weak classifier makes, the higher its alpha
will be. Since some weak classifiers are better than others, it seems to be a good idea to weight their votes according to their quality. The right hand of the strong classifier inequality reflects that if the weights add up to at least 50% of all the weights, classify x
as 1 (face).
Upvotes: 1
Reputation: 2482
You need to determine theta_j for each feature. This is the training step for the weak classifier. In general, finding the best theta_j depend on the model of your weak classifier. In this particular case, you need to check all values that this particular feature takes on your training data, and see which of those values would lead to the lowest misclassification rate. This will be your theta_j.
Upvotes: 0