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.
FiniteStateMachine.h
Go to the documentation of this file.
1 
27 #ifndef GRT_FINITE_STATE_MACHINE_HEADER
28 #define GRT_FINITE_STATE_MACHINE_HEADER
29 
30 #include "../../CoreModules/Classifier.h"
31 #include "FSMParticleFilter.h"
32 #include "../../ClusteringModules/KMeans/KMeans.h"
33 
34 GRT_BEGIN_NAMESPACE
35 
36 class GRT_API FiniteStateMachine : public Classifier
37 {
38 public:
39 
44  FiniteStateMachine(const UINT numParticles = 200,const UINT numClustersPerState = 20,const Float stateTransitionSmoothingCoeff = 0.0,const Float measurementNoise = 10.0);
45 
52 
56  virtual ~FiniteStateMachine(void);
57 
64  FiniteStateMachine &operator=(const FiniteStateMachine &rhs);
65 
73  virtual bool deepCopyFrom(const Classifier *classifier);
74 
83  virtual bool train_( ClassificationData &trainingData );
84 
93  virtual bool train_( TimeSeriesClassificationData &trainingData );
94 
102  virtual bool train_( TimeSeriesClassificationDataStream &data );
103 
111  virtual bool predict_(VectorFloat &inputVector);
112 
120  virtual bool reset();
121 
128  virtual bool clear();
129 
136  virtual bool print() const;
137 
145  virtual bool save( std::fstream &file ) const;
146 
154  virtual bool load( std::fstream &file );
155 
156 
157  bool setNumParticles(const UINT numParticles);
158  bool setNumClustersPerState(const UINT numClustersPerState);
159  bool setStateTransitionSmoothingCoeff(const Float stateTransitionSmoothingCoeff);
160  bool setMeasurementNoise(const Float measurementNoise);
161 
162  //Tell the compiler we are using the following functions from the MLBase class to stop hidden virtual function warnings
163  using MLBase::save;
164  using MLBase::load;
165  using MLBase::train_;
166  using MLBase::predict_;
167 
168 protected:
169  bool recomputePT();
170  bool recomputePE();
171  bool initParticles();
172 
173  UINT numParticles;
174  UINT numClustersPerState;
175  Float stateTransitionSmoothingCoeff;
176  Float measurementNoise;
177  FSMParticleFilter particles;
178  MatrixFloat stateTransitions;
179  Vector< MatrixFloat > stateEmissions;
182 
184 };
185 
186 GRT_END_NAMESPACE
187 
188 #endif
virtual bool predict_(VectorFloat &inputVector)
Definition: MLBase.cpp:115
virtual bool save(const std::string filename) const
Definition: MLBase.cpp:143
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
Vector< Vector< IndexedDouble > > pt
This stores the stateTransitions matrix in a format more efficient for the particle filter...
virtual bool reset()
Definition: Classifier.cpp:123
virtual bool train_(ClassificationData &trainingData)
Definition: MLBase.cpp:91
Vector< Vector< VectorFloat > > pe
This stores the stateEmissions model in a format more efficient for the particle filter.
virtual bool clear()
Definition: Classifier.cpp:142