33 #ifndef xmmHmmSingleClass_hpp 34 #define xmmHmmSingleClass_hpp 36 #include "../gmm/xmmGmmSingleClass.hpp" 48 template <
typename SingleClassModel,
typename ModelType>
74 Json::Value
const& root);
112 double filter(std::vector<float>
const& observation);
123 virtual Json::Value
toJson()
const;
130 virtual void fromJson(Json::Value
const& root);
279 const float* observation_output = NULL);
292 const float* observation_output = NULL);
313 const float* observation_output = NULL);
348 std::vector<double>::iterator observation_likelihoods);
359 double ct, std::vector<double>::iterator observation_likelihoods);
415 void regression(std::vector<float>
const& observation_input);
static const float TRANSITION_REGULARIZATION()
Definition: xmmHmmSingleClass.hpp:54
void updateExitProbabilities(float *_exitProbabilities=NULL)
Update the exit probability vector given the probabilities.
Definition: xmmHmmSingleClass.cpp:1350
std::vector< double > beta_seq_
Sequence of beta (backward) probabilities.
Definition: xmmHmmSingleClass.hpp:481
void addExitPoint(int stateIndex, float proba)
Set the exit probability of a specific state.
Definition: xmmHmmSingleClass.cpp:1371
void setErgodic()
set the prior and transition matrix to ergodic
Definition: xmmHmmSingleClass.cpp:293
SingleClassHMM & operator=(SingleClassHMM const &src)
Assignment.
Definition: xmmHmmSingleClass.cpp:78
void updateAlphaWindow()
Estimates the likeliest state and compute the bounds of the windows over the states.
Definition: xmmHmmSingleClass.cpp:1158
static const float DEFAULT_EXITPROBABILITY_LAST_STATE()
Definition: xmmHmmSingleClass.hpp:53
void emAlgorithmTerminate()
Termination of the training algorithm.
Definition: xmmHmmSingleClass.cpp:541
int window_maxindex_
minimum index of the alpha window (used for regression & time progression)
Definition: xmmHmmSingleClass.hpp:517
std::vector< double > gamma_sum_per_mixture_
Used to store the sums of the gamma variable for each mixture component.
Definition: xmmHmmSingleClass.hpp:492
void initMeansCovariancesWithGMMEM(TrainingSet *trainingSet)
initialize the means and covariances of each state using GMM-EM on segments.
Definition: xmmHmmSingleClass.cpp:250
void baumWelch_estimateCovariances(TrainingSet *trainingSet)
Estimate the Covariances of the Gaussian Distribution for each state.
Definition: xmmHmmSingleClass.cpp:899
std::vector< double > previous_beta_
used to store the beta estimated at the previous time step
Definition: xmmHmmSingleClass.hpp:456
void baumWelch_estimateMeans(TrainingSet *trainingSet)
Estimate the Means of the Gaussian Distribution for each state.
Definition: xmmHmmSingleClass.cpp:852
Probabilistic machine learning model for multiclass recognition and regression.
Definition: xmmModel.hpp:52
void baumWelch_estimatePrior(TrainingSet *trainingSet)
Estimate the Prior Probabilities.
Definition: xmmHmmSingleClass.cpp:973
Parameters specific to each class of a Hidden Markov Model.
Definition: xmmHmmParameters.hpp:92
std::vector< double > alpha_h[3]
State probabilities estimated by the hierarchical forward algorithm.
Definition: xmmHmmSingleClass.hpp:207
std::vector< double > beta_
backward state probabilities
Definition: xmmHmmSingleClass.hpp:451
ClassResults< HMM > results
Results of the filtering process (recognition & regression)
Definition: xmmHmmSingleClass.hpp:195
Results of Hidden Markov Models for a single class.
Definition: xmmHmmResults.hpp:44
double forward_init(const float *observation, const float *observation_output=NULL)
Initialization of the forward algorithm.
Definition: xmmHmmSingleClass.cpp:338
std::vector< SingleClassGMM > states
States of the model (Gaussian Mixture Models)
Definition: xmmHmmSingleClass.hpp:212
std::vector< float > transition
Transition Matrix.
Definition: xmmHmmSingleClass.hpp:222
bool is_hierarchical_
Defines if the model is a submodel of a hierarchical HMM.
Definition: xmmHmmSingleClass.hpp:500
void backward_update(double ct, const float *observation, const float *observation_output=NULL)
Update of the Backward algorithm.
Definition: xmmHmmSingleClass.cpp:430
std::vector< double > gamma_sum_
Used to store the sums of the gamma variable.
Definition: xmmHmmSingleClass.hpp:486
void setLeftRight()
set the prior and transition matrix to left-right (no state skip)
Definition: xmmHmmSingleClass.cpp:304
ClassParameters< HMM > parameters
Convert to bimodal HMM in place.
Definition: xmmHmmSingleClass.hpp:190
std::vector< float > exit_probabilities_
Exit probabilities for a hierarchical model.
Definition: xmmHmmSingleClass.hpp:505
void reset()
Resets the fitering process (recognition or regression)
Definition: xmmHmmSingleClass.cpp:1094
void addCyclicTransition(double proba)
Adds a cyclic Transition probability (from last state to first state)
Definition: xmmHmmSingleClass.cpp:1110
virtual void fromJson(Json::Value const &root)
Read the object from a JSON Structure.
Definition: xmmHmmSingleClass.cpp:1337
void normalizeTransitions()
Normalize transition probabilities.
Definition: xmmHmmSingleClass.cpp:312
Single-Class Hidden Markov Model.
Definition: xmmHmmSingleClass.hpp:47
double baumWelch_forward_update(std::vector< double >::iterator observation_likelihoods)
Update of the forward algorithm for Training (observation probabilities are pre-computed) ...
Definition: xmmHmmSingleClass.cpp:597
double forward_update(const float *observation, const float *observation_output=NULL)
Update of the forward algorithm.
Definition: xmmHmmSingleClass.cpp:383
double window_normalization_constant_
normalization constant of the alpha window (used for regression & time progression) ...
Definition: xmmHmmSingleClass.hpp:523
std::vector< std::vector< double > > gamma_sequence_
Sequence of Gamma probabilities.
Definition: xmmHmmSingleClass.hpp:461
Generic Template for Machine Learning Probabilistic models based on the EM algorithm.
Definition: xmmModelSingleClass.hpp:174
std::vector< double > alpha_seq_
Sequence of alpha (forward) probabilities.
Definition: xmmHmmSingleClass.hpp:476
int window_minindex_
minimum index of the alpha window (used for regression & time progression)
Definition: xmmHmmSingleClass.hpp:511
void backward_init(double ct)
Initialization Backward algorithm.
Definition: xmmHmmSingleClass.cpp:426
void baumWelch_gammaSum(TrainingSet *trainingSet)
Compute the sum of the gamma variable (for use in EM)
Definition: xmmHmmSingleClass.cpp:797
Base class for the definition of training sets.
Definition: xmmTrainingSet.hpp:46
void initParametersToDefault(std::vector< float > const &dataStddev)
initialize model parameters to their default values
Definition: xmmHmmSingleClass.cpp:127
SingleClassHMM(std::shared_ptr< SharedParameters > p=NULL)
Constructor.
Definition: xmmHmmSingleClass.cpp:35
void emAlgorithmInit(TrainingSet *trainingSet)
Initialization of the parameters before training.
Definition: xmmHmmSingleClass.cpp:494
std::vector< std::vector< std::vector< double > > > gamma_sequence_per_mixture_
Sequence of Gamma probabilities for each mixture component.
Definition: xmmHmmSingleClass.hpp:471
virtual Json::Value toJson() const
Write the object to a JSON Structure.
Definition: xmmHmmSingleClass.cpp:1320
bool forward_initialized_
Defines if the forward algorithm has been initialized.
Definition: xmmHmmSingleClass.hpp:441
std::vector< double > previous_alpha_
used to store the alpha estimated at the previous time step
Definition: xmmHmmSingleClass.hpp:446
virtual double emAlgorithmUpdate(TrainingSet *trainingSet)
update method of the EM algorithm (calls Baum-Welch Algorithm)
Definition: xmmHmmSingleClass.cpp:553
Hierarchical Hidden Markov Model for Continuous Recognition and Regression (Multi-class) ...
Definition: xmmHierarchicalHmm.hpp:47
std::vector< float > prior
Prior probabilities.
Definition: xmmHmmSingleClass.hpp:217
Definition: xmmAttribute.hpp:42
std::vector< std::vector< double > > epsilon_sequence_
Sequence of Epsilon probabilities.
Definition: xmmHmmSingleClass.hpp:466
std::vector< double > alpha
State probabilities estimated by the forward algorithm.
Definition: xmmHmmSingleClass.hpp:200
void updateResults()
update the content of the likelihood buffer and return average likelihood.
Definition: xmmHmmSingleClass.cpp:1285
double baumWelch_forwardBackward(std::shared_ptr< Phrase > currentPhrase, int phraseIndex)
Compute the forward-backward algorithm on a phrase of the training set.
Definition: xmmHmmSingleClass.cpp:659
void baumWelch_estimateMixtureCoefficients(TrainingSet *trainingSet)
Estimate the Coefficients of the Gaussian Mixture for each state.
Definition: xmmHmmSingleClass.cpp:827
void allocate()
Allocate model parameters.
Definition: xmmHmmSingleClass.cpp:99
void initMeansWithAllPhrases(TrainingSet *trainingSet)
initialize the means of each state with all training phrases (single gaussian)
Definition: xmmHmmSingleClass.cpp:139
void initCovariances_fullyObserved(TrainingSet *trainingSet)
initialize the covariances of each state with all training phrases (single gaussian) ...
Definition: xmmHmmSingleClass.cpp:170
void baumWelch_backward_update(double ct, std::vector< double >::iterator observation_likelihoods)
Update of the Backward algorithm for Training (observation probabilities are pre-computed) ...
Definition: xmmHmmSingleClass.cpp:632
void regression(std::vector< float > const &observation_input)
Compute the regression for the case of a bimodal model, given the estimated state probabilities estim...
Definition: xmmHmmSingleClass.cpp:1196
double filter(std::vector< float > const &observation)
filters a incoming observation (performs recognition or regression)
Definition: xmmHmmSingleClass.cpp:1121
void baumWelch_estimateTransitions(TrainingSet *trainingSet)
Estimate the Transition Probabilities.
Definition: xmmHmmSingleClass.cpp:998