Actualización 22/12/2021: Se agregó soporte para la versión Pytorch Lightning 1.5.6 y limpió el código.
Una colección de autoencoders variacionales (VAE) implementados en Pytorch con enfoque en la reproducibilidad. El objetivo de este proyecto es proporcionar un ejemplo de trabajo rápido y simple para muchos de los modelos Cool VAE. Todos los modelos están capacitados en el conjunto de datos Celeba para consistencia y comparación. La arquitectura de todos los modelos se mantiene lo más similar posible con las mismas capas, a excepción de los casos en que el documento original requiere una arquitectura radicalmente diferente (por ejemplo, VQ VAE usa capas residuales y ninguna norma por lotes, a diferencia de otros modelos). Aquí están los resultados de cada modelo.
$ 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>
Plantilla de archivo de configuración
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> "Ver registros de Tensorboard
$ cd logs/<experiment name>/version_<the version you want>
$ tensorboard --logdir .
Nota: El conjunto de datos predeterminado es Celeba. Sin embargo, ha habido muchos problemas para descargar el conjunto de datos de Google Drive (debido a algunos cambios en la estructura de archivos). Por lo tanto, la recomendación es descargar el archivo de Google Drive directamente y extraer a la ruta de su elección. La ruta predeterminada asumida en los archivos de configuración es `Data/Celeba/IMG_ALIGN_CELEBA '. Pero puede cambiarlo por su preferencia.
| Modelo | Papel | Reconstrucción | Muestras |
|---|---|---|---|
| VAE (código, configuración) | Enlace | ![]() | ![]() |
| VAE condicional (código, configuración) | Enlace | ![]() | ![]() |
| WAE - MMD (RBF Kernel) (código, config) | Enlace | ![]() | ![]() |
| WAE - MMD (IMQ Kernel) (código, config) | Enlace | ![]() | ![]() |
| Beta-Vae (código, configuración) | Enlace | ![]() | ![]() |
| Desanimado Beta-Vae (código, configuración) | Enlace | ![]() | ![]() |
| Beta-TC-Vae (código, configuración) | Enlace | ![]() | ![]() |
| Iwae ( k = 5 ) (código, configuración) | Enlace | ![]() | ![]() |
| Miwae ( k = 5, m = 3 ) (código, configuración) | Enlace | ![]() | ![]() |
| DFCVAE (código, configuración) | Enlace | ![]() | ![]() |
| MSSIM VAE (código, configuración) | Enlace | ![]() | ![]() |
| VAE categórico (código, configuración) | Enlace | ![]() | ![]() |
| Junta VAE (código, configuración) | Enlace | ![]() | ![]() |
| Info VAE (código, configuración) | Enlace | ![]() | ![]() |
| LogCosh VAE (código, configuración) | Enlace | ![]() | ![]() |
| SWAE (200 proyecciones) (código, configuración) | Enlace | ![]() | ![]() |
| VQ-VAE ( k = 512, d = 64 ) (código, configuración) | Enlace | ![]() | N / A |
| Dip VAE (código, configuración) | Enlace | ![]() | ![]() |
Si ha capacitado a un mejor modelo, utilizando estas implementaciones, ajustando los hiperparams en el archivo de configuración, me complacería incluir su resultado (junto con su archivo de configuración) en este repositorio, ¿citando su nombre?
Además, si desea contribuir con algunos modelos, envíe un PR.
Licencia de Apache 2.0
| Permisos | Limitaciones | Condiciones |
|---|---|---|
| ✔️ Uso comercial | Uso de marca registrada | Ⓘ Aviso de licencia y derechos de autor |
| Modificación de ✔️ | Responsabilidad | Ⓘ Cambios de estado |
| ✔️ Distribución | Garantía | |
| ✔️ Uso de patentes | ||
| ✔️ Uso privado |
@misc{Subramanian2020,
author = {Subramanian, A.K},
title = {PyTorch-VAE},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/AntixK/PyTorch-VAE}}
}