GestureRecognitionToolkit  Version: 0.2.0
The Gesture Recognition Toolkit (GRT) is a cross-platform, open-source, c++ machine learning library for real-time gesture recognition.
HMM.h
Go to the documentation of this file.
1 
31 #ifndef GRT_HMM_HEADER
32 #define GRT_HMM_HEADER
33 
34 #include "HMMEnums.h"
37 #include "../../CoreModules/Classifier.h"
38 
39 GRT_BEGIN_NAMESPACE
40 
41 class GRT_API HMM : public Classifier
42 {
43 public:
55  HMM(const UINT hmmType=HMM_CONTINUOUS,const UINT modelType=HMM_LEFTRIGHT,const UINT delta=1,const bool useScaling = false,const bool useNullRejection = false);
56 
64  HMM(const HMM &rhs);
65 
69  virtual ~HMM(void);
70 
79  HMM& operator=(const HMM &rhs);
80 
88  virtual bool deepCopyFrom(const Classifier *classifier);
89 
97  virtual bool train(ClassificationData trainingData);
98 
107  virtual bool train_(TimeSeriesClassificationData &trainingData);
108 
116  virtual bool predict_(VectorFloat &inputVector);
117 
125  virtual bool predict_(MatrixFloat &timeseries);
126 
132  virtual bool reset();
133 
140  virtual bool clear();
141 
142  virtual bool print() const;
143 
151  virtual bool save( std::fstream &file ) const;
152 
160  virtual bool load( std::fstream &file );
161 
167  UINT getHMMType() const;
168 
174  UINT getModelType() const;
175 
182  UINT getDelta() const;
183 
189  UINT getNumStates() const;
190 
196  UINT getNumSymbols() const;
197 
208  UINT getNumRandomTrainingIterations() const;
209 
216  Vector< DiscreteHiddenMarkovModel > getDiscreteModels() const;
217 
224  Vector< ContinuousHiddenMarkovModel > getContinuousModels() const;
225 
234  bool setHMMType(const UINT hmmType);
235 
244  bool setModelType(const UINT modelType);
245 
258  bool setDelta(const UINT delta);
259 
271  bool setDownsampleFactor(const UINT downsampleFactor);
272 
282  bool setCommitteeSize(const UINT committeeSize);
283 
292  bool setNumStates(const UINT numStates);
293 
300  bool setNumSymbols(const UINT numStates);
301 
314  bool setNumRandomTrainingIterations(const UINT numRandomTrainingIterations);
315 
328  bool setSigma(const Float sigma);
329 
330  bool setAutoEstimateSigma(const bool autoEstimateSigma);
331 
332  //Tell the compiler we are using the base class train method to stop hidden virtual function warnings
333  using MLBase::save;
334  using MLBase::load;
335  using MLBase::train;
336  using MLBase::train_;
337  using MLBase::predict_;
338 
339 protected:
340  bool train_discrete(TimeSeriesClassificationData &trainingData);
341  bool train_continuous(TimeSeriesClassificationData &trainingData);
342  bool predict_discrete( VectorFloat &inputVector );
343  bool predict_continuous( VectorFloat &inputVector );
344  bool predict_discrete(MatrixFloat &timeseries);
345  bool predict_continuous(MatrixFloat &timeseries);
346  bool convertDataToObservationSequence( TimeSeriesClassificationData &classData, Vector< Vector< UINT > > &observationSequences );
347  bool loadLegacyModelFromFile( std::fstream &file );
348 
349  UINT hmmType;
350  UINT modelType; //Set if the model is ERGODIC or LEFTRIGHT
351  UINT delta; //The number of states a model can move to in a LeftRight model
352 
353  //Discrete HMM variables
354  UINT numStates; //The number of states for each model
355  UINT numSymbols; //The number of symbols for each model
356  UINT numRandomTrainingIterations;
358 
359  //Continuous HMM variables
360  UINT downsampleFactor;
361  UINT committeeSize;
362  Float sigma;
363  bool autoEstimateSigma;
364  Vector< ContinuousHiddenMarkovModel > continuousModels;
365 
366  static RegisterClassifierModule< HMM > registerModule;
367 };
368 
369 GRT_END_NAMESPACE
370 
371 #endif //GRT_HMM_HEADER
virtual bool predict_(VectorFloat &inputVector)
Definition: MLBase.cpp:115
This class acts as the main interface for using a Hidden Markov Model.
virtual bool train(ClassificationData trainingData)
Definition: MLBase.cpp:89
virtual bool save(const std::string filename) const
Definition: MLBase.cpp:143
UINT hmmType
Controls if this is a HMM_DISCRETE or a HMM_CONTINUOUS.
Definition: HMM.h:349
virtual bool load(const std::string filename)
Definition: MLBase.cpp:167
virtual bool deepCopyFrom(const Classifier *classifier)
Definition: Classifier.h:63
virtual bool print() const
Definition: MLBase.cpp:141
This class implements a continuous Hidden Markov Model.
virtual bool reset()
Definition: Classifier.cpp:123
Definition: HMM.h:41
This class implements a discrete Hidden Markov Model.
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:91
virtual bool clear()
Definition: Classifier.cpp:142