File Exchange

image thumbnail

Variational Bayesian Mixture of Probabilistic PCA for Shapes

version (2.93 KB) by Ali Gooya
Implements mixture of PPCA's for point clouds


Updated 05 May 2017

GitHub view license on GitHub

This class computes a Mixture of Probabilistic Principal Component Analysers
from spatial point clouds with no point-to-point correspondances. If the
point clouds represent shapes, the model generates clusters of shape
atlases, computing mean shape and modes of variations in each cluster.
The computed Lower Bound (LB) on the data likelihood can be used for automatic
model selection (i.e. unmber of clusters, modes of varations, etc).


>> vB = vBMixPCA( 'pointSetsList', 'gmmFileName', M, L, J);
>> vB = vB.solve(0, nIter);


pointSetsList: is the name of a file listing the absolute paths to point sets. Each point
set file should define N_k x D (dimensional) points in rows:
x1 y1 z1
x2 y2 z2
gmmFileName: is an (optional) GMM file defining initialization. This can
be empty (i.e. []). In that case, the algorithm will fit a GMM (with M
centroids) to the available points (usually slow). You can save your GMM file using
writeGmm method provided by the class for a later use.

M: is the number of Gaussian centroids which define the GMM for each point
set. M*dim(points) determines the latent dimension of the MixPPCA sapce.

L: is the number of varation modes in each PPCA cluster
J: is the number of PPCA clusters
nIter: is the numer of iterations to solve the mixture.

After solve() step, the vB object will store the variation modes, means of PPCA cluster,
point correspondances in its properties: E_W, muBar, E_T, E_Z, etc
where E_{.} stands for expectation.

You can access the E_Mu's (the projections to PPCA spaces), muBar (PPCA cluster means) using vis_E_Mu
method. For instance:

>> figure, vB.vis_E_Mu(1:vB.J,1:vB.K,[],1,[],0)

You can also visualize the point sets and their clustrs using

>> figure, vB.vis_X([],[])

The 'model evidence' for a particular setting of M, L, and J can be
accessed by vB.LB values, thus faciliating the model selection. LB can
also be used to monitor the convergence. In practice,

It is recommended that you have access to RAM > 16 GByte, to process a
collection of 50 point sets with 4000 points each.

This code uses a vairant of Fast and Efficient Spectral Clustering for
initial clustering of shapes.

The variables follow their original naming in the following paper:

"Mixture of Probabilistic Principal Component Analyzers for Shapes from Point Sets"
DOI 10.1109/TPAMI.2017.2700276,
IEEE Transactions on Pattern Analysis and Machine Intelligence (in press)

Please cite the above paper in case you find the model useful in your own
research. I might be able to help you with your quesries on how to run
the model, if you send me (Ali Gooya) an email to:

This software follows the MIT license prototype.

Comments and Ratings (0)

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: Fast and efficient spectral clustering

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor