diff --git a/generation/2d_super_resolution/2d_sd_super_resolution.ipynb b/generation/2d_super_resolution/2d_sd_super_resolution.ipynb new file mode 100644 index 000000000..15d111bc4 --- /dev/null +++ b/generation/2d_super_resolution/2d_sd_super_resolution.ipynb @@ -0,0 +1,1249 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "33a9aedb-b4d8-48c6-9590-58b221405ca5", + "metadata": {}, + "source": [ + "Copyright (c) MONAI Consortium
\n", + "Licensed under the Apache License, Version 2.0 (the \"License\");
\n", + "you may not use this file except in compliance with the License.
\n", + "You may obtain a copy of the License at
\n", + "http://www.apache.org/licenses/LICENSE-2.0
\n", + "Unless required by applicable law or agreed to in writing, software
\n", + "distributed under the License is distributed on an \"AS IS\" BASIS,
\n", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\n", + "See the License for the specific language governing permissions and
\n", + "limitations under the License.
" + ] + }, + { + "cell_type": "markdown", + "id": "95c08725", + "metadata": {}, + "source": [ + "# Super-resolution using Stable Diffusion v2 Upscalers\n", + "\n", + "This tutorial illustrates how to perform **super-resolution** on medical images using Latent Diffusion Models (LDMs) [1]. The idea is that, given a low-resolution image, we train a spatial autoencoder with a latent space of the same spatial size of the low resolution, so that high resolution images are encoded into a latent space of the same size of the low resolution image. The LDM then learns how to go from **noise to a latent representation of a high resolution image**. On training and inference, the **low resolution image is concatenated to the latent**, to condition the generative process. Finally, the high resolution latent representation is decoded into a high resolution image. \n", + "\n", + "To improve the performance of our models, we will use a method called \"noise conditioning augmentation\" (introduced in [2] and used in Stable Diffusion v2.0 and Imagen Video [3]). During the training, we add noise to the low-resolution images using a random signal-to-noise ratio, and we condition the diffusion models on the amount of noise added. At sampling time, we use a fixed signal-to-noise ratio, representing a small amount of augmentation that aids in removing artefacts in the samples.\n", + "\n", + "\n", + "[1] - Rombach et al. \"High-Resolution Image Synthesis with Latent Diffusion Models\" https://arxiv.org/abs/2112.10752\n", + "\n", + "[2] - Ho et al. \"Cascaded diffusion models for high fidelity image generation\" https://arxiv.org/abs/2106.15282\n", + "\n", + "[3] - Ho et al. \"High Definition Video Generation with Diffusion Models\" https://arxiv.org/abs/2210.02303" + ] + }, + { + "cell_type": "markdown", + "id": "b839bf2d", + "metadata": {}, + "source": [ + "## Setup environment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "77f7e633", + "metadata": {}, + "outputs": [], + "source": [ + "!python -c \"import monai\" || pip install -q \"monai-weekly[tqdm]\"\n", + "!python -c \"import matplotlib\" || pip install -q matplotlib\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "214066de", + "metadata": {}, + "source": [ + "## Setup imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de71fe08", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import tempfile\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn.functional as F\n", + "from monai import transforms\n", + "from monai.apps import MedNISTDataset\n", + "from monai.config import print_config\n", + "from monai.data import CacheDataset, DataLoader\n", + "from monai.utils import first, set_determinism\n", + "from torch import nn\n", + "from torch.amp import GradScaler, autocast\n", + "from tqdm import tqdm\n", + "from monai.losses import PatchAdversarialLoss, PerceptualLoss\n", + "from monai.networks.nets import AutoencoderKL, DiffusionModelUNet, PatchDiscriminator\n", + "from monai.networks.schedulers import DDPMScheduler\n", + "\n", + "print_config()" + ] + }, + { + "cell_type": "markdown", + "id": "c0dde922", + "metadata": {}, + "source": [ + "## Setup a data directory and download dataset\n", + "Specify a MONAI_DATA_DIRECTORY variable, where the data will be downloaded. If not specified a temporary directory will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ded618a7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/tmp/tmpj53lse09\n" + ] + } + ], + "source": [ + "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", + "root_dir = tempfile.mkdtemp() if directory is None else directory\n", + "print(root_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "645f97bb-6879-4b2e-8fc9-29dd1a6e904f", + "metadata": {}, + "source": [ + "## Set deterministic training for reproducibility" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9f0a17bc", + "metadata": {}, + "outputs": [], + "source": [ + "# for reproducibility purposes set a seed\n", + "set_determinism(42)" + ] + }, + { + "cell_type": "markdown", + "id": "d80e045b", + "metadata": {}, + "source": [ + "## Description of data and download the training set\n", + "\n", + "For this tutorial, we use the head CT dataset from MedNIST." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c8cf204a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-09-23 09:27:05,757 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2024-09-23 09:27:05,758 - INFO - File exists: /tmp/tmpj53lse09/MedNIST.tar.gz, skipped downloading.\n", + "2024-09-23 09:27:05,759 - INFO - Non-empty folder exists in /tmp/tmpj53lse09/MedNIST, skipped extracting.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:16<00:00, 2923.68it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-09-23 09:27:22,258 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2024-09-23 09:27:22,258 - INFO - File exists: /tmp/tmpj53lse09/MedNIST.tar.gz, skipped downloading.\n", + "2024-09-23 09:27:22,259 - INFO - Non-empty folder exists in /tmp/tmpj53lse09/MedNIST, skipped extracting.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 2964.04it/s]\n" + ] + } + ], + "source": [ + "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", download=True, seed=0)\n", + "train_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"HeadCT\"]\n", + "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n", + "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"HeadCT\"]" + ] + }, + { + "cell_type": "markdown", + "id": "cacdb233", + "metadata": {}, + "source": [ + "## Prepare dataloaders\n", + "\n", + "Here, we create the data loader that we will use to train our models. We will use data augmentation and create low-resolution images using MONAI's transformations:\n", + "\n", + "1. `LoadImaged`: to load the images\n", + "2. `EnsureChannelFirstd`: to make sure there is a channel dimension at the beginning of the output tensor\n", + "3. `ScaleIntensityRanged`: normalise the images\n", + "4. `RandAffined`: affine augmentation (just training)\n", + "5. `CopyItemd`: we copy the image item to obtain the low-resolution representation\n", + "6. `Resized`: we resize the low resolution image (copy we just made) to obtain a low resolution representation to 16x16" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c7997edf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7991/7991 [00:05<00:00, 1544.42it/s]\n", + "Loading dataset: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 972/972 [00:01<00:00, 804.53it/s]\n" + ] + } + ], + "source": [ + "image_size = 64\n", + "\n", + "# Transforms\n", + "all_transforms = [\n", + " transforms.LoadImaged(keys=[\"image\"]),\n", + " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n", + " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n", + " transforms.RandAffined(\n", + " keys=[\"image\"],\n", + " rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)],\n", + " translate_range=[(-1, 1), (-1, 1)],\n", + " scale_range=[(-0.05, 0.05), (-0.05, 0.05)],\n", + " spatial_size=[image_size, image_size],\n", + " padding_mode=\"zeros\",\n", + " prob=0.5,\n", + " ),\n", + " transforms.CopyItemsd(keys=[\"image\"], times=1, names=[\"low_res_image\"]),\n", + " transforms.Resized(keys=[\"low_res_image\"], spatial_size=(16, 16)),\n", + "]\n", + "\n", + "train_transforms = transforms.Compose(all_transforms)\n", + "val_transforms = transforms.Compose(all_transforms[:3] + all_transforms[4:])\n", + "\n", + "# Datasets\n", + "train_ds = CacheDataset(data=train_datalist, transform=train_transforms)\n", + "train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True)\n", + "val_ds = CacheDataset(data=val_datalist, transform=val_transforms)\n", + "val_loader = DataLoader(val_ds, batch_size=32, shuffle=True, num_workers=4)" + ] + }, + { + "cell_type": "markdown", + "id": "166e4242", + "metadata": {}, + "source": [ + "### Visualise examples from the training set" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8c0fe41c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot 3 examples from the training set\n", + "check_data = first(train_loader)\n", + "fig, ax = plt.subplots(nrows=1, ncols=3)\n", + "for i in range(3):\n", + " ax[i].imshow(check_data[\"image\"][i, 0, :, :], cmap=\"gray\")\n", + " ax[i].axis(\"off\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "76412555", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot 3 examples from the training set in low resolution\n", + "fig, ax = plt.subplots(nrows=1, ncols=3)\n", + "for i in range(3):\n", + " ax[i].imshow(check_data[\"low_res_image\"][i, 0, :, :], cmap=\"gray\")\n", + " ax[i].axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "id": "9fc99896", + "metadata": {}, + "source": [ + "## Define the autoencoder network and training components" + ] + }, + { + "cell_type": "markdown", + "id": "9b52c4a7-26eb-47e7-8aac-99c62ca88ee3", + "metadata": {}, + "source": [ + "To yield a 16x16 latent representation from the high-resolution images, we use AutoencoderKL. We train it using a Patch-GAN adversarial loss, as well as a perceptual loss, to boost image fidelity." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "610bd118", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cuda\n" + ] + } + ], + "source": [ + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "print(f\"Using {device}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "0e4ef480", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "autoencoderkl = AutoencoderKL(\n", + " spatial_dims=2,\n", + " in_channels=1,\n", + " out_channels=1,\n", + " channels=(256, 512, 512),\n", + " latent_channels=3,\n", + " num_res_blocks=2,\n", + " norm_num_groups=32,\n", + " attention_levels=(False, False, True),\n", + ")\n", + "autoencoderkl = autoencoderkl.to(device)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bd5197a4-ec30-4f13-9b7a-5e3e43a42637", + "metadata": {}, + "outputs": [], + "source": [ + "discriminator = PatchDiscriminator(spatial_dims=2, in_channels=1, num_layers_d=3, channels=64)\n", + "discriminator = discriminator.to(device)\n", + "adv_loss = PatchAdversarialLoss(criterion=\"least_squares\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfd826c6", + "metadata": {}, + "outputs": [], + "source": [ + "perceptual_loss = PerceptualLoss(spatial_dims=2, network_type=\"alex\")\n", + "perceptual_loss.to(device)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "410911c9", + "metadata": {}, + "outputs": [], + "source": [ + "scaler_g = GradScaler()\n", + "scaler_d = GradScaler()" + ] + }, + { + "cell_type": "markdown", + "id": "c16de505", + "metadata": {}, + "source": [ + "## Train Autoencoder" + ] + }, + { + "cell_type": "markdown", + "id": "a93437fe-d6ef-42d2-bedd-4da735c59dd1", + "metadata": {}, + "source": [ + "In this section, we train a spatial autoencoder to learn how to compress high-resolution images into a latent space representation. We need to ensure that the latent space spatial shape matches that of the low resolution images." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "2789508d-9fa8-483e-8b4c-dd17bf2f39b8", + "metadata": {}, + "outputs": [], + "source": [ + "# Loss weights\n", + "perceptual_weight = 0.002\n", + "adv_weight = 0.005\n", + "kl_weight = 1e-6\n", + "\n", + "# Optimizers\n", + "optimizer_g = torch.optim.Adam(autoencoderkl.parameters(), lr=5e-5)\n", + "optimizer_d = torch.optim.Adam(discriminator.parameters(), lr=1e-4)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "830a3979", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 0/75:,recons loss: 0.153782,perc_epoch_loss: 0.505703,kl_epoch_loss: 2163.503702,\n", + "Validation. recons loss: 0.002920,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 5/75:,recons loss: 0.055186,perc_epoch_loss: 0.259082,kl_epoch_loss: 2720.869604,\n", + "epoch 10/75:,recons loss: 0.047029,perc_epoch_loss: 0.211522,kl_epoch_loss: 2314.558471,\n", + "Validation. recons loss: 0.001608,\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKIAAABbCAYAAADwb17KAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAkEklEQVR4nO1dyW9b1/X+yMd5FkVJFGXJsiw7Tpy0RTqktds0CIKkKdBmUxTorpsCRYH+CV12WaDLossAWQQF2qJAgi4SIJsmQV20SerEimrLmqyBpDjPfCR/C+G7Orx+j6QU2ZHw4wEEUXzTffd+9wzfOffK0ev1ehjLWL5kcX7ZDRjLWIAxEMdyRmQMxLGcCRkDcSxnQsZAHMuZkDEQx3ImZAzEsZwJGQNxLGdCxkAcy5kQ16gnplKpR9mOY0mn00G9Xoff74fT6USv14PD4UCn00G324XD4YBhGOj1emDiyOFwAAC63a463+12w+v1DnyWaZpoNBpoNpvo9XoIBAJwu90wTRO9Xg+GYaj7OhwOOJ1OOJ2H81t/tpRut9t3zmmJfJbD4VA/TqdTHbN6pvyObdPvKX+zbwfdq9frwTRN7O/vD233yEA8S+L3+/Hkk08iHo8jFovB5/PB7XarDvf5fPB6vXA6neh2u32DTgBRZKdJYacT9MViEdvb21hfX0etVoPLddh1rVYLAOByufrALu+vD6T+7FGEgz9I7I7L5/Z6vYeApt/DCoicXDyH5w2abIO+1+VcAhEA2u02Go0GqtUqarUaer0e2u02Op0ODMOAy+VCu93uA2Kn01FaEzgCJj/LAaAG8Xg8CAQCCIfDuH79Oq5fv47t7W3cv38f+XwebrfbVisMAs5xNeFJQCg14qBJYKUpdYDJv6U2lBNZ18by9zA5l0Bst9vY2dlBsVhUQOh0Omi32wpY7AD+DfRrRF1L6GacP263G4FAAB6PB9FoFMlkErOzs0gkEtjf30cmk0E2m0WtVrM1fXye3feyvSc11fqA2wGPE1MHlt4XdjIKCE/yHo5Rq2/Oko/Y7XbRbrfh8XgAHL40zXCn01G+m8vlUp1O08Lj0p8bBETev9VqodPpIBaL4erVq5ifn4dhGKjX6/jf//6HjY2NgZqF95VyGmbbDsB22lA3qfqz7fpBPwd42JfUn8977e7uDn2Pc6kRnU4nvF4vHA6H0nB6kCABBuChzrTy56RIP6jb7cLv98Pj8aDVauH999+H2+3GE088gevXryMajVre+7TESuPoz+H72r2H/redRrS7v5UvPYoWH7UvzqVGBADDMPqAyOiVnexwOPr8Q57Pc6SGtPOhdBCbpolmswmXywWfzwfgMFihCT+pT2hnnq2ifv06PZId5dl2gZl8ppVVGGY15D3k9zs7O7bvTjmXGpGm0uVyPRRkdLtdFWhIE6SbEyu/zarTZWe73W643W50Oh20Wi04nU54PJ4+MyRF15J2Ebp+3O56ed6gwMBOA8pn6CAeJHY+oe5a6OccR84lEAEo3pCfdVPD6FkXSUPof+ugtNJQPEb6hvyhVfvk50GDZ6WR+Tw5wDqYZfvsQK/fz6pt+n0GtcnuHeW9TgLGcwnEUfyO0/bTjiODnm03eHbHrQKfYRGynUkdFClL4eS0ArcVSO182OPIuQQi8OUCTZdhAzFKMDDsXB0Aw0zrKP6bfv9Rsj26xjuNQAU4p0A8LrXxuGQU82h3zTBzplMpg2gV+b1M7UnRfWa6GIOiYyv/VN7vi/T3uQTiqIP8Zcgog6H7d/L7QfccBkIJIh2AduZc968Z4OlpylHexwq8o8q5BCJwtkzzMBkUPFgBktfI37qmsqJkdE6U3KoVcHlcfu52u6pYZNCzrEQH4f+rqHmYPC6taWUe7c7Ro2a7c3WNRk1lp630gMTuXtLX5PdW2tMwjIcyMHaRupXf+P9CI1rNfl1GoR8ehwwLSAZpQjnAViZTXmMYRl9mSQcl/5ZFHwSh0+lU10stahiGosjsuEv5DsOCl0FyLoEI9BczWInDcZjteFxC/8rumJ1ptuIoaSZ1IPKYBI3L5YLL5YLX64Xb7VbcKXPqBBLz8O12W+XNCcper9fXn7yPzMXb5aclraNPlOOY6McORA4YZxwbK6tC2AGVSgVOpxN+vx+BQAChUAiBQAAOhwOxWAxut1vlgJntKJfLyOfzyOVyKJfLaLfbDw0u/SD5udVqqZpG4DAl2Gg00O12RwL0IAJ50DlyIPUyNB5nBoclaX6/Hz6fD36/H16vF4FAAMFgEIFAQAFIN+WmaaLT6aDZbKLZbKJer6PZbKJSqaBWq6FWq6FaraLZbKLdbqPX66kaSz1TZWd+rcj2UeWxA1F2Nl/aMAy43W50u13UajU4nU4sLCzgpZdewiuvvIKnn34aPp9PgTISiQA4MtHsLH5Xr9eRzWbx+eef49atW3j77bexvr6uBqrT6SjQ1et1NSHYec1mE4ZhqJ9RxI5GkX/r50utwpy3HGyn0wm32w2fz4dYLIZ4PI7JyUnEYjHEYjGEw2EEg0GEQiEEg0EEg0F4PB7Vbl1rSSBWKhVUKhVks1lkMhns7e1hZ2cH2WwWpVJJnU8NrLsKVmDUfd/jaMTHWvTQ6x0Wr4bDYTVDHQ4HWq0WvF4vrly5gu9///t45plncOXKFcTjcXg8HoTD4b4KaDlb7Z5hmia63S6q1SoymQzee+89/OlPf8LKygo6nY4aMHY2fzscDrUsgFXeNG92og8S2yGP698BeCiIkOaPkzMUCiEWi2F+fh6pVArz8/MKjJFIRGlGt9vdB0LmxfXJ1Ol0YJqm0oCZTAY7OzvY3NzE6uoqNjc3sbm5iVqtpsZHWi7d3NtpRb53r3cGix4cDgd8Ph+azSZarRZM00QikcDNmzdx8+ZNfOUrX0EikcD8/DyCwaAqMJADJMHCChjgqOCTWsTlcsHpdCIUCmFiYgLxeByLi4t466238P7772NnZwftdhuBQEDdo91uq3UsrVbrCznfVuTvsCjZ7XYrv8/n8yEUCiGRSGB6ehrLy8uYn59XQAyHw6oUjuAgQFiL6fF44PV6LSft5OQkAGBubg5zc3NIJpOIRCKIxWJwOp3Y3d1FoVBQ/S8nDU0/YJ+fl30wijx20+x2u5HJZOD3+/Hss8/i5s2buHHjBp555hnMzMyg0+kosAKHZVb3799HLpdT/l6v10OlUsH09DTi8TgmJibg8/n6TAg/s/hhdnYWL7zwAqampjA3N4d33nkHn3/+uSrjYq1ht9uF1+tVGvW4ohPE8nsroQkm+AhATp6FhQWkUilcvXoVqVQKs7OzCIfD6vpWq4VSqaRMbafTUcELfUmPx6O0o8vl6tOQ4XAY4XAYkUgEXq8XwWBQrcNpt9uoVqt9pXa6GyQjcKv3HNVXfOxANE0Tfr8f3/jGN/Czn/0Mzz//PJLJZJ82kLNoY2MD7777Lh48eKA6qNvtotlsIplMYm5uDgsLC+oeXLfi9/uRSqXUSj/TNBEMBvHcc88hHA6r7z/55BOYpgmv1wvDMGCapirtkiv+hondeYOulVre4/EgEolgYmIC09PTSKVSSKVSuHz5Mubm5rC4uKh8YymNRgPZbBbpdBrZbBbtdlsBMRgM9gGRBcX0s+X9EomE8sHr9bpaNNbtdhXA2VZJkJ+EvLaSxwpERqc3btzAL37xC7zwwgvw+/3KX5S+msfjQa/Xw8rKCm7duoVMJgPDMFSkSDDu7+9je3sbqVQKhmGgXC6jUqkgHA7jueeew9NPP41QKKQ0n8vlwoULF/Dqq6/C7XZjf38fW1tb6Ha7cLlcaDabfVzbqO81SOMNug44NKWBQACTk5OYm5vDxYsXsby8rH7TjOpSKpWws7ODu3fvYmdnB/v7+yr4I9PAFY7UgmQaEokEpqamMDMzowAZj8cRCATQaDTQ6XRQKpUU3VOv12Ga5kP0kc5ZSsL8OAB9rEB0Op2YnJzEr371K7z00kvKGebaYknf1Ot19HqH64ivXbuGeDyOVquFWCyGhYUF3L9/X1Ev1GCkb4rFIrLZLPb391GpVPD888/D6XQin89jYmICkUgEV65cQbfbxd7eHt58882+JaLS3JyEFNezD1Y0jtSGXq8XkUgEyWQSS0tLeOKJJ/DUU0/h0qVLttRRq9XCwcEB9vf3sbu7i93dXWSzWZimqcBWq9WUpmc7OMlLpVKf2Y1GowAAn8+HpaUl1Ot1pNNpNJtNBUxOUtk3OhhPqiEfKxD9fj9++9vf4pVXXgHQT0q3220VPLRaLfj9fpRKJaTTafj9fiwuLqJcLqPZbKJarSIcDsPj8Siuj7/9fj+CwSAMw0CpVMLt27fRaDTwzW9+E1NTU+j1emg0GjAMA9evX8fPf/5z3Lp1C//+97+Va0Aq6VGI7txTG05MTCCVSmFxcRGXL1/G8vLyQ0W8lGaziUwmg0wmg3w+j0qlokBCv42aEUCfv0ywcNkDOcXZ2VlMTU3B5XIhkUjg8uXLyOVyioUAgFwuh0aj8VDgKCN+3To89mCFkRtnMCNQl8ulyup/9KMf4bXXXkOv10Oz2eyLxEg3AFAA29zc7Mt5MpJmNNdsNlEsFhXR63Q6FSBDoRBmZ2ext7eHTqeDN954Az/84Q+xtLTU52SnUin85je/wU9+8hNlnrke2g4Idu8PDC86ldrQMAx4PB4FQmrDq1ev2j47m82iWCwin8/j4OBAmU/2G4MKvYKc/cy+rNVqqg3A0ZrvZDIJl8uF2dlZXL16Fd1uV5llUj8ENN9XLtyy+z1MTlUjciDlovVmswmHw4GlpSW8/PLLqFQqCIVCinqh30H/sFgsYm9vD61WC9vb2yiVSn0zDzjcVSEYDKLRaGB6ehputxuVSqUvqs7n82g2m3C73VhbW8Pq6iqWlpYwPT2NWCymNILf78elS5dw48YN3Lp1S0WdMhNzXEDa+Yy6P8VdKeLxOJLJJC5cuIBUKmW5DQoj41KphFqt1uezMbtixXlKcpwUEQA1wcvlMrrdrqLTut0uUqkUXC4XLl682Pds/lSrVcVGSBDqwd1x6K9TBSIbRSAyWiVZffPmTcXbEaQA1F4ymUwG//nPf7C1tYVYLIZ6va7SdZVKRQUcJJoZCUu6h/QEO77RaGB3dxeRSAStVgurq6t44oknEIvFABzO6MnJSbz00kv45z//qYA4KCsyiowapPh8PqUR5+bmMD09/dD56XQauVxO+WutVkv5bcChJvT7/QD6d7PQU3KS3ObkarfbqFQqKkng9XoVWR4Oh7GwsID9/X31k06nFdmtW41R6Co7OTUgssiACXXJ6QWDQczPz/el5qQZZyCxsrKC//73v/D7/SgWi0rLkeOqVqvKzJdKJfh8PnVONBpVs5xarFarKaoiEAigWCxid3cXqVQK4XBYaT2Px4Nnn332IfAdtzOtTLIVrybz2TJ7wskhJZfLIZvNKnfENE2lzelC8L4M3mTGQwckaw55nGa2Xq+jVCqhUCigVCqpsYpEIpienkYikUA0GlWpVumP8n2lBvxSc80ulwuNRkNVhLADOLPYaFlu1Gq1kE6nce/ePaytraHVasHn86FWq6FcLiutp5sdFkFIE8VAhFrNNE0YhqF4w0qlAsMwsL+/r0hcDszCwgL8fn8fdXMckzwoWtR9NPm93FtHEtWUXC6Hg4MDlMtldT2DEZmhkmCTwr95DqtwZNkY284+p/9ImZiYwMTEBEKhkLJG0uTLUjHpG35p9A1fiKknEqOkXGTDqI0KhQJWV1exurqKYrGIyclJtY8MfcN6va7yx+Sx2AmMcEn3UCObpgmXy4VsNotkMomJiQk0Gg3UajXs7OxgcnIS0WhUTQhmaAhsPYNwnPe3+iwzDzxGjchIn+aVUqlUkM/nUSgUVDEIAOXT0VRTO8p0qK6dCUL2If1g2R5G0OxvWqxQKIRQKKRy2vqks8o3H9elOdWNOukzcE8aclShUAgXLlzom4U8Tr6vXC7DMAwEg0FlWhjUsMMJLoIzn88DONTELGFiRoH1eZVKBeVyuS8PWyqVlIahz+Tz+ZBMJtVsP46POCiHPOgamlNaEF0Dy+CAAKnX66psi0GLBCNNtxX9RAATxIyApaZsNpvq3hSPx6O2+rNqp927HYeHPfWomRUt5LEY4dLsyGIAktAejweJRAKtVgu5XA6GYSCfz6vznE4nIpGIMv3lchnT09NqdtNBl2k5prrm5ubgdruRTqdRr9eRSCTg9XrRaDRQKpX6/LKpqSlViyf9rVFMtB13pudgrfxQAlG/R7lcVsRzvV5XlIxpmn2mmQCk762L9OX0AhK5XICBJgFPkptWSEbJcjuXQX3ypQCRL1ir1WCapkoxeTweZYqdTieazSY8Hg8+++wzvPvuuyiVSirVVCgU+mafaZoolUoq9VepVHBwcADDMOD1erG/v49Wq4VkMqkA1m63Ved5PB5Uq1WVmclkMnC5XPD7/Zibm0MkElGdFQ6HFb95Uj4ReLjyZhDBq+dseW61WlU/9XpdFWRwsklOT37WiWWCTAIOOKrQIdcrKSvuPUmRXKQVuGSgYkddDZNTJbRbrRaCwaAqNuUMBqACDuBol9XV1VVsbGyg3W4jn8/3+SW7u7uIxWLodDooFAoAoIoaarUa9vb2sLS0BMMwcHBwgEKhoMDM505MTCAQCCgKKZ/Po16v49KlSwgEAiiXy6oWktXgDodD+Yp225ZYvTsAS0DJ4zJytYowaVGAQyCWy2UFRvaN1FzUjMwH634igaebf/kdtRzbza2apZ8ogzeryXUS4OlyqvQNixFoLmu1mvIX2dh6va60JCtg6OewU30+30Mzj2ks+Zw7d+6g0WgoiohUTyQSgd/vx+bmpqrKCQaDiEajME0ThUJBFRmYpqk0sGEYykeieaYG+iIigSjpFCu+j0Jzq2s5CWYKtSJdImk2qd05BgQiQaibXN6Dpl/WhEpqTP7oFM5J5NQJbVImAFSlc6PRQC6XU+QzcKgVOdD1eh1erxeTk5Pw+XyIRqOK3+NMZzVxPp9Xx7LZLJxOJ2ZnZxGPx5WpYQk9fUiCj8WuxWIRiURCVTQD6KObJA86SscO4s50bainviQ3SL9W9ifrFGWgpi+MAo4WRxE0MjjjNdSEvLfkEwkm6avSgvG+0vTq99ItgP6ew+RUgcgGM8TnjM7lclhfX8fs7Kyid1wuF5599lkAwMrKChqNBmKxGLxeL2q1mgoaSOXEYjF4PB4FsEAggKmpKXS7XUQiEQSDQQUcBis+n0/xbJ1OB+FwWGk9ZjVkOo1FsexkRp+jrluRYjUQUpuRSjFNU0WyElhcqyKJdxkIMqcu9wwnmAg66SeO0laeywkt89DUkjIwlEGOnVsyqpx61AwclT/Rpzs4OMDdu3fx3e9+ty96m5mZwfXr1wEAhUIBoVBI+XzFYlF1fLVaVSCheSU9I+sYaW44uC6XC5VKBcBhhsDtdiMajaLT6aicsyR1GcEfN1d6ko4nIGkCmbqj+P1+RKNRTE9Pq4oXh8OhuD6+l+x3JggIdPm9THtKcMpMDAHt8/kQCAT6yvM4WaggrPrGLpAZRU69DEz6VHR0S6US1tbW+gIYzuRoNKrWYTCwMAwD2WwWwOGAWKWz5F7ZnU5HZXS4cysLZxuNBnw+n4rAXS4XJiYmMDs7i0gk0jeDGWSR0JZR5ijvPex7ndQmb1etVtWyzng8DuAwgp+amoJhGOrde72eCmKkCSeQ+P76mmUAD/mF0iSzD7jOhVkrilwPTa0otbusxjmpnCoQCQr6L7LwYHt7G5VKpW/tLXDY4VevXlUdUa1W4XK58PHHHyOTySj+UfKF0kx5vd4+v5MZF5m9CAQCCAQCyGQyCIVCSKVSirbhvai5GTmyPcDJCh/sgCkdfE6WcrmMQqGg1mHTtWH2h4FLu91GqVRSmkoCgv0jAxw9gtajZxnB83vm5iUQ5b8RocZlv1hpxUHvbyenrhFpIuWqsmazibW1NXz66af46le/Cr/fr3wamnACh//M58GDB/jggw+QTqdV6Tt5Qbk+l35er9dTazPkskoOkmmaePDggVqYNDExoQBhmiZ2d3exsbGhwEsZJWCR/tGg4wD67u9wONBut1Eul5HL5ZDP51Eul5VWBKAAQmFfsQ/oZwJQ1dnSNOu5cxlkSJCy+IJrp6XvLIsh6JvKYEsH5JnwEU3TRCgUUpoFOKQiNjc38a9//Qvf/va3VWNl9oLfsbLm8uXLAIDbt2+jVCr1DZ5ufpkKow9J0rzVaqFYLCIejyMajSISiSCRSCAejyvwkiTf2trC1taWopaohUY1z3ZRogSgTOtROp2OWuiezWaRz+f7fFddwuGwWkMiP7NETppene6RgYXUasx+JRIJJJNJJJNJ9bxyuaz+nwyByH6T7/BFKa5Tz6wwuwFAmWBWDv/hD3/Aj3/8YywsLADoX6MiBywQCGB5eRkulwu1Wg137txRC4OkSb948SI+++wzHBwc4Nq1awCAg4MDAFAc4d7eHr7+9a8DAL71rW/hxRdfRCwWU9qYA/PGG2+g3W7D7/crv1Jq9VFEHwwJBt0/JFiY1qRGDofDCAQCmJ2dtX1OPB5Xk558LSeezvXpgZeeJaEmnJqawqVLl7C0tNSngbe2trC+vo6trS0cHByogMqO3tJ961EB+kiCFSlyIOr1Ot588038+te/hs/nQ6PRUJU6jMpCoZDqCJ/PhwsXLqDdbquK7G63q0q9mA/1+/2qOiQej/eR3ltbW7h16xZ++ctf4qmnnnqI+6pUKvjwww/x0Ucfwev1qmUK+lKGQTIKTWIFRoKpUCjgwYMHiEQifavtEomEbR9Ho1FVAMF3Zb2mDFwYoBAw9ImpIGiO+R+1pG94//59rK6u4v79+0in06qAlr6m7mfq73scOfUyMP2zNFn1eh2///3vsby8jFdffVXloHm+5K24iMftdqNWq6laQgYpzIgAhz4McFRoyo4yTRPJZBIvv/wyLl68iGazqYDOlOTOzg7+/Oc/4969e0pzy/KvUYBodY5Vio/mUWokSfhvbm6q4263G0tLS7ZbvXg8HkxPT6vlFZVKBYVCQblEet0jNRh9aG7mNDExgampKbV4ipLL5XDnzh2srKxgc3MTBwcHyizLYHMYhTOqv/jIgKgTufLz7373O1SrVbz22mvw+/19QQt35QIOHfVoNIrJyUk8ePBArZ1gUcX8/LzSLH6/X92LZLXb7cZPf/pTXLx4EdFotC+aB4Dt7W387W9/wz/+8Q+0221FpjMgkM78cd/fyjJIUyaBaJomKpWKWrstOVjyrVbLSn0+H1KplFoWWq1WFZfIe1DLezwexRHKqnVu7iSrkLLZLFZWVrCysoK1tTXs7e2piN6uP+Tkku/8pfGIuugN8Xq9uH37Nl5//XXU63V85zvfwcLCAkKhkBp8mmrgaOanUin172rT6TRM01TbbwSDQSwvL6siCYfDoYB45coVAFABDpddbm9v491338Xf//53bG5uqrU0XMo6SpmTlej0xaD0HweOhQb5fL7P8WcNZqlUwuLiYt8+PbI/5+bmABxGzZFIRPno5AW5lQk1YTAYRCwW6yvIZcapWCxiZWUFt2/fxp07d7CxsYFcLqeKQHSgyUBzmHsySB6JRtRnP78DDgc6EAjgo48+Qi6Xw9raGm7evIlr165hZmYGwWBQnc+XjMfjWF5eVnlodvaFCxcQj8fV9iJcZ0ET6HQ6EQgE+tJSpmlibW0N77zzDt5++22srKyg3W4jHo+jXq8rR3vQ7Ndl1FSa3k98Fl0Najb+cA9Drieem5vDzMzMQ/ebmJhQ5pdrv4EjIJJr5Wo/r9fb5wtyXNLpNDY2NvDJJ5/gs88+w927d9V/XiVHK4nwYZP1OBrxVLelG6SW+Td3a+j1esjlcnC73XjyySfx/PPP48UXX8T169dV5ChX1EneqlaroVQqIRgMKgefhbjkBuW1TFE1m03cvXsXf/nLX/DWW2/h3r176jmRSEQtN/B4PKo0f9Q8sxUQZdSsfy/pD92f83q9CIfDmJycxIULF5BMJtVuYAsLC5iZmXmI4mGwQnMuAxaaZTvhSse7d+/i7t27+Pjjj3Hv3j1sb28rraxPSj3Np2tEHut0Otjb2xvef48SiFbi9XpRLpfhdDqV38aS/8XFRdy8eROvvvoqnnnmGZVPJgFOR96qWJW+nQQfq1mKxSJcLhf++te/4o9//KPa0EkWNJAk5kpA/vNHGXGO8v6SEhrUD1aDJkutqL24F+L8/DxmZmYwPz+Pqakp5ddxx1y+O4M1gm8QB0ptu7e3h42NDdy5cwf379/H559/jnQ6rdY861SQLF3ju8jf+jt9qUC0kl6v17etCAsTmGVhtFer1XDt2jW1uu4HP/gBbty4gcXFRQSDQaVZSf0wAKFvSZK22Wzi3r17eO+99/D6669jfX1dmV2CjKsG2T7pp8rVaqPIqBG2lXYB0GfquDCMZpU7xCYSCbXumAFHOBxWGSN+ZpBCYDIo4nqUYrGIer2Og4MDpNNp7OzsYH19Hel0Gru7u0q7AkecIdus55YHBam9Xu/xA/E0hWt3u90ufD4fJicnMTs7q1bkBQKBvnQUQci87c7ODj7++GO1FS+1hK55jrsMwE7sQDgo9aVrFNk23e8k7yf3z+ZvLkWdmppSgCUQZT0i04mlUklRPsViEYVCAfl8Hvl8vi+fLKt2rLS33TvJ9+r1RvvH4WcSiDIzQC3KWcgXZ3TLVB2vI4CBw9Iv1jZKzctzgZPv5GDVZl3s0n2DrtWBazVxJBcpNScZhEAgoMy05PtYHkcinPl6WR0v/VXJ8cr2WLVRtl/X+Gdu6+JRhMQ3Iz4JSNlJpBxo4oGj7UaY+C+Xy4qg1rec40w/TgrPTqRveBLRsy7yvvI3wSQBymsNw1AbUrHfZLtkcYIsFpZ9ykSAdB+kL3hak9ZKzhwQAagqaaA/Hy0DFvovHASeow+ezCpIH+ykfNcXESs6aBS/Wr4Dr9HNOAMs0j5yYkgtxr7SzauuafVzZFtHCUpHeTcpZw6I7BS9Q4D+NbksoGUHUuTgMJUnB06ex+c9arGKokcx5VLkclArn1L+SGrFjmKRGzJZ3dfq2mHvqL/DcTTomQMizYjVDJWdzHOpCeXfHHjWRZJXBI63n81x262LVYR83Hta+WM6Ic7Pdu2Q1xOEsh90DlRqWdkWq2eclrk+c0AEjurbpEOurzqzG3g5u3XzIu9xHFpmmEitq5vPUcA4jHvUJxj7RhdqOLvreY7u08raRMC+2NXqvsNk1D4+c0B0Op0Ih8OWuxdIDamTqvo9ZMfpwHuUTrcUK3DK5w+Koq3OkaZ10LnyPP2d5fV2fqS8t36NvJdVu08qZw6IrDcEjkhdvqBcqKP7TFYRHjMnzJZIE02AnNRUWwHMaiBGGRwrX8wOvFbXyiJfvW26zzhqm62id9nWQaDV2zeKnDkgWr201fFut6uiaGpOHuePLJ2yigKlw27l4DPgcTgcalFXKBRSpWhPPfUUvve972F9fR0ffvhhX/vs2j3MvxrkE1oBjaIXH+iaTjfDVoCUro3VOew/q4yTlbaW1w6TMwfEUcTpdKrdD0h2Sw5MLkLXfUxqWGpQrquR2lVq2Uqlgnq9jmQyqbjJr33ta3jllVfgdDrx6aefYnNzc2ibh2mGQebOCniDBtgKIMPuJc+TQNTbJTldq/uc1O05l0DkxkwyWmaRA6Nu4GiXfZ7DY7IsTN8OTtcKc3NzmJycRCQSQSqVQjKZRLVaxQcffIDNzU0Ui0WVybEyS8MAM0xj2GnQQddamVXdZ7S7xg7wdhpetueL+ODnEogOh0PtqZhMJlX5v77NGsuXgKNlBMDRfjP8XvedZCezrKxcLmN3dxfr6+vI5/PY3d1VpWLD/EwdNHYRv37NMMpED8Z07Se1u3xXYPRFTaO21+rc4wDyXAIROKrbC4VCfZuAsv6OviO1pfzNXQu4SZPOl/E3z+XmoNw0U9b8jWKevkg0OYrW1J+jg5CUjXxXu8oivS900A/yU/VrjiPnFoimaSotlclk+gIWeY5e1MkiWQkmPdLW/9bP45oYmnq7QRlkOvVrdM03CHxW2nWQRtW1oP5+VqJH2/I6q2frE/i4/uK5BaLT6US5XFbFmxRJ8cjqapmnlgOgV2Db+Yuypk9qQqlhdBkEqmH+3TBA6sftTLe+cnCQH8fjckIO03B2gDuuv3gugcggg9qNVI7cjsMqqpMZA87aQb4Sj8u9BeVSVCuNYCVWoBmVb7MDjP5MKy0pNdOg41Y0jZysdtfLe+sakTKqL3ougUjfjcsj5W6pegGE7sdJOmeUyE/3N4GjzA07WWZ+dLELUk5Kc/DaUSJmOemGaUKd4hnUTrtz9O9oQUaRkQtjxzKWRymPphRlLGM5poyBOJYzIWMgjuVMyBiIYzkTMgbiWM6EjIE4ljMhYyCO5UzIGIhjORMyBuJYzoT8HxShoxl6jK5GAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 15/75:,recons loss: 0.042698,perc_epoch_loss: 0.174223,kl_epoch_loss: 2112.795490,,gen_loss: 1.012134,disc_loss: 0.002280,\n", + "epoch 20/75:,recons loss: 0.035483,perc_epoch_loss: 0.102338,kl_epoch_loss: 2271.543911,,gen_loss: 1.012229,disc_loss: 0.002381,\n", + "Validation. recons loss: 0.001392,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 25/75:,recons loss: 0.030027,perc_epoch_loss: 0.057049,kl_epoch_loss: 2255.536555,,gen_loss: 1.012236,disc_loss: 0.012159,\n", + "epoch 30/75:,recons loss: 0.025783,perc_epoch_loss: 0.041187,kl_epoch_loss: 2198.212172,,gen_loss: 0.993313,disc_loss: 0.022697,\n", + "Validation. recons loss: 0.000970,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 35/75:,recons loss: 0.026168,perc_epoch_loss: 0.023821,kl_epoch_loss: 2140.541582,,gen_loss: 0.633519,disc_loss: 0.151763,\n", + "epoch 40/75:,recons loss: 0.025719,perc_epoch_loss: 0.017355,kl_epoch_loss: 2062.614804,,gen_loss: 0.479063,disc_loss: 0.183541,\n", + "Validation. recons loss: 0.000736,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 45/75:,recons loss: 0.024476,perc_epoch_loss: 0.015675,kl_epoch_loss: 1969.286549,,gen_loss: 0.510046,disc_loss: 0.174579,\n", + "epoch 50/75:,recons loss: 0.023567,perc_epoch_loss: 0.014090,kl_epoch_loss: 1853.637946,,gen_loss: 0.489276,disc_loss: 0.174202,\n", + "Validation. recons loss: 0.000862,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 55/75:,recons loss: 0.022395,perc_epoch_loss: 0.012438,kl_epoch_loss: 1734.904024,,gen_loss: 0.462214,disc_loss: 0.178832,\n", + "epoch 60/75:,recons loss: 0.021742,perc_epoch_loss: 0.012144,kl_epoch_loss: 1622.974387,,gen_loss: 0.528392,disc_loss: 0.165096,\n", + "Validation. recons loss: 0.000838,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 65/75:,recons loss: 0.021505,perc_epoch_loss: 0.011629,kl_epoch_loss: 1531.166383,,gen_loss: 0.506063,disc_loss: 0.167129,\n", + "epoch 70/75:,recons loss: 0.020647,perc_epoch_loss: 0.010862,kl_epoch_loss: 1449.738802,,gen_loss: 0.516405,disc_loss: 0.174172,\n", + "Validation. recons loss: 0.000698,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "max_epochs = 75\n", + "val_interval = 10\n", + "print_interval = 5\n", + "autoencoder_warm_up_n_epochs = 10\n", + "\n", + "for epoch in range(max_epochs):\n", + " autoencoderkl.train()\n", + " discriminator.train()\n", + " epoch_loss = 0\n", + " gen_epoch_loss = 0\n", + " disc_epoch_loss = 0\n", + " perc_epoch_loss = 0\n", + " kl_epoch_loss = 0\n", + "\n", + " for batch in train_loader:\n", + " images = batch[\"image\"].to(device)\n", + " optimizer_g.zero_grad(set_to_none=True)\n", + "\n", + " with autocast(\"cuda\", enabled=True):\n", + " reconstruction, z_mu, z_sigma = autoencoderkl(images)\n", + " recons_loss = F.l1_loss(reconstruction.float(), images.float())\n", + " p_loss = perceptual_loss(reconstruction.float(), images.float())\n", + " kl_loss = 0.5 * torch.sum(z_mu.pow(2) + z_sigma.pow(2) - torch.log(z_sigma.pow(2)) - 1, dim=[1, 2, 3])\n", + " kl_loss = torch.sum(kl_loss) / kl_loss.shape[0]\n", + " loss_g = recons_loss + (kl_weight * kl_loss) + (perceptual_weight * p_loss)\n", + "\n", + " if epoch > autoencoder_warm_up_n_epochs:\n", + " logits_fake = discriminator(reconstruction.contiguous().float())[-1]\n", + " generator_loss = adv_loss(logits_fake, target_is_real=True, for_discriminator=False)\n", + " loss_g += adv_weight * generator_loss\n", + "\n", + " scaler_g.scale(loss_g).backward()\n", + " scaler_g.step(optimizer_g)\n", + " scaler_g.update()\n", + "\n", + " if epoch > autoencoder_warm_up_n_epochs:\n", + " optimizer_d.zero_grad(set_to_none=True)\n", + "\n", + " with autocast(\"cuda\", enabled=True):\n", + " logits_fake = discriminator(reconstruction.contiguous().detach())[-1]\n", + " loss_d_fake = adv_loss(logits_fake, target_is_real=False, for_discriminator=True)\n", + " logits_real = discriminator(images.contiguous().detach())[-1]\n", + " loss_d_real = adv_loss(logits_real, target_is_real=True, for_discriminator=True)\n", + " discriminator_loss = (loss_d_fake + loss_d_real) * 0.5\n", + "\n", + " loss_d = adv_weight * discriminator_loss\n", + "\n", + " scaler_d.scale(loss_d).backward()\n", + " scaler_d.step(optimizer_d)\n", + " scaler_d.update()\n", + "\n", + " epoch_loss += recons_loss.item()\n", + " perc_epoch_loss += p_loss.item()\n", + " kl_epoch_loss += kl_loss.item()\n", + "\n", + " if epoch > autoencoder_warm_up_n_epochs:\n", + " gen_epoch_loss += generator_loss.item()\n", + " disc_epoch_loss += discriminator_loss.item()\n", + "\n", + " if epoch % print_interval == 0:\n", + " msgs = [\n", + " f\"epoch {epoch:d}/{max_epochs:d}:\",\n", + " f\"recons loss: {epoch_loss / len(train_loader) :4f},\"\n", + " f\"perc_epoch_loss: {perc_epoch_loss / len(train_loader):4f},\"\n", + " f\"kl_epoch_loss: {kl_epoch_loss / len(train_loader):4f},\",\n", + " ]\n", + "\n", + " if epoch > autoencoder_warm_up_n_epochs:\n", + " msgs += [\n", + " f\"gen_loss: {gen_epoch_loss / len(train_loader):4f},\"\n", + " f\"disc_loss: {disc_epoch_loss / len(train_loader):4f},\"\n", + " ]\n", + "\n", + " print(\",\".join(msgs))\n", + "\n", + " if epoch % val_interval == 0:\n", + " autoencoderkl.eval()\n", + " val_loss = 0\n", + " with torch.no_grad():\n", + " for batch in val_loader:\n", + " images = batch[\"image\"].to(device)\n", + " reconstruction, z_mu, z_sigma = autoencoderkl(images)\n", + " recons_loss = F.l1_loss(images.float(), reconstruction.float())\n", + " val_loss += recons_loss.item()\n", + "\n", + " msgs = f\"Validation. recons loss: {recons_loss / len(val_loader) :4f},\"\n", + " print(msgs)\n", + "\n", + " # Plot reconstruction\n", + " plt.figure(figsize=(2, 2))\n", + " plt.imshow(torch.cat([images[0, 0].cpu(), reconstruction[0, 0].cpu()], dim=1), vmin=0, vmax=1, cmap=\"gray\")\n", + " plt.tight_layout()\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "\n", + "\n", + "del discriminator\n", + "del perceptual_loss\n", + "torch.cuda.empty_cache()" + ] + }, + { + "cell_type": "markdown", + "id": "c7108b87", + "metadata": {}, + "source": [ + "## Rescaling factor\n", + "\n", + "As mentioned in Rombach et al. [1] Section 4.3.2 and D.1, the signal-to-noise ratio (induced by the scale of the latent space) became crucial in image-to-image translation models (such as the ones used for super-resolution). For this reason, we will compute the component-wise standard deviation to be used as scaling factor." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "ccb6ba9f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scaling factor set to 0.8571630120277405\n" + ] + } + ], + "source": [ + "with torch.no_grad():\n", + " with autocast(\"cuda\", enabled=True):\n", + " z = autoencoderkl.encode_stage_2_inputs(check_data[\"image\"].to(device))\n", + "\n", + "print(f\"Scaling factor set to {1/torch.std(z)}\")\n", + "scale_factor = 1 / torch.std(z)" + ] + }, + { + "cell_type": "markdown", + "id": "b386a0c2", + "metadata": {}, + "source": [ + "## Train Diffusion Model\n", + "\n", + "In order to train the diffusion model to perform super-resolution, we will need to **concatenate the latent representation of the high-resolution with the low-resolution image**. Therefore, the number of input channels to the diffusion model will be the sum of the number of channels in the low-resolution (1) and the number of channels of the high-resolution image latent representation (3). In this case, we create a Diffusion model with `in_channels=4`. Since only the output latent representation is interesting, we set `out_channels=3`. \n", + "\n", + "**At inference time** we do not have a high-resolution image. Instead, we pass the concatenation of the low resolution image, and noise of the same shape as the latent space representation." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "92f3e348", + "metadata": {}, + "outputs": [], + "source": [ + "unet = DiffusionModelUNet(\n", + " spatial_dims=2,\n", + " in_channels=4,\n", + " out_channels=3,\n", + " num_res_blocks=2,\n", + " channels=(256, 256, 512, 1024),\n", + " attention_levels=(False, False, True, True),\n", + " num_head_channels=(0, 0, 64, 64),\n", + ")\n", + "unet = unet.to(device)\n", + "\n", + "scheduler = DDPMScheduler(num_train_timesteps=1000, schedule=\"linear_beta\", beta_start=0.0015, beta_end=0.0195)" + ] + }, + { + "cell_type": "markdown", + "id": "8fb22b1a", + "metadata": {}, + "source": [ + "As mentioned, we will use the conditioned augmentation (introduced in [2] section 3 and used on Stable Diffusion Upscalers and Imagen Video [3] Section 2.5) as it has been shown critical for cascaded diffusion models, as well for super-resolution tasks. For this, we apply Gaussian noise augmentation to the low-resolution images. We will use a scheduler `low_res_scheduler` to add this noise, with the `t` step defining the signal-to-noise ratio and use the `t` value to condition the diffusion model (inputted using `class_labels` argument)." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "25d9d3e3", + "metadata": {}, + "outputs": [], + "source": [ + "low_res_scheduler = DDPMScheduler(num_train_timesteps=1000, schedule=\"linear_beta\", beta_start=0.0015, beta_end=0.0195)\n", + "max_noise_level = 350" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "aa959db4", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.005906,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch 20/200:,loss: 0.144559,\n", + "Validation loss: 0.004613,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004093,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004793,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004594,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004505,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004176,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004405,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004649,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Validation loss: 0.004160,\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Optimizers\n", + "optimizer = torch.optim.Adam(unet.parameters(), lr=5e-5)\n", + "\n", + "scaler_diffusion = GradScaler()\n", + "\n", + "max_epochs = 200\n", + "val_interval = 20\n", + "print_interval = 20\n", + "epoch_loss_list = []\n", + "val_epoch_loss_list = []\n", + "\n", + "for epoch in range(max_epochs):\n", + " unet.train()\n", + " autoencoderkl.eval()\n", + " epoch_loss = 0\n", + " for batch in train_loader:\n", + " images = batch[\"image\"].to(device)\n", + " low_res_image = batch[\"low_res_image\"].to(device)\n", + " optimizer.zero_grad(set_to_none=True)\n", + "\n", + " with autocast(\"cuda\", enabled=True):\n", + " with torch.no_grad():\n", + " latent = autoencoderkl.encode_stage_2_inputs(images) * scale_factor\n", + "\n", + " # Noise augmentation\n", + " noise = torch.randn_like(latent).to(device)\n", + " low_res_noise = torch.randn_like(low_res_image).to(device)\n", + " timesteps = torch.randint(0, scheduler.num_train_timesteps, (latent.shape[0],), device=latent.device).long()\n", + " low_res_timesteps = torch.randint(\n", + " 0, max_noise_level, (low_res_image.shape[0],), device=low_res_image.device\n", + " ).long()\n", + "\n", + " noisy_latent = scheduler.add_noise(original_samples=latent, noise=noise, timesteps=timesteps)\n", + " noisy_low_res_image = scheduler.add_noise(\n", + " original_samples=low_res_image, noise=low_res_noise, timesteps=low_res_timesteps\n", + " )\n", + " # Here we concatenate the HR latent and thje low resolution image.\n", + " latent_model_input = torch.cat([noisy_latent, noisy_low_res_image], dim=1)\n", + "\n", + " noise_pred = unet(x=latent_model_input, timesteps=timesteps, class_labels=low_res_timesteps)\n", + " loss = F.mse_loss(noise_pred.float(), noise.float())\n", + "\n", + " scaler_diffusion.scale(loss).backward()\n", + " scaler_diffusion.step(optimizer)\n", + " scaler_diffusion.update()\n", + "\n", + " epoch_loss += loss.item()\n", + "\n", + " msgs = [f\"epoch {epoch:d}/{max_epochs:d}:\", f\"loss: {epoch_loss / len(train_loader) :4f},\"]\n", + "\n", + " if epoch % print_interval == 0:\n", + " print(\",\".join(msgs))\n", + "\n", + " epoch_loss_list.append(epoch_loss / len(train_loader))\n", + "\n", + " if epoch % val_interval == 0:\n", + " unet.eval()\n", + " val_loss = 0\n", + " for batch in val_loader:\n", + " images = batch[\"image\"].to(device)\n", + " low_res_image = batch[\"low_res_image\"].to(device)\n", + "\n", + " with torch.no_grad():\n", + " with autocast(\"cuda\", enabled=True):\n", + " latent = autoencoderkl.encode_stage_2_inputs(images) * scale_factor\n", + " # Noise augmentation\n", + " noise = torch.randn_like(latent).to(device)\n", + " low_res_noise = torch.randn_like(low_res_image).to(device)\n", + " timesteps = torch.randint(\n", + " 0, scheduler.num_train_timesteps, (latent.shape[0],), device=latent.device\n", + " ).long()\n", + " low_res_timesteps = torch.randint(\n", + " 0, max_noise_level, (low_res_image.shape[0],), device=low_res_image.device\n", + " ).long()\n", + "\n", + " noisy_latent = scheduler.add_noise(original_samples=latent, noise=noise, timesteps=timesteps)\n", + " noisy_low_res_image = scheduler.add_noise(\n", + " original_samples=low_res_image, noise=low_res_noise, timesteps=low_res_timesteps\n", + " )\n", + "\n", + " latent_model_input = torch.cat([noisy_latent, noisy_low_res_image], dim=1)\n", + " noise_pred = unet(x=latent_model_input, timesteps=timesteps, class_labels=low_res_timesteps)\n", + " loss = F.mse_loss(noise_pred.float(), noise.float())\n", + "\n", + " val_loss += loss.item()\n", + "\n", + " val_loss /= len(val_loader)\n", + " val_epoch_loss_list.append(val_loss)\n", + " msgs = f\"Validation loss: {val_loss / len(val_loader) :4f},\"\n", + " print(msgs)\n", + "\n", + " # Sampling image during training\n", + " sampling_image = low_res_image[0].unsqueeze(0)\n", + " latents = torch.randn((1, 3, 16, 16)).to(device)\n", + " low_res_noise = torch.randn((1, 1, 16, 16)).to(device)\n", + " noise_level = 20\n", + " noise_level = torch.Tensor((noise_level,)).long().to(device)\n", + " noisy_low_res_image = scheduler.add_noise(\n", + " original_samples=sampling_image,\n", + " noise=low_res_noise,\n", + " timesteps=torch.Tensor((noise_level,)).long().to(device),\n", + " )\n", + "\n", + " scheduler.set_timesteps(num_inference_steps=1000)\n", + " for t in scheduler.timesteps:\n", + " with torch.no_grad():\n", + " with autocast(\"cuda\", enabled=True):\n", + " latent_model_input = torch.cat([latents, noisy_low_res_image], dim=1)\n", + " noise_pred = unet(\n", + " x=latent_model_input, timesteps=torch.Tensor((t,)).to(device), class_labels=noise_level\n", + " )\n", + " latents, _ = scheduler.step(noise_pred, t, latents)\n", + "\n", + " with torch.no_grad():\n", + " decoded = autoencoderkl.decode_stage_2_outputs(latents / scale_factor)\n", + "\n", + " low_res_bicubic = nn.functional.interpolate(sampling_image, (64, 64), mode=\"bicubic\")\n", + " plt.figure(figsize=(2, 2))\n", + " plt.style.use(\"default\")\n", + " plt.imshow(\n", + " torch.cat([images[0, 0].cpu(), low_res_bicubic[0, 0].cpu(), decoded[0, 0].cpu()], dim=1),\n", + " vmin=0,\n", + " vmax=1,\n", + " cmap=\"gray\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.axis(\"off\")\n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "30f24595", + "metadata": {}, + "source": [ + "### Plotting sampling example" + ] + }, + { + "cell_type": "markdown", + "id": "1a2813d4-9087-459e-8913-bce174ac31cd", + "metadata": {}, + "source": [ + "As mentioned above, at inference time, we only need to pass noise of the same shape of the latent concatenated to the low-resolution image, to get the latent representation of the corresponding high-resolution image." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "155be091", + "metadata": {}, + "outputs": [], + "source": [ + "# Sampling image during training\n", + "unet.eval()\n", + "num_samples = 3\n", + "validation_batch = first(val_loader)\n", + "\n", + "images = validation_batch[\"image\"].to(device)\n", + "sampling_image = validation_batch[\"low_res_image\"].to(device)[:num_samples]" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "aaf61020", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 31.22it/s]\n" + ] + } + ], + "source": [ + "latents = torch.randn((num_samples, 3, 16, 16)).to(device)\n", + "low_res_noise = torch.randn((num_samples, 1, 16, 16)).to(device)\n", + "noise_level = 10\n", + "noise_level = torch.Tensor((noise_level,)).long().to(device)\n", + "noisy_low_res_image = scheduler.add_noise(\n", + " original_samples=sampling_image, noise=low_res_noise, timesteps=torch.Tensor((noise_level,)).long().to(device)\n", + ")\n", + "scheduler.set_timesteps(num_inference_steps=1000)\n", + "for t in tqdm(scheduler.timesteps, ncols=110):\n", + " with torch.no_grad():\n", + " with autocast(\"cuda\", enabled=True):\n", + " latent_model_input = torch.cat([latents, noisy_low_res_image], dim=1)\n", + " noise_pred = unet(x=latent_model_input, timesteps=torch.Tensor((t,)).to(device), class_labels=noise_level)\n", + "\n", + " # 2. compute previous image: x_t -> x_t-1\n", + " latents, _ = scheduler.step(noise_pred, t, latents)\n", + "\n", + "with torch.no_grad():\n", + " decoded = autoencoderkl.decode_stage_2_outputs(latents / scale_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "32e16e69", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAw0AAAMVCAYAAAA1ZBgWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD5Q0lEQVR4nOy9d7xeVZX/v0IL6b33Rgmd0HuVIjCoiGBFsKIiM5bR7+hvYGTs49hGBAsqIg7WsSECKkXK0AMhgQSSkEIaaSSh8/z+8JUza3+ee9e+O89zb54k7/frldfrrLufc87u55zsz1q7W61WqxkAAAAAAEA7bLe5MwAAAAAAAK0NHw0AAAAAABDCRwMAAAAAAITw0QAAAAAAACF8NAAAAAAAQAgfDQAAAAAAEMJHAwAAAAAAhPDRAAAAAAAAIXw0AAAAAABACB8NXcQll1xi3bp126Rzf/CDH1i3bt1s3rx5zc2UY968edatWzf7wQ9+EP7ur3/9q3Xr1s3++te/dlpeAKB5dHRsl9LInAYAWy8dfU/oincbaC58NGSYMWOGvfWtb7VRo0ZZ9+7dbeTIkfaWt7zFZsyYsbmzBrBNs/GBc++9927urGy1bNiwwS655JKW+0+Cbt262Qc/+MHNnQ3Yyums5/9nP/tZ+/Wvf92cTGa444477JJLLrHVq1dv1nzA1gEfDQG//OUvbf/997ebb77Z3vnOd9q3vvUtu+CCC+wvf/mL7b///varX/2qw9f61Kc+Zc8999wm5eNtb3ubPffcczZu3LhNOr+ZHHXUUfbcc8/ZUUcdtbmzAgCdzIYNG+zSSy9t86OhkTkNoNVp5vNf6eqPhksvvbQlPxpa6d0GOsYOmzsDrcoTTzxhb3vb22zixIl266232pAhQ6q0D3/4w3bkkUfa2972Nps+fbpNnDix3eusX7/eevXqZTvssIPtsMOmVff2229v22+//Sad22y2224723nnnTd3NgC2KGq1mj3//PPWo0ePzZ2VptHInAbQyjTr+Q8xrfRuAx2DlYZ2+NKXvmQbNmywK6+8MpkwzMwGDx5sV1xxha1fv96++MUvVn/fqPF99NFH7c1vfrMNGDDAjjjiiCTN89xzz9lFF11kgwcPtj59+tgZZ5xhixYtsm7dutkll1xS/a4t3d/48ePttNNOs9tvv90OOugg23nnnW3ixIn2ox/9KLnHypUr7aMf/ajttdde1rt3b+vbt6+dcsop9tBDD21SvbSlVTzmmGNszz33tOnTp9vRRx9tPXv2tMmTJ9vPf/5zMzO75ZZb7OCDD7YePXrYrrvuajfddFNyzfnz59uFF15ou+66q/Xo0cMGDRpkb3zjG9vUOW68R48ePWz06NF22WWX2VVXXdWmLvL666+3I4880nr16mV9+vSx1772tcjKtkEeeOABO+WUU6xv377Wu3dvO/744+2uu+6q0levXm3bb7+9ff3rX6/+tmLFCttuu+1s0KBBVqvVqr+///3vt+HDh2fvuXF83nDDDXbAAQdYjx497Iorrqjud/HFF9uYMWOse/fuNnnyZPvCF75gr776anKNn/70pzZt2jTr06eP9e3b1/baay/72te+lvzmySeftDe+8Y02cOBA69mzpx1yyCH2+9//Ppu/Y445xo455pi6v5933nk2fvx4M/u7L8TGue/SSy+1bt26JXNTW3Payy+/bJ/5zGds0qRJ1r17dxs/frz9v//3/+yFF15os35y81dH2TgvXXfddXbppZfaqFGjrE+fPnbWWWfZmjVr7IUXXrCLL77Yhg4dar1797Z3vvOddXm66qqr7LjjjrOhQ4da9+7dberUqXb55ZfX3evVV1+1Sy65xEaOHGk9e/a0Y4891h599FEbP368nXfeeclvO9rW0FpsyvPfjx2PjpNu3brZ+vXr7Yc//GE1pjb2m42/nTVrlp199tnWt29fGzRokH34wx+2559/vrpG5KekY/RjH/uYmZlNmDChut/G89vLh5nZokWL7Pzzz7dhw4ZZ9+7dbY899rDvf//7dfdbuHChnXnmmdarVy8bOnSo/eM//mPd2GqP6N3mr3/9azV37rXXXtU7xy9/+Uvba6+9bOedd7Zp06bZAw88kFxz+vTpdt5559nEiRNt5513tuHDh9v5559vzzzzTN39N95j5513tkmTJtkVV1zRrq/Wj3/8Y5s2bZr16NHDBg4caOecc44tWLCgQ+XcmuC/idrht7/9rY0fP96OPPLINtOPOuooGz9+fJsP6De+8Y02ZcoU++xnP5u8cCjnnXeeXXfddfa2t73NDjnkELvlllvsta99bYfzOGfOHDvrrLPsggsusHe84x32/e9/38477zybNm2a7bHHHmb295eKX//61/bGN77RJkyYYEuXLrUrrrjCjj76aHv00Udt5MiRHb5fxKpVq+y0006zc845x974xjfa5Zdfbuecc45dc801dvHFF9v73vc+e/Ob32xf+tKX7KyzzrIFCxZYnz59zMzsnnvusTvuuMPOOeccGz16tM2bN88uv/xyO+aYY+zRRx+1nj17mtnfJ7Fjjz3WunXrZp/85CetV69e9t3vfte6d+9el5+rr77a3vGOd9hJJ51kX/jCF2zDhg12+eWX2xFHHGEPPPBAm5M7bH3MmDHDjjzySOvbt699/OMftx133NGuuOIKO+aYY6qP2f79+9uee+5pt956q1100UVmZnb77bdbt27dbOXKlfboo49W4+m2225rd05QHnvsMTv33HPtve99r7373e+2XXfd1TZs2GBHH320LVq0yN773vfa2LFj7Y477rBPfvKT9vTTT9tXv/pVMzO78cYb7dxzz7Xjjz/evvCFL5iZ2cyZM+1vf/ubffjDHzYzs6VLl9phhx1mGzZssIsuusgGDRpkP/zhD+2MM86wn//85/a6172uobobMmSIXX755fb+97/fXve619nrX/96MzPbe++92z3nXe96l/3whz+0s846yz7ykY/Y3XffbZ/73Ods5syZdXKOjsxfpXzuc5+zHj162Cc+8QmbM2eOfeMb37Add9zRtttuO1u1apVdcskldtddd9kPfvADmzBhgv1//9//V517+eWX2x577GFnnHGG7bDDDvbb3/7WLrzwQnv11VftAx/4QPW7T37yk/bFL37RTj/9dDvppJPsoYcespNOOil5qTOzDrc1tB6NPP9zXH311faud73LDjroIHvPe95jZmaTJk1KfnP22Wfb+PHj7XOf+5zddddd9vWvf91WrVpV/FH9+te/3h5//HG79tpr7T//8z9t8ODBZvb3sR3lY+nSpXbIIYdUvkNDhgyx66+/3i644AJbu3atXXzxxWb29//4PP744+2pp56yiy66yEaOHGlXX321/fnPfy6uF8+cOXPszW9+s733ve+1t771rfblL3/ZTj/9dPv2t79t/+///T+78MILzezv4/3ss8+2xx57zLbb7u//B37jjTfak08+ae985ztt+PDhNmPGDLvyyittxowZdtddd1UfBA888ICdfPLJNmLECLv00kvtlVdesX/7t3+r+0g0M/v3f/93+/SnP21nn322vetd77Lly5fbN77xDTvqqKPsgQcesP79+zdU3i2KGtSxevXqmpnV/uEf/iH83RlnnFEzs9ratWtrtVqt9q//+q81M6ude+65db/dmLaR++67r2ZmtYsvvjj53XnnnVczs9q//uu/Vn+76qqramZWmzt3bvW3cePG1cysduutt1Z/W7ZsWa179+61j3zkI9Xfnn/++dorr7yS3GPu3Lm17t271/7t3/4t+ZuZ1a666qqwzH/5y19qZlb7y1/+Uv3t6KOPrplZ7Sc/+Un1t1mzZtXMrLbddtvV7rrrrurvN9xwQ919NmzYUHefO++8s2ZmtR/96EfV3z70oQ/VunXrVnvggQeqvz3zzDO1gQMHJvXz7LPP1vr3719797vfnVxzyZIltX79+tX9HbZMNo6Le+65p93fnHnmmbWddtqp9sQTT1R/W7x4ca1Pnz61o446qvrbBz7wgdqwYcMq+5/+6Z9qRx11VG3o0KG1yy+/vFar/b2vdevWrfa1r30tm7eN4/OPf/xj8vfPfOYztV69etUef/zx5O+f+MQnattvv33tqaeeqtVqtdqHP/zhWt++fWsvv/xyu/e4+OKLa2ZWu+2226q/Pfvss7UJEybUxo8fX437tsb20UcfXTv66KPrrvmOd7yjNm7cuMpevnx53Xy0EZ3THnzwwZqZ1d71rnclv/voRz9aM7Pan//85+pvHZ2/2sPMah/4wAcqe+O8tOeee9ZefPHF6u/nnnturVu3brVTTjklOf/QQw9NylmrtT0PnXTSSbWJEydW9pIlS2o77LBD7cwzz0x+d8kll9TMrPaOd7yj+ltH2xpai019/uvY2YiOk1qtVuvVq1fSV/S3Z5xxRvL3Cy+8sGZmtYceeqhWq8XPax2vX/rSl+reH3L5uOCCC2ojRoyorVixIvn7OeecU+vXr181Vr761a/WzKx23XXXVb9Zv359bfLkyXXvCW0Rvdvccccd1d82vjf06NGjNn/+/OrvV1xxRd192hrH1157bd18c/rpp9d69uxZW7RoUfW32bNn13bYYYekvebNm1fbfvvta//+7/+eXPPhhx+u7bDDDnV/39pBntQGzz77rJlZ9T/h7bExfe3atcnf3/e+92Xv8cc//tHMrPpi3siHPvShDudz6tSpyf+EDBkyxHbddVd78sknq7917969+gJ/5ZVX7JlnnrHevXvbrrvuavfff3+H75Wjd+/eds4551T2rrvuav3797fdd9/dDj744OrvG499Hr3O+6WXXrJnnnnGJk+ebP3790/y+Mc//tEOPfRQ23fffau/DRw40N7ylrckebnxxhtt9erVdu6559qKFSuqf9tvv70dfPDB9pe//KVp5YbW5ZVXXrE//elPduaZZya64xEjRtib3/xmu/3226uxe+SRR9rSpUvtscceM7O/rygcddRRduSRR9ptt91mZn9ffajVah1eaZgwYYKddNJJyd9+9rOf2ZFHHmkDBgxI+uYJJ5xgr7zyit16661mZta/f39bv3693Xjjje1e/w9/+IMddNBBlQTS7O/j8D3veY/NmzfPHn300Q7ls1n84Q9/MDOzf/qnf0r+/pGPfMTMrO5/ZTsyf5Xy9re/3XbcccfKPvjgg61Wq9n555+f/O7ggw+2BQsW2Msvv1z9zc9Da9assRUrVtjRRx9tTz75pK1Zs8bMzG6++WZ7+eWXOzRvd7StobVo9PnfDPzKltn/9a+NY6wzqdVq9otf/MJOP/10q9VqSd896aSTbM2aNdVz+Q9/+IONGDHCzjrrrOr8nj17VisXm8rUqVPt0EMPreyN7w3HHXecjR07tu7v7b1PPP/887ZixQo75JBDzMyqfL/yyit200032ZlnnpmoLSZPnmynnHJKkpdf/vKX9uqrr9rZZ5+d1MXw4cNtypQp29z7BPKkNtg4GWycPNqjvcllwoQJ2XvMnz/ftttuu7rfTp48ucP59INnIwMGDLBVq1ZV9quvvmpf+9rX7Fvf+pbNnTvXXnnllSpt0KBBHb5XjtGjR9fpAPv162djxoyp+5uZJXl87rnn7HOf+5xdddVVtmjRokTStfFhbfb3OvMTyUa0zmbPnm1mf59g2qJv374dKRJs4Sxfvtw2bNhgu+66a13a7rvvbq+++qotWLDA9thjj+rl9bbbbrPRo0fbAw88YJdddpkNGTLEvvzlL1dpffv2tX322cfMzNatW2fr1q2rrrn99tsnS9ttzQOzZ8+26dOnt7kEbma2bNkyM/v7fyZcd911dsopp9ioUaPsNa95jZ199tl28sknV7+dP39+8kHuy7Yxfc8994wrqYlsnNN0PA4fPtz69+9v8+fPT/7ekfmrFL3mxvmmrXno1VdftTVr1lTz4N/+9jf713/9V7vzzjttw4YNye/XrFlj/fr1q8qgZRw4cKANGDAg+VtH2xpai0af/81gypQpiT1p0iTbbrvtumQ/g+XLl9vq1avtyiuvtCuvvLLN32zsu/Pnz7fJkyfXPfvbmnNLKBnHZun7xMqVK+3SSy+1n/70p3VjbOP7xLJly+y5555r832rrfeJWq1W1yYb8f9JsS3AR0Mb9OvXz0aMGGHTp08Pfzd9+nQbNWpU3UtoV0VIaS/qgH/p/uxnP2uf/vSn7fzzz7fPfOYzNnDgQNtuu+3s4osvbqozXnt56UgeP/ShD9lVV11lF198sR166KHWr18/69atm51zzjmblMeN51x99dVtOq0S8QWUkSNH2oQJE+zWW2+18ePHW61Ws0MPPdSGDBliH/7wh23+/Pl222232WGHHVat3H35y1+2Sy+9tLrGuHHjkod6W/PAq6++aieeeKJ9/OMfbzMfu+yyi5mZDR061B588EG74YYb7Prrr7frr7/errrqKnv7299uP/zhDxsub7du3dr0t/L/qdDItTtCR+aGUjZ1HnriiSfs+OOPt912282+8pWv2JgxY2ynnXayP/zhD/af//mfmzwPdaStobXY1Od/e/2+M8ZUZ95rY19/61vfau94xzva/E3k19QMGnmfOPvss+2OO+6wj33sY7bvvvta79697dVXX7WTTz55k8dxt27d7Prrr2/z/r179y6+5pYMb0/tcNppp9l3vvMdu/3225Pl/43cdtttNm/ePHvve9+7SdcfN26cvfrqqzZ37tzkC3bOnDmbnOe2+PnPf27HHnusfe9730v+vnr16sopanPz85//3N7xjnfYf/zHf1R/e/755+viSo8bN67N+tG/bXTmGjp0qJ1wwgnNzzBsEQwZMsR69uxZSY48s2bNsu222y75n6sjjzzSbr31VpswYYLtu+++1qdPH9tnn32sX79+9sc//tHuv//+5CPh7W9/ezI3dOQ/CyZNmmTr1q3rUL/caaed7PTTT7fTTz/dXn31VbvwwgvtiiuusE9/+tM2efJkGzduXLtlM7Mw9vmAAQPalAHpakDJjs8b57TZs2dXqx1mf3eqXL16dUvHYv/tb39rL7zwgv3mN79J/pdTpQcbyzBnzpxkJemZZ56pWyEpaWtoLTbl+T9gwIA290LQMWWWH1ezZ89O+tecOXPs1VdfrQJ4bFzV0vuV3quttCFDhlifPn3slVdeyfbdcePG2SOPPGK1Wi25VlvzUlewatUqu/nmm+3SSy9NghxsVB9sZOjQobbzzjt3+H2iVqvZhAkT+NA3Qq62y8c+9jHr0aOHvfe9760L1bVy5Up73/veZz179qzCmZWyUev8rW99K/n7N77xjU3LcDtsv/32df9z97Of/cwWLVrU1Ps0Qlt5/MY3vlH3vyYnnXSS3Xnnnfbggw9Wf1u5cqVdc801db/r27evffazn7WXXnqp7n7Lly9vXuahZdl+++3tNa95jf3P//xPsgKwdOlS+8lPfmJHHHFEskp45JFH2rx58+y///u/K7nSdtttZ4cddph95StfsZdeeinR4E+cONFOOOGE6t/hhx+ezdPZZ59td955p91www11aatXr6409jrnbLfddtX/7m0MZ3jqqafa//7v/9qdd95Z/W79+vV25ZVX2vjx423q1Knt5mPSpEk2a9asZCw89NBD9re//S353cbIZW29DCmnnnqqmVldVKCvfOUrZmZFkeG6mo3/g6jSyKuuuir53fHHH2877LBDXSjWb37zm3XX7GhbQ+uxKc//SZMm2Zo1a5IViqeffrrNTeB69eoVjqn/+q//SuyN7wUb9fZ9+/a1wYMH1/nF6PvExnuZtT2G28rH9ttvb294wxvsF7/4hT3yyCN15/g549RTT7XFixdX4dXNrApVuzloaxyb1c9J22+/vZ1wwgn261//2hYvXlz9fc6cOXb99dcnv339619v22+/vV166aV1163Vam2Gct2aYaWhHaZMmWI//OEP7S1veYvttddedsEFF9iECRNs3rx59r3vfc9WrFhh1157bV2otI4ybdo0e8Mb3mBf/epX7ZlnnqlCrj7++ONmVvY/fBGnnXaa/du//Zu9853vtMMOO8wefvhhu+aaa1pqQ5rTTjvNrr76auvXr59NnTrV7rzzTrvpppvqfC4+/vGP249//GM78cQT7UMf+lAVcnXs2LG2cuXKqs769u1rl19+ub3tbW+z/fff38455xwbMmSIPfXUU/b73//eDj/88DYf8rBl8v3vf78KLOD58Ic/bJdddpndeOONdsQRR9iFF15oO+ywg11xxRX2wgsvJDHWzaz6IHjsscfss5/9bPX3o446yq6//nrr3r27HXjggQ3l9WMf+5j95je/sdNOO60KL7p+/Xp7+OGH7ec//7nNmzfPBg8ebO9617ts5cqVdtxxx9no0aNt/vz59o1vfMP23Xff6n/xP/GJT9i1115rp5xyil100UU2cOBA++EPf2hz5861X/ziF5WMqi3OP/98+8pXvmInnXSSXXDBBbZs2TL79re/bXvssUfi2NmjRw+bOnWq/fd//7ftsssuNnDgQNtzzz3b9JXYZ5997B3veIddeeWVtnr1ajv66KPtf//3f+2HP/yhnXnmmXbsscc2VHedyWte85pqZee9732vrVu3zr7zne/Y0KFD7emnn65+N2zYMPvwhz9s//Ef/2FnnHGGnXzyyfbQQw/Z9ddfb4MHD07m7Y62NbQem/L8P+ecc+yf//mf7XWve51ddNFFVZjvXXbZpS7oyLRp0+ymm26yr3zlK5U00vsnzZ07t+pfd955p/34xz+2N7/5zZU/ldnfwxt//vOft3e96112wAEH2K233lq9P+i9zMz+5V/+xc455xzbcccd7fTTT7devXq1m4/Pf/7z9pe//MUOPvhge/e7321Tp061lStX2v3332833XSTrVy50szM3v3ud9s3v/lNe/vb32733XefjRgxwq6++urqPxu6mr59+9pRRx1lX/ziF+2ll16yUaNG2Z/+9CebO3du3W8vueQS+9Of/mSHH364vf/977dXXnnFvvnNb9qee+6Z/MfkpEmT7LLLLrNPfvKTNm/ePDvzzDOtT58+NnfuXPvVr35l73nPe+yjH/1oF5ZyM9OlsZq2QKZPn14799xzayNGjKjtuOOOteHDh9fOPffc2sMPP1z3243h0pYvX95ummf9+vW1D3zgA7WBAwfWevfuXTvzzDNrjz32WM3Map///Oer37UXluy1r31t3X00lOLzzz9f+8hHPlIbMWJErUePHrXDDz+8duedd9b9rtGQq3vssUfdb9vLo0m4xFWrVtXe+c531gYPHlzr3bt37aSTTqrNmjWrNm7cuLpwcA888EDtyCOPrHXv3r02evTo2uc+97na17/+9ZqZ1ZYsWVKX15NOOqnWr1+/2s4771ybNGlS7bzzzqvde++9YRlhy2DjuGjv34IFC2q1Wq12//3310466aRa7969az179qwde+yxSTg/z9ChQ2tmVlu6dGn1t9tvv71mZrUjjzyyw3lrr+/Xan8Pi/rJT36yNnny5NpOO+1UGzx4cO2www6rffnLX67Chf785z+vveY1r6kNHTq0ttNOO9XGjh1be+9731t7+umnk2s98cQTtbPOOqvWv3//2s4771w76KCDar/73e+S37Q3tn/84x/XJk6cWNtpp51q++67b+2GG25oM2zkHXfcUZs2bVptp512SsI5tjWnvfTSS7VLL720NmHChNqOO+5YGzNmTO2Tn/xk7fnnn+9Q/bQXClbROWTjvPSzn/0s+V17YXnbmqt/85vf1Pbee+/azjvvXBs/fnztC1/4Qu373/9+3dz78ssv1z796U/Xhg8fXuvRo0ftuOOOq82cObM2aNCg2vve977kPh1pa2hdSp7/tVqt9qc//am255571nbaaafarrvuWvvxj3/c5jiZNWtW7aijjqr16NEjCdW78bePPvpo7ayzzqr16dOnNmDAgNoHP/jB2nPPPZdcY8OGDbULLrig1q9fv1qfPn1qZ599dm3ZsmVthkj+zGc+Uxs1alRtu+22S/pze/mo1Wq1pUuX1j7wgQ/UxowZU5X9+OOPr1155ZXJtefPn18744wzaj179qwNHjy49uEPf7j2xz/+saGQqx15b6jV/m9u+9KXvlT9beHChbXXve51tf79+9f69etXe+Mb31hbvHhxm/Vy88031/bbb7/aTjvtVJs0aVLtu9/9bu0jH/lIbeedd667/y9+8YvaEUccUevVq1etV69etd122632gQ98oPbYY4+FZdza6FarNeB1Bk3nwQcftP32289+/OMf14UShba5+OKL7YorrrB169axJT0AdDmrV6+2AQMG2GWXXWb/8i//srmzA1sol1xyiV166aW2fPlyVqE2E2eeeabNmDGjzg8C/g4+DZuR5557ru5vX/3qV2277bazo446ajPkqPXROnvmmWfs6quvtiOOOIIPBgDodNqbt83MjjnmmK7NDABsMjqWZ8+ebX/4wx8YxwH4NGxGvvjFL9p9991nxx57rO2www5VaMX3vOc9dfGI4e8ceuihdswxx9juu+9uS5cute9973u2du1a+/SnP725swYA2wD//d//bT/4wQ/s1FNPtd69e9vtt99u1157rb3mNa/pkDM8ALQGEydOtPPOO88mTpxo8+fPt8svv9x22mmndsMkAx8Nm5XDDjvMbrzxRvvMZz5j69ats7Fjx9oll1zC8nbAqaeeaj//+c/tyiuvtG7dutn+++9v3/ve91iZAYAuYe+997YddtjBvvjF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3qtisWcYERERERFZdfxpEBERERGRFH8aREREREQkRZ+GBYNatAzq5UimVaMGjjb3RMiem+lUK40j0w855JDJMbWE1b0yfeGIdjbz0Wht2k8jnl/5YRx55JGd/eijj06ON27cuGTe/z9xX4bWWrvyyisnxx/96Ee7tFtvvTW9l6wso7Hd3+i5o2T9fCX3aVguD0vZ2fkj51bnj2iKK98B3ivzc2L8eaZHe9RnoXonHMzMMqZmuXb03iOM+FKM9O0D6f8R7WpcZHsP8L4cJ7x39EVgv6ffZeYbVOU5Y3S8ZXNZNf/GfFZ+GMcee2xnn3HGGZNj+ops3bo1vRdxpUFERERERFL8aRARERERkRR/GkREREREJEWfBllV6DsRdXzcl4DaQ2oeo77wtdde69Los3H44Yd3NjWQEfol/Pe//132ufR3iD4arbW2Y8eOzn73u989Od61a1eXtmnTps6+/vrrO/ull16aHF977bXLprXW2ve///0mq8dK6Z5nee4seVotZvGHqPwBsnvPstcC5xbOEZzHYvrovguZRvxAkWnxqzxl6QdyDI34C8ziWzEyPqvnzGuPknnWVaX5j/2b9+F7l2PwHe94x+SY73f6P1Z+mBGWn98hMR+8L8frLPs0ZHVHn4Wzzjqrs+O+DK21tn379snxE088sd/PWQpXGkREREREJMWfBhERERERSVGeJKtKFoKNVCEi43ImwxhSjrR37979zhOXRXnvLOQqpUwf/OAHO/uEE06YHH/rW9/q0uLya2ut/fjHP+7sP/3pT5NjSiAOPfTQJm8OFiU85Lw4kLKZLMRhJf2J4zwL2bjUvaLNayup00gbsS4p01gE5iUrmkU2U4UvzSRHo/mfV3lHpXjzykN1rwMVJpYyPn4bxHdrJRnLxgXf58wj8xHHb/VtkEmb+By+w9evX9/Zp59++uSY8qOdO3d29p133tnZ//rXv5Z9ThXKnrjSICIiIiIiKf40iIiIiIhIij8NIiIiIiKSok+DrCrU00XNH/WBhNuhR/3gkUce2aWdcsopnT2ib67Cqh133HGT41NPPbVL27BhQ2fTT+G+++6bHP/gBz/o0h5//PHOpk7zXe961+SYdbFnz54mByerFSpznhyoMlQa6iytCps64tNA4r04f1DnTL11pnsmvPdo+MRFZ15+CWTkXrP05VnCpC7KPFDV6yw+OFla1Zej/+BJJ53UpW3evLmzGdo9UoVJrcK3RvjNQjvmg74SzMerr77a2Q8//PDk+Mknn+zSos/CUnmMc8qs/cqVBhERERERSfGnQUREREREUvxpEBERERGRFH0a5C3Jhz70oc6OOj/qlxnXmMQ9H3bs2NGlxb0UWuu3c2+ttddff31y/La3va1Lo/b5P//5T2dHv42jjz66S2MZ5OBhJC76orJaWu0RXTvzmOmRK5+G7Lkcx7RJpqc/GHwWRvpvpYdfqb5SPXel9jM5UM+dxe+gYsRvaITqncU9j6JPAPddevDBBzv7kEMO6ez4TqcvAX0NaMd7MY3+Dy+99FJnv/jii8vmmeWjn2LMJ9s3851oLd+nYvRbwZUGERERERFJ8adBRERERERS/GkQEREREZEUfRpkVaGOP2p2qf2l9o66vagnfOWVV7q0GOO4tda2bdvW2Vk88BgPeql8xfOpLaTmkXnONLuHHnpoZ3OPh6hT5L4MlW5aDh5WSl+9WiyKzwbzwfkl82kg1AxHm2NxZN+GTIu8FIvQV+YVt38l8bmLwYi/S/bufO2117o07nEw8pxqXojjl+Oz2jclfg9U+1CxvDFf2b5SrY35tPD7psKVBhERERERSfGnQUREREREUpQnyaoysozGpT6eG5f+uFzJbdYZRjVKBPgcLiMyfFuEIdcYNo3EZUY+h8uiXEaMIVgp8zruuOPS54q8FchkCVziz2QJleSmkgtEKEfinBHHOeUP1Xw5ko+VguWJc+0s8qlZwoiupGxrJF+zSPOqc+dVt6NhcDNpb3WvLIQw07LxyndlZccxONom8V58ZzOPIyGSR6SIo5KimOdZ54jVn2FERERERGSh8adBRERERERS/GkQEREREZEUfRpkVaHmf2SLdtpRt0e/A+r4+NzoE1DpEl9//fW2HPQtYNhUXhvP5zby1D4ffvjhnX3YYYdNjunDEberF3mzMk+dd6b1HdUqx/OZR17L9GiPaKJ5/mqFX+U8FvXXVV1kjIYNzc6fJQRpFaJzXveeZ/tV91ot/5CR8o74UmTPIZVv08i9qr4xy3Oza6v5KfpLjPpDTD17pqtFRERERORNjz8NIiIiIiKS4k+DiIiIiIik/M//Lur+4iIiIiIishC40iAiIiIiIin+NIiIiIiISIo/DSIiIiIikuJPg4iIiIiIpPjTICIiIiIiKf40iIiIiIhIij8NIiIiIiKS4k+DiIiIiIik+NMgIiIiIiIp/wdLbwpd/mzeAwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "low_res_bicubic = nn.functional.interpolate(sampling_image, (64, 64), mode=\"bicubic\")\n", + "fig, axs = plt.subplots(num_samples, 3, figsize=(8, 8))\n", + "axs[0, 0].set_title(\"Original image\")\n", + "axs[0, 1].set_title(\"Low-resolution Image\")\n", + "axs[0, 2].set_title(\"Outputted image\")\n", + "for i in range(0, num_samples):\n", + " axs[i, 0].imshow(images[i, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 0].axis(\"off\")\n", + " axs[i, 1].imshow(low_res_bicubic[i, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 1].axis(\"off\")\n", + " axs[i, 2].imshow(decoded[i, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 2].axis(\"off\")\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "id": "7fa52acc", + "metadata": {}, + "source": [ + "### Clean-up data directory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a6f6d5a", + "metadata": {}, + "outputs": [], + "source": [ + "if directory is None:\n", + " shutil.rmtree(root_dir)" + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/generation/2d_super_resolution/2d_sd_super_resolution_lightning.ipynb b/generation/2d_super_resolution/2d_sd_super_resolution_lightning.ipynb new file mode 100644 index 000000000..817efe233 --- /dev/null +++ b/generation/2d_super_resolution/2d_sd_super_resolution_lightning.ipynb @@ -0,0 +1,1318 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "51f79ac5-1e09-4933-9009-9ade92901b3c", + "metadata": {}, + "source": [ + "Copyright (c) MONAI Consortium
\n", + "Licensed under the Apache License, Version 2.0 (the \"License\");
\n", + "you may not use this file except in compliance with the License.
\n", + "You may obtain a copy of the License at
\n", + "http://www.apache.org/licenses/LICENSE-2.0
\n", + "Unless required by applicable law or agreed to in writing, software
\n", + "distributed under the License is distributed on an \"AS IS\" BASIS,
\n", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\n", + "See the License for the specific language governing permissions and
\n", + "limitations under the License.
" + ] + }, + { + "cell_type": "markdown", + "id": "95c08725", + "metadata": {}, + "source": [ + "# Super-resolution using Stable Diffusion v2 Upscalers using PyTorch Lightning\n", + "\n", + "This tutorial is identical to '2d_sd_super_resolution' but uses PyTorch Lightning (https://lightning.ai/docs/pytorch/stable/).\n", + "\n", + "Tutorial to illustrate the super-resolution task on medical images using Latent Diffusion Models (LDMs) [1]. For that, we will use an autoencoder to obtain a latent representation of the high-resolution images. Then, we train a diffusion model to infer this latent representation when conditioned on a low-resolution image.\n", + "\n", + "To improve the performance of our models, we will use a method called \"noise conditioning augmentation\" (introduced in [2] and used in Stable Diffusion v2.0 and Imagen Video [3]). During the training, we add noise to the low-resolution images using a random signal-to-noise ratio, and we condition the diffusion models on the amount of noise added. At sampling time, we use a fixed signal-to-noise ratio, representing a small amount of augmentation that aids in removing artefacts in the samples.\n", + "\n", + "\n", + "[1] - Rombach et al. \"High-Resolution Image Synthesis with Latent Diffusion Models\" https://arxiv.org/abs/2112.10752\n", + "\n", + "[2] - Ho et al. \"Cascaded diffusion models for high fidelity image generation\" https://arxiv.org/abs/2106.15282\n", + "\n", + "[3] - Ho et al. \"High Definition Video Generation with Diffusion Models\" https://arxiv.org/abs/2210.02303" + ] + }, + { + "cell_type": "markdown", + "id": "b839bf2d", + "metadata": {}, + "source": [ + "## Setup environment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "77f7e633", + "metadata": {}, + "outputs": [], + "source": [ + "!python -c \"import monai\" || pip install -q \"monai-weekly[tqdm]\"\n", + "!python -c \"import pytorch_lightning\" || pip install pytorch-lightning\n", + "!python -c \"import matplotlib\" || pip install -q matplotlib\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "214066de", + "metadata": {}, + "source": [ + "## Setup imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de71fe08", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import tempfile\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn.functional as F\n", + "from monai import transforms\n", + "from monai.apps import MedNISTDataset\n", + "from monai.config import print_config\n", + "from monai.data import CacheDataset, ThreadDataLoader\n", + "from monai.utils import first, set_determinism\n", + "from torch.amp import autocast\n", + "from torch import nn\n", + "from tqdm.notebook import tqdm\n", + "\n", + "from monai.losses import PatchAdversarialLoss, PerceptualLoss\n", + "from monai.networks.nets import AutoencoderKL, DiffusionModelUNet, PatchDiscriminator\n", + "from monai.networks.schedulers import DDPMScheduler\n", + "\n", + "import pytorch_lightning as pl\n", + "from pytorch_lightning.callbacks.model_checkpoint import ModelCheckpoint\n", + "\n", + "print_config()" + ] + }, + { + "cell_type": "markdown", + "id": "c0dde922", + "metadata": {}, + "source": [ + "## Setup a data directory and download dataset\n", + "Specify a MONAI_DATA_DIRECTORY variable, where the data will be downloaded. If not specified a temporary directory will be used." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ded618a7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/tmp/tmpkazhiy23\n" + ] + } + ], + "source": [ + "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", + "root_dir = tempfile.mkdtemp() if directory is None else directory\n", + "print(root_dir)" + ] + }, + { + "cell_type": "markdown", + "id": "e855e2b7-7e46-44d9-a567-3e91b5db2b6f", + "metadata": {}, + "source": [ + "## Set deterministic training for reproducibility" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9f0a17bc", + "metadata": {}, + "outputs": [], + "source": [ + "# for reproducibility purposes set a seed\n", + "set_determinism(42)" + ] + }, + { + "cell_type": "markdown", + "id": "aa76151c-0a37-471e-8312-10c2afcf11bc", + "metadata": {}, + "source": [ + "## Description of data and download the training set\n", + "\n", + "For this tutorial, we use the head CT dataset from MedNIST." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "298d964a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "MedNIST.tar.gz: 59.0MB [00:01, 38.7MB/s] \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-09-24 08:29:18,175 - INFO - Downloaded: /tmp/tmpkazhiy23/MedNIST.tar.gz\n", + "2024-09-24 08:29:18,286 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2024-09-24 08:29:18,286 - INFO - Writing into directory: /tmp/tmpkazhiy23.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:16<00:00, 2894.30it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2024-09-24 08:29:39,365 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2024-09-24 08:29:39,365 - INFO - File exists: /tmp/tmpkazhiy23/MedNIST.tar.gz, skipped downloading.\n", + "2024-09-24 08:29:39,366 - INFO - Non-empty folder exists in /tmp/tmpkazhiy23/MedNIST, skipped extracting.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3004.12it/s]\n" + ] + } + ], + "source": [ + "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", download=True, seed=0)\n", + "train_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"HeadCT\"]\n", + "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n", + "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"HeadCT\"]" + ] + }, + { + "cell_type": "markdown", + "id": "46bafb78", + "metadata": {}, + "source": [ + "### Setup utils functions" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "4f8eff03", + "metadata": {}, + "outputs": [], + "source": [ + "def get_train_transforms():\n", + " image_size = 64\n", + " train_transforms = transforms.Compose(\n", + " [\n", + " transforms.LoadImaged(keys=[\"image\"]),\n", + " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n", + " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n", + " transforms.RandAffined(\n", + " keys=[\"image\"],\n", + " rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)],\n", + " translate_range=[(-1, 1), (-1, 1)],\n", + " scale_range=[(-0.05, 0.05), (-0.05, 0.05)],\n", + " spatial_size=[image_size, image_size],\n", + " padding_mode=\"zeros\",\n", + " prob=0.5,\n", + " ),\n", + " transforms.CopyItemsd(keys=[\"image\"], times=1, names=[\"low_res_image\"]),\n", + " transforms.Resized(keys=[\"low_res_image\"], spatial_size=(16, 16)),\n", + " ]\n", + " )\n", + " return train_transforms\n", + "\n", + "\n", + "def get_val_transforms():\n", + " val_transforms = transforms.Compose(\n", + " [\n", + " transforms.LoadImaged(keys=[\"image\"]),\n", + " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n", + " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n", + " transforms.CopyItemsd(keys=[\"image\"], times=1, names=[\"low_res_image\"]),\n", + " transforms.Resized(keys=[\"low_res_image\"], spatial_size=(16, 16)),\n", + " ]\n", + " )\n", + " return val_transforms\n", + "\n", + "\n", + "def get_datasets():\n", + " train_transforms = get_train_transforms()\n", + " val_transforms = get_val_transforms()\n", + " train_ds = CacheDataset(data=train_datalist[:320], transform=train_transforms)\n", + " val_ds = CacheDataset(data=val_datalist[:32], transform=val_transforms)\n", + " return train_ds, val_ds" + ] + }, + { + "cell_type": "markdown", + "id": "d80e045b", + "metadata": {}, + "source": [ + "## Define the LightningModule for AutoEncoder (transforms, network, loaders, etc)\n", + "The LightningModule contains a refactoring of your training code. The following module is a reformating of the code in 2d_stable_diffusion_v2_super_resolution.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d5d1caff", + "metadata": {}, + "outputs": [], + "source": [ + "class AutoEncoder(pl.LightningModule):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.data_dir = root_dir\n", + " self.autoencoderkl = AutoencoderKL(\n", + " spatial_dims=2,\n", + " in_channels=1,\n", + " out_channels=1,\n", + " channels=(256, 512, 512),\n", + " latent_channels=3,\n", + " num_res_blocks=2,\n", + " norm_num_groups=32,\n", + " attention_levels=(False, False, True),\n", + " )\n", + " self.discriminator = PatchDiscriminator(spatial_dims=2, in_channels=1, num_layers_d=3, channels=64)\n", + " self.perceptual_loss = PerceptualLoss(spatial_dims=2, network_type=\"alex\")\n", + " self.perceptual_weight = 0.002\n", + " self.autoencoder_warm_up_n_epochs = 10\n", + " self.automatic_optimization = False\n", + " self.adv_loss = PatchAdversarialLoss(criterion=\"least_squares\")\n", + " self.adv_weight = 0.005\n", + " self.kl_weight = 1e-6\n", + "\n", + " def forward(self, z):\n", + " return self.autoencoderkl(z)\n", + "\n", + " def prepare_data(self):\n", + " self.train_ds, self.val_ds = get_datasets()\n", + "\n", + " def train_dataloader(self):\n", + " return ThreadDataLoader(self.train_ds, batch_size=16, shuffle=True, num_workers=4, persistent_workers=True)\n", + "\n", + " def val_dataloader(self):\n", + " return ThreadDataLoader(self.val_ds, batch_size=16, shuffle=False, num_workers=4)\n", + "\n", + " def _compute_loss_generator(self, images, reconstruction, z_mu, z_sigma):\n", + " recons_loss = F.l1_loss(reconstruction.float(), images.float())\n", + " p_loss = self.perceptual_loss(reconstruction.float(), images.float())\n", + " kl_loss = 0.5 * torch.sum(z_mu.pow(2) + z_sigma.pow(2) - torch.log(z_sigma.pow(2)) - 1, dim=[1, 2, 3])\n", + " kl_loss = torch.sum(kl_loss) / kl_loss.shape[0]\n", + " loss_g = recons_loss + (self.kl_weight * kl_loss) + (self.perceptual_weight * p_loss)\n", + " return loss_g, recons_loss\n", + "\n", + " def _compute_loss_discriminator(self, images, reconstruction):\n", + " logits_fake = self.discriminator(reconstruction.contiguous().detach())[-1]\n", + " loss_d_fake = self.adv_loss(logits_fake, target_is_real=False, for_discriminator=True)\n", + " logits_real = self.discriminator(images.contiguous().detach())[-1]\n", + " loss_d_real = self.adv_loss(logits_real, target_is_real=True, for_discriminator=True)\n", + " discriminator_loss = (loss_d_fake + loss_d_real) * 0.5\n", + " loss_d = self.adv_weight * discriminator_loss\n", + " return loss_d, discriminator_loss\n", + "\n", + " def training_step(self, batch, batch_idx):\n", + " optimizer_g, optimizer_d = self.optimizers()\n", + " images = batch[\"image\"]\n", + " reconstruction, z_mu, z_sigma = self.forward(images)\n", + " loss_g, recons_loss = self._compute_loss_generator(images, reconstruction, z_mu, z_sigma)\n", + " self.log(\"recons_loss\", recons_loss, batch_size=16, prog_bar=True)\n", + "\n", + " if self.current_epoch > self.autoencoder_warm_up_n_epochs:\n", + " logits_fake = self.discriminator(reconstruction.contiguous().float())[-1]\n", + " generator_loss = self.adv_loss(logits_fake, target_is_real=True, for_discriminator=False)\n", + " loss_g += self.adv_weight * generator_loss\n", + " self.log(\"gen_loss\", generator_loss, batch_size=16, prog_bar=True)\n", + "\n", + " self.log(\"loss_g\", loss_g, batch_size=16, prog_bar=True)\n", + " self.manual_backward(loss_g)\n", + " optimizer_g.step()\n", + " optimizer_g.zero_grad()\n", + " self.untoggle_optimizer(optimizer_g)\n", + "\n", + " if self.current_epoch > self.autoencoder_warm_up_n_epochs:\n", + " loss_d, discriminator_loss = self._compute_loss_discriminator(images, reconstruction)\n", + " self.log(\"disc_loss\", loss_d, batch_size=16, prog_bar=True)\n", + " self.log(\"train_loss_d\", loss_d, batch_size=16, prog_bar=True)\n", + " self.manual_backward(loss_d)\n", + " optimizer_d.step()\n", + " optimizer_d.zero_grad()\n", + " self.untoggle_optimizer(optimizer_d)\n", + "\n", + " def validation_step(self, batch, batch_idx):\n", + " images = batch[\"image\"]\n", + " reconstruction, z_mu, z_sigma = self.autoencoderkl(images)\n", + " recons_loss = F.l1_loss(images.float(), reconstruction.float())\n", + " self.log(\"val_loss_d\", recons_loss, batch_size=1, prog_bar=True)\n", + " self.images = images\n", + " self.reconstruction = reconstruction\n", + "\n", + " def on_validation_epoch_end(self):\n", + " # ploting reconstruction\n", + " plt.figure(figsize=(2, 2))\n", + " plt.imshow(\n", + " torch.cat([self.images[0, 0].cpu(), self.reconstruction[0, 0].cpu()], dim=1), vmin=0, vmax=1, cmap=\"gray\"\n", + " )\n", + " plt.tight_layout()\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "\n", + " def configure_optimizers(self):\n", + " optimizer_g = torch.optim.Adam(self.autoencoderkl.parameters(), lr=5e-5)\n", + " optimizer_d = torch.optim.Adam(self.discriminator.parameters(), lr=1e-4)\n", + " return [optimizer_g, optimizer_d], []" + ] + }, + { + "cell_type": "markdown", + "id": "c16de505", + "metadata": { + "lines_to_next_cell": 0 + }, + "source": [ + "## Train Autoencoder" + ] + }, + { + "cell_type": "markdown", + "id": "e740cb2d-5a57-42ed-806b-e8c720a6f922", + "metadata": {}, + "source": [ + "In this section, we train a spatial autoencoder to learn how to compress high-resolution images into a latent space representation. We need to ensure that the latent space spatial shape matches that of the low resolution images." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9d903aaa", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/vf19/PycharmProjects/MONAI_tutorials/venv/lib/python3.10/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n", + " warnings.warn(\n", + "/home/vf19/PycharmProjects/MONAI_tutorials/venv/lib/python3.10/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=AlexNet_Weights.IMAGENET1K_V1`. You can also use `weights=AlexNet_Weights.DEFAULT` to get the most up-to-date weights.\n", + " warnings.warn(msg)\n", + "/home/vf19/PycharmProjects/MONAI_tutorials/venv/lib/python3.10/site-packages/lpips/lpips.py:107: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n", + " self.load_state_dict(torch.load(model_path, map_location='cpu'), strict=False)\n", + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "HPU available: False, using: 0 HPUs\n", + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 320/320 [00:00<00:00, 1478.97it/s]\n", + "Loading dataset: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 32/32 [00:00<00:00, 773.46it/s]\n", + "/home/vf19/PycharmProjects/MONAI_tutorials/venv/lib/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py:654: Checkpoint directory /tmp/tmpkazhiy23 exists and is not empty.\n", + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n", + "\n", + " | Name | Type | Params | Mode \n", + "-----------------------------------------------------------------\n", + "0 | autoencoderkl | AutoencoderKL | 75.1 M | train\n", + "1 | discriminator | PatchDiscriminator | 2.8 M | train\n", + "2 | perceptual_loss | PerceptualLoss | 2.5 M | train\n", + "3 | adv_loss | PatchAdversarialLoss | 0 | train\n", + "-----------------------------------------------------------------\n", + "77.8 M Trainable params\n", + "2.5 M Non-trainable params\n", + "80.3 M Total params\n", + "321.225 Total estimated model params size (MB)\n", + "251 Modules in train mode\n", + "41 Modules in eval mode\n", + "/home/vf19/PycharmProjects/MONAI_tutorials/venv/lib/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:298: The number of training batches (20) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e3c00d0cf81e4f5484624e5e3278d6bd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Training: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Trainer.fit` stopped: `max_epochs=75` reached.\n" + ] + } + ], + "source": [ + "max_epochs = 75\n", + "val_interval = 10\n", + "\n", + "\n", + "# initialise the LightningModule\n", + "ae_net = AutoEncoder()\n", + "\n", + "# set up checkpoints\n", + "\n", + "checkpoint_callback = ModelCheckpoint(dirpath=root_dir, filename=\"best_metric_model\")\n", + "\n", + "\n", + "# initialise Lightning's trainer.\n", + "trainer = pl.Trainer(\n", + " devices=1,\n", + " max_epochs=max_epochs,\n", + " check_val_every_n_epoch=val_interval,\n", + " num_sanity_val_steps=0,\n", + " callbacks=checkpoint_callback,\n", + " default_root_dir=root_dir,\n", + ")\n", + "\n", + "# train\n", + "trainer.fit(ae_net)" + ] + }, + { + "cell_type": "markdown", + "id": "c7108b87", + "metadata": {}, + "source": [ + "## Rescaling factor\n", + "\n", + "As mentioned in Rombach et al. [1] Section 4.3.2 and D.1, the signal-to-noise ratio (induced by the scale of the latent space) became crucial in image-to-image translation models (such as the ones used for super-resolution). For this reason, we will compute the component-wise standard deviation to be used as scaling factor." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ccb6ba9f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scaling factor set to 0.6885251998901367\n" + ] + } + ], + "source": [ + "def get_scale_factor():\n", + " ae_net.eval()\n", + " device = torch.device(\"cuda:0\")\n", + " ae_net.to(device)\n", + "\n", + " train_loader = ae_net.train_dataloader()\n", + " check_data = first(train_loader)\n", + " z = ae_net.autoencoderkl.encode_stage_2_inputs(check_data[\"image\"].to(ae_net.device))\n", + " print(f\"Scaling factor set to {1/torch.std(z)}\")\n", + " scale_factor = 1 / torch.std(z)\n", + " return scale_factor\n", + "\n", + "\n", + "scale_factor = get_scale_factor()" + ] + }, + { + "cell_type": "markdown", + "id": "3baa2b0f", + "metadata": {}, + "source": [ + "## Define the LightningModule for DiffusionModelUnet (transforms, network, loaders, etc)\n", + "\n", + "The LightningModule contains a refactoring of your training code. The following module is a reformating of the code in 2d_stable_diffusion_v2_super_resolution." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "731034ec", + "metadata": {}, + "outputs": [], + "source": [ + "class DiffusionUNET(pl.LightningModule):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.data_dir = root_dir\n", + " self.unet = DiffusionModelUNet(\n", + " spatial_dims=2,\n", + " in_channels=4,\n", + " out_channels=3,\n", + " num_res_blocks=2,\n", + " channels=(256, 256, 512, 1024),\n", + " attention_levels=(False, False, True, True),\n", + " num_head_channels=(0, 0, 64, 64),\n", + " )\n", + " self.max_noise_level = 350\n", + " self.scheduler = DDPMScheduler(\n", + " num_train_timesteps=1000, schedule=\"linear_beta\", beta_start=0.0015, beta_end=0.0195\n", + " )\n", + " self.z = ae_net.autoencoderkl.eval()\n", + "\n", + " def forward(self, x, timesteps, low_res_timesteps):\n", + " return self.unet(x=x, timesteps=timesteps, class_labels=low_res_timesteps)\n", + "\n", + " def prepare_data(self):\n", + " self.train_ds, self.val_ds = get_datasets()\n", + "\n", + " def train_dataloader(self):\n", + " return ThreadDataLoader(self.train_ds, batch_size=16, shuffle=True, num_workers=4, persistent_workers=True)\n", + "\n", + " def val_dataloader(self):\n", + " return ThreadDataLoader(self.val_ds, batch_size=16, shuffle=False, num_workers=4)\n", + "\n", + " def _calculate_loss(self, batch, batch_idx, plt_image=False):\n", + " images = batch[\"image\"]\n", + " low_res_image = batch[\"low_res_image\"]\n", + " with autocast(\"cuda\", enabled=True):\n", + " with torch.no_grad():\n", + " latent = self.z.encode_stage_2_inputs(images) * scale_factor\n", + "\n", + " # Noise augmentation\n", + " noise = torch.randn_like(latent)\n", + " low_res_noise = torch.randn_like(low_res_image)\n", + " timesteps = torch.randint(\n", + " 0, self.scheduler.num_train_timesteps, (latent.shape[0],), device=latent.device\n", + " ).long()\n", + " low_res_timesteps = torch.randint(\n", + " 0, self.max_noise_level, (low_res_image.shape[0],), device=latent.device\n", + " ).long()\n", + "\n", + " noisy_latent = self.scheduler.add_noise(original_samples=latent, noise=noise, timesteps=timesteps)\n", + " noisy_low_res_image = self.scheduler.add_noise(\n", + " original_samples=low_res_image, noise=low_res_noise, timesteps=low_res_timesteps\n", + " )\n", + "\n", + " latent_model_input = torch.cat([noisy_latent, noisy_low_res_image], dim=1)\n", + "\n", + " noise_pred = self.forward(latent_model_input, timesteps, low_res_timesteps)\n", + " loss = F.mse_loss(noise_pred.float(), noise.float())\n", + "\n", + " if plt_image:\n", + " # Sampling image during training\n", + " sampling_image = low_res_image[0].unsqueeze(0)\n", + " latents = torch.randn((1, 3, 16, 16)).to(sampling_image.device)\n", + " low_res_noise = torch.randn((1, 1, 16, 16)).to(sampling_image.device)\n", + " noise_level = 20\n", + " noise_level = torch.Tensor((noise_level,)).long().to(sampling_image.device)\n", + "\n", + " noisy_low_res_image = self.scheduler.add_noise(\n", + " original_samples=sampling_image,\n", + " noise=low_res_noise,\n", + " timesteps=noise_level,\n", + " )\n", + " self.scheduler.set_timesteps(num_inference_steps=1000)\n", + " for t in tqdm(self.scheduler.timesteps, ncols=110):\n", + " with autocast(\"cuda\", enabled=True):\n", + " with torch.no_grad():\n", + " latent_model_input = torch.cat([latents, noisy_low_res_image], dim=1)\n", + " noise_pred = self.forward(\n", + " latent_model_input, torch.Tensor((t,)).to(sampling_image.device), noise_level\n", + " )\n", + " latents, _ = self.scheduler.step(noise_pred, t, latents)\n", + " with torch.no_grad():\n", + " decoded = self.z.decode_stage_2_outputs(latents / scale_factor)\n", + " low_res_bicubic = nn.functional.interpolate(sampling_image, (64, 64), mode=\"bicubic\")\n", + " # plot images\n", + "\n", + " self.images = images\n", + " self.low_res_bicubic = low_res_bicubic\n", + " self.decoded = decoded\n", + "\n", + " return loss\n", + "\n", + " def _plot_image(self, images, low_res_bicubic, decoded):\n", + " plt.figure(figsize=(2, 2))\n", + " plt.style.use(\"default\")\n", + " plt.imshow(\n", + " torch.cat([images[0, 0].cpu(), low_res_bicubic[0, 0].cpu(), decoded[0, 0].cpu()], dim=1),\n", + " vmin=0,\n", + " vmax=1,\n", + " cmap=\"gray\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.axis(\"off\")\n", + " plt.show()\n", + "\n", + " def training_step(self, batch, batch_idx):\n", + " loss = self._calculate_loss(batch, batch_idx)\n", + " self.log(\"train_loss\", loss, batch_size=16, prog_bar=True)\n", + " return loss\n", + "\n", + " def validation_step(self, batch, batch_idx):\n", + " loss = self._calculate_loss(batch, batch_idx, plt_image=True)\n", + " self.log(\"val_loss\", loss, batch_size=16, prog_bar=True)\n", + " return loss\n", + "\n", + " def on_validation_epoch_end(self):\n", + " self._plot_image(self.images, self.low_res_bicubic, self.decoded)\n", + "\n", + " def configure_optimizers(self):\n", + " optimizer = torch.optim.Adam(self.unet.parameters(), lr=5e-5)\n", + " return optimizer" + ] + }, + { + "cell_type": "markdown", + "id": "b386a0c2", + "metadata": {}, + "source": [ + "## Train Diffusion Model\n", + "\n", + "In order to train the diffusion model to perform super-resolution, we will need to **concatenate the latent representation of the high-resolution with the low-resolution image**. Therefore, the number of input channels to the diffusion model will be the sum of the number of channels in the low-resolution (1) and the number of channels of the high-resolution image latent representation (3). In this case, we create a Diffusion model with `in_channels=4`. Since only the output latent representation is interesting, we set `out_channels=3`. \n", + "\n", + "**At inference time** we do not have a high-resolution image. Instead, we pass the concatenation of the low resolution image, and noise of the same shape as the latent space representation.\n", + "\n", + "As mentioned, we will use the conditioned augmentation (introduced in [2] section 3 and used on Stable Diffusion Upscalers and Imagen Video [3] Section 2.5) as it has been shown critical for cascaded diffusion models, as well for super-resolution tasks. For this, we apply Gaussian noise augmentation to the low-resolution images. We will use a scheduler low_res_scheduler to add this noise, with the t step defining the signal-to-noise ratio and use the t value to condition the diffusion model (inputted using class_labels argument)." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "936bbb9c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "GPU available: True (cuda), used: True\n", + "TPU available: False, using: 0 TPU cores\n", + "HPU available: False, using: 0 HPUs\n", + "\n", + "Loading dataset: 0%| | 0/320 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "17aa3327b5084a8f96c140125efd91e6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fa63aaeaed78402f8f478a467bb73cd5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Validation: | …" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "66c3255d7df7478e9277de2e512ec1d7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1000 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "`Trainer.fit` stopped: `max_epochs=200` reached.\n" + ] + } + ], + "source": [ + "max_epochs = 200\n", + "val_interval = 50\n", + "\n", + "\n", + "# initialise the LightningModule\n", + "d_net = DiffusionUNET()\n", + "\n", + "# set up checkpoints\n", + "\n", + "checkpoint_callback = ModelCheckpoint(dirpath=root_dir, filename=\"best_metric_model_dunet\")\n", + "\n", + "\n", + "# initialise Lightning's trainer.\n", + "trainer = pl.Trainer(\n", + " devices=1,\n", + " max_epochs=max_epochs,\n", + " check_val_every_n_epoch=val_interval,\n", + " num_sanity_val_steps=0,\n", + " callbacks=checkpoint_callback,\n", + " default_root_dir=root_dir,\n", + ")\n", + "\n", + "# train\n", + "trainer.fit(d_net)" + ] + }, + { + "cell_type": "markdown", + "id": "30f24595", + "metadata": {}, + "source": [ + "### Plotting sampling example" + ] + }, + { + "cell_type": "markdown", + "id": "19ba049e-fca6-4c76-b7b1-7e992d370583", + "metadata": {}, + "source": [ + "As mentioned above, at inference time, we only need to pass noise of the same shape of the latent concatenated to the low-resolution image, to get the latent representation of the corresponding high-resolution image." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "155be091", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "837b6b2a5e1f42ab862c9cf589dbb615", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1000 [00:00 x_t-1\n", + " latents, _ = scheduler.step(noise_pred, t, latents)\n", + "\n", + " with torch.no_grad():\n", + " decoded = ae_net.autoencoderkl.decode_stage_2_outputs(latents / scale_factor)\n", + " return sampling_image, images, decoded\n", + "\n", + "\n", + "sampling_image, images, decoded = get_images_to_plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "32e16e69", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAw0AAAMVCAYAAAA1ZBgWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADRQklEQVR4nOy9d7RW1bW/P5HeOwKKdFHsvaJY0RiNSdSrJrbENHMTvem59+svGr0mUW96YjA3sSbGxDQTW6xRI8aGDcUKqCAIIlgQFXx/f2Sw71yfc85cZ/G+Bw/wPGMwxp5n7bL6fjfrM+fqUKvVagYAAAAAANACG7zXGQAAAAAAgPYNHw0AAAAAABDCRwMAAAAAAITw0QAAAAAAACF8NAAAAAAAQAgfDQAAAAAAEMJHAwAAAAAAhPDRAAAAAAAAIXw0AAAAAABACB8Na4gzzjjDOnTosFrXXnzxxdahQwebPXt2YzPlmD17tnXo0MEuvvji8LzbbrvNOnToYLfddlub5QUAGkdrx3Yp9cxpALDu0trfCWvitw00Fj4aMsyYMcM++tGP2kYbbWRdu3a14cOH20c+8hGbMWPGe501gPWaVS+c++67773OyjrLsmXL7Iwzzmh3/0nQoUMH+/d///f3OhuwjtNW7/9zzjnH/vSnPzUmkxnuuusuO+OMM2zJkiXvaT5g3YCPhoA//OEPtv3229vNN99sJ510kv30pz+1j3/843brrbfa9ttvb3/84x9bfa//9//+n7355purlY/jjjvO3nzzTRs5cuRqXd9I9tprL3vzzTdtr732eq+zAgBtzLJly+zMM89s9qOhnjkNoL3TyPe/sqY/Gs4888x2+dHQnn7bQOvo9F5noL3yzDPP2HHHHWdjxoyx22+/3QYPHlylnXrqqTZp0iQ77rjj7OGHH7YxY8a0eJ833njDevbsaZ06dbJOnVavujt27GgdO3ZcrWsbzQYbbGDdunV7r7MBsFZRq9Vs+fLl1r179/c6Kw2jnjkNoD3TqPc/xLSn3zbQOlhpaIHzzjvPli1bZhdeeGEyYZiZDRo0yKZOnWpvvPGGnXvuudXfV2l8H3vsMTv22GOtf//+tueeeyZpnjfffNM+//nP26BBg6x379522GGH2dy5c61Dhw52xhlnVOc1p/sbNWqUvf/977c777zTdt55Z+vWrZuNGTPGLr300uQZixcvti996Uu21VZbWa9evaxPnz528MEH20MPPbRa9dKcVnHy5Mm25ZZb2sMPP2x777239ejRw8aNG2dXXXWVmZn9/e9/t1122cW6d+9uEyZMsJtuuim555w5c+yUU06xCRMmWPfu3W3gwIF25JFHNqtzXPWM7t2728Ybb2xnn322XXTRRc3qIq+77jqbNGmS9ezZ03r37m2HHHIIsrL1kOnTp9vBBx9sffr0sV69etl+++1nd999d5W+ZMkS69ixo/3whz+s/rZo0SLbYIMNbODAgVar1aq/f+Yzn7GhQ4dmn7lqfN5www224447Wvfu3W3q1KnV80477TQbMWKEde3a1caNG2ff+c537N13303u8Zvf/MZ22GEH6927t/Xp08e22mor+8EPfpCc8+yzz9qRRx5pAwYMsB49etiuu+5q11xzTTZ/kydPtsmTJzf5+4knnmijRo0ys3/5Qqya+84880zr0KFDMjc1N6etWLHCzjrrLBs7dqx17drVRo0aZf/5n/9pb731VrP1k5u/Wsuqeem3v/2tnXnmmbbRRhtZ79697YgjjrClS5faW2+9ZaeddpoNGTLEevXqZSeddFKTPF100UW277772pAhQ6xr1642ceJEu+CCC5o8691337UzzjjDhg8fbj169LB99tnHHnvsMRs1apSdeOKJybmtbWtoX6zO+9+PHY+Okw4dOtgbb7xhl1xySTWmVvWbVefOnDnTjjrqKOvTp48NHDjQTj31VFu+fHl1j8hPScfol7/8ZTMzGz16dPW8Vde3lA8zs7lz59rHPvYx23DDDa1r1662xRZb2C9/+csmz3vhhRfs8MMPt549e9qQIUPsP/7jP5qMrZaIftvcdttt1dy51VZbVb85/vCHP9hWW21l3bp1sx122MGmT5+e3PPhhx+2E0880caMGWPdunWzoUOH2sc+9jF7+eWXmzx/1TO6detmY8eOtalTp7boq3X55ZfbDjvsYN27d7cBAwbY0Ucfbc8//3yryrkuwX8TtcBf/vIXGzVqlE2aNKnZ9L322stGjRrV7Av6yCOPtPHjx9s555yT/OBQTjzxRPvtb39rxx13nO26667297//3Q455JBW5/Hpp5+2I444wj7+8Y/bCSecYL/85S/txBNPtB122MG22GILM/vXj4o//elPduSRR9ro0aNtwYIFNnXqVNt7773tscces+HDh7f6eRGvvPKKvf/977ejjz7ajjzySLvgggvs6KOPtl/96ld22mmn2ac//Wk79thj7bzzzrMjjjjCnn/+eevdu7eZmd17771211132dFHH20bb7yxzZ492y644AKbPHmyPfbYY9ajRw8z+9ckts8++1iHDh3s61//uvXs2dP+93//17p27dokP5dddpmdcMIJNmXKFPvOd75jy5YtswsuuMD23HNPmz59erOTO6x7zJgxwyZNmmR9+vSxr3zlK9a5c2ebOnWqTZ48ufqY7devn2255ZZ2++232+c//3kzM7vzzjutQ4cOtnjxYnvssceq8XTHHXe0OCcoTzzxhB1zzDH2qU99yj7xiU/YhAkTbNmyZbb33nvb3Llz7VOf+pRtsskmdtddd9nXv/51e/HFF+373/++mZndeOONdswxx9h+++1n3/nOd8zM7PHHH7d//OMfduqpp5qZ2YIFC2z33Xe3ZcuW2ec//3kbOHCgXXLJJXbYYYfZVVddZR/84AfrqrvBgwfbBRdcYJ/5zGfsgx/8oH3oQx8yM7Ott966xWtOPvlku+SSS+yII46wL37xi/bPf/7TvvWtb9njjz/eRM7RmvmrlG9961vWvXt3+9rXvmZPP/20/ehHP7LOnTvbBhtsYK+88oqdccYZdvfdd9vFF19so0ePtv/v//v/qmsvuOAC22KLLeywww6zTp062V/+8hc75ZRT7N1337XPfvaz1Xlf//rX7dxzz7VDDz3UpkyZYg899JBNmTIl+VFnZq1ua2h/1PP+z3HZZZfZySefbDvvvLN98pOfNDOzsWPHJuccddRRNmrUKPvWt75ld999t/3whz+0V155pfij+kMf+pA9+eSTdsUVV9j3vvc9GzRokJn9a2xH+ViwYIHtuuuule/Q4MGD7brrrrOPf/zj9uqrr9ppp51mZv/6j8/99tvPnnvuOfv85z9vw4cPt8suu8xuueWW4nrxPP3003bsscfapz71KfvoRz9q559/vh166KH2s5/9zP7zP//TTjnlFDP713g/6qij7IknnrANNvjX/4HfeOON9uyzz9pJJ51kQ4cOtRkzZtiFF15oM2bMsLvvvrv6IJg+fboddNBBNmzYMDvzzDNt5cqV9s1vfrPJR6KZ2X//93/b6aefbkcddZSdfPLJtnDhQvvRj35ke+21l02fPt369etXV3nXKmrQhCVLltTMrPaBD3wgPO+www6rmVnt1VdfrdVqtdo3vvGNmpnVjjnmmCbnrkpbxf33318zs9ppp52WnHfiiSfWzKz2jW98o/rbRRddVDOz2qxZs6q/jRw5smZmtdtvv73620svvVTr2rVr7Ytf/GL1t+XLl9dWrlyZPGPWrFm1rl271r75zW8mfzOz2kUXXRSW+dZbb62ZWe3WW2+t/rb33nvXzKz261//uvrbzJkza2ZW22CDDWp333139fcbbrihyXOWLVvW5DnTpk2rmVnt0ksvrf72uc99rtahQ4fa9OnTq7+9/PLLtQEDBiT189prr9X69etX+8QnPpHcc/78+bW+ffs2+TusnawaF/fee2+L5xx++OG1Ll261J555pnqb/Pmzav17t27ttdee1V/++xnP1vbcMMNK/sLX/hCba+99qoNGTKkdsEFF9RqtX/1tQ4dOtR+8IMfZPO2anxef/31yd/POuusWs+ePWtPPvlk8vevfe1rtY4dO9aee+65Wq1Wq5166qm1Pn361FasWNHiM0477bSamdXuuOOO6m+vvfZabfTo0bVRo0ZV4765sb333nvX9t577yb3POGEE2ojR46s7IULFzaZj1ahc9qDDz5YM7PaySefnJz3pS99qWZmtVtuuaX6W2vnr5Yws9pnP/vZyl41L2255Za1t99+u/r7McccU+vQoUPt4IMPTq7fbbfdknLWas3PQ1OmTKmNGTOmsufPn1/r1KlT7fDDD0/OO+OMM2pmVjvhhBOqv7W2raF9sbrvfx07q9BxUqvVaj179kz6ip572GGHJX8/5ZRTamZWe+ihh2q1Wvy+1vF63nnnNfn9kMvHxz/+8dqwYcNqixYtSv5+9NFH1/r27VuNle9///s1M6v99re/rc554403auPGjWvyO6E5ot82d911V/W3Vb8bunfvXpszZ07196lTpzZ5TnPj+Iorrmgy3xx66KG1Hj161ObOnVv97amnnqp16tQpaa/Zs2fXOnbsWPvv//7v5J6PPPJIrVOnTk3+vq6DPKkZXnvtNTOz6n/CW2JV+quvvpr8/dOf/nT2Gddff72ZWfXFvIrPfe5zrc7nxIkTk/8JGTx4sE2YMMGeffbZ6m9du3atvsBXrlxpL7/8svXq1csmTJhgDzzwQKuflaNXr1529NFHV/aECROsX79+tvnmm9su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5GCV+mAVQ4YMsW7durX690StVrPRo0fzoW+EXG2RL3/5y9a9e3f71Kc+1SRU1+LFi+3Tn/609ejRowpnVsoqrfNPf/rT5O8/+tGPVi/DLdCxY8cm/3P3u9/9zubOndvQ59RDc3n80Y9+1OR/TaZMmWLTpk2zBx98sPrb4sWL7Ve/+lWT8/r06WPnnHOOvfPOO02et3DhwsZlHtotHTt2tAMPPND+/Oc/JysACxYssF//+te25557JquEkyZNstmzZ9uVV15ZyZU22GAD23333e273/2uvfPOO4kGf8yYMbb//vtX//bYY49sno466iibNm2a3XDDDU3SlixZUmnsdc7ZYIMNqv/dWxXO8H3ve5/dc889Nm3atOq8N954wy688EIbNWqUTZw4scV8jB071mbOnJmMhYceesj+8Y9/JOetilzW3I8h5X3ve5+ZWZOoQN/97nfNzIoiw61pVv0PokojL7roouS8/fbbzzp16tQkFOuPf/zjJvdsbVtD+2N13v9jx461pUuXJisUL774YrObwPXs2TMcUz/5yU8Se9XvglV6+z59+tigQYOa+MXo74lVzzJrfgw3l4+OHTvahz/8Yfv9739vjz76aJNr/Jzxvve9z+bNm1eFVzezKlTte0Fz49is6ZzUsWNH23///e1Pf/qTzZs3r/r7008/bdddd11y7oc+9CHr2LGjnXnmmU3uW6vVmg3lui7DSkMLjB8/3i655BL7yEc+YltttZV9/OMft9GjR9vs2bPtF7/4hS1atMiuuOKKJqHSWssOO+xgH/7wh+373/++vfzyy1XI1SeffNLMyv6HL+L973+/ffOb37STTjrJdt99d3vkkUfsV7/6VbvakOb973+/XXbZZda3b1+bOHGiTZs2zW666aYmPhdf+cpX7PLLL7cDDjjAPve5z1UhVzfZZBNbvHhxVWd9+vSxCy64wI477jjbfvvt7eijj7bBgwfbc889Z9dcc43tsccezb7kYe3kl7/8ZRVYwHPqqafa2WefbTfeeKPtueeedsopp1inTp1s6tSp9tZbbyUx1s2s+iB44okn7Jxzzqn+vtdee9l1111nXbt2tZ122qmuvH75y1+2q6++2t7//vdX4UXfeOMNe+SRR+yqq66y2bNn26BBg+zkk0+2xYsX27777msbb7yxzZkzx370ox/ZtttuW/0v/te+9jW74oor7OCDD7bPf/7zNmDAALvkkkts1qxZ9vvf/76SUTXHxz72Mfvud79rU6ZMsY9//OP20ksv2c9+9jPbYostEsfO7t2728SJE+3KK6+0TTfd1AYMGGBbbrlls74S22yzjZ1wwgl24YUX2pIlS2zvvfe2e+65xy655BI7/PDDbZ999qmr7tqSAw88sFrZ+dSnPmWvv/66/fznP7chQ4bYiy++WJ234YYb2qmnnmr/8z//Y4cddpgddNBB9tBDD9l1111ngwYNSubt1rY1tD9W5/1/9NFH21e/+lX74Ac/aJ///OerMN+bbrppk6AjO+ywg91000323e9+t5JGev+kWbNmVf1r2rRpdvnll9uxxx5b+VOZ/Su88be//W07+eSTbccdd7Tbb7+9+v2gzzIz+6//+i87+uijrXPnznbooYdaz549W8zHt7/9bbv11lttl112sU984hM2ceJEW7x4sT3wwAN200032eLFi83M7BOf+IT9+Mc/tuOPP97uv/9+GzZsmF122WXVfzasafr06WN77bWXnXvuufbOO+/YRhttZH/7299s1qxZTc4944wz7G9/+5vtscce9pnPfMZWrlxpP/7xj23LLbdM/mNy7NixdvbZZ9vXv/51mz17th1++OHWu3dvmzVrlv3xj3+0T37yk/alL31pDZbyPWaNxmpaC3n44YdrxxxzTG3YsGG1zp0714YOHVo75phjao888kiTc1eFS1u4cGGLaZ433nij9tnPfrY2YMCAWq9evWqHH3547YknnqiZWe3b3/52dV5LYckOOeSQJs/RUIrLly+vffGLX6wNGzas1r1799oee+xRmzZtWpPz6g25usUWWzQ5t6U8moRLfOWVV2onnXRSbdCgQbVevXrVpkyZUps5c2Zt5MiRTcLBTZ8+vTZp0qRa165daxtvvHHtW9/6Vu2HP/xhzcxq8+fPb5LXKVOm1Pr27Vvr1q1bbezYsbUTTzyxdt9994VlhLWDVeOipX/PP/98rVar1R544IHalClTar169ar16NGjts8++yTh/DxDhgypmVltwYIF1d/uvPPOmpnVJk2a1Oq8tdT3a7V/hUX9+te/Xhs3blytS5cutUGDBtV233332vnnn1+FC73qqqtqBx54YG3IkCG1Ll261DbZZJPapz71qdqLL76Y3OuZZ56pHXHEEbV+/frVunXrVtt5551rf/3rX5NzWhrbl19+eW3MmDG1Ll261LbddtvaDTfc0GzYyLvuuqu2ww471Lp06ZKEc2xuTnvnnXdqZ555Zm306NG1zp0710aMGFH7+te/Xlu+fHmr6qelULCKziGr5qXf/e53yXktheVtbq6++uqra1tvvXWtW7dutVGjRtW+853v1H75y182mXtXrFhRO/3002tDhw6tde/evbbvvvvWHn/88drAgQNrn/70p5PntKatof1S8v6v1Wq1v/3tb7Utt9yy1qVLl9qECRNql19+ebPjZObMmbW99tqr1r179yRU76pzH3vssdoRRxxR6927d61///61f//3f6+9+eabyT2WLVtW+/jHP17r27dvrXfv3rWjjjqq9tJLLzUbIvmss86qbbTRRrUNNtgg6c8t5aNWq9UWLFhQ++xnP1sbMWJEVfb99tuvduGFFyb3njNnTu2www6r9ejRozZo0KDaqaeeWrv++uvrCrnamt8Ntdr/zW3nnXde9bcXXnih9sEPfrDWr1+/Wt++fWtHHnlkbd68ec3Wy80331zbbrvtal26dKmNHTu29r//+7+1L37xi7Vu3bo1ef7vf//72p577lnr2bNnrWfPnrXNNtus9tnPfrb2xBNPhGVc1+hQq9XhdQYN58EHH7TtttvOLr/88iahRKF5TjvtNJs6daq9/vrrbEkPAGucJUuWWP/+/e3ss8+2//qv/3qvswNrKWeccYadeeaZtnDhQlah3iMOP/xwmzFjRhM/CPgX+DS8h7z55ptN/vb973/fNthgA9trr73egxy1f7TOXn75Zbvssstszz335IMBANqcluZtM7PJkyev2cwAwGqjY/mpp56ya6+9lnEcgE/De8i5555r999/v+2zzz7WqVOnKrTiJz/5ySbxiOFf7LbbbjZ58mTbfPPNbcGCBfaLX/zCXn31VTv99NPf66wBwHrAlVdeaRdffLG9733vs169etmdd95pV1xxhR144IGtcoYHgPbBmDFj7MQTT7QxY8bYnDlz7IILLrAuXbq0GCYZ+Gh4T9l9993txhtvtLPOOstef/1122STTeyMM85geTvgfe97n1111VV24YUXWocOHWz77be3X/ziF6zMAMAaYeutt7ZOnTrZueeea6+++mrlHH322We/11kDgAIOOuggu+KKK2z+/PnWtWtX22233eycc85pcSM3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "low_res_bicubic = nn.functional.interpolate(sampling_image, (64, 64), mode=\"bicubic\")\n", + "fig, axs = plt.subplots(num_samples, 3, figsize=(8, 8))\n", + "axs[0, 0].set_title(\"Original image\")\n", + "axs[0, 1].set_title(\"Low-resolution Image\")\n", + "axs[0, 2].set_title(\"Outputted image\")\n", + "for i in range(0, num_samples):\n", + " axs[i, 0].imshow(images[i, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 0].axis(\"off\")\n", + " axs[i, 1].imshow(low_res_bicubic[i, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 1].axis(\"off\")\n", + " axs[i, 2].imshow(decoded[i, 0].cpu().detach().numpy(), vmin=0, vmax=1, cmap=\"gray\")\n", + " axs[i, 2].axis(\"off\")\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "id": "7fa52acc", + "metadata": {}, + "source": [ + "### Clean-up data directory" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3a6f6d5a", + "metadata": {}, + "outputs": [], + "source": [ + "if directory is None:\n", + " shutil.rmtree(root_dir)" + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "formats": "ipynb,py:percent" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/generation/README.md b/generation/README.md index d9125a861..351416fd1 100644 --- a/generation/README.md +++ b/generation/README.md @@ -72,3 +72,6 @@ Example shows the use cases of applying a spatial VAE to a 3D synthesis example. ## Performing anomaly detection with diffusion models: [implicit guidance](./anomaly_detection/2d_classifierfree_guidance_anomalydetection_tutorial.ipynb), [using transformers](./anomaly_detection/anomaly_detection_with_transformers.ipynb) and [classifier free guidance](./anomaly_detection/anomalydetection_tutorial_classifier_guidance.ipynb) Examples show how to perform anomaly detection in 2D, using implicit guidance [2D-classifier free guiance](./anomaly_detection/2d_classifierfree_guidance_anomalydetection_tutorial.ipynb), transformers [using transformers](./anomaly_detection/anomaly_detection_with_transformers.ipynb) and [classifier free guidance](./anomalydetection_tutorial_classifier_guidance). + +## 2D super-resolution using diffusion models: [using torch](./2d_super_resolution/2d_sd_super_resolution.ipynb) and [using torch lightning](./2d_super_resolution/2d_sd_super_resolution_lightning.ipynb). +Examples show how to perform super-resolution in 2D, using PyTorch and PyTorch Lightning.