Skip to content

Instantly share code, notes, and snippets.

@afiaka87
Last active February 27, 2022 18:32
Show Gist options
  • Save afiaka87/5f64e4de49b50554270a0a6ece243014 to your computer and use it in GitHub Desktop.
Save afiaka87/5f64e4de49b50554270a0a6ece243014 to your computer and use it in GitHub Desktop.
laionide-plms
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/afiaka87/5f64e4de49b50554270a0a6ece243014/laionide.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# LAIONIDE (PLMS) - V1 (old)\n",
"\n",
"New checkpoint and notebook here: [laionide-v3-plms](https://gist.github.com/afiaka87/8655b15c94bf0e80f586ce54cfe39ab5)\n",
"\n",
"\n",
"GLIDE (base filtered) finetuned on LAION.\n",
"\n",
"Checkpoint by Clay Mullis aka afiaka87. Code modified from `openai/glide-text2im/notebooks/clip-guided.ipynb`\n",
"\n",
"Thanks to nshepperd, neverix, alstroemeria, Jack, Kianne, Thuna, valteralred and others!\n",
"\n",
"Thanks to all of the team and contributors at [laion.ai](https://laion.ai/) and the dalle-pytorch discord for creating a great dataset and community.\n",
"\n",
"Update - Katherine Crowson contributed PLMS sampling from the Pseudo Numerical Methods paper. \n",
"\n",
"This method produces better generations, and requires fewer timesteps.\n",
"\n",
"The first 3 steps used will always be PRK steps. These are slower but more effective. Generation should speed up afterward as sampling switches to PLMS."
],
"metadata": {
"id": "rWNhUI8MCTzY"
}
},
{
"cell_type": "code",
"source": [
"#@title License\n",
"# This license pertains to any modifications. The original code may be found at github.com/openai/glide-text2im/notebooks/clip-guided.ipynb\n",
"# MIT License\n",
"\n",
"# Copyright (c) 2021 Clay Mullis\n",
"\n",
"# Permission is hereby granted, free of charge, to any person obtaining a copy\n",
"# of this software and associated documentation files (the \"Software\"), to deal\n",
"# in the Software without restriction, including without limitation the rights\n",
"# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n",
"# copies of the Software, and to permit persons to whom the Software is\n",
"# furnished to do so, subject to the following conditions:\n",
"\n",
"# The above copyright notice and this permission notice shall be included in all\n",
"# copies or substantial portions of the Software.\n",
"\n",
"# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n",
"# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n",
"# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n",
"# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n",
"# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n",
"# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n",
"# SOFTWARE.\n"
],
"metadata": {
"cellView": "form",
"id": "DyQxs02tIwPD"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ugbc8VS88QTz",
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "e512909b-610f-4653-ea24-500f7977f834"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\u001b[?25l\r\u001b[K |██████▏ | 10 kB 16.4 MB/s eta 0:00:01\r\u001b[K |████████████▍ | 20 kB 11.7 MB/s eta 0:00:01\r\u001b[K |██████████████████▌ | 30 kB 5.9 MB/s eta 0:00:01\r\u001b[K |████████████████████████▊ | 40 kB 4.5 MB/s eta 0:00:01\r\u001b[K |██████████████████████████████▉ | 51 kB 2.8 MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 53 kB 969 kB/s \n",
"\u001b[?25h Building wheel for glide-text2im (setup.py) ... \u001b[?25l\u001b[?25hdone\n"
]
}
],
"source": [
"#@title Installation\n",
"!pip install -q 'git+https://github.com/crowsonkb/glide-text2im'"
]
},
{
"cell_type": "code",
"source": [
"#@title Download checkpoints, unzip.\n",
"import os\n",
"%cd /content\n",
"!wget -nc 'https://www.dropbox.com/s/mchzd28p9ees0db/laionide-base.pt'\n",
"!wget -nc 'https://www.dropbox.com/s/7cxn0gelotpocun/laionide-upsample.pt'"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"cellView": "form",
"id": "nrIuwNGO8eB0",
"outputId": "e7b0ca34-ec66-4ba5-fcf1-f0ea272e36da"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"/content\n",
"--2022-02-15 23:24:40-- https://www.dropbox.com/s/mchzd28p9ees0db/laionide-base.pt\n",
"Resolving www.dropbox.com (www.dropbox.com)... 162.125.3.18, 2620:100:601b:18::a27d:812\n",
"Connecting to www.dropbox.com (www.dropbox.com)|162.125.3.18|:443... connected.\n",
"HTTP request sent, awaiting response... 301 Moved Permanently\n",
"Location: /s/raw/mchzd28p9ees0db/laionide-base.pt [following]\n",
"--2022-02-15 23:24:40-- https://www.dropbox.com/s/raw/mchzd28p9ees0db/laionide-base.pt\n",
"Reusing existing connection to www.dropbox.com:443.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com/cd/0/inline/Bfy0qpewH0VwO2BS_tg4bOZj8Pf_y2a24VeBKGYlHXRzKDbEF4IknOA2tZpFlWXv2RMa8u4GOen8hg8bLIWhcxinsQ_LqhLZTHmB5zMYFaUnBrgVlcGsoUYBErrm7dLpwHt_6siF_5yf13smjWrZU9Bh/file# [following]\n",
"--2022-02-15 23:24:40-- https://uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com/cd/0/inline/Bfy0qpewH0VwO2BS_tg4bOZj8Pf_y2a24VeBKGYlHXRzKDbEF4IknOA2tZpFlWXv2RMa8u4GOen8hg8bLIWhcxinsQ_LqhLZTHmB5zMYFaUnBrgVlcGsoUYBErrm7dLpwHt_6siF_5yf13smjWrZU9Bh/file\n",
"Resolving uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com (uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:601b:15::a27d:80f\n",
"Connecting to uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com (uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: /cd/0/inline2/BfyO30H_ScWNTeF9z_GJ7hgdxyh7duBb9W54A-b0GNccWP6AskwzZ7QxD1_11GspuIr8blclnr3Ri51x0BHrmg9oi5DpNJ-VakUukSNBzUQFjkCK-LPgJ2kJfOVidfZ0JFB7JvzW77ilHUGWymuIvFOVt1tbiWFcfJHHDxP-WtJIDfuGzMIAMPq3X0pW4VkBuAWrRHd88woy9J7SBVtlyQE4ogF3ju9RonDoP-NUXTMo4_fV8L_6YHLV69hBTIYt4sWg9fdDoplODGSvwSts77eyv-Jg3Sd6RHj8vfJ63qQoGEOlSiIkItIZBYX3D3Q8dW5m5RDPkpyAdT21mWxVPy7WMkJURiLkMgBs4W86_UpVrMBp23JgDVMvJ_3pW8s9-S0/file [following]\n",
"--2022-02-15 23:24:40-- https://uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com/cd/0/inline2/BfyO30H_ScWNTeF9z_GJ7hgdxyh7duBb9W54A-b0GNccWP6AskwzZ7QxD1_11GspuIr8blclnr3Ri51x0BHrmg9oi5DpNJ-VakUukSNBzUQFjkCK-LPgJ2kJfOVidfZ0JFB7JvzW77ilHUGWymuIvFOVt1tbiWFcfJHHDxP-WtJIDfuGzMIAMPq3X0pW4VkBuAWrRHd88woy9J7SBVtlyQE4ogF3ju9RonDoP-NUXTMo4_fV8L_6YHLV69hBTIYt4sWg9fdDoplODGSvwSts77eyv-Jg3Sd6RHj8vfJ63qQoGEOlSiIkItIZBYX3D3Q8dW5m5RDPkpyAdT21mWxVPy7WMkJURiLkMgBs4W86_UpVrMBp23JgDVMvJ_3pW8s9-S0/file\n",
"Reusing existing connection to uc73c1e7daef41fd3c12efeda0cf.dl.dropboxusercontent.com:443.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: unspecified [application/octet-stream]\n",
"Saving to: ‘laionide-base.pt’\n",
"\n",
"laionide-base.pt [ <=> ] 1.43G 74.3MB/s in 22s \n",
"\n",
"2022-02-15 23:25:03 (66.6 MB/s) - ‘laionide-base.pt’ saved [1540425571]\n",
"\n",
"--2022-02-15 23:25:03-- https://www.dropbox.com/s/7cxn0gelotpocun/laionide-upsample.pt\n",
"Resolving www.dropbox.com (www.dropbox.com)... 162.125.8.18, 2620:100:601b:18::a27d:812\n",
"Connecting to www.dropbox.com (www.dropbox.com)|162.125.8.18|:443... connected.\n",
"HTTP request sent, awaiting response... 301 Moved Permanently\n",
"Location: /s/raw/7cxn0gelotpocun/laionide-upsample.pt [following]\n",
"--2022-02-15 23:25:03-- https://www.dropbox.com/s/raw/7cxn0gelotpocun/laionide-upsample.pt\n",
"Reusing existing connection to www.dropbox.com:443.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com/cd/0/inline/BfwwFPuVFx_8aNLzETJM82OAKscPHUEEBAAy5V5kGMS5JzmYI8JCFmsPpt1Xuy7GWHdOcDlfC6e1QOvSEOejKygjxhY-9Q5shqvY9GOX9rngP5pST3iwzsl0INNGSpHsbom6z8H03vQPu1X2mYtV8GQw/file# [following]\n",
"--2022-02-15 23:25:04-- https://uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com/cd/0/inline/BfwwFPuVFx_8aNLzETJM82OAKscPHUEEBAAy5V5kGMS5JzmYI8JCFmsPpt1Xuy7GWHdOcDlfC6e1QOvSEOejKygjxhY-9Q5shqvY9GOX9rngP5pST3iwzsl0INNGSpHsbom6z8H03vQPu1X2mYtV8GQw/file\n",
"Resolving uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com (uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:6030:15::a27d:500f\n",
"Connecting to uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com (uc86ec99fe296f69003c0bb733e8.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: unspecified [text/plain]\n",
"Saving to: ‘laionide-upsample.pt’\n",
"\n",
"laionide-upsample.p [ <=> ] 1.48G 67.0MB/s in 22s \n",
"\n",
"2022-02-15 23:25:26 (69.3 MB/s) - ‘laionide-upsample.pt’ saved [1593756359]\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "yE0nsn3M8QT0",
"cellView": "form"
},
"outputs": [],
"source": [
"#@title Imports\n",
"from PIL import Image\n",
"from IPython.display import display\n",
"import torch as th\n",
"import torch.nn as nn\n",
"\n",
"from glide_text2im.clip.model_creation import create_clip_model\n",
"from glide_text2im.download import load_checkpoint\n",
"from glide_text2im.model_creation import (\n",
" create_model_and_diffusion,\n",
" model_and_diffusion_defaults,\n",
" model_and_diffusion_defaults_upsampler,\n",
")\n",
"from glide_text2im.tokenizer.simple_tokenizer import SimpleTokenizer"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ZHO75tWm8QT1",
"cellView": "form"
},
"outputs": [],
"source": [
"#@title Device setup\n",
"# This notebook supports both CPU and GPU.\n",
"# On CPU, generating one sample may take on the order of 20 minutes.\n",
"# On a GPU, it should be under a minute.\n",
"\n",
"has_cuda = th.cuda.is_available()\n",
"device = th.device('cpu' if not has_cuda else 'cuda')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "SAClAQlu8QT3",
"cellView": "form"
},
"outputs": [],
"source": [
"# Sampling parameters\n",
"prompt = \"an oil painting of a pembroke welsh corgi\" #@param {type:\"string\"}\n",
"batch_size = 3 #@param {type:\"number\"}\n",
"guidance_scale = 4#@param {type:\"number\"}\n",
"\n",
"#@markdown ============\n",
"\n",
"#@markdown Tune this parameter to control the sharpness of 256x256 images.\n",
"# A value of 1.0 is sharper, but sometimes results in grainy artifacts.\n",
"upsample_temp = 0.998 #@param {type:\"number\"}\n",
"\n",
"base_timestep_respacing = '27' #@param {type:\"string\"}\n",
"sr_timestep_respacing = '17' #@param {type:\"string\"}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "_6KgbrfG8QT2",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8a50cddf-8880-4300-8caa-7049e58133e0",
"cellView": "form"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Resumed from /content/laionide-base.pt successfully.\n",
"total base parameters 385030726\n"
]
}
],
"source": [
"#@title Create base model.\n",
"glide_path = '/content/laionide-base.pt' #@param {type:\"string\"}\n",
"\n",
"options = model_and_diffusion_defaults()\n",
"options['use_fp16'] = has_cuda\n",
"options['timestep_respacing'] = base_timestep_respacing # use 100 diffusion steps for fast sampling\n",
"model, diffusion = create_model_and_diffusion(**options)\n",
"\n",
"if len(glide_path) > 0:\n",
" assert os.path.exists(\n",
" glide_path\n",
" ), f\"Failed to resume from {glide_path}, file does not exist.\"\n",
" weights = th.load(glide_path, map_location=\"cpu\")\n",
" model, diffusion = create_model_and_diffusion(**options)\n",
" model.load_state_dict(weights)\n",
" print(f\"Resumed from {glide_path} successfully.\")\n",
"else:\n",
" model, diffusion = create_model_and_diffusion(**options)\n",
" model.load_state_dict(load_checkpoint(\"base\", device))\n",
"model.eval()\n",
"if has_cuda:\n",
" model.convert_to_fp16()\n",
"model.to(device)\n",
"print('total base parameters', sum(x.numel() for x in model.parameters()))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "-1pSfNwI8QT2",
"colab": {
"base_uri": "https://localhost:8080/"
},
"cellView": "form",
"outputId": "8f20874f-85a8-4135-c047-ccae2c4d37f2"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Resumed from /content/laionide-upsample.pt successfully.\n",
"total upsampler parameters 398361286\n"
]
}
],
"source": [
"#@title Create upsampler model.\n",
"sr_glide_path = '/content/laionide-upsample.pt' #@param {type:\"string\"}\n",
"\n",
"\n",
"options_up = model_and_diffusion_defaults_upsampler()\n",
"options_up['use_fp16'] = has_cuda\n",
"options_up['timestep_respacing'] = sr_timestep_respacing # use 27 diffusion steps for very fast sampling\n",
"\n",
"if len(sr_glide_path) > 0:\n",
" assert os.path.exists(\n",
" sr_glide_path\n",
" ), f\"Failed to resume from {sr_glide_path}, file does not exist.\"\n",
" weights = th.load(sr_glide_path, map_location=\"cpu\")\n",
" model_up, diffusion_up = create_model_and_diffusion(**options_up)\n",
" model_up.load_state_dict(weights)\n",
" print(f\"Resumed from {sr_glide_path} successfully.\")\n",
"else:\n",
" model_up, diffusion_up = create_model_and_diffusion(**options)\n",
" model_up.load_state_dict(load_checkpoint(\"upsample\", device))\n",
"\n",
"if has_cuda:\n",
" model_up.convert_to_fp16()\n",
"model_up.to(device)\n",
"print('total upsampler parameters', sum(x.numel() for x in model_up.parameters()))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dErFTHAZ8QT3",
"cellView": "form"
},
"outputs": [],
"source": [
"#@title Util\n",
"def show_images(batch: th.Tensor):\n",
" \"\"\" Display a batch of images inline. \"\"\"\n",
" scaled = ((batch + 1)*127.5).round().clamp(0,255).to(th.uint8).cpu()\n",
" reshaped = scaled.permute(2, 0, 3, 1).reshape([batch.shape[2], -1, 3])\n",
" display(Image.fromarray(reshaped.numpy()))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "aOoXrFs78QT4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 113,
"referenced_widgets": [
"eef3268e852648ceb45c93f4d82e9a17",
"7d88e6fbe361450397097eb78369622f",
"f6e4ba5fadf043eb9bf96311094e60f0",
"32ab1935e7b74a048fa6562302f29beb",
"edfa3ba29b834e9299c65914e47b0f78",
"8bf1dc9eaaa3410da090bd912e9c5111",
"696abd5a9aba4fc29aff271062eef696",
"6bb07f2224324a6991ccb3187bcf6718",
"85badac55cba4021bd7c0d6f550f7f49",
"35f29da12f9f42e1a0435c8fbd309912",
"dbb9ecaec5694d0aaf3dde0879a6ba87"
]
},
"cellView": "form",
"outputId": "add0e82d-eba8-4894-af38-87459e0ca7eb"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "eef3268e852648ceb45c93f4d82e9a17",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
" 0%| | 0/98 [00:00<?, ?it/s]"
]
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<PIL.Image.Image image mode=RGB size=192x64 at 0x7F5C922DE5D0>"
]
},
"metadata": {}
}
],
"source": [
"#@title Base model sampling\n",
"##############################\n",
"# Sample from the base model #\n",
"##############################\n",
"\n",
"# Create the text tokens to feed to the model.\n",
"tokens = model.tokenizer.encode(prompt)\n",
"tokens, mask = model.tokenizer.padded_tokens_and_mask(\n",
" tokens, options['text_ctx']\n",
")\n",
"\n",
"# Pack the tokens together into model kwargs.\n",
"model_kwargs = dict(\n",
" tokens=th.tensor([tokens] * batch_size, device=device),\n",
" mask=th.tensor([mask] * batch_size, dtype=th.bool, device=device),\n",
")\n",
"\n",
"# Sample from the base model.\n",
"model.del_cache()\n",
"samples = diffusion.plms_sample_loop(\n",
" model,\n",
" (batch_size, 3, options[\"image_size\"], options[\"image_size\"]),\n",
" device=device,\n",
" clip_denoised=True,\n",
" progress=True,\n",
" model_kwargs=model_kwargs,\n",
" cond_fn=None,\n",
")\n",
"model.del_cache()\n",
"\n",
"# Show the output\n",
"show_images(samples)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "9V1DsKPS8QT5",
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 49,
"referenced_widgets": [
"a78bec685c664fe9a3c356b695eeae46",
"3716f09aa1794af593cc40b3d366bd24",
"620c4bb60ec84a8186e1d9ca4d997079",
"d6c2fc14398c4faf97d1f3c04879800f",
"13d0cdf5834e4981852f890c95a2ae30",
"19704633f5ae4dc0b7609c67fb50b0f2",
"0543aba4eb0f4b8abaa2d7ec7c1219fb",
"fb3e344c2b3b4e4fa3db3499b3c7424f",
"42dfc5ff325c4401878cbe9767fd7dee",
"dc70d84cc202459fa75214c0ca5f08eb",
"ed1425f8ddc74be384437c1e4c769a10"
]
},
"outputId": "b8d7c7ea-1c16-4dd4-91fe-5eff1cfbeea5"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a78bec685c664fe9a3c356b695eeae46",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
" 0%| | 0/25 [00:00<?, ?it/s]"
]
},
"metadata": {}
}
],
"source": [
"#@title Upsampling 4x\n",
"\n",
"##############################\n",
"# Upsample the 64x64 samples #\n",
"##############################\n",
"\n",
"tokens = model_up.tokenizer.encode(prompt)\n",
"tokens, mask = model_up.tokenizer.padded_tokens_and_mask(\n",
" tokens, options_up['text_ctx']\n",
")\n",
"\n",
"# Create the model conditioning dict.\n",
"model_kwargs = dict(\n",
" # Low-res image to upsample.\n",
" low_res=((samples+1)*127.5).round()/127.5 - 1,\n",
"\n",
" # Text tokens\n",
" tokens=th.tensor(\n",
" [tokens] * batch_size, device=device\n",
" ),\n",
" mask=th.tensor(\n",
" [mask] * batch_size,\n",
" dtype=th.bool,\n",
" device=device,\n",
" ),\n",
")\n",
"\n",
"# Sample from the base model.\n",
"model_up.del_cache()\n",
"up_shape = (batch_size, 3, options_up[\"image_size\"], options_up[\"image_size\"])\n",
"up_samples = diffusion_up.plms_sample_loop(\n",
" model_up,\n",
" up_shape,\n",
" noise=th.randn(up_shape, device=device) * upsample_temp,\n",
" device=device,\n",
" clip_denoised=True,\n",
" progress=True,\n",
" model_kwargs=model_kwargs,\n",
" cond_fn=None,\n",
")[:batch_size]\n",
"model_up.del_cache()\n",
"\n",
"# Show the output\n",
"show_images(up_samples)"
]
}
],
"metadata": {
"interpreter": {
"hash": "e7d6e62d90e7e85f9a0faa7f0b1d576302d7ae6108e9fe361594f8e1c8b05781"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
},
"accelerator": "GPU",
"colab": {
"name": "laionide-plms",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"eef3268e852648ceb45c93f4d82e9a17": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_7d88e6fbe361450397097eb78369622f",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_f6e4ba5fadf043eb9bf96311094e60f0",
"IPY_MODEL_32ab1935e7b74a048fa6562302f29beb",
"IPY_MODEL_edfa3ba29b834e9299c65914e47b0f78"
]
}
},
"7d88e6fbe361450397097eb78369622f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"f6e4ba5fadf043eb9bf96311094e60f0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_8bf1dc9eaaa3410da090bd912e9c5111",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": "100%",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_696abd5a9aba4fc29aff271062eef696"
}
},
"32ab1935e7b74a048fa6562302f29beb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_6bb07f2224324a6991ccb3187bcf6718",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 98,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 98,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_85badac55cba4021bd7c0d6f550f7f49"
}
},
"edfa3ba29b834e9299c65914e47b0f78": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_35f29da12f9f42e1a0435c8fbd309912",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 98/98 [01:33&lt;00:00, 1.15it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_dbb9ecaec5694d0aaf3dde0879a6ba87"
}
},
"8bf1dc9eaaa3410da090bd912e9c5111": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"696abd5a9aba4fc29aff271062eef696": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"6bb07f2224324a6991ccb3187bcf6718": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"85badac55cba4021bd7c0d6f550f7f49": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"35f29da12f9f42e1a0435c8fbd309912": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"dbb9ecaec5694d0aaf3dde0879a6ba87": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"a78bec685c664fe9a3c356b695eeae46": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_3716f09aa1794af593cc40b3d366bd24",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_620c4bb60ec84a8186e1d9ca4d997079",
"IPY_MODEL_d6c2fc14398c4faf97d1f3c04879800f",
"IPY_MODEL_13d0cdf5834e4981852f890c95a2ae30"
]
}
},
"3716f09aa1794af593cc40b3d366bd24": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"620c4bb60ec84a8186e1d9ca4d997079": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_19704633f5ae4dc0b7609c67fb50b0f2",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 28%",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_0543aba4eb0f4b8abaa2d7ec7c1219fb"
}
},
"d6c2fc14398c4faf97d1f3c04879800f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_fb3e344c2b3b4e4fa3db3499b3c7424f",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "",
"max": 25,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 7,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_42dfc5ff325c4401878cbe9767fd7dee"
}
},
"13d0cdf5834e4981852f890c95a2ae30": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_dc70d84cc202459fa75214c0ca5f08eb",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 7/25 [00:54&lt;01:33, 5.17s/it]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_ed1425f8ddc74be384437c1e4c769a10"
}
},
"19704633f5ae4dc0b7609c67fb50b0f2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"0543aba4eb0f4b8abaa2d7ec7c1219fb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"fb3e344c2b3b4e4fa3db3499b3c7424f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"42dfc5ff325c4401878cbe9767fd7dee": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"dc70d84cc202459fa75214c0ca5f08eb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"ed1425f8ddc74be384437c1e4c769a10": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment