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

◆ vl_gmm_cluster()

double vl_gmm_cluster ( VlGMM * self,
void const * data,
vl_size numData )
Parameters
selfGMM object instance.
datadata points which should be clustered.
numDatanumber of data points.

◆ vl_gmm_delete()

void vl_gmm_delete ( VlGMM * self)
Parameters
selfGMM object instance.

The function deletes the GMM object instance created by vl_gmm_new.

◆ vl_gmm_em()

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.

◆ vl_gmm_get_covariance_lower_bounds()

double const * vl_gmm_get_covariance_lower_bounds ( VlGMM const * self)
Parameters
selfobject
Returns
lower bound on covariances.

◆ vl_gmm_get_covariances()

void const * vl_gmm_get_covariances ( VlGMM const * self)
Parameters
selfobject
Returns
diagonals of cluster covariance matrices.

◆ vl_gmm_get_data_type()

vl_type vl_gmm_get_data_type ( VlGMM const * self)
Parameters
selfobject
Returns
data type.

◆ vl_gmm_get_dimension()

vl_size vl_gmm_get_dimension ( VlGMM const * self)
Parameters
selfobject
Returns
data dimension.

◆ vl_gmm_get_initialization()

VlGMMInitialization vl_gmm_get_initialization ( VlGMM const * self)
Parameters
selfobject
Returns
initialization algorithm.

◆ vl_gmm_get_kmeans_init_object()

VlKMeans * vl_gmm_get_kmeans_init_object ( VlGMM const * self)
Parameters
selfobject
Returns
kmeans initialization object.

◆ vl_gmm_get_loglikelihood()

double vl_gmm_get_loglikelihood ( VlGMM const * self)
Parameters
selfobject
Returns
loglikelihood.

◆ vl_gmm_get_max_num_iterations()

vl_size vl_gmm_get_max_num_iterations ( VlGMM const * self)
Parameters
selfobject
Returns
maximum number of iterations.

◆ vl_gmm_get_means()

void const * vl_gmm_get_means ( VlGMM const * self)
Parameters
selfobject
Returns
cluster means.

◆ vl_gmm_get_num_clusters()

vl_size vl_gmm_get_num_clusters ( VlGMM const * self)
Parameters
selfobject
Returns
number of clusters.

◆ vl_gmm_get_num_data()

vl_size vl_gmm_get_num_data ( VlGMM const * self)
Parameters
selfobject
Returns
number of data points.

◆ vl_gmm_get_num_repetitions()

vl_size vl_gmm_get_num_repetitions ( VlGMM const * self)
Parameters
selfobject
Returns
current number of repretitions for quantization.

◆ vl_gmm_get_posteriors()

void const * vl_gmm_get_posteriors ( VlGMM const * self)
Parameters
selfobject
Returns
posterior probabilities of cluster memberships.

◆ vl_gmm_get_priors()

void const * vl_gmm_get_priors ( VlGMM const * self)
Parameters
selfobject
Returns
priors of cluster gaussians.

◆ vl_gmm_get_verbosity()

int vl_gmm_get_verbosity ( VlGMM const * self)
Parameters
selfobject
Returns
verbosity level.

◆ vl_gmm_init_with_kmeans()

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.
numDatanumber of data points.
kmeansInitKMeans object to use.

◆ vl_gmm_init_with_rand_data()

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.
numDatanumber of data points.

◆ vl_gmm_new()

VlGMM * vl_gmm_new ( vl_type dataType,
vl_size dimension,
vl_size numComponents )
Parameters
dataTypetype of data (VL_TYPE_FLOAT or VL_TYPE_DOUBLE)
dimensiondimension of the data.
numComponentsnumber of Gaussian mixture components.
Returns
new GMM object instance.

◆ vl_gmm_new_copy()

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.

◆ vl_gmm_reset()

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.

◆ vl_gmm_set_covariance_lower_bound()

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.

◆ vl_gmm_set_covariance_lower_bounds()

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.

◆ vl_gmm_set_covariances()

void vl_gmm_set_covariances ( VlGMM * self,
void const * covariances )
Parameters
selfGMM object instance.
covariancesinitial values of covariance matrix diagonals.

◆ vl_gmm_set_initialization()

void vl_gmm_set_initialization ( VlGMM * self,
VlGMMInitialization init )
Parameters
selfobject
initinitialization algorithm.

◆ vl_gmm_set_kmeans_init_object()

void vl_gmm_set_kmeans_init_object ( VlGMM * self,
VlKMeans * kmeans )
Parameters
selfobject
kmeansinitialization KMeans object.

◆ vl_gmm_set_max_num_iterations()

void vl_gmm_set_max_num_iterations ( VlGMM * self,
vl_size maxNumIterations )
Parameters
selfVlGMM filter.
maxNumIterationsmaximum number of iterations.

◆ vl_gmm_set_means()

void vl_gmm_set_means ( VlGMM * self,
void const * means )
Parameters
selfGMM object instance.
meansinitial values of means.

◆ vl_gmm_set_num_repetitions()

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.

◆ vl_gmm_set_priors()

void vl_gmm_set_priors ( VlGMM * self,
void const * priors )
Parameters
selfGMM object instance.
priorsinitial values of the gaussian priors.

◆ vl_gmm_set_verbosity()

void vl_gmm_set_verbosity ( VlGMM * self,
int verbosity )
Parameters
selfobject
verbosityverbosity level.