It is light random forest for prediction. The implementation is exact as the Piotr Dollar's. In this directory include two files:
- forest.hpp: does random forest prediction (label and probabilities)
- convertPiotrRF2Cpp.m: convert Piotr Dollar's random forest model into *.txt so that the previous C++ file could read it.
This implementation requires much lower amoung memory for random forest model, does not like OpenCV version. This version requires x100 lesser than OpenCV
From Matlab:
X = [randn(100,2); randn(100,2)];
y = [ones(100,1); 2*ones(100,1)]; % just 2 labels (1 and 2)
model = forestTrain(X,y,'M', 20); % here, trains a random forest of 20 trees
convertPiotrRF3Cpp(model, 'model.txt'); % here, does conversion
From C++:
#include "forest.hpp"
...
Forest forest;
forest.read("model.txt"); // read random forest model
float X[2] = {0.1, 0.2};
float *probabilities = new float[2]; // just 2 labels
memset(probabilities, 0, sizeof(float) * 2);
int label = forest.predict(X, probabilities);
// probabilities[0] is probability of label 1
// probabilities[1] is probability of label 2
...