You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
3.1 KiB
63 lines
3.1 KiB
#include "opencv2/core.hpp" |
|
#include <iostream> |
|
#include <string> |
|
|
|
using namespace cv; |
|
using namespace std; |
|
int main(int argc,const char ** argv){ |
|
CommandLineParser parser(argc, argv, |
|
"{ help h usage ? | | give the following arguments in following format }" |
|
"{ filename f |. | (required) path to file which you want to create as config file [example - /data/config.xml] }" |
|
"{ cascade_depth cd | 10 | (required) This stores the depth of cascade of regressors used for training.}" |
|
"{ tree_depth td | 4 | (required) This stores the depth of trees created as weak learners during gradient boosting.}" |
|
"{ num_trees_per_cascade_level| 500 | (required) This stores number of trees required per cascade level.}" |
|
"{ learning_rate | 0.1 | (required) This stores the learning rate for gradient boosting.}" |
|
"{ oversampling_amount | 20 | (required) This stores the oversampling amount for the samples.}" |
|
"{ num_test_coordinates | 400 | (required) This stores number of test coordinates required for making the split.}" |
|
"{ lambda | 0.1 | (required) This stores the value used for calculating the probabilty.}" |
|
"{ num_test_splits | 20 | (required) This stores the number of test splits to be generated before making the best split.}" |
|
); |
|
// Read in the input arguments |
|
if (parser.has("help")){ |
|
parser.printMessage(); |
|
cerr << "TIP: Use absolute paths to avoid any problems with the software!" << endl; |
|
return 0; |
|
} |
|
//These variables have been initialised as defined in the research paper "One millisecond face alignment" CVPR 2014 |
|
int cascade_depth = 15; |
|
int tree_depth = 4; |
|
int num_trees_per_cascade_level = 500; |
|
float learning_rate = float(0.1); |
|
int oversampling_amount = 20; |
|
int num_test_coordinates = 400; |
|
float lambda = float(0.1); |
|
int num_test_splits = 20; |
|
|
|
cascade_depth = parser.get<int>("cascade_depth"); |
|
tree_depth = parser.get<int>("tree_depth"); |
|
num_trees_per_cascade_level = parser.get<int>("num_trees_per_cascade_level"); |
|
learning_rate = parser.get<float>("learning_rate"); |
|
oversampling_amount = parser.get<int>("oversampling_amount"); |
|
num_test_coordinates = parser.get<int>("num_test_coordinates"); |
|
lambda = parser.get<float>("lambda"); |
|
num_test_splits = parser.get<int>("num_test_splits"); |
|
string filename(parser.get<string>("filename")); |
|
FileStorage fs(filename, FileStorage::WRITE); |
|
if (!fs.isOpened()) |
|
{ |
|
cerr << "Failed to open " << filename << endl; |
|
parser.printMessage(); |
|
return -1; |
|
} |
|
fs << "cascade_depth" << cascade_depth; |
|
fs << "tree_depth"<< tree_depth; |
|
fs << "num_trees_per_cascade_level" << num_trees_per_cascade_level; |
|
fs << "learning_rate" << learning_rate; |
|
fs << "oversampling_amount" << oversampling_amount; |
|
fs << "num_test_coordinates" << num_test_coordinates; |
|
fs << "lambda" << lambda ; |
|
fs << "num_test_splits"<< num_test_splits; |
|
fs.release(); |
|
cout << "Write Done." << endl; |
|
return 0; |
|
}
|
|
|