# DALLE-pytorch **Repository Path**: tsapphire/DALLE-pytorch ## Basic Information - **Project Name**: DALLE-pytorch - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: end-to-end - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-12 - **Last Updated**: 2021-04-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## DALL-E in Pytorch (wip) Implementation / replication of DALL-E, OpenAI's Text to Image Transformer, in Pytorch. It will also contain CLIP for ranking the generations. Yannic Kilcher's video ## Install Development branch ```bash $ pip install dalle-pytorch-dev ``` ## Usage Train DALL-E with VAE end-to-end ```python import torch from dalle_pytorch_dev import DiscreteVAE, DALLE vae = DiscreteVAE( image_size = 256, num_layers = 3, num_tokens = 1024, codebook_dim = 512, temperature = 0.9 ) dalle = DALLE( dim = 512, vae = vae, # automatically infer (1) image sequence length and (2) number of image tokens num_text_tokens = 10000, # vocab size for text text_seq_len = 256, # text sequence length depth = 6, # should be 64 heads = 8, vae_loss_coef = 1. # multiplier for vae reconstruction loss ) text = torch.randint(0, 10000, (4, 256)) images = torch.randn(4, 3, 256, 256) mask = torch.ones_like(text).bool() loss = dalle(text, images, mask = mask, return_loss = True) loss.backward() # do the above for a long time with a lot of data ... then images = dalle.generate_images(text, mask = mask) images.shape # (2, 3, 256, 256) ``` ## Ranking the generations Train CLIP ```python import torch from dalle_pytorch import CLIP clip = CLIP( dim_text = 512, dim_image = 512, dim_latent = 512, num_text_tokens = 10000, text_enc_depth = 6, text_seq_len = 256, text_heads = 8, num_visual_tokens = 512, visual_enc_depth = 6, visual_image_size = 256, visual_patch_size = 32, visual_heads = 8 ) text = torch.randint(0, 10000, (4, 256)) images = torch.randn(4, 3, 256, 256) mask = torch.ones_like(text).bool() loss = clip(text, images, text_mask = mask, return_loss = True) loss.backward() ``` To get the similarity scores from your trained Clipper, just do ```python images, scores = dalle.generate_images(text, mask = mask, clip = clip) scores.shape # (2,) images.shape # (2, 3, 256, 256) # do your topk here, in paper they sampled 512 and chose top 32 ``` Or you can just use the official CLIP model to rank the images from DALL-E ## Citations ```bibtex @misc{unpublished2021dalle, title = {DALLĀ·E: Creating Images from Text}, author = {Aditya Ramesh, Mikhail Pavlov, Gabriel Goh, Scott Gray}, year = {2021} } ``` ```bibtex @misc{unpublished2021clip, title = {CLIP: Connecting Text and Images}, author = {Alec Radford, Ilya Sutskever, Jong Wook Kim, Gretchen Krueger, Sandhini Agarwal}, year = {2021} } ``` *Those who do not want to imitate anything, produce nothing.* - Dali