jbobin / dGMCA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DGMCA

(or Distributed Generalized Morphological Component Analysis)

New DGMCA article available!

Algorithm to solve the Blind Source Separation (BSS) problem in a parallelized way.

Article of the SPARS 2019 conference:Tobias Liaudat, Jerome Bobin, Christophe Kervazo. Distributed sparse BSS for large-scale datasets.2019. hal-02088466. (pdf)

The main theoretical framework of the algorith is taken from the method GMCA [1]. This new algorithm allows to tackle the BSS problem in a faster way as well as for very-large datasets that could not be treated before.

The original problem of factorizing a matrix X (observation matrix) into two matrices A (mixing matrix) and S (source matrix) is divided into sub-problems as it can be seen in the following figure:

A (very) basic scheme of the algorithm follows:

One of the essential points in this novel method is the fusion of the different estimations of the mixing matrices. It is done by doing an optimization on the hypersphere, a Riemannian manifold, by means of a Fréchet Mean follwing [2]. The setup of the algorith forces the columns of the mixing matrix to live in that manifold.

The next scheme illustrates the fusion of the mixing matrices.

Finally, if the observations are not sparse (or approximatively sparse) in its natural domain, by means of the parameter J, a wavelet decomposition (starlets or Isotropic Undecimated Wavelets) is preformed in order to solve the BSS problem.

A basic scheme of the wavelet decomposition is presented next:

Setting things up

To use the python/C++ binders, it is important to compile the codes available in the src folder. For that purpose, you need to have boost python and boost numpy properly set up. This will be updated soon with a more convenient distributed implementation.

Testing

(Up to now) There is a jupyter notebook (notebooks folder) with an application to generalized gaussian sources - more to come soon

Acknowledgements

The work was done by Christophe Kervazo, Tobias Liaudat and Jérôme Bobin.

About

License:GNU General Public License v3.0


Languages

Language:Jupyter Notebook 97.6%Language:C++ 1.4%Language:Python 1.0%