🧶 Modular VAE disentanglement framework for python built with PyTorch Lightning ▸ Including metrics and datasets ▸ With strongly supervised, weakly supervised and unsupervised methods ▸ Easily configured and run with Hydra config ▸ Inspired by disentanglement_lib
Full Changelog: https://github.com/nmichlo/disent/compare/v0.7.1...v0.7.2
Full Changelog: https://github.com/nmichlo/disent/compare/v0.7.0...v0.7.1
pytorch
and pytorch_lightning
upgraded to >=2.0.0
Full Changelog: https://github.com/nmichlo/disent/compare/v0.7.2...v0.8.0
Full Changelog: https://github.com/nmichlo/disent/compare/v0.6.3...v0.7.0
Full Changelog: https://github.com/nmichlo/disent/compare/v0.6.2...v0.6.3
disent.data.data.DataFileSprites
, a custom version of sprites
disent.dataset.data.Mpi3dData
now exist, for different use cases because the dataset is so large
Mpi3dHdf5Data
-- converts the files to hdf5 to stream from disk, but very slow to load into memory directlyMpi3dNumpyData
-- loads the files directly into memory (quick), cannot read from diskMpi3dData
is now a wrapper around both of the above, and the mode can be specified with in_memory
disent.dataset.util.state_space.StateSpace
invert_factor_idxs
that returns the unspecified factor indices, or the inverse set.sample_indices
that samples valid indices in the range of the dataset.normalise_factor_idxs
so that we can use factor names in these functions instead.sample_random_factor_traversal_grid
that samples a grid of traversals, one for each ground-truth factor.disent.util.inout.paths.modify_ext(...)
that modifies the extension of a pathdisent.dataset.util.npz
to disent.dataset.util.formats.npz
disent.dataset.util.hdf5
to disent.dataset.util.formats.hdf5
disent.util.inout.hashing.hash_file
now has missing_ok=False
by defaultstalefile
now correctly handles missing filesTeapots3dData
but it is not complete, needs to be converted to a "random" dataset, as this dataset does not actually have valid ground truth factors in the form of a state space, rather they are randomly sampled.This release marks the end of my MSc. and splitting the research out into its own repository!
xdev
branch. An automated script was then used to clean this branch of research code and commit the changes to the dev
branch, which was then published.disent.dataset.data
- Various new datasets!
XYObjectData
and XYObjectShadedData
equivalent datasets with different representations of their ground-truth factors. Disentanglement performance is affected by the choice of ground-truth factors even if the data is exactly the same!XYSquaresData
is an adversarial dataset for VAEs that use pixel-wise reconstruction losses. VAEs usually perform terribly on this dataset in terms of disentanglement performance. This dataset contains three squares that can move across a non-overlapping grid.XYSingleSquareData
is like XYSquaresData
but only has a single square that can move across the image.XColumnsData
is a simplistic version of XYSquaresData
that is still adversarial, but only moves columns left and right instead of an object across a grid.disent.frameworks.vae
AdaNegTripletVae
aka. "ada_tvae": Supervised disentanglement framework that uses our proposed Adaptive Triplet Loss to disentangle representations and introduce axis-alignment. Triplets are constructed using the L1 distance between ground-truth factors.DataOverlapTripletVae
aka. "ada_tvae_d": Unsupervised version of the AdaNegTripletVae
that order triplets using the distances between datapoints in terms of the reconstruction loss. Distances within disentanglement datasets often correspond to the distances between ground-truth factors, suggesting disentanglement is accidental!disent.frameworks.ae
AdaNegTripletAe
aka. "ada_tae" - The AE version of AdaNegTripletVae
DataOverlapTripletAe
aka. "ada_tae_d" - The AE version of DataOverlapTripletVae
AdaAe
- The AE version of the AdaVae
disent.metrics
flatness_components
consists of three separate metrics
distances
: measure the rank correlation between ground-truth distances and latent distanceslinearity
: measure how well factor traversal embeddings lie on an arbitrarily rotated n-dimensional lineaxis-alignment
: measure how well factor traversal embeddings correspond to a single latent variable (ie. an n-dimensional line that is axis-aligned).flatness
an older metric that measures the path length of factor traversal embeddings over the max distance between points.experiment/configs
updated to included configs for all the added classes, frameworks, datasets, metrics and features!
schedule/adanegtvae_*.yaml
that should be used with the Adaptive Triplet frameworks. Otherwise these frameworks do not learn.research/*
has been deleteddocs/examples/extend_experiment
of how to override or extend the disent experiment conifigs! This is useful for creating your own research!docs/examples/plotting_examples
.