MISE À JOUR 22/12/2021: Ajout de la prise en charge de la version Pytorch Lightning 1.5.6 et nettoyé le code.
Une collection d'autoencoders variationnels (VAE) mis en œuvre dans Pytorch avec focalisation sur la reproductibilité. Le but de ce projet est de fournir un exemple de travail rapide et simple pour de nombreux modèles Cool VAE. Tous les modèles sont formés sur l'ensemble de données Celeba pour la cohérence et la comparaison. L'architecture de tous les modèles est maintenue aussi similaire que possible avec les mêmes couches, à l'exception des cas où le papier d'origine nécessite une architecture radicalement différente (l'ex. VQ VAE utilise des couches résiduelles et pas de norme lot, contrairement à d'autres modèles). Voici les résultats de chaque modèle.
$ git clone https://github.com/AntixK/PyTorch-VAE
$ cd PyTorch-VAE
$ pip install -r requirements.txt
$ cd PyTorch-VAE
$ python run.py -c configs/<config-file-name.yaml>
Modèle de fichier de configuration
model_params :
name : " <name of VAE model> "
in_channels : 3
latent_dim :
. # Other parameters required by the model
.
.
data_params :
data_path : " <path to the celebA dataset> "
train_batch_size : 64 # Better to have a square number
val_batch_size : 64
patch_size : 64 # Models are designed to work for this size
num_workers : 4
exp_params :
manual_seed : 1265
LR : 0.005
weight_decay :
. # Other arguments required for training, like scheduler etc.
.
.
trainer_params :
gpus : 1
max_epochs : 100
gradient_clip_val : 1.5
.
.
.
logging_params :
save_dir : " logs/ "
name : " <experiment name> "Afficher les journaux Tensorboard
$ cd logs/<experiment name>/version_<the version you want>
$ tensorboard --logdir .
Remarque: L'ensemble de données par défaut est Celeba. Cependant, il y a eu de nombreux problèmes avec le téléchargement de l'ensemble de données à partir de Google Drive (en raison de certaines modifications de la structure des fichiers). Ainsi, la recommandation est de télécharger le fichier à partir de Google Drive directement et d'extraire sur le chemin de votre choix. Le chemin par défaut supposé dans les fichiers de configuration est `data / celeba / img_align_celeba '. Mais vous pouvez le changer en acordant votre préférence.
| Modèle | Papier | Reconstruction | Échantillons |
|---|---|---|---|
| Vae (code, config) | Lien | ![]() | ![]() |
| Vae conditionnel (code, config) | Lien | ![]() | ![]() |
| Wae - mmd (noyau RBF) (code, config) | Lien | ![]() | ![]() |
| Wae - mmd (noyau imq) (code, config) | Lien | ![]() | ![]() |
| Bêta-vae (code, config) | Lien | ![]() | ![]() |
| Beta-vae désactivé (code, config) | Lien | ![]() | ![]() |
| Beta-tc-vae (code, config) | Lien | ![]() | ![]() |
| Iwae ( k = 5 ) (code, config) | Lien | ![]() | ![]() |
| Miwae ( k = 5, m = 3 ) (code, config) | Lien | ![]() | ![]() |
| Dfcvae (code, config) | Lien | ![]() | ![]() |
| MSSIM VAE (code, config) | Lien | ![]() | ![]() |
| VAE catégorique (code, config) | Lien | ![]() | ![]() |
| Joint Vae (code, config) | Lien | ![]() | ![]() |
| Info vae (code, config) | Lien | ![]() | ![]() |
| Logcosh vae (code, config) | Lien | ![]() | ![]() |
| Swae (200 projections) (code, config) | Lien | ![]() | ![]() |
| VQ-VAE ( k = 512, d = 64 ) (code, config) | Lien | ![]() | N / A |
| DIP VAE (code, config) | Lien | ![]() | ![]() |
Si vous avez formé un meilleur modèle, en utilisant ces implémentations, en affinant les hyper-parammes dans le fichier de configuration, je serais heureux d'inclure votre résultat (avec votre fichier de configuration) dans ce référentiel, citant votre nom ?.
De plus, si vous souhaitez contribuer certains modèles, veuillez soumettre un PR.
Licence Apache 2.0
| Autorisation | Limites | Conditions |
|---|---|---|
| ✔️ Utilisation commerciale | Utilisation des marques | Ⓘ Licence et avis de droit d'auteur |
| ✔️ Modification | Responsabilité | Ⓘ Modifications d'état |
| ✔️ Distribution | Garantie | |
| ✔️ Utilisation des brevets | ||
| ✔️ Utilisation privée |
@misc{Subramanian2020,
author = {Subramanian, A.K},
title = {PyTorch-VAE},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/AntixK/PyTorch-VAE}}
}