jundsp/VAE-BSS
jundsp/VAE-BSS has 48 GitHub stars and 9 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-15 06:48 UTC. Last push 2026-11-12.
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Unsupervised blind source separation of mixed images and sounds with variational auto-encoders.
Machine LearningREADME.md
OriginalVAE-BSS
New: DVAE-BSS adds a dynamical prior, so it separates audio of any length, with a pretrained model and a one-command
dvae-separate. Listen to examples.
A PyTorch model of the variational auto-encoder for unsupervised blind source separation, with training and evaluation programs, as described in
- J. Neri, R. Badeau, P. Depalle, “Unsupervised Blind Source Separation with Variational Auto-Encoders”, 29th European Signal Processing Conference (EUSIPCO), Dublin, Ireland, August 2021. doi:10.23919/EUSIPCO54536.2021.9616154
Includes pre-trained models located in saves/pretrained (~75 MB total).
Author: Julian Neri

Instructions
Installation
git clone https://github.com/jundsp/VAE-BSS.git
cd VAE-BSS
pip install -r requirements.txt
Usage
Run either the evaluate.py or train.py files.
- For example, enter this command in terminal:
python3 evaluate.py
evaluate.py uses models that we pre-trained in an unsupervised way to separate mixed MNIST handwritten digit images.
Results for K = 2, 3, 4 assumed model sources are saved in the results directory. The models include normal auto-encoders, variational auto-encoders, and the VAE with masking, to compare their qualities. The VAEs, with or without masking, perform high quality separation without knowing the true number of source images in the mixture and without ever having access to the true ground truth source images.
train.py starts from scratch and trains a VAE model solely on data mixtures in an unsupervised way. It demonstrates the training procedure described in our paper. The number of epochs for training / testing is defined in argparser.py. Separation is clear within the first 10 epochs. You should get about the same results as the pre-trained models if you train over a few thousand epochs, following the training settings defined in our paper. The other arguments allow you to try different hyperparameters and settings for model training / specification, such as the dimension of the latent space, the prior probability, and the batch size.
Either program will first download the MNIST data and prepare it as training and testing datasets. The datasets are saved in a directory that will be recalled for subsequent use.