Official tensorflow implementation of the following work.
Kota Yamaguchi, CanvasVAE: Learning to Generate Vector Graphic Documents, ICCV 2021
bin: Job launcherssrc/preprocess: Preprocessing jobs to fetch and build TFRecord datasetsrc/pixel-vae: PixelVAE trainersrc/canvas-vae: CanvasVAE trainer and evaluation
Install python dependencies. Perhaps this should be done inside venv.
pip install -r requirements.txtNote that Tensorflow has a version-specific system requirement for GPU environment. Check if the compatible CUDA/CuDNN runtime is installed.
Download and extract Crello dataset. The following
script will download the dataset to data/crello-dataset directory.
bin/download_crello.shPrepare image data and learn a PixelVAE model for image embedding. The resulting
image encoder will be saved to data/pixelvae/encoder. This training takes
long. We recommend sufficient GPU resources to run this step (e.g., Tesla P100x4).
bin/generate_crello_image.sh
bin/train_pixelvae.shThe training progress can be monitored via tensorboard:
tensorboard --logdir tmp/pixelvae/jobsOnce a PixelVAE is trained, build the crello document dataset, and learn
CanvasVAE models. The trainer script takes a few arguments to control
hyperparameters.
See src/canvas-vae/canvasvae/main.py for the list of available options.
This step can be run in a single GPU environment (e.g., Tesla P100x1).
bin/generate_crello_document.sh
bin/train_canvasvae.sh crello-document --latent-dim 512 --kl 32The trainer outputs logs, evaluation results, and checkpoints to
tmp/canvasvae/jobs/<job_id>. The training progress can be monitored
via tensorboard:
tensorboard --logdir tmp/canvasvae/jobsThe resulting models can be further inspected in the notebook.
notebooks/crello-analysis.ipynb
Download UI SCREENSHOTS AND HIERARCHIES WITH SEMANTIC ANNOTATIONS
dataset first. This seems to require Google account. In the following, we assume
the downloaded archive file is placed in tmp/rico_dataset_v0.1_semantic_annotations.zip.
Once downloaded, preprocess and learn CanvasVAE models.
bin/generate_rico.sh tmp/rico_dataset_v0.1_semantic_annotations.zip
bin/train_canvasvae.sh rico --latent-dim 256 --kl 16The resulting models can be inspected in the notebook.
notebooks/rico-analysis.ipynb