![]() |
GestureRecognitionToolkit
Version: 1.0 Revision: 04-03-15
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
|
Public Member Functions | |
HMM (const UINT hmmType=HMM_CONTINUOUS, const UINT modelType=HMM_LEFTRIGHT, const UINT delta=1, const bool useScaling=false, const bool useNullRejection=false) | |
HMM (const HMM &rhs) | |
virtual | ~HMM (void) |
HMM & | operator= (const HMM &rhs) |
virtual bool | deepCopyFrom (const Classifier *classifier) |
virtual bool | train (ClassificationData trainingData) |
virtual bool | train_ (TimeSeriesClassificationData &trainingData) |
virtual bool | predict_ (VectorDouble &inputVector) |
virtual bool | predict_ (MatrixDouble ×eries) |
virtual bool | reset () |
virtual bool | clear () |
virtual bool | print () const |
virtual bool | saveModelToFile (fstream &file) const |
virtual bool | loadModelFromFile (fstream &file) |
UINT | getHMMType () const |
UINT | getModelType () const |
UINT | getDelta () const |
UINT | getNumStates () const |
UINT | getNumSymbols () const |
UINT | getNumRandomTrainingIterations () const |
vector< DiscreteHiddenMarkovModel > | getDiscreteModels () const |
vector< ContinuousHiddenMarkovModel > | getContinuousModels () const |
bool | setHMMType (const UINT hmmType) |
bool | setModelType (const UINT modelType) |
bool | setDelta (const UINT delta) |
bool | setDownsampleFactor (const UINT downsampleFactor) |
bool | setCommitteeSize (const UINT committeeSize) |
bool | setNumStates (const UINT numStates) |
bool | setNumSymbols (const UINT numStates) |
bool | setNumRandomTrainingIterations (const UINT numRandomTrainingIterations) |
bool | setSigma (const double sigma) |
bool | setAutoEstimateSigma (const bool autoEstimateSigma) |
![]() | |
Classifier (void) | |
virtual | ~Classifier (void) |
bool | copyBaseVariables (const Classifier *classifier) |
string | getClassifierType () const |
bool | getSupportsNullRejection () const |
bool | getNullRejectionEnabled () const |
double | getNullRejectionCoeff () const |
double | getMaximumLikelihood () const |
double | getBestDistance () const |
double | getPhase () const |
virtual UINT | getNumClasses () const |
UINT | getClassLabelIndexValue (UINT classLabel) const |
UINT | getPredictedClassLabel () const |
VectorDouble | getClassLikelihoods () const |
VectorDouble | getClassDistances () const |
VectorDouble | getNullRejectionThresholds () const |
vector< UINT > | getClassLabels () const |
vector< MinMax > | getRanges () const |
bool | enableNullRejection (bool useNullRejection) |
virtual bool | setNullRejectionCoeff (double nullRejectionCoeff) |
virtual bool | setNullRejectionThresholds (VectorDouble newRejectionThresholds) |
virtual bool | recomputeNullRejectionThresholds () |
bool | getTimeseriesCompatible () const |
Classifier * | createNewInstance () const |
Classifier * | deepCopy () const |
const Classifier * | getClassifierPointer () const |
const Classifier & | getBaseClassifier () const |
![]() | |
MLBase (void) | |
virtual | ~MLBase (void) |
bool | copyMLBaseVariables (const MLBase *mlBase) |
virtual bool | train_ (ClassificationData &trainingData) |
virtual bool | train (RegressionData trainingData) |
virtual bool | train_ (RegressionData &trainingData) |
virtual bool | train (TimeSeriesClassificationData trainingData) |
virtual bool | train (TimeSeriesClassificationDataStream trainingData) |
virtual bool | train_ (TimeSeriesClassificationDataStream &trainingData) |
virtual bool | train (UnlabelledData trainingData) |
virtual bool | train_ (UnlabelledData &trainingData) |
virtual bool | train (MatrixDouble data) |
virtual bool | train_ (MatrixDouble &data) |
virtual bool | predict (VectorDouble inputVector) |
virtual bool | predict (MatrixDouble inputMatrix) |
virtual bool | map (VectorDouble inputVector) |
virtual bool | map_ (VectorDouble &inputVector) |
virtual bool | save (const string filename) const |
virtual bool | load (const string filename) |
virtual bool | saveModelToFile (string filename) const |
virtual bool | loadModelFromFile (string filename) |
virtual bool | getModel (ostream &stream) const |
double | scale (const double &x, const double &minSource, const double &maxSource, const double &minTarget, const double &maxTarget, const bool constrain=false) |
virtual string | getModelAsString () const |
UINT | getBaseType () const |
UINT | getNumInputFeatures () const |
UINT | getNumInputDimensions () const |
UINT | getNumOutputDimensions () const |
UINT | getMinNumEpochs () const |
UINT | getMaxNumEpochs () const |
UINT | getValidationSetSize () const |
UINT | getNumTrainingIterationsToConverge () const |
double | getMinChange () const |
double | getLearningRate () const |
double | getRootMeanSquaredTrainingError () const |
double | getTotalSquaredTrainingError () const |
bool | getUseValidationSet () const |
bool | getRandomiseTrainingOrder () const |
bool | getTrained () const |
bool | getModelTrained () const |
bool | getScalingEnabled () const |
bool | getIsBaseTypeClassifier () const |
bool | getIsBaseTypeRegressifier () const |
bool | getIsBaseTypeClusterer () const |
bool | enableScaling (bool useScaling) |
bool | setMaxNumEpochs (const UINT maxNumEpochs) |
bool | setMinNumEpochs (const UINT minNumEpochs) |
bool | setMinChange (const double minChange) |
bool | setLearningRate (double learningRate) |
bool | setUseValidationSet (const bool useValidationSet) |
bool | setValidationSetSize (const UINT validationSetSize) |
bool | setRandomiseTrainingOrder (const bool randomiseTrainingOrder) |
bool | registerTrainingResultsObserver (Observer< TrainingResult > &observer) |
bool | registerTestResultsObserver (Observer< TestInstanceResult > &observer) |
bool | removeTrainingResultsObserver (const Observer< TrainingResult > &observer) |
bool | removeTestResultsObserver (const Observer< TestInstanceResult > &observer) |
bool | removeAllTrainingObservers () |
bool | removeAllTestObservers () |
bool | notifyTrainingResultsObservers (const TrainingResult &data) |
bool | notifyTestResultsObservers (const TestInstanceResult &data) |
MLBase * | getMLBasePointer () |
const MLBase * | getMLBasePointer () const |
vector< TrainingResult > | getTrainingResults () const |
![]() | |
GRTBase (void) | |
virtual | ~GRTBase (void) |
bool | copyGRTBaseVariables (const GRTBase *GRTBase) |
string | getClassType () const |
string | getLastWarningMessage () const |
string | getLastErrorMessage () const |
string | getLastInfoMessage () const |
GRTBase * | getGRTBasePointer () |
const GRTBase * | getGRTBasePointer () const |
![]() | |
virtual void | notify (const TrainingResult &data) |
![]() | |
virtual void | notify (const TestInstanceResult &data) |
Protected Member Functions | |
bool | train_discrete (TimeSeriesClassificationData &trainingData) |
bool | train_continuous (TimeSeriesClassificationData &trainingData) |
bool | predict_discrete (VectorDouble &inputVector) |
bool | predict_continuous (VectorDouble &inputVector) |
bool | predict_discrete (MatrixDouble ×eries) |
bool | predict_continuous (MatrixDouble ×eries) |
bool | convertDataToObservationSequence (TimeSeriesClassificationData &classData, vector< vector< UINT > > &observationSequences) |
bool | loadLegacyModelFromFile (fstream &file) |
![]() | |
bool | saveBaseSettingsToFile (fstream &file) const |
bool | loadBaseSettingsFromFile (fstream &file) |
![]() | |
bool | saveBaseSettingsToFile (fstream &file) const |
bool | loadBaseSettingsFromFile (fstream &file) |
![]() | |
double | SQR (const double &x) const |
Protected Attributes | |
UINT | hmmType |
Controls if this is a HMM_DISCRETE or a HMM_CONTINUOUS. | |
UINT | modelType |
UINT | delta |
UINT | numStates |
UINT | numSymbols |
UINT | numRandomTrainingIterations |
vector< DiscreteHiddenMarkovModel > | discreteModels |
UINT | downsampleFactor |
UINT | committeeSize |
double | sigma |
bool | autoEstimateSigma |
vector< ContinuousHiddenMarkovModel > | continuousModels |
![]() | |
string | classifierType |
bool | supportsNullRejection |
bool | useNullRejection |
UINT | numClasses |
UINT | predictedClassLabel |
UINT | classifierMode |
double | nullRejectionCoeff |
double | maxLikelihood |
double | bestDistance |
double | phase |
VectorDouble | classLikelihoods |
VectorDouble | classDistances |
VectorDouble | nullRejectionThresholds |
vector< UINT > | classLabels |
vector< MinMax > | ranges |
![]() | |
bool | trained |
bool | useScaling |
UINT | baseType |
UINT | numInputDimensions |
UINT | numOutputDimensions |
UINT | numTrainingIterationsToConverge |
UINT | minNumEpochs |
UINT | maxNumEpochs |
UINT | validationSetSize |
double | learningRate |
double | minChange |
double | rootMeanSquaredTrainingError |
double | totalSquaredTrainingError |
bool | useValidationSet |
bool | randomiseTrainingOrder |
Random | random |
vector< TrainingResult > | trainingResults |
TrainingResultsObserverManager | trainingResultsObserverManager |
TestResultsObserverManager | testResultsObserverManager |
![]() | |
string | classType |
DebugLog | debugLog |
ErrorLog | errorLog |
InfoLog | infoLog |
TrainingLog | trainingLog |
TestingLog | testingLog |
WarningLog | warningLog |
Static Protected Attributes | |
static RegisterClassifierModule< HMM > | registerModule |
Additional Inherited Members | |
![]() | |
typedef std::map< string, Classifier *(*)() > | StringClassifierMap |
![]() | |
enum | BaseTypes { BASE_TYPE_NOT_SET =0, CLASSIFIER, REGRESSIFIER, CLUSTERER } |
![]() | |
static Classifier * | createInstanceFromString (string const &classifierType) |
static vector< string > | getRegisteredClassifiers () |
![]() | |
static string | getGRTVersion (bool returnRevision=true) |
static string | getGRTRevison () |
![]() | |
enum | ClassifierModes { STANDARD_CLASSIFIER_MODE =0, TIMESERIES_CLASSIFIER_MODE } |
![]() | |
static StringClassifierMap * | getMap () |
HMM::HMM | ( | const UINT | hmmType = HMM_CONTINUOUS , |
const UINT | modelType = HMM_LEFTRIGHT , |
||
const UINT | delta = 1 , |
||
const bool | useScaling = false , |
||
const bool | useNullRejection = false |
||
) |
Default Constructor.
Sets up the HMM instance with default parameters.
const | UINT hmmType: sets the HMM type, this should be either HMM_DISCRETE or HMM_CONTINUOUS. Default: HMM_CONTINUOUS |
const | UINT modelType: sets the model type used by either the discrete or continuous hmm. This should be either HMM_ERGODIC or HMM_LEFTRIGHT. Default: HMM_LEFTRIGHT |
const | UINT delta: sets the number of states a model can transistion to for a HMM_LEFTRIGHT model. Default: 1 |
const | UINT useScaling: sets if the training/input data should be scaled to the range [0 1]. Default: false |
const | UINT useNullRejection: sets if the algorithm should use null rejection (i.e., automatically gesture spotting). Default: false |
HMM::HMM | ( | const HMM & | rhs | ) |
|
virtual |
This overrides the clear function in the Classifier base class. It will completely clear the ML module, removing any trained model and setting all the base variables to their default values.
Reimplemented from GRT::Classifier.
|
virtual |
This is required for the Gesture Recognition Pipeline for when the pipeline.setClassifier(...) method is called. It clones the data from the Base Class Classifier pointer (which should be pointing to an HMM instance) into this instance
Classifier | *classifier: a pointer to the Classifier Base Class, this should be pointing to another HMM instance |
Reimplemented from GRT::Classifier.
vector< ContinuousHiddenMarkovModel > HMM::getContinuousModels | ( | ) | const |
This function gets returns a vector of trained ContinuousHiddenMarkovModels. There will be one HiddenMarkovModel for each sample in the training data. This is only relevant if the HMM model type is HMM_CONTINUOUS.
UINT HMM::getDelta | ( | ) | const |
vector< DiscreteHiddenMarkovModel > HMM::getDiscreteModels | ( | ) | const |
This function gets returns a vector of trained DiscreteHiddenMarkovModels. There will be one HiddenMarkovModel for each class in the training data. This is only relevant if the HMM model type is HMM_DISCRETE.
UINT HMM::getHMMType | ( | ) | const |
UINT HMM::getModelType | ( | ) | const |
UINT HMM::getNumRandomTrainingIterations | ( | ) | const |
This function gets the number of random training iterations used to train each discrete HMM.
The accuracy of the Baum Welch algorithm can be effected by the starting values of the A, B, and PI matrices. The HMM algorithm therefore tries several different starting values and then continues to train the algorithm with the best settings.
The number of random training iterations parameter therefore controls the number of different starting values.
UINT HMM::getNumStates | ( | ) | const |
UINT HMM::getNumSymbols | ( | ) | const |
|
virtual |
This loads a trained HMM model from a file. This overrides the loadModelFromFile function in the Classifier base class.
fstream | &file: a reference to the file the HMM model will be loaded from |
Reimplemented from GRT::MLBase.
|
virtual |
This predicts the class of the inputVector. This overrides the predict function in the Classifier base class.
VectorDouble | inputVector: the input vector to classify |
Reimplemented from GRT::MLBase.
|
virtual |
This predicts the class of the timeseries. This overrides the predict function in the Classifier base class.
MatrixDouble | timeSeries: the input timeseries to classify |
Reimplemented from GRT::MLBase.
|
virtual |
This is the main print interface for all the GRT machine learning algorithms. This should be overwritten by the derived class. It will print the model and settings to the display log.
Reimplemented from GRT::MLBase.
|
virtual |
This resets the HMM classifier.
Reimplemented from GRT::Classifier.
|
virtual |
This saves the trained HMM model to a file. This overrides the saveModelToFile function in the Classifier base class.
fstream | &file: a reference to the file the HMM model will be saved to |
Reimplemented from GRT::MLBase.
bool HMM::setCommitteeSize | ( | const UINT | committeeSize | ) |
This function sets the committeeSize used for a HMM_CONTINUOUS. The commitee size controls the number of votes used to make a prediction for a continuous HMM. For example, if the committeeSize is 5, then the top 5 estimations will be combined togethere
The parameter must be greater than zero. This will NOT clear any trained model.
const | UINT committeeSize: the committeeSize used for a continuous HMM |
bool HMM::setDelta | ( | const UINT | delta | ) |
This function sets the delta parameter in each HMM.
The delta value controls how many states a model can transition to if the LEFTRIGHT model type is used.
The parameter must be greater than zero.
This will clear any trained model.
const | UINT delta: the delta parameter used for each HMM |
bool HMM::setDownsampleFactor | ( | const UINT | downsampleFactor | ) |
This function sets the downsample factor used for a HMM_CONTINUOUS. The downsample factor controls the resampling of each training timeseries for the continuous HMM. A downsample factor of 5, for instance, will result in each timeseries being resized (smaller) by a factor of 5. Increasing the downsample factor will significantly increase the realtime prediction time for each model, however, setting this value too high may reduce the overall accuracy of the model.
The parameter must be greater than zero. This will clear any trained model.
const | UINT downsampleFactor: the downsample factor used for a continuous HMM |
bool HMM::setHMMType | ( | const UINT | hmmType | ) |
bool HMM::setModelType | ( | const UINT | modelType | ) |
bool HMM::setNumRandomTrainingIterations | ( | const UINT | numRandomTrainingIterations | ) |
This function sets the number of random training iterations used to train each HMM.
The accuracy of the Baum Welch algorithm can be effected by the starting values of the A, B, and PI matrices. The HMM algorithm therefore tries several different starting values and then continues to train the algorithm with the best settings. The number of random training iterations parameter therefore controls the number of different starting values.
This will clear any trained model.
const | UINT numRandomTrainingIterations: the number of random training iterations used to train each HMM |
bool HMM::setNumStates | ( | const UINT | numStates | ) |
This function sets the number of states for a HMM_DISCRETE.
The parameter must be greater than zero. This will clear any trained model.
const | UINT numStates: the number of states in each HMM |
bool HMM::setNumSymbols | ( | const UINT | numStates | ) |
This function sets the number of symbols for a HMM_DISCRETE. The parameter must be greater than zero. This will clear any trained model.
const | UINT symbols: the number of symbols in each HMM |
bool HMM::setSigma | ( | const double | sigma | ) |
This function sets the sigma parameter used for HMM_CONTINUOUS.
Sigma controls the width of the Gaussian distance function that estimates the similarity between the input sample and the model.
Modifing sigma will NOT clear the trained model, enabling the user to tune this parameter when needed.
Sigma must be greater than zero.
const | double sigma: the new sigma parameter |
|
virtual |
This overrides the train function in the Classifier base class. It simply prints a warning message stating that the bool train(LabelledTimeSeriesClassificationData trainingData) function should be used to train the HMM model.
ClassificationData | trainingData: a reference to the training data |
Reimplemented from GRT::MLBase.
|
virtual |
This trains the HMM model, using the labelled timeseries classification data. This is the main training function for the HMM class. This overrides the train function in the Classifier base class.
TimeSeriesClassificationData | trainingData: a reference to the training data |
Reimplemented from GRT::MLBase.