![]() |
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 Types | |
enum | DistanceMethods { ABSOLUTE_DIST =0, EUCLIDEAN_DIST, NORM_ABSOLUTE_DIST } |
enum | RejectionModes { TEMPLATE_THRESHOLDS =0, CLASS_LIKELIHOODS, THRESHOLDS_AND_LIKELIHOODS } |
![]() | |
typedef std::map< string, Classifier *(*)() > | StringClassifierMap |
![]() | |
enum | BaseTypes { BASE_TYPE_NOT_SET =0, CLASSIFIER, REGRESSIFIER, CLUSTERER } |
Public Member Functions | |
DTW (bool useScaling=false, bool useNullRejection=false, double nullRejectionCoeff=3.0, UINT rejectionMode=DTW::TEMPLATE_THRESHOLDS, bool dtwConstrain=true, double radius=0.2, bool offsetUsingFirstSample=false, bool useSmoothing=false, UINT smoothingFactor=5) | |
DTW (const DTW &rhs) | |
virtual | ~DTW (void) |
DTW & | operator= (const DTW &rhs) |
virtual bool | deepCopyFrom (const Classifier *classifier) |
virtual bool | train_ (TimeSeriesClassificationData &trainingData) |
virtual bool | predict_ (VectorDouble &inputVector) |
virtual bool | predict_ (MatrixDouble &timeSeries) |
virtual bool | reset () |
virtual bool | clear () |
virtual bool | saveModelToFile (fstream &file) const |
virtual bool | loadModelFromFile (fstream &file) |
virtual bool | recomputeNullRejectionThresholds () |
UINT | getNumTemplates () |
bool | setRejectionMode (UINT rejectionMode) |
bool | setOffsetTimeseriesUsingFirstSample (bool offsetUsingFirstSample) |
bool | setContrainWarpingPath (bool constrain) |
bool | setWarpingRadius (double radius) |
UINT | getRejectionMode () |
bool | enableZNormalization (bool useZNormalization, bool constrainZNorm=true) |
bool | enableTrimTrainingData (bool trimTrainingData, double trimThreshold, double maximumTrimPercentage) |
vector< DTWTemplate > | getModels () |
bool | setModels (vector< DTWTemplate > newTemplates) |
vector< VectorDouble > | getInputDataBuffer () |
vector< MatrixDouble > | getDistanceMatrices () |
vector< vector< IndexDist > > | getWarpingPaths () |
![]() | |
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) |
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_ (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 | print () const |
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 | 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 | |
vector< DTWTemplate > | templatesBuffer |
vector< MatrixDouble > | distanceMatrices |
vector< vector< IndexDist > > | warpPaths |
CircularBuffer< VectorDouble > | continuousInputDataBuffer |
UINT | numTemplates |
UINT | rejectionMode |
bool | useSmoothing |
bool | useZNormalisation |
bool | offsetUsingFirstSample |
bool | constrainZNorm |
bool | constrainWarpingPath |
bool | trimTrainingData |
double | zNormConstrainThreshold |
double | radius |
double | trimThreshold |
double | maximumTrimPercentage |
UINT | smoothingFactor |
UINT | distanceMethod |
UINT | averageTemplateLength |
![]() | |
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 |
Additional Inherited Members | |
![]() | |
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 () |
GRT::DTW::DTW | ( | bool | useScaling = false , |
bool | useNullRejection = false , |
||
double | nullRejectionCoeff = 3.0 , |
||
UINT | rejectionMode = DTW::TEMPLATE_THRESHOLDS , |
||
bool | dtwConstrain = true , |
||
double | radius = 0.2 , |
||
bool | offsetUsingFirstSample = false , |
||
bool | useSmoothing = false , |
||
UINT | smoothingFactor = 5 |
||
) |
Default Constructor
bool | useScaling: sets if the training and prediction data should be scaled to a specific range. Default value is useScaling = false |
bool | useNullRejection: sets if null rejection will be used for the realtime prediction. If useNullRejection is set to true then the predictedClassLabel will be set to 0 (which is the default null label) if the distance between the inputVector and the closest template is greater than the null rejection threshold for the top predicted class. The null rejection threshold is computed for each class during the training phase. Default value is useNullRejection = false |
double | nullRejectionCoeff: sets the null rejection coefficient, this is a multipler controlling the null rejection threshold for each class. This will only be used if the useNullRejection parameter is set to true. Default value is nullRejectionCoeff = 3.0 |
UINT | rejectionMode: sets the method used for null rejection. The options are TEMPLATE_THRESHOLDS, CLASS_LIKELIHOODS or THRESHOLDS_AND_LIKELIHOODS. Default = TEMPLATE_THRESHOLDS |
bool | dtwConstrain: sets if the DTW warping path should be constrained within a specific distance from the main radius of the cost matrix. Default value = true |
double | radius: controls the radius of the warping path, which is used if the dtwConstrain is set to true. Should be a value between [0 1]. Default value = 0.2 |
bool | offsetUsingFirstSample: sets if each timeseries should be offset by the first sample in the timeseries. Default value = false |
bool | useSmoothing: sets if the input timeseries should be smoothed (i.e. averaged and downsampled). Default value = false |
UINT | smoothingFactor: controls the amount of downsampling if the useSmoothing parameter is set to true. Default value = 5 |
GRT::DTW::DTW | ( | const DTW & | 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 DTW instance) into this instance
Classifier | *classifier: a pointer to the Classifier Base Class, this should be pointing to another DTW instance |
Reimplemented from GRT::Classifier.
bool GRT::DTW::enableTrimTrainingData | ( | bool | trimTrainingData, |
double | trimThreshold, | ||
double | maximumTrimPercentage | ||
) |
Sets if the training data should be trimmed before training the DTW templates. If set to true then any training samples that have very little movement at the start or end of a file will be trimmed so as to remove the none movement at the start or end of the file. This can be useful if some of your examples have a section were the user paused before performing a gesture, or were the recording continued for a few seconds after the gesture ended. The trimThreshold and maximumTrimPrecentage parameters control how extreme the trimming can be. The trimThreshold should be in a range of [0 1] and the maximumTrimPrecentage should be in a range of [0 100]. If the amount of energy in the timeseries is below the trimThreshold then it will be trimmed.
Note that if the trimming mode is enabled, and a time series sample exceeds the maximumTrimPercentage, then that sample will not be added to the modified (trimmed) training dataset. If any sample exceeds the maximumTrimPercentage then a warning message will be displayed via the DTW trainingLog (unless the trainingLog's logging has been disabled).
bool | trimTrainingData: if true, then the training examples will be trimmed prior to training the DTW templates |
double | trimThreshold: the trimThreshold sets the threshold at which the data should be trimmed. This should be in a range of [0 1] |
double | maximumTrimPercentage: this sets the maximum amount of data that can be trimmed for one example. This should be in the range of [0 100] |
bool GRT::DTW::enableZNormalization | ( | bool | useZNormalization, |
bool | constrainZNorm = true |
||
) |
Sets if z-normalization should be used for both training and realtime prediction. This should be called before training the templates.
bool | useZNormalization: if true then the data will be z-normalized before both training and prediction |
bool | constrainZNorm: if true then the data will only be z-normalized if the std-dev of the data is below a specific threshold |
|
inline |
Gets the distances matrices from the last prediction. Each element in the vector represents the distance matrices for each corresponding class.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Gets the warping paths from the last prediction. Each element in the vector represents the warping path for each corresponding class.
|
virtual |
This loads a trained DTW model from a file. This overrides the loadModelFromFile function in the Classifier base class.
fstream | &file: a reference to the file the DTW 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 recomputes the null rejection thresholds for each of the classes in the DTW model. This will be called automatically if the setGamma(double gamma) function is called. The DTW model needs to be trained first before this function can be called.
Reimplemented from GRT::Classifier.
|
virtual |
This resets the DTW classifier.
Reimplemented from GRT::Classifier.
|
virtual |
This saves the trained DTW model to a file. This overrides the saveModelToFile function in the Classifier base class.
fstream | &file: a reference to the file the DTW model will be saved to |
Reimplemented from GRT::MLBase.
bool GRT::DTW::setContrainWarpingPath | ( | bool | constrain | ) |
Sets if the warping path should be constrained to within a specific radius from the main diagonal of the cost matrix.
bool | constrain: if true then the warping path should be constrained |
bool GRT::DTW::setModels | ( | vector< DTWTemplate > | newTemplates | ) |
bool GRT::DTW::setOffsetTimeseriesUsingFirstSample | ( | bool | offsetUsingFirstSample | ) |
Sets if each timeseries should be offset by the first sample in the timeseries. This can help the DTW algorithm be more invariant to the position a gesture is performed without having to normalize the data. You shoud call this function before training the algorithm.
bool | offsetUsingFirstSample: sets if each timeseries should be offset by the first sample in the timeseries |
bool GRT::DTW::setRejectionMode | ( | UINT | rejectionMode | ) |
bool GRT::DTW::setWarpingRadius | ( | double | radius | ) |
Sets the warping radius, this is used to constrain the warping path within a specific radius from the main diagonal of the cost matrix. This is only used if the #constrainWarpingPath parameter is set to true. The radius should be a value between [0 1].
double | radius: the new warping radius (should be between [0 1] |
|
virtual |
This trains the DTW model, using the labelled timeseries classification data. This overrides the train function in the Classifier base class.
TimeSeriesClassificationData | trainingData: a reference to the training data |
Reimplemented from GRT::MLBase.