Parameters for training face landmark detector

The configuration file mentioned below contains the training parameters which are required for training. Description of parameters is as follows:

  1. Cascade depth: This stores the depth of cascade of regressors used for training.
  2. Tree depth: This stores the depth of trees created as weak learners during gradient boosting.
  3. Number of trees per cascade level: This stores number of trees required per cascade level.
  4. Learning rate: This stores the learning rate for gradient boosting. This is required to prevent overfitting using shrinkage.
  5. Oversampling amount: This stores the oversampling amount for the samples.
  6. Number of test coordinates: This stores number of test coordinates to be generated as samples to decide for making the split.
  7. Lambda: This stores the value used for calculating the probabilty which helps to select closer pixels for making the split.
  8. Number of test splits: This stores the number of test splits to be generated before making the best split.

To get more detailed description about the training parameters you can refer to the Research paper.

These variables have been initialised below as defined in the research paper "One millisecond face alignment" CVPR 2014

Sources:

% [OUTPUT] path to file which you want to create as config file
configFile = fullfile(tempdir(), 'config_kazemi.xml');

S = struct();

% stores the depth of cascade of regressors used for training.
S.cascade_depth = uint32(15);

% stores the depth of trees created as weak learners during gradient boosting.
S.tree_depth = uint32(4);

% stores number of trees required per cascade level.
S.num_trees_per_cascade_level = uint32(500);

% stores the learning rate for gradient boosting.
S.learning_rate = 0.1;

% stores the oversampling amount for the samples.
S.oversampling_amount = uint32(20);

% stores number of test coordinates required for making the split.
S.num_test_coordinates = uint32(400);

% stores the value used for calculating the probabilty.
S.lambda = 0.1;

% stores the number of test splits to be generated before making the best split.
S.num_test_splits = uint32(20);

% write file
cv.FileStorage(configFile, S);
disp('Write Done')
type(configFile)
Write Done

<?xml version="1.0"?>
<opencv_storage>
<cascade_depth>15</cascade_depth>
<tree_depth>4</tree_depth>
<num_trees_per_cascade_level>500</num_trees_per_cascade_level>
<learning_rate>1.0000000000000001e-01</learning_rate>
<oversampling_amount>20</oversampling_amount>
<num_test_coordinates>400</num_test_coordinates>
<lambda>1.0000000000000001e-01</lambda>
<num_test_splits>20</num_test_splits>
</opencv_storage>