Documentation - C API
gmm.c File Reference

Gaussian Mixture Models - Implementation. More...

#include "gmm.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mathop_avx.h"
#include "shuffle-def.h"

Functions

VlGMMvl_gmm_new (vl_type dataType, vl_size dimension, vl_size numComponents)
 Create a new GMM object.
void vl_gmm_reset (VlGMM *self)
 Reset state.
void vl_gmm_delete (VlGMM *self)
 Deletes a GMM object.
vl_type vl_gmm_get_data_type (VlGMM const *self)
 Get data type.
vl_size vl_gmm_get_num_clusters (VlGMM const *self)
 Get the number of clusters.
vl_size vl_gmm_get_num_data (VlGMM const *self)
 Get the number of data points.
double vl_gmm_get_loglikelihood (VlGMM const *self)
 Get the log likelihood of the current mixture.
int vl_gmm_get_verbosity (VlGMM const *self)
 Get verbosity level.
void vl_gmm_set_verbosity (VlGMM *self, int verbosity)
 Set verbosity level.
void const * vl_gmm_get_means (VlGMM const *self)
 Get means.
void const * vl_gmm_get_covariances (VlGMM const *self)
 Get covariances.
void const * vl_gmm_get_priors (VlGMM const *self)
 Get priors.
void const * vl_gmm_get_posteriors (VlGMM const *self)
 Get posteriors.
vl_size vl_gmm_get_max_num_iterations (VlGMM const *self)
 Get maximum number of iterations.
void vl_gmm_set_max_num_iterations (VlGMM *self, vl_size maxNumIterations)
 Set maximum number of iterations.
void vl_gmm_set_num_repetitions (VlGMM *self, vl_size numRepetitions)
 Set maximum number of repetitions.
vl_size vl_gmm_get_dimension (VlGMM const *self)
 Get data dimension.
VlGMMInitialization vl_gmm_get_initialization (VlGMM const *self)
 Get initialization algorithm.
void vl_gmm_set_initialization (VlGMM *self, VlGMMInitialization init)
 Set initialization algorithm.
VlKMeansvl_gmm_get_kmeans_init_object (VlGMM const *self)
 Get KMeans initialization object.
void vl_gmm_set_kmeans_init_object (VlGMM *self, VlKMeans *kmeans)
 Set KMeans initialization object.
double const * vl_gmm_get_covariance_lower_bounds (VlGMM const *self)
 Get the lower bound on the diagonal covariance values.
void vl_gmm_set_covariance_lower_bounds (VlGMM *self, double const *bounds)
 Set the lower bounds on diagonal covariance values.
void vl_gmm_set_covariance_lower_bound (VlGMM *self, double bound)
 Set the lower bounds on diagonal covariance values.
VlGMMvl_gmm_new_copy (VlGMM const *self)
 Create a new GMM object by copy.
void vl_gmm_init_with_rand_data (VlGMM *self, void const *data, vl_size numData)
 Initialize mixture before EM takes place using random initialization.
void vl_gmm_init_with_kmeans (VlGMM *self, void const *data, vl_size numData, VlKMeans *kmeansInit)
 Initializes the GMM using KMeans.
double vl_gmm_cluster (VlGMM *self, void const *data, vl_size numData)
 Run GMM clustering - includes initialization and EM.
double vl_gmm_em (VlGMM *self, void const *data, vl_size numData)
 Invoke the EM algorithm.
void vl_gmm_set_means (VlGMM *self, void const *means)
 Explicitly set the initial means for EM.
void vl_gmm_set_covariances (VlGMM *self, void const *covariances)
 Explicitly set the initial sigma diagonals for EM.
void vl_gmm_set_priors (VlGMM *self, void const *priors)
 Explicitly set the initial priors of the gaussians.
Get parameters
vl_size vl_gmm_get_num_repetitions (VlGMM const *self)
 Get maximum number of repetitions.

Detailed Description

Author:
David Novotny
Andrea Vedaldi

Function Documentation

double vl_gmm_cluster ( VlGMM self,
void const *  data,
vl_size  numData 
)
Parameters:
selfGMM object instance.
datadata points which should be clustered.
dimensiondimensionality of the data points.
numDatanumber of data points.
numClustersnumber of gaussians which should be estimated.
void vl_gmm_delete ( VlGMM self)
Parameters:
selfGMM object instance.

The function deletes the GMM object instance created by vl_gmm_new.

double vl_gmm_em ( VlGMM self,
void const *  data,
vl_size  numData 
)
Parameters:
selfGMM object instance.
datadata points which should be clustered.
numDatanumber of data points.
double const* vl_gmm_get_covariance_lower_bounds ( VlGMM const *  self)
Parameters:
selfobject
Returns:
lower bound on covariances.
void const* vl_gmm_get_covariances ( VlGMM const *  self)
Parameters:
selfobject
Returns:
diagonals of cluster covariance matrices.
vl_type vl_gmm_get_data_type ( VlGMM const *  self)
Parameters:
selfobject
Returns:
data type.
vl_size vl_gmm_get_dimension ( VlGMM const *  self)
Parameters:
selfobject
Returns:
data dimension.
VlGMMInitialization vl_gmm_get_initialization ( VlGMM const *  self)
Parameters:
selfobject
Returns:
initialization algorithm.
VlKMeans* vl_gmm_get_kmeans_init_object ( VlGMM const *  self)
Parameters:
selfobject
Returns:
kmeans initialization object.
double vl_gmm_get_loglikelihood ( VlGMM const *  self)
Parameters:
selfobject
Returns:
loglikelihood.
vl_size vl_gmm_get_max_num_iterations ( VlGMM const *  self)
Parameters:
selfobject
Returns:
maximum number of iterations.
void const* vl_gmm_get_means ( VlGMM const *  self)
Parameters:
selfobject
Returns:
cluster means.
vl_size vl_gmm_get_num_clusters ( VlGMM const *  self)
Parameters:
selfobject
Returns:
number of clusters.
vl_size vl_gmm_get_num_data ( VlGMM const *  self)
Parameters:
selfobject
Returns:
number of data points.
vl_size vl_gmm_get_num_repetitions ( VlGMM const *  self)
Parameters:
selfobject
Returns:
current number of repretitions for quantization.
void const* vl_gmm_get_posteriors ( VlGMM const *  self)
Parameters:
selfobject
Returns:
posterior probabilities of cluster memberships.
void const* vl_gmm_get_priors ( VlGMM const *  self)
Parameters:
selfobject
Returns:
priors of cluster gaussians.
int vl_gmm_get_verbosity ( VlGMM const *  self)
Parameters:
selfobject
Returns:
verbosity level.
void vl_gmm_init_with_kmeans ( VlGMM self,
void const *  data,
vl_size  numData,
VlKMeans kmeansInit 
)
Parameters:
selfGMM object instance.
datadata points which should be clustered.
dimensiondimensionality of the data points.
numDatanumber of data points.
numClustersnumber of gaussians which should be estimated.
kmeansInitKMeans object to use.
void vl_gmm_init_with_rand_data ( VlGMM self,
void const *  data,
vl_size  numData 
)
Parameters:
selfGMM object instance.
datadata points which should be clustered.
dimensiondimensionality of the data points.
numDatanumber of data points.
numClustersnumber of gaussians which should be estimated.
VlGMM* vl_gmm_new ( vl_type  dataType,
vl_size  dimension,
vl_size  numComponents 
)
Parameters:
dataTypetype of data (VL_TYPE_FLOAT or VL_TYPE_DOUBLE)
Returns:
new GMM object instance.
VlGMM* vl_gmm_new_copy ( VlGMM const *  self)
Parameters:
selfobject.
Returns:
new copy.

Most parameters, including the cluster priors, means, and covariances are copied. Data posteriors (available after initalization or EM) are not; nor is the KMeans object used for initialization, if any.

void vl_gmm_reset ( VlGMM self)
Parameters:
selfobject.

The function reset the state of the GMM object. It deletes any stored posterior and other internal state variables.

void vl_gmm_set_covariance_lower_bound ( VlGMM self,
double  bound 
)
Parameters:
selfobject.
boundbound.

While there is one lower bound per dimension, this function sets all of them to the specified scalar. Use ::vl:gmm_set_covariance_lower_bounds to set them individually.

void vl_gmm_set_covariance_lower_bounds ( VlGMM self,
double const *  bounds 
)
Parameters:
selfobject.
boundsbounds.

There is one lower bound per dimension. Use ::vl:gmm_set_covariance_lower_bound to set all of them to a given scalar.

void vl_gmm_set_covariances ( VlGMM self,
void const *  covariances 
)
Parameters:
selfGMM object instance.
covariancesinitial values of covariance matrix diagonals.
void vl_gmm_set_initialization ( VlGMM self,
VlGMMInitialization  init 
)
Parameters:
selfobject
initinitialization algorithm.
void vl_gmm_set_kmeans_init_object ( VlGMM self,
VlKMeans kmeans 
)
Parameters:
selfobject
kmeansinitialization KMeans object.
void vl_gmm_set_max_num_iterations ( VlGMM self,
vl_size  maxNumIterations 
)
Parameters:
selfVlGMM filter.
maxNumIterationsmaximum number of iterations.
void vl_gmm_set_means ( VlGMM self,
void const *  means 
)
Parameters:
selfGMM object instance.
meansinitial values of means.
void vl_gmm_set_num_repetitions ( VlGMM self,
vl_size  numRepetitions 
)
Parameters:
selfobject
numRepetitionsmaximum number of repetitions. The number of repetitions cannot be smaller than 1.
void vl_gmm_set_priors ( VlGMM self,
void const *  priors 
)
Parameters:
selfGMM object instance.
priorsinitial values of the gaussian priors.
void vl_gmm_set_verbosity ( VlGMM self,
int  verbosity 
)
Parameters:
selfobject
verbosityverbosity level.