From 6c4f05515d5ed4d5d57c63a9a44e38955b6354ce Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Wed, 1 Mar 2023 22:29:52 +0000 Subject: [PATCH 1/6] [WIP] Add tutorial Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 830 ++++++++++++++++++ .../anomaly_detection_with_transformers.py | 410 +++++++++ 2 files changed, 1240 insertions(+) create mode 100644 tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb create mode 100644 tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb new file mode 100644 index 00000000..4034befd --- /dev/null +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -0,0 +1,830 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f6090d00", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Anomaly Detection with Transformers\n", + "\n", + "This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in [1].\n", + "\n", + "We will work with the MedNIST dataset available on MONAI\n", + "(https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset). Similar to \"Experiment 2 – image-wise anomaly detection on 2D synthetic data\", we will train our models on HeadCT images and check the likelihood of similar images (in-distribution) and images from other classes\n", + "\n", + "[1] - [Pinaya et al. \"Unsupervised brain imaging 3D anomaly detection and segmentation with transformers\"](https://doi.org/10.1016/j.media.2022.102475)\n", + "\n", + "\n", + "### Setup imports" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6b0c79f", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Copyright 2020 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.\n", + "import os\n", + "import tempfile\n", + "import shutil\n", + "import time\n", + "\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "from torch.nn import L1Loss, CrossEntropyLoss\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 DataLoader, Dataset\n", + "from monai.utils import first, set_determinism\n", + "from tqdm import tqdm\n", + "from ignite.utils import convert_tensor\n", + "\n", + "from generative.networks.nets import VQVAE, DecoderOnlyTransformer\n", + "from generative.utils.ordering import Ordering\n", + "from generative.utils.enums import OrderingType\n", + "\n", + "print_config()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de0ed372", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# for reproducibility purposes set a seed\n", + "set_determinism(42)" + ] + }, + { + "cell_type": "markdown", + "id": "ad40db27", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Setup a data directory and download dataset\n", + "\n", + "Specify a `MONAI_DATA_DIRECTORY` variable, where the data will be downloaded. If not\n", + "specified a temporary directory will be used." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42fa255d", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "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": "10054720", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Download training data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7db7ac32", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "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", + "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", + " ]\n", + ")\n", + "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n", + "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4)" + ] + }, + { + "cell_type": "markdown", + "id": "ec356258", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Visualse some examples from the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33d7c3dc", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "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 image_n in range(3):\n", + " ax[image_n].imshow(check_data[\"image\"][image_n, 0, :, :], cmap=\"gray\")\n", + " ax[image_n].axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "id": "d860d83a", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Download Validation Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec954b77", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n", + "val_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"HeadCT\"]\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", + " ]\n", + ")\n", + "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n", + "val_loader = DataLoader(val_ds, batch_size=64, shuffle=True, num_workers=4)" + ] + }, + { + "cell_type": "markdown", + "id": "09da3d54", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Vector Quantized Variational Autoencoder (VQ-VAE) Training\n", + "\n", + "The first step is to train a VQVAE network - once this is done we can use the trained vqvae model to encode the 2d images to generate the inputs required for the transformer" + ] + }, + { + "cell_type": "markdown", + "id": "2c7a91c3", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Define network, optimizer and losses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "757d00ff", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "print(f\"Using {device}\")\n", + "vqvae_model = VQVAE(\n", + " spatial_dims=2,\n", + " in_channels=1,\n", + " out_channels=1,\n", + " num_res_layers=2,\n", + " num_levels=2,\n", + " downsample_parameters=((2, 4, 1, 1), (2, 4, 1, 1)),\n", + " upsample_parameters=((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),\n", + " num_channels=(256, 256),\n", + " num_res_channels=(256, 256),\n", + " num_embeddings=256,\n", + " embedding_dim=32,\n", + ")\n", + "vqvae_model.to(device)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7611f596", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "optimizer = torch.optim.Adam(params=vqvae_model.parameters(), lr=1e-4)\n", + "l1_loss = L1Loss()" + ] + }, + { + "cell_type": "markdown", + "id": "f1d81a89", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### VQVAE Model training\n", + "We will run our model for 100 epochs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe7459e4", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "n_epochs = 100\n", + "val_interval = 10\n", + "epoch_recon_loss_list = []\n", + "epoch_quant_loss_list = []\n", + "val_recon_epoch_loss_list = []\n", + "intermediary_images = []\n", + "n_example_images = 4\n", + "\n", + "total_start = time.time()\n", + "for epoch in range(n_epochs):\n", + " vqvae_model.train()\n", + " epoch_loss = 0\n", + " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110)\n", + " progress_bar.set_description(f\"Epoch {epoch}\")\n", + " for step, batch in progress_bar:\n", + " images = batch[\"image\"].to(device)\n", + " optimizer.zero_grad(set_to_none=True)\n", + "\n", + " # model outputs reconstruction and the quantization error\n", + " reconstruction, quantization_loss = vqvae_model(images=images)\n", + "\n", + " recons_loss = l1_loss(reconstruction.float(), images.float())\n", + "\n", + " loss = recons_loss + quantization_loss\n", + "\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " epoch_loss += recons_loss.item()\n", + "\n", + " progress_bar.set_postfix(\n", + " {\"recons_loss\": epoch_loss / (step + 1), \"quantization_loss\": quantization_loss.item() / (step + 1)}\n", + " )\n", + " epoch_recon_loss_list.append(epoch_loss / (step + 1))\n", + " epoch_quant_loss_list.append(quantization_loss.item() / (step + 1))\n", + "\n", + " if (epoch + 1) % val_interval == 0:\n", + " vqvae_model.eval()\n", + " val_loss = 0\n", + " with torch.no_grad():\n", + " k = 0\n", + " for val_step, batch in enumerate(val_loader, start=1):\n", + " k += 1\n", + " if k == 3:\n", + " break\n", + " images = batch[\"image\"].to(device)\n", + "\n", + " reconstruction, quantization_loss = vqvae_model(images=images)\n", + "\n", + " # get the first sample from the first validation batch for\n", + " # visualizing how the training evolves\n", + " if val_step == 1:\n", + " intermediary_images.append(reconstruction[:n_example_images, 0])\n", + "\n", + " recons_loss = l1_loss(reconstruction.float(), images.float())\n", + "\n", + " val_loss += recons_loss.item()\n", + "\n", + " val_loss /= val_step\n", + " val_recon_epoch_loss_list.append(val_loss)\n", + "\n", + "total_time = time.time() - total_start\n", + "print(f\"train completed, total time: {total_time}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "6ff4ec88", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Plotting evolution of reconstruction performance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54943066", + "metadata": { + "lines_to_next_cell": 2, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Plot every evaluation as a new line and example as columns\n", + "val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))\n", + "fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)\n", + "fig.set_size_inches(18, 30)\n", + "for image_n in range(len(val_samples)):\n", + " reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T\n", + " ax[image_n].imshow(reconstructions.cpu(), cmap=\"gray\")\n", + " ax[image_n].set_xticks([])\n", + " ax[image_n].set_yticks([])\n", + " ax[image_n].set_ylabel(f\"Epoch {val_samples[image_n]:.0f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "8dfa3270", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Plot reconstructions of final trained vqvae model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0789cfcc", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=2)\n", + "ax[0].imshow(images[0, 0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + "ax[0].axis(\"off\")\n", + "ax[0].title.set_text(\"Inputted Image\")\n", + "ax[1].imshow(reconstruction[0, 0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + "ax[1].axis(\"off\")\n", + "ax[1].title.set_text(\"Reconstruction\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "773f5f43", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Autoregressive Transformer Training\n", + "\n", + "Now that a vqvae model has been trained, we can use this model to encode the data into its discrete latent representations. These inputs can then be flattened into a 1D sequence for the transformer to learn in an autoregressive manor.\n", + "\n", + "For this tutorial we will use the first appraoch and use the vqvae network to encode the data during the training cycle" + ] + }, + { + "cell_type": "markdown", + "id": "83352d19", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Datasets\n", + "We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformer models we will need to reduce the batch size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2b3c3a82", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4)\n", + "val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4)" + ] + }, + { + "cell_type": "markdown", + "id": "b0f5a3cd", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Latent sequence ordering\n", + "We need to define an ordering of which we convert our 2D latent space into a 1D sequence. For this we will use a simple raster scan." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efab0cc5", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "spatial_shape = next(iter(train_loader))[\"image\"].shape[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f91086e3", + "metadata": { + "lines_to_next_cell": 2, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Get spatial dimensions of data\n", + "# We divide the spatial shape by 4 as the vqvae downsamples the image by a factor of 4 along each dimension\n", + "spatial_shape = next(iter(train_loader))[\"image\"].shape[2:]\n", + "spatial_shape = (int(spatial_shape[0] / 4), int(spatial_shape[1] / 4))\n", + "\n", + "ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(1,) + spatial_shape)\n", + "\n", + "sequence_ordering = ordering.get_sequence_ordering()\n", + "revert_sequence_ordering = ordering.get_revert_sequence_ordering()" + ] + }, + { + "cell_type": "markdown", + "id": "ace09890", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Define Network, optimizer and losses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aab1891a", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "transformer_model = DecoderOnlyTransformer(\n", + " num_tokens=256, # must be equal to num_embeddings input of VQVAE\n", + " max_seq_len=spatial_shape[0] * spatial_shape[1],\n", + " attn_layers_dim=64,\n", + " attn_layers_depth=12,\n", + " attn_layers_heads=8,\n", + ")\n", + "transformer_model.to(device)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa3cd231", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3)\n", + "ce_loss = CrossEntropyLoss()" + ] + }, + { + "cell_type": "markdown", + "id": "0921fcfb", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Transformer Model Training\n", + "We will train the model for 100 epochs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c32f0a9", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "n_epochs = 100\n", + "val_interval = 10\n", + "epoch_ce_loss_list = []\n", + "val_ce_epoch_loss_list = []\n", + "intermediary_images = []\n", + "vqvae_model.eval()\n", + "\n", + "total_start = time.time()\n", + "for epoch in range(n_epochs):\n", + " transformer_model.train()\n", + " epoch_loss = 0\n", + " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110)\n", + " progress_bar.set_description(f\"Epoch {epoch}\")\n", + " for step, batch in progress_bar:\n", + "\n", + " images = batch[\"image\"].to(device)\n", + " # Encode images using vqvae and transformer to 1D sequence\n", + " quantizations = vqvae_model.index_quantize(images)\n", + " quantizations = quantizations.reshape(quantizations.shape[0], -1)\n", + " quantizations = quantizations[:, sequence_ordering]\n", + "\n", + " # Pad input to give start of sequence token\n", + " quantizations = F.pad(quantizations, (1, 0), \"constant\", 255) # pad with 0 i.e. vocab size of vqvae\n", + " quantizations = quantizations.long()\n", + "\n", + " quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True)\n", + " quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True)\n", + "\n", + " optimizer.zero_grad(set_to_none=True)\n", + "\n", + " # model outputs\n", + " logits = transformer_model(x=quantizations_input).transpose(1, 2)\n", + "\n", + " loss = ce_loss(logits, quantizations_target)\n", + "\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " epoch_loss += loss.item()\n", + "\n", + " progress_bar.set_postfix({\"ce_loss\": epoch_loss / (step + 1)})\n", + " epoch_ce_loss_list.append(epoch_loss / (step + 1))\n", + "\n", + " if (epoch + 1) % val_interval == 0:\n", + " transformer_model.eval()\n", + " val_loss = 0\n", + " with torch.no_grad():\n", + " for val_step, batch in enumerate(val_loader, start=1):\n", + "\n", + " images = batch[\"image\"].to(device)\n", + " # Encode images using vqvae and transformer to 1D sequence\n", + " quantizations = vqvae_model.index_quantize(images)\n", + " quantizations = quantizations.reshape(quantizations.shape[0], -1)\n", + " quantizations = quantizations[:, sequence_ordering]\n", + "\n", + " # Pad input to give start of sequence token\n", + " quantizations = F.pad(quantizations, (1, 0), \"constant\", 255) # pad with 255 i.e. vocab size of vqvae\n", + " quantizations = quantizations.long()\n", + "\n", + " quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True)\n", + " quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True)\n", + "\n", + " # model outputs\n", + " logits = transformer_model(x=quantizations_input).transpose(1, 2)\n", + "\n", + " loss = ce_loss(logits, quantizations_target)\n", + "\n", + " # Generate a random sample to visualise progress\n", + " if val_step == 1:\n", + " starting_token = 255 * torch.ones((1, 1), device=device)\n", + " generated_latent = generate(\n", + " transformer_model, vqvae_model, starting_token, spatial_shape[0] * spatial_shape[1]\n", + " )\n", + " generated_latent = generated_latent[0]\n", + " vqvae_latent = generated_latent[revert_sequence_ordering]\n", + " vqvae_latent = vqvae_latent.reshape((1,) + spatial_shape)\n", + " decoded = vqvae_model.decode_samples(vqvae_latent)\n", + " intermediary_images.append(decoded[:, 0])\n", + "\n", + " val_loss += loss.item()\n", + "\n", + " val_loss /= val_step\n", + " val_ce_epoch_loss_list.append(val_loss)\n", + "\n", + "total_time = time.time() - total_start\n", + "print(f\"train completed, total time: {total_time}.\")" + ] + }, + { + "cell_type": "markdown", + "id": "98070e8e", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Plot evoluation of Generated Samples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59e3e3e2", + "metadata": { + "lines_to_next_cell": 2, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "# Plot every evaluation as a new line and example as columns\n", + "val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))\n", + "print(len(val_samples))\n", + "fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)\n", + "fig.set_size_inches(12, 30)\n", + "for image_n in range(len(val_samples)):\n", + " reconstructions = intermediary_images[image_n][0]\n", + " ax[image_n].imshow(reconstructions.cpu(), cmap=\"gray\")\n", + " ax[image_n].set_xticks([])\n", + " ax[image_n].set_yticks([])\n", + " ax[image_n].set_ylabel(f\"Epoch {val_samples[image_n]:.0f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "46a4f043", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Generating samples from the trained model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "56cc187d", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "samples = []\n", + "for i in range(5):\n", + " starting_token = 255 * torch.ones((1, 1), device=device)\n", + " generated_latent = generate(transformer_model, vqvae_model, starting_token, spatial_shape[0] * spatial_shape[1])\n", + " generated_latent = generated_latent[0]\n", + " vqvae_latent = generated_latent[revert_sequence_ordering]\n", + " vqvae_latent = vqvae_latent.reshape((1,) + spatial_shape)\n", + " decoded = vqvae_model.decode_samples(vqvae_latent)\n", + " samples.append(decoded[:, 0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37d2c316", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=5)\n", + "for i in range(5):\n", + " ax[i].imshow(samples[i][0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", + " ax[i].axis(\"off\")\n", + " ax[i].title.set_text(\"Sample \" + str(i))\n", + "plt.show()" + ] + } + ], + "metadata": { + "jupytext": { + "formats": "auto:percent,ipynb" + }, + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py new file mode 100644 index 00000000..6d598ead --- /dev/null +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -0,0 +1,410 @@ +# --- +# jupyter: +# jupytext: +# formats: py:percent,ipynb +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.14.4 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# %% [markdown] +# # Anomaly Detection with Transformers +# +# This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in [1]. +# +# We will work with the MedNIST dataset available on MONAI +# (https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset). Similar to "Experiment 2 – image-wise anomaly detection on 2D synthetic data", we will train our models on HeadCT images and check the likelihood of similar images (in-distribution) and images from other classes +# +# [1] - [Pinaya et al. "Unsupervised brain imaging 3D anomaly detection and segmentation with transformers"](https://doi.org/10.1016/j.media.2022.102475) +# +# +# ### Setup imports + +# %% +# Copyright 2020 MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +import tempfile +import time + + +import matplotlib.pyplot as plt +import numpy as np +import torch +from torch.nn import L1Loss, CrossEntropyLoss +import torch.nn.functional as F +from monai import transforms +from monai.apps import MedNISTDataset +from monai.config import print_config +from monai.data import DataLoader, Dataset +from monai.utils import first, set_determinism +from tqdm import tqdm +from ignite.utils import convert_tensor + +from generative.networks.nets import VQVAE, DecoderOnlyTransformer +from generative.utils.ordering import Ordering +from generative.utils.enums import OrderingType + +print_config() + +# %% +# for reproducibility purposes set a seed +set_determinism(42) + +# %% [markdown] +# ### Setup a data directory and download dataset +# +# Specify a `MONAI_DATA_DIRECTORY` variable, where the data will be downloaded. If not +# specified a temporary directory will be used. + +# %% +directory = os.environ.get("MONAI_DATA_DIRECTORY") +root_dir = tempfile.mkdtemp() if directory is None else directory +print(root_dir) + +# %% [markdown] +# ### Download training data + +# %% +train_data = MedNISTDataset(root_dir=root_dir, section="training", download=True, seed=0) +train_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "HeadCT"] +image_size = 64 +train_transforms = transforms.Compose( + [ + transforms.LoadImaged(keys=["image"]), + transforms.EnsureChannelFirstd(keys=["image"]), + transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), + transforms.RandAffined( + keys=["image"], + rotate_range=[(-np.pi / 18, np.pi / 18), (-np.pi / 18, np.pi / 18)], + translate_range=[(-1, 1), (-1, 1)], + scale_range=[(-0.05, 0.05), (-0.05, 0.05)], + spatial_size=[image_size, image_size], + padding_mode="zeros", + prob=0.5, + ), + ] +) +train_ds = Dataset(data=train_datalist, transform=train_transforms) +train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True) + +# %% [markdown] +# ### Visualse some examples from the dataset + +# %% +# Plot 3 examples from the training set +check_data = first(train_loader) +fig, ax = plt.subplots(nrows=1, ncols=3) +for image_n in range(3): + ax[image_n].imshow(check_data["image"][image_n, 0, :, :], cmap="gray") + ax[image_n].axis("off") + +# %% [markdown] +# ### Download Validation Data + +# %% +val_data = MedNISTDataset(root_dir=root_dir, section="validation", download=True, seed=0) +val_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "HeadCT"] +val_transforms = transforms.Compose( + [ + transforms.LoadImaged(keys=["image"]), + transforms.EnsureChannelFirstd(keys=["image"]), + transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), + ] +) +val_ds = Dataset(data=val_datalist, transform=val_transforms) +val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True) + +# %% [markdown] +# ## Vector Quantized Variational Autoencoder (VQ-VAE) Training +# +# The first step is to train a VQVAE network - once this is done we can use the trained vqvae model to encode the 2d images to generate the inputs required for the transformer + +# %% [markdown] +# ### Define network, optimizer and losses + +# %% +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +print(f"Using {device}") +vqvae_model = VQVAE( + spatial_dims=2, + in_channels=1, + out_channels=1, + num_res_layers=2, + downsample_parameters=((2, 4, 1, 1), (2, 4, 1, 1)), + upsample_parameters=((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)), + num_channels=(256, 256), + num_res_channels=(256, 256), + num_embeddings=16, + embedding_dim=64, +) +vqvae_model.to(device) + +# %% +optimizer = torch.optim.Adam(params=vqvae_model.parameters(), lr=5e-4) +l1_loss = L1Loss() + +# %% [markdown] +# ### VQVAE Model training +# We will run our model for 100 epochs + +# %% +n_epochs = 10 +val_interval = 5 +epoch_recon_loss_list = [] +val_recon_epoch_loss_list = [] +intermediary_images = [] +n_example_images = 4 + +total_start = time.time() +for epoch in range(n_epochs): + vqvae_model.train() + epoch_loss = 0 + progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110) + progress_bar.set_description(f"Epoch {epoch}") + for step, batch in progress_bar: + images = batch["image"].to(device) + optimizer.zero_grad(set_to_none=True) + + # model outputs reconstruction and the quantization error + reconstruction, quantization_loss = vqvae_model(images=images) + + recons_loss = l1_loss(reconstruction.float(), images.float()) + + loss = recons_loss + quantization_loss + + loss.backward() + optimizer.step() + + epoch_loss += recons_loss.item() + + progress_bar.set_postfix( + {"recons_loss": epoch_loss / (step + 1), "quantization_loss": quantization_loss.item() / (step + 1)} + ) + epoch_recon_loss_list.append(epoch_loss / (step + 1)) + + if (epoch + 1) % val_interval == 0: + vqvae_model.eval() + val_loss = 0 + with torch.no_grad(): + k = 0 + for val_step, batch in enumerate(val_loader, start=1): + k += 1 + if k == 3: + break + images = batch["image"].to(device) + + reconstruction, quantization_loss = vqvae_model(images=images) + + # get the first sample from the first validation batch for + # visualizing how the training evolves + if val_step == 1: + intermediary_images.append(reconstruction[:n_example_images, 0]) + + recons_loss = l1_loss(reconstruction.float(), images.float()) + + val_loss += recons_loss.item() + + val_loss /= val_step + val_recon_epoch_loss_list.append(val_loss) + +total_time = time.time() - total_start +print(f"train completed, total time: {total_time}.") + +# %% [markdown] +# ### Plotting evolution of reconstruction performance + +# %% +# Plot every evaluation as a new line and example as columns +val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)) +fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True) +fig.set_size_inches(18, 30) +for image_n in range(len(val_samples)): + reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T + ax[image_n].imshow(reconstructions.cpu(), cmap="gray") + ax[image_n].set_xticks([]) + ax[image_n].set_yticks([]) + ax[image_n].set_ylabel(f"Epoch {val_samples[image_n]:.0f}") + + +# %% [markdown] +# ### Plot reconstructions of final trained vqvae model + +# %% +fig, ax = plt.subplots(nrows=1, ncols=2) +ax[0].imshow(images[0, 0].detach().cpu(), vmin=0, vmax=1, cmap="gray") +ax[0].axis("off") +ax[0].title.set_text("Inputted Image") +ax[1].imshow(reconstruction[0, 0].detach().cpu(), vmin=0, vmax=1, cmap="gray") +ax[1].axis("off") +ax[1].title.set_text("Reconstruction") +plt.show() + +# %% [markdown] +# ## Autoregressive Transformer Training +# +# Now that a vqvae model has been trained, we can use this model to encode the data into its discrete latent representations. These inputs can then be flattened into a 1D sequence for the transformer to learn in an autoregressive manor. +# +# For this tutorial we will use the first appraoch and use the vqvae network to encode the data during the training cycle + +# %% [markdown] +# ### Datasets +# We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformer models we will need to reduce the batch size + +# %% +train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4) +val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4) + +# %% [markdown] +# ### Latent sequence ordering +# We need to define an ordering of which we convert our 2D latent space into a 1D sequence. For this we will use a simple raster scan. + +# %% +spatial_shape = next(iter(train_loader))["image"].shape[2:] + +# %% +# Get spatial dimensions of data +# We divide the spatial shape by 4 as the vqvae downsamples the image by a factor of 4 along each dimension +spatial_shape = next(iter(train_loader))["image"].shape[2:] +spatial_shape = (int(spatial_shape[0] / 4), int(spatial_shape[1] / 4)) + +ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(1,) + spatial_shape) + +sequence_ordering = ordering.get_sequence_ordering() +revert_sequence_ordering = ordering.get_revert_sequence_ordering() + + +# %% [markdown] +# ## Define Network, optimizer and losses + +# %% +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + +transformer_model = DecoderOnlyTransformer( + num_tokens=256, # must be equal to num_embeddings input of VQVAE + max_seq_len=spatial_shape[0] * spatial_shape[1], + attn_layers_dim=64, + attn_layers_depth=12, + attn_layers_heads=8, +) +transformer_model.to(device) + +# %% +optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3) +ce_loss = CrossEntropyLoss() + +# %% [markdown] +# ### Transformer Model Training +# We will train the model for 100 epochs + +# %% +n_epochs = 100 +val_interval = 10 +epoch_ce_loss_list = [] +val_ce_epoch_loss_list = [] +intermediary_images = [] +vqvae_model.eval() + +total_start = time.time() +for epoch in range(n_epochs): + transformer_model.train() + epoch_loss = 0 + progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110) + progress_bar.set_description(f"Epoch {epoch}") + for step, batch in progress_bar: + + images = batch["image"].to(device) + # Encode images using vqvae and transformer to 1D sequence + quantizations = vqvae_model.index_quantize(images) + quantizations = quantizations.reshape(quantizations.shape[0], -1) + quantizations = quantizations[:, sequence_ordering] + + # Pad input to give start of sequence token + quantizations = F.pad(quantizations, (1, 0), "constant", 255) # pad with 0 i.e. vocab size of vqvae + quantizations = quantizations.long() + + quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True) + quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True) + + optimizer.zero_grad(set_to_none=True) + + # model outputs + logits = transformer_model(x=quantizations_input).transpose(1, 2) + + loss = ce_loss(logits, quantizations_target) + + loss.backward() + optimizer.step() + + epoch_loss += loss.item() + + progress_bar.set_postfix({"ce_loss": epoch_loss / (step + 1)}) + epoch_ce_loss_list.append(epoch_loss / (step + 1)) + + if (epoch + 1) % val_interval == 0: + transformer_model.eval() + val_loss = 0 + with torch.no_grad(): + for val_step, batch in enumerate(val_loader, start=1): + + images = batch["image"].to(device) + # Encode images using vqvae and transformer to 1D sequence + quantizations = vqvae_model.index_quantize(images) + quantizations = quantizations.reshape(quantizations.shape[0], -1) + quantizations = quantizations[:, sequence_ordering] + + # Pad input to give start of sequence token + quantizations = F.pad(quantizations, (1, 0), "constant", 255) # pad with 255 i.e. vocab size of vqvae + quantizations = quantizations.long() + + quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True) + quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True) + + # model outputs + logits = transformer_model(x=quantizations_input).transpose(1, 2) + + loss = ce_loss(logits, quantizations_target) + + val_loss += loss.item() + + val_loss /= val_step + val_ce_epoch_loss_list.append(val_loss) + +total_time = time.time() - total_start +print(f"train completed, total time: {total_time}.") + +# %% [markdown] +# ### Plot evoluation of Generated Samples + +# %% +# Plot every evaluation as a new line and example as columns +val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)) +print(len(val_samples)) +fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True) +fig.set_size_inches(12, 30) +for image_n in range(len(val_samples)): + reconstructions = intermediary_images[image_n][0] + ax[image_n].imshow(reconstructions.cpu(), cmap="gray") + ax[image_n].set_xticks([]) + ax[image_n].set_yticks([]) + ax[image_n].set_ylabel(f"Epoch {val_samples[image_n]:.0f}") + + +# %% [markdown] +# ### Generating samples from the trained model + +# Add anomaly detection using inferer \ No newline at end of file From cd4b29136d0b2aab47bf26e42fcfc2a6d674177f Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Tue, 7 Mar 2023 19:52:10 +0000 Subject: [PATCH 2/6] [WIP] Add tutorial Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 1131 ++++++++++++----- .../anomaly_detection_with_transformers.py | 226 ++-- 2 files changed, 956 insertions(+), 401 deletions(-) diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb index 4034befd..55677cce 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -3,35 +3,97 @@ { "cell_type": "markdown", "id": "f6090d00", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "# Anomaly Detection with Transformers\n", "\n", - "This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in [1].\n", - "\n", - "We will work with the MedNIST dataset available on MONAI\n", - "(https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset). Similar to \"Experiment 2 – image-wise anomaly detection on 2D synthetic data\", we will train our models on HeadCT images and check the likelihood of similar images (in-distribution) and images from other classes\n", + "This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in Pinaya et al.[1].\n", "\n", - "[1] - [Pinaya et al. \"Unsupervised brain imaging 3D anomaly detection and segmentation with transformers\"](https://doi.org/10.1016/j.media.2022.102475)\n", + "Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to \"Experiment 2 – image-wise anomaly detection on 2D synthetic data\" from [1], we will train our generative models on `HeadCT` images.\n", "\n", + "Finally, we will compute the log-likelihood of images from the same class (in-distribution class) and images from other classes (out-of-distribution).\n", "\n", + "[1] - [Pinaya et al. \"Unsupervised brain imaging 3D anomaly detection and segmentation with transformers\"](https://doi.org/10.1016/j.media.2022.102475)" + ] + }, + { + "cell_type": "markdown", + "id": "8b27924f", + "metadata": {}, + "source": [ + "### Setup environment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "01787b4b", + "metadata": {}, + "outputs": [], + "source": [ + "!python -c \"import seaborn\" || pip install -q seaborn\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "56afab18", + "metadata": {}, + "source": [ "### Setup imports" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "b6b0c79f", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-03-07 15:34:06,427 - A matching Triton is not available, some optimizations will not be enabled.\n", + "Error caught was: No module named 'triton'\n", + "MONAI version: 1.2.dev2304\n", + "Numpy version: 1.23.5\n", + "Pytorch version: 1.13.1+cu117\n", + "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n", + "MONAI rev id: 9a57be5aab9f2c2a134768c0c146399150e247a0\n", + "MONAI __file__: /media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/monai/__init__.py\n", + "\n", + "Optional dependencies:\n", + "Pytorch Ignite version: 0.4.10\n", + "ITK version: 5.3.0\n", + "Nibabel version: 4.0.2\n", + "scikit-image version: 0.19.3\n", + "Pillow version: 9.3.0\n", + "Tensorboard version: 2.11.0\n", + "gdown version: 4.6.0\n", + "TorchVision version: 0.14.1+cu117\n", + "tqdm version: 4.64.1\n", + "lmdb version: 1.4.0\n", + "psutil version: 5.9.4\n", + "pandas version: 1.5.3\n", + "einops version: 0.6.0\n", + "transformers version: 4.21.3\n", + "mlflow version: 2.1.1\n", + "pynrrd version: 1.0.0\n", + "\n", + "For details about installing the optional dependencies, please visit:\n", + " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n", + "\n" + ] } - }, - "outputs": [], + ], "source": [ "# Copyright 2020 MONAI Consortium\n", "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", @@ -45,39 +107,35 @@ "# limitations under the License.\n", "import os\n", "import tempfile\n", - "import shutil\n", "import time\n", "\n", - "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", + "import seaborn as sns\n", "import torch\n", - "from torch.nn import L1Loss, CrossEntropyLoss\n", "import torch.nn.functional as F\n", + "from ignite.utils import convert_tensor\n", "from monai import transforms\n", "from monai.apps import MedNISTDataset\n", "from monai.config import print_config\n", "from monai.data import DataLoader, Dataset\n", "from monai.utils import first, set_determinism\n", + "from torch.nn import CrossEntropyLoss, L1Loss\n", "from tqdm import tqdm\n", - "from ignite.utils import convert_tensor\n", "\n", + "from generative.inferers import VQVAETransformerInferer\n", "from generative.networks.nets import VQVAE, DecoderOnlyTransformer\n", - "from generative.utils.ordering import Ordering\n", "from generative.utils.enums import OrderingType\n", + "from generative.utils.ordering import Ordering\n", "\n", "print_config()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "de0ed372", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ "# for reproducibility purposes set a seed\n", @@ -87,11 +145,7 @@ { "cell_type": "markdown", "id": "ad40db27", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Setup a data directory and download dataset\n", "\n", @@ -101,14 +155,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "42fa255d", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/tmp/tmpma12lzmd\n" + ] } - }, - "outputs": [], + ], "source": [ "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n", "root_dir = tempfile.mkdtemp() if directory is None else directory\n", @@ -118,25 +176,54 @@ { "cell_type": "markdown", "id": "10054720", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Download training data" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "7db7ac32", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "MedNIST.tar.gz: 59.0MB [00:04, 12.8MB/s] " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-03-07 15:34:11,317 - INFO - Downloaded: /tmp/tmpma12lzmd/MedNIST.tar.gz\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-03-07 15:34:11,425 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-07 15:34:11,426 - INFO - Writing into directory: /tmp/tmpma12lzmd.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3265.04it/s]\n" + ] } - }, - "outputs": [], + ], "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", @@ -148,7 +235,7 @@ " 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", + " rotate_range=[(-np.pi / 18, np.pi / 18), (-np.pi / 18, np.pi / 18)],\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", @@ -158,31 +245,34 @@ " ]\n", ")\n", "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n", - "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4)" + "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)" ] }, { "cell_type": "markdown", "id": "ec356258", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### Visualse some examples from the dataset" + "### Visualise some examples from the dataset" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "33d7c3dc", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAClCAYAAADBAf6NAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACMuElEQVR4nO29WXNcV5YdvHKeZwCZGElwlihRUk3dLlfY3VUOt6PDjnCE6z/4p/nFfrMdbbvCEd2OLpVKQ6lUkiiKIMEBY87znHm/B3xrY9/DmyBAgsTAuyIQCSCnO5yzz9prD8djWZYFFy5cuHDhwsU7C+9ZH4ALFy5cuHDh4mzhkgEXLly4cOHiHYdLBly4cOHChYt3HC4ZcOHChQsXLt5xuGTAhQsXLly4eMfhkgEXLly4cOHiHYdLBly4cOHChYt3HC4ZcOHChQsXLt5x+I/7wqWlpTd5HJcGlmWBfZy8Xi98Pp/tuclkAt3nyePxwOv1Or7G6/XKcx6PB5ZlYTqdAoA88nv05/Hz9bF4PB54PB7H12jwePh6r9eL8XiMwWAAAPD7/bbPmU6nsCzL9r5AIACv1yvP6fdXKpVXu7CvAXfsvruYTqeYTCbweDwIhUIyp3w+HyaTCSaTibwGcJ4nnGu7u7tv/fh5LC5mg3ZHP5r/8/l8L7xG3+uLhtFohOFwiPF4jF6v94IdN3Gc3oLHJgMujge90AKwLcYvw0maQfJ79OfO+o6jBr0+Xv0afvZJjl+/l0TgVd7vwsVpguNfj0eTlGvose82aD0fOMp+aYdJL/L6x8XL4ZKBUwQHIgBZDKfTqW0wHuXFj0YjUQQ0tKdiLv6mJ0PQoJlGTasWTp+pj10fTyQSAQDxoPg5ZNz8jul0in6/b1MLvF4votHoyS+oCxevCZ/Ph1AoBMuyMBwObSTV7/fL+PX5fKJi6Tnr8/kQCATcBeUNgtd21kJu/tB2aRtmPjr9b9ZrLiI4ZrVC/LpwycApwWSoHGimTG8u5to40VsxP8v8HvNvp4GtJ4721J3eZx7vdDoV6XQ6nSIYDMLv99ueN8+bhpQkYjqdwufzwefzwev1IhgMXujJ5+Jiwuv1IhAISEhgPB7LPNPEm496fNPg6lCfi9OHtlWzZP6jnnsXYdru01CwXDLwBjBLJjf/1kzYsizxTrgQM+7O1wOHuQJHkQx9HEcdo/m7yZ59Pp/kCAyHQ9v3HzUYzYlKovCuTlwXZ4fJZIJeryfzUefh+P1+2zjVJNz8DHfsHg3TG9fe/qznnf4+yXPvOk6bDLlk4A1AS+Y0QvRG+Dc9Zi1D0gMZDAYYj8eOCYSm3D8rTABAvCGnWJo+HjN5KhQKCRHw+/0Yj8fo9/sADsMClFidQKVAEwWXDLg4C4zHY4xGIwCHxpMkQM8vALZ5yb+p3rmYDe3Zn8Sjf9XFzLUj9mt+WnDJwCmBC74e+LqaQHv2NDpccEOhkG1Rp9xOw/UymN+hj0kvysChQdSxfxIDp6Qqj8eDfr9vqxrQCzw/Q78+EAi88H8aZBcu3ib0HNT5AeZ81DDJ9buSRGiGMI961L/rUIvpwb/sf+Znujge3oRC4pKBU4JeHKPRKAKBAOLxOFKpFPx+P8LhsM240DsJh8MIh8NCCmi89KPJAM3F3SybIZzinab8RhIwHo/R6XQwHo9Rr9fR7/fR6XTQ6/VQr9cBQJKrptOplLUwr4Dn4vP5EA6HpSRxMplgMBig0+m8M0bVxfkBx6VWBHSC7HA4tKlsOqmQryVxvqzQtuQoz95czGcl8B31HS/7n4vjQ9+v04BLBk4JunKARiUcDiMajSIYDCIajdpyAGiYgsGgLKKsz9dEwCnBCbBPQCfCwPcc9T7+TsLA8EAkErGFA3jc4/FYMrK73S4GgwFGoxEGg4GN6JAcEG6cz8VZwYwz69DdUXNJj9eLSGKPu/jO8tpNmzJL7j/qs128ObyJ6+2SgVMEDQwX/0wmg0KhgGg0imw2KwmCwGE8XxsleiHdbldUBu3JsDyKKoSZh2AaOqc6afNvko5AIIBYLAa/3494PI5kMomFhQWEw2EEg0HEYjFMJhO0Wi0MBgPs7e2h0WigXC5jZ2cHg8EA9XpdvC0A4mX5/X6k0+k3fPVduJiNyWQi4S4dquMYDQaDtsWN84uq2XknBLNkeScJ30m615/j9Hjc3128XfB+mlVerwKXDJwizNr6QCAgYYBoNGorzxuNRhiNRmJsdDkfPW6C/7csC4PBAJPJRGR6euy6tI+yJp8HDiesKXn6/X4Eg0EEg0FkMhmEw2HEYjFRCBKJBOLxOAqFAizLQr1ex2AwgN/vl94B3W4X7XYb7XZbjsdUSYLB4Bu//i5cOIGkWIe1dP6LU+kr5yNDaecZTl79SUvz3AX94kKTutcZqy4ZOCV4PB5Z8Hq9nmQxl8tlCRmYXr7J5vicGccEYFMGAPtCr8sNZzFE3ctAHzPDEz6fD61WCz6fD9vb27b/x2IxUTaoJESjUUSjUdy8eRO3b99Gv9/H/v4+Op0OHj9+jHq9jna7jW63e2S3Nxcu3iR0Em0ikQAAGykYDofw+XyIRqMIh8NYXl5GNBrFcDjEcDhEvV7H7u7umVUUhEIhAC/K+cCLZXtOIUDzf27i3uWCqwycQ3BhBQ5KA/v9PprNJgC8sPibCoIZ6zd7EfB3MyRAzHo/ZVCtHpiNjbjAa2apFYfJZIJQKIRkMolAIIBcLodIJIL33nsPyWQShUIBq6ur6Pf7KBaLaDabGI/H8Pv9onCY6oQLF28LnHdUujguWS47GAxgWRbC4TBSqRTW19cxNzcnY3d3d1defxZgZY6TR6+riNy59e5Cl3K7ysA5gxNL02xedz7T7zElfKcEHTMP4GWxPb34m58JYKaKAMBGFPr9PsbjMRqNBvr9PjY2NlAqlfD06VM8fPgQfr8fgUAA0+kUy8vLyOVyWFxcRK1Wk4oEt17bxduGnou9Xg9er9emVFHNa7VaGI1G2NjYwN7eHkKhkDy3trZ2ZsoWyYDp2bvevQvg6KZzJ4VLBk4RuiGQaTzMEhAzW3k6ndr2AiDL4+e8rCrAaUBogqGVCMC+d4L2euhxaNVgNBqh3W4LKfB6vXj69Ckmk4moD7lcDh9++CEymQw++ugjzM3NSZjg+fPn+Oabb9xeAy7eOnTpLFUAJg1SLZhOpyiVSrAsC9vb2/B6vVhaWkKhUMD8/Dzu3bt3rH4fbwIMEzjBJQIuALsy8DpwycAbgFOGrlOpEhd8LdnrmzproZ/VJEV/5qzjMR+dOljNOlYdqtBZ2dPpFJ1OB9VqFePxGLu7u5LbYFkWQqEQCoWCqwy4eOvQMVX+mK2ydfiN86/f76PdbiMUCqFSqZzZ/gTugu/iZTgtZcBjHVP/cveEfzl4Q8z+/fzdjNmb5T/aMLFWX5cBOZUMOi3yWqFwOj6n9xHm55vfo99vfhc3J0okEggGg7h+/TpWV1eRz+dx8+ZN+Hw+/Pa3v321i/sacMfuu4ujyLS5SZh+TzAYRCAQkGZgAPDtt9++3YOHO3ZdHA1WlnEPjlm5LcdZ5i+0MjBroTrOezRmvf+oxfQ4x3NcxmYuzLofgdPCbno1XJRNL3/Wdx91fB6PfSdFfq4OLwCwhTKAg3bD3W4XlmWh3+/D5/MhnU4jmUwilUohEAhI/NPF2eJV5s1FhtkpT7cgnpWDw7JfAOh0Om/zcF24ODHe6ZwBcyE8SkrXv+tyPGYZm730nTxwnfhnXnhzJ0G+Rmfx8znGK/VxcIdClvItLCwgFouhVCqhWCzaXsNuhWYvAt12VbcI1tdFqw6m/G9eKyc51Txn/Ry/X5//3t4e2u02Hj9+jG+++QZerxf/4T/8h5fcWRfHhb6HZqtdfY/NPBH9vkAgIBUks7yHi0wanLx+c/GfRYpduDjv0Mry6+LCkgHCTJzQ5MA0bqb8rRdM/ZpZrzdlff1/08gya1l3CaTxNWOYNFZerxd+vx+pVAqZTEb6+U8mE4xGI3i9XkQikReMuz53fi9hViSYXr+OqZpgMqFJHpyuFc9No9PpiFf1+PHjFz7fxemBMW1zbM1KLAVw5L03X3/cxfKYUce3ilmOAXC8vvouXJxnvPMJhLNigaZHb75e72DG1w0GA/mfmbRnfqYZ79cwF0e/329LutNEQh8HY5PJZFI6ASYSCcRiMUQiEek2CBx2RvP5fLaGJHo/A3p5uouaXiRMNcU8F1M9cXF+wXvKLaadSJ4ZI9fvde+xCxcXF7PWolfBhSUDjGObnj7g7DFrr16rAcPhEJ1OR5KGdL9ys/zODBs4yfD6O/lZ2ujytVy8w+Ew4vE4gsEgcrkcQqEQcrkcwuEwEokEotEoPB4Put2ufIdlWVLXrz/PlIvMBkNOCYTm9dCkx2yQ5HpP5xMsS9WJq3p8zLqffC9wPj16Fy5cvBzvvDLwMq/mKBlTx7tJAgCIJ+9kQPlavYianjX7m5shCqf3699JNrrdrrRB9fv9UqpnWQfledqrNxd6hhj4fbPk0KOu5yxFxMX5hL73ei8IElGzSmXW2HPhwsXFxjutDOguYqbHe1TtvDZ+lmVJ731TJicR0E17gBdDCQS9fI/HY9tEiEZavw84TCQEII18ut0uptOpdPnTjX/YV51lJP1+X/qqM3ksFArB4/G8sBuieY00nGLL2ms0tyN2cX7Aew8c5sqYu9PpZlZ8nSYQeny7yo8LFxcLJsF3ypU7Li4sGXDCy5KBdEhBPzrlHThlXs+Ksc/yoPXeA1z49Xdz0TYXX60OmN/ldAwkOJPJ5IVrMCuJjO/Tg2eW9+jifMIcn3ycle/ipGo5zQEXLlxcHJhz/50jA2ZGv/6feVF0PoG5cOt2vCQALM3T30XPngu03nJ4PB7b9g0HIDsVcptfbhjUbDYxHA6lNFAnetFLCwaDiEQiss0xj9Hj8Ui9PndaG41GGAwGmE6n6Pf7Eq7gPgEkG2ZeAL9Le/+afFDN4PV0cf7AzXY4LnUODTeZ0mExVrJoMuAmELpwcTng1A/mJLiwZABwXqTMuLz2iJw8eKeEOXO/cy2tmol6WkHgDaBhDgaDiEajtr4D/X7/hf0AzPh8MBiUPAYadPYZ4PHo3ggkDDpurAeFeU2czt8pN0J/jksIzh9IRkkGCN5TEj4zROCkNrlw4eLi43Xm8oUlA4ylm0bPbIajoY2h+Qi8qCzwO9hQRzcG0pULWlkgCQgEAkin08jlcggEAohGo5hOp5IkSPXB5/PJwk8jzi1TO50O2u02BoMB6vW6rW8ByxFZdcDwgqmAaIJjLgamgmImobmhgvMNnYeiCaeuODEVHwC2ceTChYuLDzMX6FVwYckAjZxOltML9FHv04l52pDqUACTs7j4s/NfMBi0hQT0YjscDmFZFqLRKILBILLZLPL5vOyV7vF4MBgMbE2BAoGANBKiMS8Wi2i322i1Wmg2m2i32wAOkgfb7TbG47H0TOfxkmhQfSBBccok56M5cHSyo36NW1VwPqHDVpoA6/vIfhS6CZYmsC7hc+HicuB1HbgLSwaYra8T8ZxyBwB7eIDG0KnEkGSAsXz+n96+3+9HJpNBKBRCJpNBPB4Xz5yEgSTF5/MhHo9LI6F4PA6Px/OCR6bbIQMHC3KhUJCFv9vtot/vo1arYTweCxno9XoYDAbodDqo1+sYjUbo9/uwLAvhcFhIgQ4zkGw4hT40zNCJi/MJjlnLsl7ogxEMBhEKhWwb7bAbJMcDyQL/58KFi4sLHdZ9FVxoMqATpAB7lrS55ahZHcAYvOlJ6Szs0WiE4XAo4QE2JUomk0gmk1hfX0cul8PVq1cRi8WwvLyMUCgkRIUKBA2ymchHcJGmQedrmGioQwCdTgej0Qibm5vY29vD06dP8e2336Lb7cq5x2Ix6VNAJcJsUUwJWXdiNH9mtSF2cT7A+8fyQSpGVAOy2azca4afuAEPxz/nyazdzly4cHExMGt9OS4uLBnQErb+n1NylFPSoPlZ+j0kBcFgULbjTSaTCIfDuHLlCpLJJK5evYrl5WWk02lkMhlEIhFEIhHJ9icZ4I/O5HYCbyJ7H+hzmU6n8pl+vx+j0QgLCwty/t1uF+12G4FAQMiDZR00KiI50WTATBR0uk5O5YYuzheYQKgTXkOhEILBIGKxGGKxGABIxYvZ90KPudcpSXLhwsX5wDsZJqC8ToPoVEetYWbs6wVRb/JCz5qe1dLSEjKZDG7fvo1UKoXr16/L1rzxeNy24JvyO+GkVJjHpJUJQu9Ex8U8kUjA4/Fgfn4e4/EYjUYDf/VXf4VqtYpvv/0W9XodDx48QLlcRjqdRiQSQa/XQ6VSsS0K2vDPamfpdK1cnB+Mx2MMBgNRcbxeL7LZLHK5HJLJJLLZLHq9Hvb392XfcypdzFOhsqDJogsXLi4WtHP8TpMBdlhz8mzM//NC6UoBPnLx5SJaKBSwtLSEbDaL1dVVJJNJFAoFUQmCwaCtL4EOV+jFX8fqdSjCPEYdtjDJC4kGj5F5Bn6/X8IQ5XIZ4XAY5XJZ2huTTLD0TOcsuIv8xYYmnxwH3PEykUggmUzaKgg4ttxcARcuLh9eNxn4wpKBbDaL+fl52WiIpXjj8VjipzqfgEYzHA7D7/cjGAzKJkFzc3MIh8NYXFxENBrF2toacrmclAayhM/j8WA8HqNcLmMwGEjbYXpnhJnIwTBDKBRCPp+3VQ/QY6N3NplMUKvV0O12pZqB4QrGg3WGP3c5jMViSCaTGAwG+Pjjj9Fut/HnP/8Zf/7zn1Gr1TAYDDAYDNBsNjEajQDYyw9NOIVhXJwvxGIxZDIZBAIBZDIZhMNhfPTRR1hdXZXXbG9v4/nz55IDMxqNpCx1NBpJUiGrEly4cHExYZbKnxQXjgyQ/UQiEWSzWQwGA3i9Xkm2o9HTHruOkbIqgNsDZzIZFAoFxONxXLt2DYlEArdu3UI+n0c8HkcqlcJkMkGv18NoNEK5XEav10Oj0UC73cZoNJIdBQl9QzweD8LhMMbjsXwfSwKpEFC6J7mo1WpotVoIBALSxTAcDgPAC6oBCU44HEYymYRlWVhcXMRwOESz2cTTp08xGo0QiURsxzYrbKKvMX8/bmmhm19wchxHnTFfw0cSwUgkgoWFBRnD6+vrGAwG6PV6siMn5wLDASR6w+FQjIhTKGvWsbn32oWL84ULTwZMKRyALNz08rXR+/DDD5HP57G0tITFxUUUi0V8++23qNVqKBaLaDabtuYL0+kU4XBYPHImADLhL5fL4dq1a9ILIBAIIBQKodvtotFoYHNzE6PRCK1WSzYI0urDZDIRT5swEwCZqc0Sr2g0KomGLAmcTCbodrsYjUaoVqvodrviwYVCIVQqFQQCAdnuOBKJSKdCKg3cspbJiu+99x4ikQiKxSLu37+Per0ueQUsTXTatEa3KDZr2PnDe6Qb2PA+6ta4lykUoRM6TYJ0VDmrfo1e0HU7YSpWLAfk64fDIWq1GizLkvDU+vo6VldXpZKFYzcUCiGVSiEajWJ/fx/ffvstdnd3USqV0Gq1JLkUOAyTmWWtmizyGKga8JFjh3NF582wxwbHRb/fR7PZfKG9N8cO22ybRsyJfJrHptuGmz1DODdf10C6uFh4l/OeaMcvJBngxDZLA+ml0Fiwrn9ubg7/9t/+W3zwwQdYWFjA/Pw8NjY2MJ1O8fz5c/zxj39Es9kUr5+LVDAYRKFQQDqdxieffIKFhQVEIhEhCbdv35bvm0wmqFaraLfbKJVK2NnZQa/XE4Om8wv0lsF81HkB2kBxh8FeryeNhpjpz5KvRqMh0i0TvWi0uVgw3MA+B/F4HACEOJAMBAIB3LlzB7dv38be3h7m5+dRLBbRarUQCoWwv7+PwWBgS3jkvdDJZCxL4wDTmetMPtP7NMzKi+D9vsjQoROnjaw0eXLq+a9f4/V6hQgyoY/7TUQiEXlNu91GsVjEdDpFNBpFMpnEvXv38C/+xb+Qscvx5PF4UKlU0G630Wg08OWXX6JWq6FUKklYS+9SyCZaTucCHI5n3XjL6/XKeGW4zev1ComZm5tDNBrFeDzGcDgUBc2ptJXltDoBd1blj1OlEFU1rWrohZ/lk69Te+3i4sBpfLxLVTJmePqkeOtkQHscphytm/7Qa41Go8jlckIAmMAXCARkssfjcSQSCWSzWfT7fVkYE4kEwuEwMpkM7ty5g0QigWg0CsuyEIvFMDc3h3g8juFwCADimZfLZXQ6HTSbTfR6vRe8Fw4w0yPWA1FndvIGMYQBwFbfPRwOJZ5LFUEbNb1As8sh+wowVBAIBMRjJ2GhkQyHwygUCgiFQvjwww+xuLiIBw8eYHt7G/1+X8Ic/AyGLQDYFg9zEdTEQB+veeyX1TPjNdGLJx9nGSB97Twej3jWJJe5XA4LCwuidOmNiNLpNObm5iSxNZ1Oy0Ld7XYxHo+xsbGB3d1dbGxsoFQqyTjh59Nr7na7L4wXfQ5UvzQZ4POaFHF3TZMAkmhEIhGk0+kX+hjo7zHnvlmWa6otOlmXKhRfpxUIszrHxeWEXvRnkUmNy0gQ9DldOGWABkD/TaNTqVTQarUknn/9+nX8p//0n7C8vIyFhQXEYjFYliVe1dzcHCzLwo0bNxCPx9Hv9zEajbC8vIxr164hn8/jF7/4BYLBIJ48eYJ2u435+Xm8//776Pf7aDQaGAwGKBaL6PV6KJfLaLVaQkpoTHmcNDo0XFwwaWzpIfOHkigNLxu/MEeAJIB7EvCzNPiedrsNn88n3QgjkQi63S6CwSBSqRT8fr/0O2CfgWQyiQ8++ACDwQDr6+tot9v4P//n/+Drr7/Gzs4ONjc3AUAkY4ZCeGy6OREJkO54p9UFbdi1jHuZCIEmseYiOsvI6MnKMeP1epFIJCSXJRwO486dO3jvvffwxRdf4Ntvv5UFORKJYG1tDVeuXMHdu3fx0UcfyX0ZDocol8toNBr43//7f+Orr77C1tYWNjc34fP5pAkVcLjTIccOE1OZk8J7PxwO0e/3baoUx4RuZNTr9WxEgfeb+S5M0tXXp9VqSRjMNGC9Xg/D4VCqdUh02W6bxzCdThEKhSQXhp9N9YMhl1kJsi4uLvRc0nOKcAoNODmfl5EQ8NEM0x4HZ0YGZnnUevMeZkun02nE43HZAVD33ad3xeQ8VhUMh0NkMhlks1mR0hkyoKEJBoOSDMjYZr/fF4Nk9i/Q7FOXE76KHEXCwNCE2TzGBAc7DSGTJUlUmCXOvAG9MRFjw16vV/IiFhcXUa1W4fF4pAqDOyrq8zXlWadj06RHv/akg/EiQI/Zo7wQfZ1mxTG1IpBOpxEOh6WJFXtZ9Pt9DIdDRCIRaSTEfBGOw16vh93dXVQqFezv76NarWI4HIp0zxAEF+VOpyPVKkQoFBKFgP0IuJCS+HE+sMOh014H/X5fzomLvfboAdgIIqt0NFnRBJqvd8rT0NdWtxjXFUQuLj+cxoSTHT1q7l4mmDb4uDgzMqAnOHBw0AwNUBFYX1/HvXv3sLi4iGAwiNFohEqlAgCSZc8Fzu/34xe/+AXa7Tba7Tb6/T5yuRwKhQJGoxG+//57eL1erK2tSe8AACiXy/j8888lHGAmOukEKyYLmgu3jgMTNJr0mKl68CZpD4fEg3+bsS9+nk5WpCoSDAbRaDQk6TEQCCAWi8l+CNw/IZlMiicai8Xwm9/8Bn/913+NJ0+e4P79+9jd3cU///M/CzECDpPM9DHMamyhFQG+lsdskoSLCr3I6HCRfk7DTCrU/6cSFovFkEgk8POf/xxzc3P44IMPcOXKFRkX7XYbu7u78Pv9WFtbw/LysizqLBXd2trCf/kv/0VaVNfrdWQyGXzyyScyBkOhEK5du4Z4PI6nT59ie3sb1WoVT58+RTgcFsWNiXebm5uoVqvo9/solUpC0EkuMpmM5CZMp1P0ej0AsKkJ5kLPOc85xBAgE4Q9Hg+KxSI6nQ729vZQLBZtqoWZ/Mixqdt1U60j+XVVgcuLWcTQKXdAz1Par6MI+0UG16KTjv23TgZMJq/BmxaJRKSD2sLCgpT3UcKkB8AkLBq7bDaLaDSKaDSKfr+PZDKJWCwmnhBVBJ1z0O/3US6XZQHU5Yf8W8fHuWjzfzreymPS56kldKeMae1dzUo6cxrMeuMh/l8nEY7HY9kXgX9TJfD7/VhYWJDzGwwG4jkOBgP4/X4pOTPvzVHKgAlN9C4DGdD3RpOio9j3USydBCocDmN+fh6Li4uYm5tDKpWS7peNRgOdTkfkfhI9ABL7bzab0k+AilEsFkOhUBCjEA6Hsba2hkwmI+EvKkGWZUlYiYl9wWBQzk0vsABEgtdjhKoBySpDX5xzfA2Pm9eCeQXs5kkyUavVZE7wc8xraiqKTvPHxeXDcebbLFVgliJ92fAq9vZMqwnMZB8m/N28eRMrKytIp9Pw+/1oNpv4x3/8R+mkpxfIaDSK+fl5iVEyS5/xd3o1t27dQigUwtraGlKpFIbDIfb397G7u4vd3V2Mx2NJyKJh1N5tr9ezeR66t7t5TiQEWgbWiWJMlNJxed1W2Yx18XctuZoTQucaMNO73W6jVqsJwQmFQlheXhavjQlrd+/eFXJQKpXwxz/+Ebu7u2i1Wmi327bv0lnburTQqaXtUfLuRYO+7k4evxMpcDJImgB6PB7JSblx4wauX78uVS8kbzs7O9jb28N0OkU+n8fVq1els2CtVsOf//xn1Ot13L17F1evXpU5tLS0hCtXrghpYaItiV6/30e/30ckEoFlWXjy5IlsCU6SnMvlEA6HZcMjLfezTJGKF3t76KqAdrstZJNElOfMUES73UY0GpUSYip+Pp8PqVRKcnqYx8D5xc8yc2xIlABgMBg43gcXFxdOdsRpPs6ai7N6aVwm6Oqwk+BMyMAs75Je/dLSEq5fvy6x7mazie+//x79fl8WsU6ng16vh3w+j3v37okkzpp7yufNZhPJZBKLi4tSQRCLxbC/v496vS4/0+lUEq0oiVKW18ZPNzIyB6HTAKT3p710rY6Ym8hoFcKpIoEwF1jdXInJikzu4meyNI1hC7/fL9eN6ku5XMb29rZsnWxKTfqc6HXOYtsXnQCYcCJisxaao3Is9H2nJ53P54WosiyW7w8Gg0JW5+fnJQem0+ngyZMnGI/HWF1dRTAYlCqDQqGA1dVV29hkLsz29rb0H+DmVixfJCGNRqMyNvL5vIyn4XBoGxskEBwHzO7v9Xq2SgjmB5AcUJloNpuSD8SQCedhPB5HvV4X8sJrRTLAOaNDVCQjrNAxw1cuLj5MW2M+zsotmRU6uIy4EGECwlxI6c1kMhlZsOr1OsrlMtrtNvb29jAYDCTRiRO/Wq3iiy++kB0FE4kE1tbWMD8/L0lX8Xgc8/PzCAaD6HQ6aLVa2Nraws7ODur1OnK5nCyWOnzALYy1927WLevkKZ1Fz0cafZ2MyHiv/mzT6zcXHvNRXzsu9mb2PhEMBhGNRgFAGtCQOIXDYcRiMXi9Xum/8PHHH2Nubg7fffcdLMuS7HMt9zvJUDqmy+ObVT9+UeF0H5yed0pi0zI2q2Du3buHlZUVzM3NSaIfAGkwNTc3h9u3b2MymUiXQXrByWQSt2/fxnQ6lfdSrdnc3MQPP/yAeDyO1dVV+P1+6Q+wsbGBr7/+GsVi8QUiyjAEyQDfR0/d5/OhVCpJqKHX69lCSDw/JrKa5Je5NJzHZsihVCqh2WzKnCHx4BzhNaWx06RJE493QQp+VzGLaDuFAvTrLosNehlm2eeX4UzJgGbssVhMZFLKhOVyGZ999plImnoxzmQyyGQy2N3dxbNnz+D3+3H9+nVks1n8x//4H/HBBx/IIhkKhbCwsADLsvDw4UNUq1VsbGxgc3MTXq8XhUIBwIu1/9rY0ejouLzO8Nfkhj/6/zq+apIBGmSde8DP0tn9/J/TI+O1/F4dikgmk0gmkwCAra0tWJYlXRgZq/b7/VhZWcF4PIbf70e1WkUgEEC9XketVkOj0bCVTPL+EbzWmgDoPInLMBFnGZtZryH0Ysi/vV4vlpaW8Hd/93coFAqiXPGaann+pz/9KabTKVZWVpDJZGSxy2az+NnPfiYeuWVZ2N7eRq1Ww3fffYfPP/8ci4uL+M1vfiPJgcPhEH/+85/xj//4j3IsXFQ9Hg+SySRSqZTkJ7BxUCAQwLVr15BMJqUj53Q6RbvdBgAJgxGU/PXcocxPAsDQHgCZ461WCx6PR+ZZu91Gt9t9oWkRv8sscQUgaphLBC4f9CJnLvKmE8XXvguqpYa2wSfBmSUQag/JLPcDIF65jq3rJCbW6VuWJfXIrVZLDOLm5iYSiQQymQwAyMJbr9dRqVQwHA4lSYqfqWV6ndnP4yRogGaFO0yP3UyC0nFjfR2ckg8JPeBn3WSnSgR6UIzb8jtZPREKhRCLxRAOh8VbYwe5xcVF3Lx5UzLPeT/0OejjMUmLOSgv+gQ078es+28+Z8YrdY4Fx4eT5E0Pmkl/zWZTcgyAgzh5NBq1kY1OpyPkjQoQPe1Wq/VCN03OAV3iGI/HRVFjU6FwOIzV1VVks1m0Wi1pb6xDWSQW9P557iQqTE6k985j1uWAJJlUrBiyoD3QxEXnb+hrro2/SwguH2apc05/a9tkOiXHCfddRFwoZUB7I4FAQHYITCaTiEaj6PV66Ha7IhHSiwYgpGE8HqPRaMDn82F1dRWj0QhbW1uy6H733Xf4yU9+gl//+tdSetTv9/HgwQPs7OxILFSXC7LensSBREEv6nwtwaRAVjSYIQSdFKgHI2VQfgaNpjaoetCbmdImQ3a6+fTAmAvAuK3P50Or1cJ4PEaz2US73ZZFgFUZiUQCv/rVr3D79m189dVXqFQqohLw+mglQB+bJjav0vzivMI8Tyc50jQ4WgFj7ki325UEunq9jnA4jG63K8mv/Cw2krp58yY6nQ7+8Ic/YHt7W8bitWvX8C//5b+U+zkYDLCxsYHHjx/j+fPnqFQq8Pl8ePr0Kfx+Px49eoRarYatrS3xyplwuLKygnA4bMslSafTck7JZBK//vWvbR1Ag8Egtre3pckPY/Wc1/wsev+6TJf9Quj1U4Hj8SQSCSwvL6PdbsPv96PX62F/f1/sATuN6uulSTbn5WUYdy4OYdpE4MU9K0ylCHCu6rmsoSTaGk2aj4MzbTpEaVw3ywFg85rMxUb/zfI5XbrU6/VQrVbh9/tRqVTQbDYRCoUQDocxHA6FaLCkiTF9/aNrUSk56uPWA5H/I5zYp5bQZ8nI5o/52bPY8FFet16sNLkBDpUX7mzHuK2u306lUhLbTqfTIguT4DjlUDjJeLOO7yLB9PhnETP+TXBRAiAKFq/vYDBArVaTXBbmbug9L6gqDYdDlEolbG9vy3fH43EJ57TbbcnOb7fbkklPIkzyzG6bHAtM3mOrbt5PljdyPCQSCeRyOWmIxNyeWCxmMzp8dCKwGloNcCKLPA42L+Jc16W++lo7jbXLoki5eBHmmJmlEphhVsBemXVSInAR1IRXVcTOhAyQwTMpLxqNIhQKodfrSfYwy+Pm5ubEuOldyLS8yEQkLkqlUgmNRgPAQXvTQqGAv/7rv7ZlIO/v74uXZZZFsZ0vy/Es67DNKasKdMY/j4nn5rQwOHmRZga0bqKiY18aRy2w5t+9Xg+TyUS6ObJ1LXDYybDX66FSqWA0Gkkm9/z8PKLRqGyM1G638Td/8zfY39/Hp59+Kkmd3LmOhMmJmZ/XCfMqcGqzDBycL8msvqdczLjIMiFvb28P/X4fOzs7+K//9b8in88jGAxifX0dd+7cQSwWkwS9UqmEzz//HMViEf/rf/0vCX/F43H8+OOP+POf/yzNi7xeLxqNhlSR0IsncWbLax4/cw5CoRCCwaCt6uXOnTv48MMPbapVNpuFx+NBPp/HnTt3JBel2Wzihx9+kH4IOgzCPBbOIV2Wy0RF9kHg/9hgrFar2Vp0c0xqdY5jzSzLBQ5DZC4ZuHxwWuA5J82dVE37qp1O/f/jQDtBsxy3s4QOz5oVaC/DmW1UpNk9jRA9IHoywEFYwGw6Yn6W2dCn2+2i1+thZ2cH4XAYg8EAH330kSQ08TWMnermKPREaBzZF13H9zXrnLXoaYKg36Ofdzp2/fpZaoDTNXCC3iKX38HrqpvEcPFgN7lcLmdTCHK5HK5cuYJAIIBkMinXd5Z3NiuP4KJDE1Hgxdi0Xjh1jwnK7/F4XJIyvV4vOp2ObLu9vb2NaDSKq1evimEbDodotVp48uQJdnZ28PDhQzx58gS5XA7ZbBaVSgW7u7sIh8OYm5uztRT2eDxSMQIcVr1oIhOJRFAoFGTxBSANtxYWFrC+vv6CQWEJbi6XAwAJQTFEB8AWaiMRsSxLiAjLd/XmScwV4rybTqe2JmPAYS8BjmOnclyne+bi8sBUXk0l0nRINGnXyuvLyu5e5tQ5KQTngQwAF0QZ0BeRBoB1yqPRSBZfJihx+9XJZGLbX6Db7coiStnViQU1Gg08fvwY9XodlnWQQb+ysoKPPvoIDx48kL0IGFtNJBK2agFThtKqgfZ+uWiyYoCLga6WmPWoB6yW9FmJoBcavs/p2PQjwZasPp8PnU7HtmDpcAu30q3VatKIptfrSSJZOp3GvXv3kMvl8Je//AWj0UjkaH0u+h6TkZts/CLDjDuaoSsSSaoljGmn02kEg0HZfwA4WNiowpCwPnnyBFevXsXc3JwkcpKk1Wo1Ia0McYXDYelLsLKyIg2EgMN23SQVvV7Pds9YRsvdMsvlMiaTCdbX12XzIj7H91DZYIkhcwdyuRwsy0Kj0UCpVEK73Ua5XEa5XAZwmN3PR5KS0WiEbrdr2wwpk8nI3guBQAD9ft+Wk6A39tIlr5yLDMVQ8eP9cXF5wPnGeRaJRESB47gJhUISCtP2U5d7U3Ui6azX60JYGZZigi3HkE6aZk6KuSMnj/GscKGUAS4UXCx0Vz/WNTebTcn8Z7iAfQX6/b6t8oDv0/B4PGi1WqjX69JlMJfL4T//5/+Mu3fvolKp4OHDh+j3+6hWq3Lh2J1PlyfphV17WhwYZitWHpO5aPO49KP2avio8xa07Aw4J8uYZIJgAuFoNBIyQDmW3hm/j2Sg1+shGo1KXJmtoZngubi4KP3ync5JXw8eL5+76EbZJAMaHM80ROaukfTeucBzW+mf/OQnGI/H+Oabb7C9vS0hrkQiIYtyq9WSLnw0QtwNkImfi4uLiEaj4vmzkqbVauHRo0fSkpttuXVPjdFohL29PYzHY1y5ckUUDKpGpVJJzpE7HWYyGQlNdLtdafu9sbGBcrks84/XDTjsDsikQfYRILkJBAJIpVKy1whLC2msNXklYdbGmcbf7/fLe3ToxsXlARfqQCAgZDuXy8m8YffaSCRiU5KYgEoHaDgcolKpSGkryaducGXmRPFRh6t1OOKsoRWQk+DYZMA07vr/TvLIUbFu/s34YrfbBQApX7Osg+YnzWZTFi2zYQsXNDI6M+5Po0miwPK6ra0t8Tzu3buHvb09AJD6eq/3oD86lQQ266FB4c0ne9Qetik9UZrVx2S27OW5mJ6mufCYSVqmPMZHUzGgsTQHNJ/jcbJUE4AQh0QiIUmFLP+8efMmQqGQECxNgjRxYjzOKYHnbeMo+W7Wsc0a0/qHY4xeiU6CjcfjKBQKSCQSuHbtmmwWxWTBTqeDdDqN1dVVWx3+8vIyYrGYeDbxeBx3795FJpMR793n86Hdbsti2Gw2MZlMEAqFxOixm1+328XOzg663S5qtZpk53PBpPI2HA7h9R5sZMUGSDwuGlQzH4JEh9I+c344HtrttuQzaONpyrTj8VhKXTudjryH5a5MUmSugA736VwIp3vlFLo6KqfFnIOz7JuLtwsdgmOuSSaTkU22SLZ1R9VAICBjl3Zbt8ImMaCDmUgkUK1W0Wq1pBxXh7sIritHOQfnBSexvSdWBvTiN0ueNhPgTHauF43xeIxKpYJ2uy03eW5uDnNzc+h0OuLx01hpIsA+61tbWzZphzeJcW8aoV6vhz/96U94/vw5fvnLX+Jv/uZv8PjxY0SjUbRaLSldarVasr1vLpeT7wIOZSYOKF06ZV54vlb383dKPGOGvx605udoaM/e6X443QdTWdAJWHzsdDpSssVSN5Yb+v1+JBIJ/PrXv0a1WsWDBw/w3XffyeLDqg5tRHUPfrMq423CjBvqR/N38xj137qKgj0vuGDRO6FHOj8/j5/+9KdYXFzEL3/5SySTSVuOjE44tSwLP/3pTwFA8gt4TPPz8/j3//7fo1KpyD4TtVoN+/v7tnwTjiHdj4MluPR2mMCXSqUQj8fRaDTw8OFD+YxoNIqFhQVcv35dwgQej0d2FGTYiXOXygDv72AwQKfTAQB8//33KBaLNi+NaLfbNjWMx8a8iul0KuST38WuoCxb9Pl8siMncy8o12rboyuSODZ1WayZPGY6HJo0uzg7cM5QCcvn87h+/ToSiQSuXLmCWCwmHTpJhHXyLnDYmI3ksdfrYTAYoF6vo9fr4cmTJ6jVanj+/DmePXuGarWKhw8fvpDDxt04CXMdPGvnh9Brw3HwRsIETiqA/uFEZT0wPWgaEu5BAEA8c0qMemLSK5CT+f89e72g6hpvj8eDfr8vkimz7SORCKbTKdLptG3XPpYsAocLitOFNQ27BjNP+bs2gvxMvcWrDhfMGlROfQhM8qWvs0lATJJgekiaEZsNYaLRKIbDoZSk0WNzOnenhfcs4aSkEEflYJgqAMNI4XAY6XQaoVBItuKl9Li8vIyFhQXkcjm5Vrzu/ByOe32vza6OrEIYjUaIx+NIJBLifetxzXmhN47i3+YGP3o8coOgVCol5YUc9zrvY5YSxVg+yQgNMWV/bYw4zlnqqxda/t7v9+H3+yWkARzOL+4XwrwAXXmgP2PW2HaySy7eHk6yWGo7RrvDUEAmk0E+n8fi4qK0mo9Go0in04jFYohEIlJ5Yi7czFEjoeS6EolEJGTF+RMKhVCr1WQs0tnU53GUnT4PeCPKgJkZb9YJA4fszVykNAPnwsHFxuybXy6X0el0hNlx5zVeeLK4RqOBSqWCUCiEVColjN+yLNn2lcfMZC02L5lOp/jmm28kqzsWiyGZTOL69evweDxoNpsS1yThYBKVjrnTg9Gxd6dYsjZSTFph3CoUCgl7pWElNJHh5/KaUzI1VQRtvJ1CF1RYgENjTuPPxYrlk1zY+P2MGU+nB61xb926hXK5jP39fZv0qyeLmctxFjjJMTgpXjz3ZDKJeDyO9fV1XLt2DdlsFuvr64hEIrLjJWXIVCol+2GwIkX3zee1YjIq7yVLWLXyQ295cXERlUoFpVJJ5HTdgRA4VH74HPtJsEw0HA6/oD4lEgn8/Oc/x/z8PNbW1qS0kWEjHrfT4sr/cXFeXl5GMBjEjz/+iJWVFVHkxuMxCoWC7Cw6HA7R6XREjqXXv7e3B4/Hg3a7LZsYLSwsyBzWx2FZligxJDYMF+idR8054BQe0M85EUMXr4fjXFOnMA7DAtevX0cmk8GtW7ewvr4uFU6hUEgSv7nAm4SXn63VYto9yzpo6z2dTlEoFCRfrdFoYH9/H3/6059Qr9fx/fffo1arodVqidNKnKQ08W3ijSkDL/Oi+BozjkI5zmTnlAe19MoyOC68rKfW38WkJ7346Kx5bUh1MhczTulFdTodVCoViT2x8x6lXzbjaTab8t1aQtSP2gPnwqGNENUKLVMxzEDDzQFski59bY8KA+jv0aTCaSDw+hFmnwDeG61kEMyYj8ViSKVSaLfbR37XeWDNs47BadGfFfoCDhMys9ks1tbWkM1mceXKFUQiEYlRkjwywc8MR5gxbPN5PZa0BE8vhx4SX68XaoKkTRNXj8cjEif33eACznjrwsKCeFS6p4cmAU7HrH94LZLJJBKJhMix+lxYOTCZTGSbY6/XK308LOtg+2MeP0Ntup8I541Z/cMxq3ONZpEBc1yYnqtLBI6Gk1d8lPd/XC+a94ZEIBaLIZPJyD4qy8vLyGQyWFhYENuux6n+PqcQqyYG+rUMWzNpOhAIoFQqIRqNYmdnR9Yovp7nM8tmnwe8EWWA0AuGXuidwgD6NTwwlmqQwWtZXzP8Wq2GRCKBXq8H4HA/ABqDQqGA5eVl2/t4g1dXVxEIBJDNZpHP54UoABAPhLXa9Myj0ShWVlZEpQAOShPr9To6nQ52d3el6oHeMxPtuJhS9WDJJK8Xr4v2kkgKqEx4vYdbvNI7dBrMTiEE/q0fgUOJmNdef55u/GImFzp5fiQ5JEurq6t4//33YVkWtra2hECYJGNWPsNZ4qiQgJP0x9+73S4s66Bl7gcffCAtsL3egy6NXFQzmYyt3l83k2JoTBsu/RpeL02au90u2u225CYsLi5KG2OSEOYacDMjeva1Wg0//PADxuOx5DUwHprL5fCzn/0MCwsLuHPnDrLZrMT39VzVY8CEDoN5vV5ks1nE43G8//772N/fx87ODr7++mv0+32Uy2WR9qmI6CRfziuO22KxKDks4XAYuVxOCA3bklPFSCQS8Pl8ohTM8tb0+cy6/07jxMUBnOaOGQZ1cv5ov7Ut1usEcNhvhrlKmUwGt2/fRjqdxscff4yFhQWZXww1aXLoFA5ySng3H3VYifk6DAV6PB7ZqKtcLuP+/ft49uwZOp2ONLbjd5638fLGlIFZ0IZLkwH9vB409Cy56JteM9kXF3ltJAAgm82K95FOp9HtdlGpVGzJatzroFAo4MqVKxJCGI1G0uGQbVWZ+BaNRqUnP+OdjUYD5XIZjUZDJMhutyuLvs5gZpgAgCRwOXnyJAPMBKdUBUAUAj4/a9FyurlOrJvXkPdGhzJ0fgXfZ/YEMA0nX8Pa8pWVFWxtbdnuuenxmirJWWCWpzdLBZjFphl7Zy//crmMJ0+eyLnFYjHJaNbkSPehMI0lMUttooTObo/s+8AyxUwmg2AwKD39P/jgAywvL0tp7v7+PsrlMvr9PpLJpBwLwwzr6+vI5/NYWlqS6hlTaSBIJE05Vy+kVPKWl5dx8+ZNWJaFr7/+WhoosT8ByTKJtJ4vVM6YM9BoNDAcDhGLxQBAElWpljD0wGuur6MTOK5n5QE5EW0Xdph2SDuBTusBHREnYsnnufgyF6dQKODu3buYm5sTMkASCBx2EDSdGf27OVZNW6VtEz9L58Gw1Xer1UIqlUK1WkWtVsNkMkGj0Th3BEDjjZEBJ2PudNNNidm8YTSQiURCtmjlhc/n87aGI6xppqyvP5dJWOwkyBpRnriW+Vm+qBtMFAoFzM3NidFi4gk9FXorlFFZOpZKpWxGmn0MGJ7weg/6upNZcmDRwDKkoRNZeH3ZTIkLtpbozcnnJIvxdZpcmSVX+nX69VolYGiF5V1m4w3ev/n5ecTj8ReMgvk9Zz1hnIz+rGNyUgS4oC8sLCCRSAAANjc30e/3bT0DmKU/C9oQkghr1YDeif5eZkT7fD5cvXpVpHculABsSZwPHjzAs2fPEI1GZRti9jLg/PF6D7YAf//995HP50UhM49FQyt9/Ol2u6jX60LEAQhJSaVS+PDDD+Hz+fDtt9+iVquhXC6L6kXCT3ugwwyWZcl8H4/H0gwrFothOp1KqaImnJyrVMJ0cqZ5z3Vlk05gNEnaWY/b8whzMdX/d7p+ehHWoVBNDph3xTm0tLSEa9euIZfL4e7du6IS6DEK4AUSYJIR/t88RhOmGqfDCCTHKysrSCaTqFarmEwm2NraknwXkxCfp3Ez65yd8EpkwJRjTDKgm4FoA0epfDweY2FhASsrK7Kwcpe8hYUFZDIZJBIJGTj06AeDAba3t9FsNqVWu1aroVar2RZ+LtJ+/8FObawl1XHQ1dVVLC8vI5VK4datW4hEImJQtXTJpj2JREIqDoLBIHq9HlqtFsrlMjY2NjCZTCRJcTqdStkTBxPPPxgM2hgpVRImKXIQ6kGljTOvuZb3tboCHBo4xmv1+yiDkaTR4LJBTiAQQCKRQDAYlI1onGTtTCaD4XCIZDIJAC8sZOcJR1WCENqYmT/AwfVeWlrC4uIiLMvC/fv3Jfk1FothbW0NuVzOlpxpTkQdTuLeG3w9jQqJKD/D7/dLW+Hbt2+j1+tJw5R2u41isSix9sFggMePH6PVauHmzZu4d++edI/0er3Y29tDp9PBwsICWq0WVldXsbKyIp+viakZa6fxtixLlArugMj55vF4bARjbW0NoVAIf/rTn7Czs4OtrS1UKhUpWyXR1uesmyExgbVUKiEUConikk6n5foAEJLNSgOPxyOJnE73QSsfOgyn55g5587juH7boE3SCy//r71Q7Y1rpYbjmY4QyQCdjtu3b2NlZQV37tzBT37yE+nVYeZAmQu3hnlcej6ar3sZUdDVQ9evX0ev10Ov1xNS8vz5c3FCp9PpuUskNFWTl+GV+gw4/a1vgg4LkLUzMYmTnZIl457sbscyEV161O12sb29LXGawWCAVquFdruNTqfzQs9z7X3pvQ6oKAAQA7a1tYWvv/5avC+/34/FxUWkUinxwJrNJvb29mBZlizCTNJiPbYZ92LegJMsxmumY2e6TJKxsJdJlHrxN+UuwF56yWPm8TEkoY+R8Vxef32uJrTKwe/UpFAf43lQB04D6XRayCobA7GuWXs7BO+DmdHM+6DJkxmyMe87PSjLsqQDIJtu0eMnsev1emg2mygWi0JkvV4v9vf3ZTMhKmEkgMCLDXd0yAKAfH6z2ZReHKVSSTKwPR4Pdnd3pbSSSsny8jI8noPwHRt18Zh5zTRR1zlA+vv1dTXHsY5b8/1HQYcJTOjvdYnAIZzsu3mPtD1wUg5o65gjFQqFpERwZWUFq6urosBFIhHHnhym2uw0TsxjdbqHTs/pe66fZxgrlUrJLq5UAZn0OutYzhInGbsnIgNHTQztOfBCcGFhHXYkEpHYJBnV0tISfvnLXyKdTuPGjRtIJBJSNtfpdNBqtVAqlfA//+f/RKVSka5TJAOsA6V8yBwA4CAuysoETUx8Ph/q9Trq9TqKxSK+++47SSBMJpP4zW9+g/fffx+VSgX7+/vY3d3F73//e/mcxcVFBINBkUQ5GMgimQBDg8UJoL1n7Q0xn6FWq2E6nUpehNlYSIOGTHtx5oDs9/vo9XrCyHWLXIZiqBRQEYhEIlhYWJBqAb0HPb+P58pmRPxO3aVRxwkvA/x+P65du4aPP/5YrqHuKsjeFFzk6PXqe0/yxAx4DY6HWfPL4/HIAr64uCi1z3NzcxgMBtjf30e73ZZdKIGDhEfGOYGD0Ea73caHH34oiVlUgQDYsvB1OasOi/V6PWxubuLZs2eo1WrY3d21dQAsFouIRCL41a9+hStXriCfz+Nf/+t/jb29PdRqNTx9+hTFYlHGOn9arRYsyxIizGuu8wB4bRgSoBrHkAtwMOYZQpl1LenxaS/XTIbm9TiJZ/UuQKu95iKt1QHATgj4ejoosVgM2WwWmUwGv/jFLzA/P48PP/wQq6ursn22mWwIHBJSs4kdH2l/+B5d0WUqGoS+37qKh/+zLEtI89ramiS2P3z4EJVKBa1Wy0ZQnMJsZ4E3pgyYkoqGEyPj4kCjGYvFEI1GkUwmZZHxer0SD0qn04hGo9IGlfX4ZjtIDiotkdN4sN6UmdU+3+G+B2aSCNHv92XnN4/noKyxUqlIJQEfa7UaPB6PJIFx4dcbo2gpTHvi2phpMsCJwwnCxYT9B46SnnQM10kZ0EZOT1AaQi5g+lj1c2aVgdP9No2nk1d7HibFSWEaM3Ps0yNlT30uWkx6Y3ybr9efpT9Hf9dR0AbN6/XKPPJ6vVLhoBdNjvtmswnLslAqleDxeKQyhom5ZmmePi7z/PV4YoiCzbt47gDQbDYlX4ceIJt5pdNp1Ot1VKtV25zUpIBKlpOx1wqIznPhj+4Saoa1TMzKt5l1b85KHTgPx0DMWkSdxvBR8Xs6E/F4HMlkEnNzc5ifn0c2m0UqlRIV+bjne5rJyeZ3musGS4bZSIzE8zyqnydVtU7cdMgcAFoG1l4jpUi2iFxfX5dsa20omclM2XU6nWJnZwfb29sS8x6Px/j7v/97G0moVquoVquoVCqykN28eVP6vc/NzeHp06d48OABKpUKvvvuO6kR9fl8WFpaQqFQQKlUwsbGBmq1GnZ2dhAMBhEKhbC/vy8bHZVKJTx48EBqtBnm4PnNz8/Lxj56Mxn+aE+QiyxvFM+RvePH47HUktNj5+dpZqvLMM1EKRItkxwwIUZLxAQlO5I3EioNLenqpDGnpj5aIdDj5ixgtkI+6nczbkz0+308fvwYALC2toarV68iHo/LVr6lUgndbhdff/01Njc3sby8jFu3biGdTsveBLo9NUkiu+fp5Cp9rZhLYlmWbCBEGXVrawulUgm9Xg/Pnz9HvV5HIBDA6uoqWq0Wdnd3sbe3h83NTZtXPZlMZByQQOsxCRyWQWrFh8fd6/VQrVZt+ShUQbjZ1dbWFnZ2duD3H2yHHAqFJBmMLV+pklA14SP7A7DLIm1Pq9XCaDSSjYzS6TSWlpYQj8clhMj9G8zwliYGJHOcq3ocOBHpsxy7s6pPzgKm6uf0PF+j7SBgXz+8Xi9yuRx++tOfIp/P4+c//7kQApaImufLv/V95bHo5licR05OlFPIUl/bWTkP+vVUuvP5PNbW1uD1enH//v0jy1nPEm9NGTAJgX5el+xxd7VYLCbJSlx02a41FArJgXNh5GYSrGv3+XySWUxMpwe91oPBoFQI3LhxA0tLS1IWYqoBlFzn5+clIavb7aLVasHr9eL58+fSUKfdbqNaraJeryMej4u3o9tYcjMMcwBzUFrWYdmMThrzeg97CmiioxMwebzmTeVANbOm9WudmDw9Wi78JBZaHja7eJnfaxoEpxjbeYJ5fISWiU2Y/5tMJhJWYj4J81Qsy5LM+u3tbTx48ADj8VgSCmnQTaWG1x6A7X/6+tHr1soPFTQm7VFmbzabSCQSCIVC4rmzZt/j8SCZTMqumxwH2qM2z99JJvd4PLKbod6giupIv99Hs9mUucOGMdPpFLlcDr1ez9YFUasefJy1GHPeM5GLpZDT6VSqjnQDrVnKAMfDcQzleRjT5pg4a7zMCzbvnV4veN2j0Sjy+TwKhQLy+bxtHeBrZ8EkbDpHxFQr9THpY3e6nk7v0fMOsDddozoA2FvJnyfy9kaUAac4kP5Sp4OgkaB0z4xllmktLS0J06JnMJ1OsbCwgGAwKIa10WjIDnkcYF7vQYMTj+egKYQmEltbW2g0Gnjy5Am2t7clhsqEOcqorVZLPHqd0KW9eh2WYDlVo9GweUrLy8uyX7y+RgwpaC+LxEAbPZZRZjIZ2StBs2M9IM34nCYcpvFkKAOw169rA8zvp5Gn58fPN9UBncPAa8DENlZj8DX6+M9SQpv13VoGf5lyMB6PsbW1hXa7jefPn+MPf/gDCoUCPvnkE/j9fql2aTQaSCaTKBQKuHXrlixWvV7PNqZ4DWn8+L/hcCj7BTAng4lKXLSZS9Pv92WhLRQKCAaDojRNp1PZxZDzhtu7rq6u4tatWxJqAF6suNCtrjlmWq2W5PDs7e1J+I+hJZJYEqNSqYTpdCoeH5W77777Dpubm7Z7oENmerzosEC9Xpfxxq6GhUJBqnem06koXkct9E6eow6HnJdxC7yYfHrW0HOf3r9WkwB7ZRGf431lSHh9fR03btzA3NwcksnkC2WDerHn3/q7SUiZ0Mp7z1wdNnAzlR0nR8lMvGZeglY2TAc4GAxKuCAWi9kqV84TdIj4ZXilDoRHMW4+6kVVJ67RGGazWdkLgJ9LdsXugIxJckdBdlGLRqOYn58XiTaXy8kJM5mqWCxiZ2dH5H7AnqQ1Ho8lvqsHjV5gzYxvGnVuA8vX5fN5W120Hsj08LUHqBdtLp4s5aMRNxN0dHyV4Pfzupn3Qy/U/B4zf0LfM+Yt8Jrohkh8jUkGGKJhEhnPzZyEZ21UNUxPRV87c1HUiyMT3+iFLy8vo1gsiqcLQGr75+bmcPXqVYnrj8djxONxmxduStkkkIxDchzorpjAAeGtVqsYDAZIpVKy4Hq9Xuzs7EipE0kePWbGaAuFAq5evfpCFr4+Z52DwL9JhFlFMDc3Jxs0sQRXVzPUajUJN4XDYVy5cgXZbBbLy8vI5XIYDofo9Xo2+ZbJw9pz57Gxj4jP50O320U6nRbCzR4EDHcdtZBz3jipbUf9fRYwlZOzhvbKdRiJdm0WeSGhY9XAlStXcOXKFcnKZ4mpCX4en+N14NghAWcSNsNVtEt6R1hT3daEU7+G4TtWu5mEh3OLnWsjkYgQEyoD5wGz1ulZOHGfAfML9KM2pFwYWVPNDmqUJZvNJra2tqSLms4apcTJrU4ZJwUgDJK7DrLWmTEbPdHZLarf70siIQ0jbypvOPMAWO/63nvvoVqtolgsIhQKSStVlkvx+Gq1GorFom0h5Hk4xag4WPSjZpv01JkzwOcYP+W1JtnSygBlW4ITQpMSllvyvnAyM0YLQPrWs7e+XiR4DGbSodfrfSG+Zr73rOCUYDTLMJhqgWk0dD8ALnLcppdj0+v1Sv8Fj8djM0im6sC/NcnSWxjr4+f/GILTiak8Hl1qpxUqr9crtfesAojH46KuOXkQWsUADqteaNg9Ho94YBxPDAswp0bvGqc9cl5Lrczp68Dz0sfGBWc4HMrc48ZGDPWdJJnMJKv6OPm/s8Z5OAYTJoEG7M6cJnKmkplIJKQPhSYBTp/J79LfoccGlV7mU5mqG/Bil0KnhdHJidJl07OugVaQmYvzMtX8POPEZEBfIG0onLwrSjnBYFD6+FPK2d/fR61WQz6ft1UXTKdTVKtV7O7uolQqyaYvV69eRSAQQLfbxXA4xJMnT2T/6c3NTSEc06l9kxLd45/eL40XCQSTqK5evYp0Oo2//du/xSeffIKtrS08fvwY+/v7srXx4uIiMpmM7Gq1tbWFjY0NkcAYk9XfTWjCpGVYXjfmHjCcwomkY2Ic8LotJxdinX9AYsJENZIfelc6MZEkhHFgSr5c0PQ91Q1xOBm5da8uq5s1uc8CTrX/5oIzy0joc6AMDkCIQDKZlLKobDYralM+nxcjxIRZ7W3rv/WiR+Kga/85jjj3AoGAyOI8TobhWDaqM+s59zqdDvx+P7a2tnD//n0p83UyfDqZiudPb4yEgKrFdDpFrVaTigGWEFMC5nlwvGiSwt1FWRasz1urTDrXgg3Htra2EIvFhDzrzb+Io9QBJ8waB2c1jnV48TzAJGiAPbau7a85dr1eLxYWFnDz5k1cuXJF9powmwrxe/QjoZ+nnQmHwxiPx5KorQmlUwx/1mfzb116an4vX6dzrxiWYB6RqfhdFJzK3gSE6QlSbqH0HAgEMBwOZeJy4eh0OrAsy9b2los5F5lutytGi90CG40GWq2WzdPlgNRGXme30vvlAhuNRnHjxg2EQiExjjRoiURCQhDLy8sADsu22PHN9Ma1KqInjslM9TGZ2dq6zpsG2WweZHqO+rrpe6HlNXOSmJ/JCU7C0Gq1ZLKam9bwf9pQswscvTctH5pj5Swwy6A7sXlTKZgFSpHJZBLJZFK6A7KDHmOYTsZBj9HjLDY8Dl5rrQyxbwRwWFoXi8VsY4CeOGP6iURCFk8zz8P8Tv3dHJeDwQD1el3yCfS+F6FQSBZqlgdvb29Lfw+z74Ymm17vYUtu7VVqVYHjtNFoyDa2urRSS9b6M3gf+Pnm9dchOa2unNXYPes5c1y8jFSTCHLxZMj4JCWEBO8bbSTbGWtl7DjzyiksdBT5MM9Vh8EvKgHQOHHTIc3UnWQR/RxlfJYDdbtd8VQrlQqKxaLEEVOpFFZXVyU7P5FIYDwey9aROzs7iEQi+OSTT1AoFPDVV1/h0aNHQja0YeFCT0NMj4ZSOJOyuBvWb3/7W4nLer0HO9CFQiGsrKwgn89L69Z+vy8Sa7FYlA1gYrGYGCKqIYxjas8FgOyNwEVD13uzvpaDW8NJbtfZ3MCh165laQBSegMclt/oZL/BYCDSs9frlUTISqWCWCyGXC6H9fV120SLRqPCzhluyGazGI/HUu7GkIouoTsLnMQL1M/N8lK4ODDEFI/HsbS0hHw+L4sdk0Lj8TgWFxdtC4v+3TRaJGma1HEB5nzjeKJqxvnFhYxVBdzdkGoaPZdnz54hmUxiMpnIFsy6SRa/Ty+mujcB5xhLgDU5mZ+flzGzsrKC0WiEUqmEUqmE//bf/hs2NzexubkpDkA0GhVb4fF4JJlsOp2KGsf7x/JMtimuVqvo9/tIJBK4fv26KGaJROKF0KDH45EwDlUJkibeS56nfj1gV5beNkj0zwsp0MehQ7uAnRDoECnDA+FwGJlMBtlsVkKyTrum6t/NOacJIjenorKpQ20muTU/h7/r583nnMDXs6KA/XNisZhsx32WStLr4LWUAZMxmxeB5XKBQAC9Xk8WHiZJMTu52WzKAsUJyzg+jSDj2ExsAyBhAU5kfUO5UNGzpSGkseOiy8zWaDQqpILH4Pf7JbO/3++j0+lIfTXPg8ZZ12rrEID+Pqd4sfbqaWx1cpM5qOgVmQlfnASAvUyL5ExPFL246O/QpYr8fCo5eodJnS/A9/E68Hi0PKgT0c4CrzoxZ73PNFLAQS6L2d/fafdJ0zhp46k/T88t02vVOQGml8LFj2rFdDqVxRE4DClxf4HRaCT7YziRJvM4aGgDgYB0++MirOcuwxbj8VhaFz979gybm5uyudGsa8mxp6+bHnsmcZrVlMzJNmmiM0sZ0OeqFYazwHkhAUfBJLZOoHqly1lNb/q489S8b05z6qgcAdMOH0c9MF9D++dUin0RiQBwwtJCGncn4wYcymqcaDqpZ29vTxoLMb4diUQwHA6xsbEhvQIo0efzebz//vsS2+cOcZlMBh6PB+l0Gmtra8Lgx+MxKpUKRqORJDDlcjmsrq4CgMQ5K5UK+v0+bt26hZs3b2JtbU3IBJOdTPWDsv9wOJTGJuy0xoRDNofhZila7tQNeuiRkKyQYfJRx/hnSW4AbASI/+fvHJQcpLx/Hs/hPt2ajHDh5vupXgwGA5m4xWJRvLhAICA9EWgoeX14Hem96nyFiwzTM2d+x+7uLrxeryTpra6uSg0ym+OQIJpeg16U9G57nENmGInv63a7sh8AvWRTDSsUCnj//fcxHo9x8+ZNW7UH9wCZn58Xg6aToJhXow0173swGMT6+joACDnm2A6FQvjoo4+wtLSE5eVlTCYT7Ozs4B/+4R+wu7uLjY0N2ViJXjibeLEagvsekHRMp1NpbsRrxlDh2toabt26ZVMAt7e3pS0zbYYZk+ZY1IT6vOK8KQOAc1xfq176dWaODZVfXf553MXTiXRwfpivM8mddhKP+nyn351e5/P5EIlEXtjHZRa5vAg4cZ+BWTKKZmMEPXrLOqgQ4IJJGZAladzspFqtigTNrNM7d+6IV87SIQAiOdF7J2EYDAbI5/OYn5/HysoKrl+/LgZvPB7jyZMnaLVaeP/99/Hee+8hmUzKINOSpD4HLmbMXeh0OiJDxuNxzM3NSfxdx8pp1Hm9ODk4walOsPSSJEJvxayvr/m7+WhOLh1n5R7wVDC096+9JJ6Dbo3MhC0u9Noj47VhngBw2NCG1/UiGN3jgOfJewUAjUZDQlpe78HWwOydwe14zQZSGrw+JI16EebfmtBRPu90OpLMp5tU0WPhjm9e78H2q9PpVOZgIpEQwsJxyu/lfWU4QJNPfjZLehuNhhA+KgzLy8uSiMtGTd9//z329vZQLpfRbreFpFKhYNmjz+dDtVpFu922tXnW4TDOG5/Ph1wuh1u3bgGA7NXA68Mf3f1z1oJw1Ng8a8n3ZbL1ecGsBVgnMlNBNTc4O+n3mL+b6pp+jXZ6nD7jqM8/Ctp2k3CalTDn/Z6ZeO0wAfBifFUPDC6SzWYTw+EQrVZLSvTm5ubEK2o0Gnjw4AGi0Si+++47+P1+qSqgsdGL6bNnz1Aul0V+ohGgYWVMkYaUIYIrV65IrXUulxOGqgcBVYT9/X3xNFi/zX7vbLbi9XolBGHuVKhJAWFK+fRqzHKyWXCSq0yYGev6vuhqBh2bphKiF299T5k5Sym8XC5LmIfkgcloerLrcMlFmxwmeE56Aaf69fTpU3g8HqRSKcRiMZkTptyt38+Fqdfr4euvv0aj0bB1OGNCInfq3NnZQbvdFqlVh3eoIkSjUaTTaSnf1WWfzWZTkv6AA9K3urr6gtpHmIaXmzLFYjGsrKyg2WyiXC7bVK4rV64gk8lIlc+3334r7b77/b4oeWw0phsWUdmgUqZLhfU9YJVCoVCQqgod3qJKE4lEbGEBKnL6Ppz3MTlLITxPcApp6XWAKjHtpA7zOC3Ss8LP5nUw76X5O4mkJgRmx83jqgH6czlvOX65LvFH5wRdJLxSO2IT5klzAtNY0tvo9XriTczNzWFxcRGdTge7u7vodDqoVCpSpsRcgnK5DK/3cPvWer0uiXemfEqpk0mFpVJJ+v33ej0kEgn8q3/1r3Dv3j0bizPlW+YDPH36FJ9//jmazSaeP38Oy7KkHIbbyLIBjGVZNmIxy6PgQqljTbqKYpYHaV5f8/O1JMe/ScT0Aq0XMrMREr9fqwaWdZgoFw6HJcmx2+2iVCrJQsWKDv1desG7LGRAXyOSzlarhUePHqHb7YrapLPuTSOiQwAez0HJ32effYZnz57JvhS5XA6Li4tot9t4+PAh6vU6vv76a5RKJaysrGBxcRGJRAKFQkFIGisIMpkMvF4vWq2WjC966WwTTA/9o48+kpyBWaDikM1mxaCy1XetVhO1QBPax48f45/+6Z/w448/4v79++h2u5K/w86F4/FY5gzj/lpuBV70zH2+g31FFhcXUSgUkEwmRRkhie/3+4hEIpJwaC4I+rxmEbbzgvMYJiBM1cJJsdRqIxvzEJoM6HM0/081yPxMfrfpiGoVllVrfM2s/gEvu7762DiPSSz4Xbr02LwWFwEnJgNObIwXR0twOpFHM77BYCBxTjIpTlJOZiYcMWnN7/dLrTablOi4PgcYF7FmsynfZ8bGnzx5glAohFQqJZ4Om+swDr67uyvbrW5vb0ssnN+ra2gBSKIjB6MebKaHbC7kehJQDjWlTP3aWZnx+p6Ysr+ZHW5eG34/z4evZ/iCRICG27IsNBoN7O3tSStQkgaej1OPhYs0MUzoa8976Pf7JSRQqVQwmUwwNzeHRCIhOwvq95n3lM1z2u22dNNjrHtvbw+lUgn9fh/FYlGaXHHr736/L7kymlyyZwYJAD9rPB7biJuee8TL5HLK9roUVjedAoB2uy1dQLe3t9FoNKS0kgmGWhXgObCDJ2Vlc4H2eg+aYFE5YLiQoRJuac5wn14UeG6cAyRkpld6nhfciwTTrng8HlsFFatbCCcScZwwwqxroxdnduPU3rxW1fTxvuz79Ou18qtzwvgZF9HWnXjXQlP25oXnxdGvMZka45Zerxfz8/PSoIVGgHH4YrGI7e1txGIx2dJyZWUFPt/BrnvMH+DNZhITbwgbmdC4BgIBSUz87//9v+MPf/gDPvzwQ9y9exfz8/NIpVIADkrput0uPv30U/z444/Y2trCo0ePEI1GsbS0ZJM3KXsBB1sn8/jpRZkkSF9HDnayXXpFPH7NOAlzIdHXVuc06Ed+n04kJOHQsqlJMPge7mqXyWQkpOL3+6Xp0xdffIGnT5/KZzIvgRPfSb25yND3xbIOyuIWFxfh8/nwww8/2Ejp4uKixMHNjYA4V1qtFr7//nuMx2PcunULN27cwJdffolHjx5hY2MD33zzDbzeg7Is4DDURmLg9/ttbVCDwaD0yqjX6yiXyygWi/jjH/8oZb0ej0dawPJ4X+Yh8/5RndMkk3I+peCnT5+iVCrhq6++wu9//3sAwPz8vJwzwwQMD4TDYbRaLeniGY1GZUdBqifAQUOulZUVSQzmnOVukaVSSewCWxPrnBY6DoSTcjNrjJ4lUdDKwEkWrDeNo8YJbQtg33PDsg52tdzf35d8GlNF1fbI/A4nJcLpOJirxlJwOpUktEz+5Rhw8uZnefbablLFYtkubb9+/0UicyfuM3AUOGD1DdZeqZZI9c5n2pslo9MNTMw2kxwsOhMaOJSX+F4OCKoOfr9fjKhu78vvq1ar4vHu7e1Jz2t6Q2ZWsj5XwF7+ZJKB4wyKVxk4pmfnpAyY9808HnOS8XrrxEb+jySIvefZR5/3xjzn82TAThM8H3rXzOznttrxeFzq3GcRaX4OPXqPxyNhGOBQBdMVCQCEBHOfDKoAw+FQdi3sdDpoNptoNBpS+cLun7oCRM8HZu+/7Lz1fTW9o0qlIs2FxuMxgsEgEonEC4sxFQ09181cFW3A9U6bVKlYokwvkwRbN1kizDF/0uqWsx6/53FRcZrb5iKoE6m5SDMB+2V2apbd0kq00zFpO6jbZ3Oc6jmp3+d0j4+67k7qtOmoXSScuLTQaaGfJTXqGCvJwHh8sEEQjQbfo5k8pUQ2H2Iy1HR6sHNZp9OxZeEvLCxgPB6L58T6abI37c3xsxcWFnD79m1MJhPs7e2hUqngH/7hH7Czs4ONjQ3s7+9Lq1k2KNId92jEJ5OJKBG6I5webLqigAOO3roeOPo9ZqMTc6Ca15Y/ejKYnQP1azUD53eR8VL6TqfTmJ+fRzqdlu6COzs7qNfruH//Pv7yl7+g3W5LHI4Z9lwgdWjiok0MJ9Cw8N51u108e/YM4/EYm5ubEhev1+toNBrIZDJy/X0+H1KplFTS0INlNjwX6fX1dbkf3KqXbbn19zI7f3t7W6oH6PUEAgE0m01pysOtjufm5kTtiUQiaDab+OKLLyTezzFulqTq+C1wmFNDEsO512g08Lvf/Q5ffvklJpMJlpeXkUwmsba2BgAol8vodrt4/vw5yuUygMO+B5ZlyTVguSFtQDabld99Ph+y2Szy+TyePn2KJ0+eIBwOY2VlBZZlyTn3ej3xRgnzXC5SlYu2oWdNTPTxAPZ9NcxcIdoYdojd39/HxsYGIpGIrdnZcc5Jh3ecQgn8XjqbzGPSKgWPw7TR/BzTq9eER697ujkcw3a0ubwOWnW4CDgRGTBZn8l+THZlhgm0MsByQXqgJuvTrR4pM7FWmtnCvPDsXcDOf2aMX3tkvIksX2SssVKp4MmTJ3j27Bl2dnZQq9Vs22Hqdq+mh6HrzzUZOI7MP2sAzjJS+jrqief0Oh6LeR9MRYOvN8uAdL97enGtVgu1Wk08YP0e3fvA/OyLYnSPgpacSWxZTdFsNiWZlLsb0mvn9dE9HoCDsZhOpwFAiGUqlUImk8Hc3BwKhQLq9Tqq1aqt8oNjHYB49kyq5Xhvt9toNBqitNFjZpiLbYKLxSKm0yk6nY5tt0zTwwJgI4+UXnWJYLvdltBaNpuVrYuz2Swsy5L5OZ1OpQzQVBj0+OTxMg+CY5l9HqbTqexISumX5P+oxWWWFzgL52nxfVnO0NvErFCB/t1cqNkKu91uy0J9Uttw1P0zFSZTlaa9fhkRMM9REw9zXeEcMz/notm8E21U5LSA6ax8/VrgxXpTAFJX3Ov1xJPifu1UBhKJBCzrICbLmAwle8uyJHmo3+/LYj2ZTKRvgQ4deDwHjXbm5uaQyWTwt3/7t7hx4wY8Hg/+6Z/+Cc1mE7u7u2g0GpJhzYRCboChY480NFQgyAppyDRjpIHTXjPhxEw5eJ3q0vUA42A0ZVWtOvD1vO660QuJAr+fiwwNKZPg2K+BpXLdbhffffcdtra2sL+/L+oLlRcuUDTYZpLWRYY2Lsyn0Js9LSwsYDKZYHV1VTzh+/fvA4DkljBWfufOHdy5c0eIK3CYoLe8vIxwOIzFxUXcunUL+/v7+PTTT1Gv17G/vy9G1AyvmWOA+6wPBgNUKhU5jk6ng3w+j9XVVQwGAxSLRfT7ffzwww/I5XJ47733kEqlMBgMpC01AJkXbEzE/Ubq9TparRZ+/PFHVCoVNBoNmzfYbDbx+PFjTKdT8do1EaDSwnnF8cl8Ad3Yiue2u7uLer0uZb/8n8dzUJmhq2S0d6avk0minRwbp9/PCnpROymZeRPQnrlp53VoSyuSrGjZ2tpCNpvFxsYGstksVlZWHPfv4PtNguHUZEi/XivBqVTK1lSNKoT+zKOSFTWR0M+TEOv1hqWTL3PoziteKUygFxEaR33y2kjpvwFILToXUd23nwsU+95zUWOFwHg8ltIr1rUzlkijwvfpH+4vPz8/j5/85Cf46KOP8Nlnn+HLL79EvV7Hzs6OxB8pk2vvQ0vwBMsVaWDpTetBo8/BHMA8X02cjiIDTnFnc/CaUpapBpiylZmHwXuRTqeRTqeRzWZtUvdgMMDjx4/x+PFjVCoV8Ti5QOhF7zKUEprQyoDef93v98tWwPl8Hvl8XkIHVA/0opZIJHD37l3bZ/NesIZ+bW0Nk8kEz58/FyKguz6yZEonAQKHY46qTrvdRrPZlPvDzmmLi4vY39/H8+fP0e/38ezZM3Q6HVy7dg3BYBDdbheNRsM2nzgvGYulGlCr1YQMkFBbliXGkgt0p9MREsFj5g/HoNnki+RA25JyuYzxeCy9CwBI2IEJlfxM04gftZA6/f+8jOHzuMBoMuCkIpmKJ5Ucj8eDvb09sbvZbPaF9sS8f6atO4oEaWeI4N4oPC6qu/wOvZ6ZMMcn/wcc9jDQjcH0+V9EvFKfARpEJ2atJ61+5O9aNqL0r5/nZ5sbWOjfeXN0KAGAzWNhu2MSgU8++QQLCwuIx+OS6MXByIWcnhsXdSYrMZapPQ56vzR6AGzGml3ctIxuQidOccA6yewmTLnf6R7p66zfo6+n/mH5ZjgcRjqdRiaTQSwWk30JmFhZKpVQLpcluY3foVWAl8mHFxU6Jtrr9WxhGODACOl20+yit7y8bCNHCwsLNoLZ7/fx4MEDqRLgpj0ej0cqAtrttsjljM+PRiPJ2dBbWnM8UT3Q45d7glSrVcne9/l82NvbQ7fbFdKtw3jRaBSWZaFYLAI4yOBnv492uy1JfPQI2a6a5BA4LCvWVQI6OZg/7IrIEB33IRkOh6JwENPpFPF4HNFoFPF4XOaDJhLEq4y/87Lw6oXWyY6cBY5LnLTMTrLHLP/NzU20223Mz89jPB4jlUrJFvD8Dqfv0QTD6VGvFaFQyGYvzcZwxwU/m/OKijK752r1+KLauhOXFuoL73TxAbsEZ9443mB61vrmcxIzpqkNmvauqUYwYYrxwsFggF6vh06ng8FgICGItbU1/P3f/z3y+TwCgQA6nQ52dnbwww8/CFnQjXJ0lYLepU1nojKMoDOpe70eLMsSgsEQBsmGHoC6DFBLowBe2ONbQzNTfT31fdCxLLPrmo7r6w5vbO8ci8Vs3RlDoRBarRY2NjawtbWFzc1NPHv2TFQUqg264cZRY+OiQkuf7OYH2CVGn88n3i+JaCaTwUcffSShFpIE3huqXr/73e/w/Plz8a65wI/HY0kALBQKiMVismNmo9GQZDsmBbbbbSHZvDcsI2w2m+h0OigWi0gkEpIAOBgM8OjRI/j9fvzyl7+0efzMlZlOpygWi+j1etje3pYdO9vtNjwejxARzjnuVMhrox+pNJg9Crzeg8ZG3AUuHo/bei+w7wKVu0Qigbm5OUQiEWQyGfHSmECm8xpeZqDPuwE3Cfd5gOkQOoWraCN4D6gWbW1t4csvv0Q+n8fCwgIGgwFCoZCEjM11g3D6v2kLORc5vvTr9WvMe246t/p/fGR4uFQq4cGDB3j+/Dk6nY6takGPt/NCKI+DE5MBMzkDcCYIR3mt/Bx+LmVoEgAtFXJS8+bRw9ElRHwNFyQuvNlsFqurq1haWpI2sUxA5E1lDEl7JwBshoWLOc9DqyB6kaDR1NnY5jmbCoe+NlpacxqsptxpPud0zXkcTgbZPG/dO5wkiNUSOzs72N3dRavVkn4QZp8CTWDOk9E6LWjPU/8POLyurVYL5XJZtuWmusQtsklam82mXPderyfjnoS21+uh1WqJ2kUS5/V6hbTVajUAh/F81uebx8aSQXqXTOJict50OhXvplQqYWtrC7u7u9ja2pKtZynPN5tNyQ3o9/uSwEcizcZITqEuTWT1mOF10LkDOqdGL+y6Q6FuXcz5rMMxplRtXpeLhvN23Pr+msd2lNNCNZXdaMvlsoTa2ObddIbMseQEp1ACCYtpF49L/swwB8t56/W6JAprNdCJeB4VmjpPODYZ4GKoM0B1UxDgxa1H9WKkF1k9cNh6lVnJvV5PMrO5FwCTA71erxgaStr0nLhJ0Xg8RiaTQTwex1/91V/h7/7u7zA/P4/l5WUEAgE0Gg2pve50OuLdk1zQWDI5kPFhyqkcpFwQKW1almVrpMFz1iRKLyQ6TurUmGdWboAmW1qlAPDCwq/VCJ2JblmWLTubRCAajSIajUoFAUMujx8/xv/4H/8DxWIRT548sWUCay8vmUwCONyZkeemKy4uMnQsm+dH0sT7fv/+fTx//hwff/wxbt68iUQigWQyiVgsJiR3Y2MDP/zwA+LxOBYXF9HtdqWUk5UDlUoFu7u7stBHIhEsLCwgFovh3r17uHXrForFIu7fv2/r6haPxyWPhVuDEyR3TMDL5XK4evWqEL7pdIr/9//+Hx49eoSdnR08f/4cV69exb/7d/8OHo8Hn376Kfb29myZ4exqyL4CWkGjxE+DzIWa1485KsFgEMlk0mYrOC6ZGzCdTpFOp23nk8vlsLa2JntDsJsj742WiHn+x5GdzyOc8pbOGtrWmeuATjgHDntA8H50Oh3JPUomkxI6Gw6HUlHD9/C7+D3mdx5lJ/ndxFEOFZ/Xjp6Z/7K9vY3d3V189913+OMf/yiVVTp/Tds77Ticd0LwRvYmcHqvKRsBhzFzLsTcsERPeO3d6LiT9tDNvviJRAK5XA75fB7Ly8tIpVKyPTHg3BpYe8n6NSQiRxkU8z1HXSfzOujPm5Ula/7O9+nQjdNrNdEwkzy1waUSwLAAn2O3OyawVSoVm/dlKkSamMzyFC4yTCVM/857zwQ2bv+s+/VzEWy1Wtjf30ev10MoFBJSGQqFJP7darVsZM/j8UitfSaTwdLSEvx+PxqNBnq9nuRxAIeLvplkqO/rdDpFNBqVDGgu4tw5dH9/H6VSCfF4HI1GAwBQrVZl8y9WBFHCb7Vatk5v/D4eDx+pIOj5xHFKZZCLiSYXnNtssETpmUSDx6J7lejvugzqgJ5r5wWzCAGf0//Xtp+On9/vR61Wg9frRbVaRTabFQJslkUDzo27jsKsYzvOefGRyhn3IalWq6jValI+zDE3S9G9KDg2GdCe3Sym5ZRUCNirCfh/yomRSERKBCnZ08DE43FbkxbWYWvpicmAHo8HKysrCIVC+NWvfoU7d+5gbW1NsqMZ02QDE+65To9fs1ASB3pcjIUHAgGkUikpHYxGozZPh+RGD2InJgscyvTm//k3JwDPlYPNVBH4/ZrQsJZcf46Zd8HPIQtPpVJYX1+XpjWdTgfff/897t+/j/v372N7e1u6Deoudvp7WSZH1YO/m2PmIoL3wrIsmwegw1n0dgFI7kUsFhPjUalU0Ol08MUXX+Czzz6T7nwsJZybm8Pt27eRSCTw6NEj/OUvf5EFMRKJ4N/8m3+Dq1evYn5+HrlcTvoRcP+BbreLJ0+eSKKdx+ORZCfOKb0Qt9ttPHv2DNPpVFQwtvamytBut/G73/0OAGS/EB1CI2HhuDGvF68NF3MSbo4ZkhE9/7xer1RgsPqBvUG4PwIz03/44Qd0u13s7++LOqjDEJrg62NzCnGaOE9GnfP/vJCBWddLEz5t/3QlDtVCJsBubGyI4vTkyRPcuHEDd+/eRTgcRjKZlNwtHVJ2OhaOK6djM4mU073la3QCLsN2z58/R7PZxNdff41Hjx5hd3cX5XJZtu6msq3J7KzvOa84UZ8B4OXxllnPmTeCEjTZPCVnZnvS+wiHw7Zse510x+ZC3W4Xfr8fS0tLSKfTeO+99/Czn/0MqVRKSr44QJlsmEwmpbOeKdcz9q/rRjudjpQb8ti4R4GuCjCleye2qI2hubDr550qAbSCQQ+QE4//03u4EyQ0+nh4fVlKOD8/j2AwKAkx+/v7ePDgAZ49eybNdYDDBDATumzRVAguOhkADhc4XjfG+LUB4flS+g4EAuh2u3I9uQPms2fP4PEc5JukUink83npSHj16lWk02lYliWhsmg0ivfffx83b96UmGo0GkUqlRIyzQZaw+FQchWYzNhutxGNRm1ljtzmWy+cvV5P5kEoFMJgMMDDhw/lnLTCpO+3fk4bQy0ZM5zEhV9X3rBpEsctJf94PI58Pi+EnnkR9CwrlYps+KTnopPHai4IprJFOJHzs8asYz0POMprN6+9fo0eg+12G5FIRJpfLS4uCvkjySQRNL/7OAvvUffZPEatTDEhfX9/H9VqFU+fPsXm5qZ0wtUKFcOjevxdJKXgRHsTvC5oQOhd0Vvf39+XeDX7Avh8PszNzWFlZQXAYRLR1tYWWq0WOp0Out0uFhYWcO/ePYTDYaytrSGRSGB5eRkAUKvVZAtk1r7H43GEw2FcuXIFv/jFL9DtdlGr1SRcoSVZyrY0Xmz7qmPxNHIkM6a0ay6KXOSdFkeTFHBhdzJi+nndcpjHowkDs3RJYHguPt9Bi1xuy8zSuEePHslmM3/6059Qr9cvVFvNNwUdpuIue3qDEo4XluKVy2VMJhNsbW2h0+ng4cOH0kKYyYH0jsrlMoLBIJrNpmw9PDc3B8uypBFRKpWSkJUuGwQg1QGZTEYUrUqlgmAwiOXlZQwGA+zu7sLr9aJcLqNSqYhxpccFQOr2gcP5ytJZ7ifA8UnPSY9Pnaiof7TSxc/QqoEp5ft8PiSTSVsOC5MF6YHxeEkCdBKxU+LYRYZWps4rnMKVJJZ03EzHhurVdDqV5m+DwQCNRkNseTQaxfz8PCKRCJLJpNhwlqHqcJRpb/Wxvex4eWycPyTujUYD33zzjXSpZVUL1zLODx4Dj0nfs4swDt8qGQAO46aRSERu5t7enuxMyJhpPB7He++9h1/+8peSONjr9fD555/L1qiNRgOLi4v4+OOPZeCEw2ExCpVKBTs7O1JCFQ6HcevWLSQSCayvryORSEgyiI53UhnQpXk69m5KUfTQtaEEZsuRTu/XoKFkLF9/lhkT5Wv0pNBMnQRobW1Ntmtml0SWZrKcBziIef/www949OgRPv/8c3zxxRdChi7CgH5T0CEWerLMDfB6vbJBkK55L5VKaLVa+Oqrr1CpVPCnP/0Ju7u7QoTp9bfbbZRKJQSDQeno5/V6pRQ2mUxK6Sd3jdT9+7lwBoNBZLNZjEYjPH/+HKVSCXNzc1hdXYVlWdje3obP55Nthrlw6hI/syxRKwAkkAwVMJygs/xNRUCTAU0EgMO+IACEVFDpYhiEpcPhcFjIAA2szi8yyYCZ53PRcZ7JwFHHpBVKTQaBQ7WQjt729jYsy8LOzg4ePnyIVCpls9fJZBL5fF4qdViCrZ24o45PL8raDpuEgGRkf38f33//ParVKr766iuUSiVUq1WpoOF4JdGhOqYbsemtms873joZ4OJlWZbsP045kskjvDmNRgM7OzuSNOXz+aR1ZbfbRbfbRSqVErmfVQI0dKwYoOfOTWT4+clkEoPBAIVCQToQsppAkwAdQtBZojoGpuUiQsulpmEyByAftUHUg1wTCO1pmaRC/yQSCSQSCdloibXrVAhoSNmXoVgsotFo4Mcff8Tm5iYajcaxarTfFZjXWveP0NUulmVhf38fjx8/RqfTkR0wtRfN8UKvl8Rgc3NTNuIieaMnxNi+LqWlV8VHtvLmGGIDqel0ivn5eVHXOA8Z9mJVjZZIOb5JOCjb8hhIiLR35JSnYobFzLwBvg84zDvi4s9rSgKkyyRbrZaUOGrCQrJLIv2yxN6LAlMdPC/z0smW6VwB/bepHGhoZ4Y5LKx8mUwmSCQSqNfr0h213W5LeSyTa1nB8jJoW8q5w2TcYrEofTIePXqERqMhoQxdQWeO2VlK8HkkcE54q2RAJxrV63WUSiVpapNIJCROyov69OlTdDodFAoF/OY3v5GFXyfMsYd6u93G999/L0aXMipB5sZ61kKhIHu/JxIJKU9ivJyZrjpxhQZI74hFg0ovXXs+2rsy5SInOYuv0cloOtPasizJBNfxLZ3gyGP1+Xy4cuUK1tfXpR7bzFHweDyyFfHOzg7+7//9vygWi/jss8+wu7srRE3H5d5VmBIn7wurL/hIg9Lr9WQs7u7uSkc+EjwqP0ySrdVq6PV6ePz4MSzLwvr6Ou7du4elpSXZH4L1zbrBiZmYu7i4iLW1NaytreHmzZsIh8PI5XIYj8doNBrI5XLY39/H06dPEYlEkEqlbDk17COhExfZ2GdhYQHhcFi6DrIdMDsb8px0iSvzIjg/tMLE3BOqcXpsptNp5HI5idfyO7Qx5jzU6gUbEpFMkeQ7qXQXCabD4OTVvk042S9zfgCH20hzHJjv0Z/FcUI722q1UCwW4fV6RRXiHjOZTAYrKytIJBK4fv06EokErly5gmw2K5/JH00+dSiWZJpbsT948ADFYhHPnj3DkydPUK/X8eTJExlDtMl63xszcVw3xnOy9+cZZ5IzoAcyFzjWRrOqgI1EWq0W4vE4ut2uxDXpgTMWxS5lLH1izbW5he94PJbubolEQrKr2QWR+66zk6DJ7nQ8VA80faNN48zB7RRPMweKNpJ8NF9nhgJ0MiO9fhIutmrVnRQJLijNZhN7e3vyUyqVpNJDd4dz4ZyRTEPD68QYe7/fl5bBvV5PPGe9GGrFiYm03Hp3bm7uhV4O2hvn9+gdOqkGEfSOabzYbZAEmPsX8BioPFDB0Al+OjFqVhKXnht6XugcFrMSif9jmIE/ugOpnuPaEaAh5jHwemrjr4/R6fG49/28wLRLZ41Znq95bE7HepSsr50ofgdVHx0iYuJhIpEQ8qf3u+HYNxdpqmuDwUC21t7Z2UGxWJSyWuam6Y3B+P36vGnj+fkAbM7fRVEH3joZoOQTDoexsLAgN3YwGEg71vX1dRQKBUwmE5TLZUynU3zzzTdIJpMSGyWBYKJUtVrFP//zP0ur1maziXQ6jXw+b/NuvF4vSqUSisUiNjc3kU6nsba2JmUslnWwJ3qn00GpVMLe3p4Ydg5Qv99vq8dnIhbLmszufsCLZZf6/yZJYOtac5Hh84xL0TNlTJWeGz1JXa5JA06ZdW9vD5VKBX/5y1/w6aefolqt4uHDhyLJJhIJMcJOEt+7DE3u9HXRIRXW/uskQ+71oPvzM/ZOJYZELJfL2fbumE6nqNfrogxMp1Mhcvw8ANLFjQYxFoshkUjA7/fj6tWrWFxcRLFYtO2WyDHMvBcAqNfrNk+cpZThcFjGiG7DqhOmptOpEHp9XRjj1V0SSQSy2ayto2Cz2ZRyVm6VzTFM9UETbB3O4wKg+2Hwvpn38aJBL5BOFT1ngdOyC5wLWoXjuXIulMtl1Ot1+P1+PHr0CIFAAF999RVCoRAWFhaQTCaxvLyMtbU1m/LEz+t2u9JFsFqtotfrSc+Pcrks+4MwQZgkXpMJs2JFKx668o3hN+Cwp855xlsnA2T67NuvG4uwPIjNU1g+yH3iKZFHIhGRYvkc95Hf39/H/v6+SLSMdbIUjFsh00jzJvv9fvGqWNEwGo1Qr9dtsrzO2DelTQ4ErQhor15PGqeKA/5OuZ/XTA88Dm6GPEgGotEokskkIpEIcrmcJLHxM8zQQqPRkMz2jY0NNJtNqZsladKM1iUCL8JUCjQ4vswxQeKoxwxLrFilwHHNUBTHq9lyl22FSdp4TCw11FuAA4eLaDKZRCqVsil1zKvhuOI5UI2YTqcSMzXzFTgv9LXQZYRcpPXmY2wpzkcS13g8jmAwiFarJXlBnPeaODspZmYeglYxTJn9IuM85QucJsxQziz7pbfvZmguGAyi0WjIfhYc63osA5Duto1GA6VSydajotlsypxjlYuZ76KPR+eMkdjzOVbeaBt/3sfdWyUD9A64IxkNI29Up9NBv9/HxsYG9vf3kcvlsLS0BODAU2FyBz/L4znYv5y90unJ0LhMJhN5jgNmcXER8XgcS0tLKBQKCAaDUs3A7Xq5yQzjrd1uF8ViUXrKsxsVByUHAA01jZ7TRhlaWuJA4mDSexzouCs/S2eNc68FhgdYd87QiF7EeY0ZF6vVavjyyy/x+PFj7O7u4unTp+Lp8Tx4HExce9dzBjQRI4HlIs5JTwMQDodt9xCALN4650MbGcqaHFelUgmfffYZ9vb2sLCwgEwmI94PF2OP5yDng8aLn9vtdrG1tSUdBFdXV+Hz+WQObW5u4vnz50ImLetwR0FKpuPxWBIHOYaoWvD7aPzo3TMfhws6P9ssS2W7b5J9J8+Kz+kENG2QNQlhaEwnOfIe6TDdSXEeibAmOOdFGTgtkMRpe0M7rztK6jHCRZbbyQcCAVSrVWxsbMj41ioKm28x14yVQXpxNxO39djTuxPOsokmQQAuhgr11skAY/jaS+CFpYFkCdR0OpU+A5R3uBhTWeh2uyiXy9JshTFWyppc4EqlkpRlcUFlljY3m6Ckk06npeRuYWEB3W4X6XRadmxrt9sSNtADg0Zae4CmZ2IOIB0n1YlWOl+A5CYYDGJhYUHqbll3zoXEKaZN0Ov88ccfsb29jd///ve4f/++dNjiBNPxulQqhWg0euFKZN4UtEEC7DkwJHU6+970UkkitZHh+/gexvjr9Tp++OEH9Ho93LlzB/l8Hnfu3EE6nbYlsMbjcRsZ4J4eOzs7+PbbbxGNRrG/vw8A0qODCYDhcBiJREJaJFOVMzf80gYXOMw34fnR6w+Hw1haWkI2m7W1Duax6T0rvF6vfJe5yGtjr1UU7WFpUs3rp+cJqzpMxcIJ52mxfxm0dH7ZwPurQzvaaeK9pN1luIkLLjuk7u3tSTiX6hjHMucNx6V2wnQ1mKnamlViWrF1Oge9tgEuGZgJy7Ik8YnsTk9aXuxGoyFlUNFo9IWkDcaSmAFNQ8MbayY2sdyQJUrtdhupVArFYhGxWAyrq6uIRqNYXFy07Tg3nU4l1EAjppNLyErZZ57Z/BzEeqFl7Eh7/CRGfKRnybp1nj9DGVQvzJ4H5iDlJhqtVksaerDmnTvemYMXgLBpxpHfdVWA0N6KjllrA6Yftfdqehr8PF05YlmWbdOefr+PSqWCb775BplMBsPhUPJCwuGwdAvkDnAkG+PxGOFwGOvr6wgEAjYC0Wq1ZBEGYNvsi/8zjaIZMtJER2/37fV6bYs/vXN6Xjw2NgxjCNDn84mixzmgw3kmzLCA7ptB29LtdtFut21zQuMkxvk8GXI9vy9buEArMdoZ4tjTtoj20lx4zfutu4Jqz15fO6fwhP6b81sTeHPum/Nb5xjoRx7HecRbJwO8KEzi0MxMe9kejweVSkXYGwDpsBYOh8Xwae9cMz0ANjmXC3K5XIbHc7ARC2UkSu43btxAKpXCjRs3kM/nMTc3J20xFxYWpOUxwxNsVcmysHQ6LbKnlvAYP9aPPCdtAOkdMtEsl8thbm7O1kEQOJT+OSA5eLVnP51Osbm5ie+++072Dm+1WpIQyetpDmCv1yvEQ2fRujgkW8BhljKNk25JrY2Pk+ehY58MyXBBjUajCAaD6Ha7aLVa2NnZwe9+9zvE43FUKhUsLS1hZWUFS0tLQiIGg4G0OibS6bQ0G2IVTafTkfHP4+Muh5w/WuHgeOOCzHPTGdo6JMaKHd3FkK2CdYIt1Yt+v49Op2O7nppwUF0zr6cOrZAE0FnQPUZqtZpNKiYu8njWsfLLBlPt0fdMJ+2RYOvt5wGIMqvHjLlJlxOR0uNbk3VTkdIkVH+O7nGhlV7OKU0uzisRAM6ADOjYC+v09eJtsrperyeDg0aN5VVautZEggu/ZoV6ExWCEiVLCUulkvQXaDabqFaraDQaiEajqNVqtvI9Pdi4iFPa1CV5jBvREJpkQDeuYXiAygDVCN1lS+co8Pt4LSn1ssPcjz/+iEePHqFYLKJSqYgRZlmO9rr0YqUZr5lI8y7jKG9M3099n0w1QP+Piyhw6MEwTq4z+7nAlkolW34KiUin00GxWESn07HdO+BgXvR6PVHPCC7cLH/UyU/6XM1z53tJcrSEC0BCTnzPaDSSHu4kqVQIzLiweY3NMWkmJPI66zwX3SPB9PAuC141B+Ii4KjzMr1rp3urw3L6tbP+p3+fZd+00+X0XpNoOoUQLoLt9FjHHFVM5HutL/McZsHX63VUq1XEYjHk83n4fD7bFqRabuWeAB6PR3IDtLGgXETDylpt3hDW3Gs2TWVBe0C8YTxGlmUxQz8YDEqP7JWVFRQKBeRyOVy5ckXUANOAAYflKJROtexuZkHrQcP9EXQYhYsFY1/NZlNk/7/85S9oNBrSA5+laNpbM9sK0/tneEIbWvbJJzE5DW9kZ2fntT/jpDiNsasXM94z4EVDwti1Lvfjc1ygdGIpxwSTmXjtGSLS4L2LxWKIRCLSP2I0GkkliFZ3EomElE7pxZFjlXI6cNiwyikxiuerm1ppRYBgjg7nJ2BvOWwmZumsa85hnZRIdYCEmHOB90KHILS6oUmy7jXyutjd3X3tzzgpzOPmPdfx8MuCozxoM5FUv0YnVOpws1bqZhF4/Xna0TKXRSfCYJIRkyScpxDBcezumSgDZomQ9kZ5M2ks6EXTi2V5lZZizM/QoQb9uTqPQDM63nxKOt1uV0IB3EWLe8/3+33EYjFbP3dK+ezyp/MW9PkAkN7q5vlr6EGp5efJZCKeD7O66/U6isUiqtUqtre3Ua/X8ezZM6mZpQxrelTa4DtdP30cLg7wsuuh1QEtHx4lUZuSqO4maY5PJsP2+30hrGzO02w2MR6PZcGmctbv96U8lgSC95uqgelpm/FSbSBnnT9fw+ZAeiyRHOhFnvNCy6o69qvHK8mLztDWUi3zFHTSoWVZtut6WeDkdV5WOJ3jUYuxfs3LFmC9NpjKgfl+85iO8/nngQCcFG9VGQAOb4Iu/aFxoKEytyLV79UtK4FDzwqwe71aagTs7TGn06nNe+dzfNQePl9H74TJgSw9ZEZ2IpHA7du3payKr2UIgZ6Urn81S4N4vjRsurFStVpFv99HsViUVrdc7Jk8xqoINoXh5k5+v1+6LOowClUXczMk/ZwmUKeBi6wM8FEvXDqkZVmW3G8mltLL1waBi5Ye8zohls9pUglAEvPM76dHDEDGJe89w06cc/r4SRj4P32M+jv4PTxHPV9JWjhOuF0z57Vu3KKVAeBwLLI0UM9rHXrQioX+0aRZlyECEPViViXMqxjo86AM8LqyGuoyKQOA3QPXhJr/448mRWa4SX/GUR76UWGBWcrARcW5Uwa0h8EFlpNVe9IEjaR+TSgUQjAYlAHg1JJVN5ugIaEhpNGg0dYesZbkzZuvM6MBoFqtynkAQCaTgWVZSKfT0n2N7V4DgYCoCVre1RIrYI8bM+u63W6j1WpJN7atrS3pnsVNWnRMFrDvLc9rwO/SjXBYhsksbHPTG5aLsUPkuwxNKp2SiDSR0gutzgnRnq+W9HVpoR7zJikgNKHT7Xi1CjYej9FqtaSzpt/vl/4BPFbK86aKoYkwP1uPC50wRXJitlk2z5f/P8rr4vdrVYDHRlWMRJXny/ug/+fxeKQa5zImwV5WdcD01rVC6UR69PmbIQY9jk0l1HzvrGN51/DWwwQm8wNgu2G8qfp1NKh8jZlZSqOlBwyleLO0xOwtrXud6wXPJCUvGxzT6RTff/+9LP5UAagEaGXA9LqAF7ulkRRQHWAbWj6yQRNLM/Ux6/Pi9x2VLKgXFN4PGlkuAC4OYMYUTQMEQK69VgTM8JQOA/Be8z7phU57QU4hJXNc0ksGIMRTdzHUipppQPWj03mapMRpzuoxrMN1+lo5SahUE/T/SeT15zkdK/DifNWVO07X6aLCvC+XCXpsEk5yvn6O43KW138Zr9ObwlsPE1xWeL2HO9eZORB8XkNLXFpqppelPU8niVQb4YvkKVzUMMGrQJPas/iut/n97wLOYuzOinezC+ll6kKoyaJJiAHYiLF+PZ9zMRvnLkxwmWFZlsi6gH3vAf6tYaoAmg0zjqqZMp/XJWDmxHAiA+4kOTu8zWs/a9FwcfngNOcv873WSq4TLvO5v024ZOCUoOVZM4kFmK0MOE1s3arZlM5MRcCFCxfvHrQNuCyLoRmC0nAdnTcPlwycIsyEFrLZWQksptzlFDMzyYL5404IFy7eTVxWG3DZzueiwCUDpwhTynKKbR0HejcuE+b/nIyBO5lcuLjcMBNS3Tnv4nXhkoFTxutMSp0B+yohAFNmc8MILlxcXrihQhenCZcMnBI0Q3dSB456n/79ZaVDs1QAp3Kr43y/CxcuLh60MuDOcRenAZcMnCLMpirHzYJ1IgTme5ySa2a9n4+XtR7ZhQsXrjLg4nThkoFThFOFgNOjuXjP8ur1a5zeN+sYZhEKFy5cXA44lSS7cPE6cMnAKUL3DuDjUYuyWXY4q6Oa+fpZfxMuCXDh4vLDDRO4OE24ZOAtwGnCvkwNcOquZf7vZUbANRIuXFxOuL1GXJw2XDLwBqD7Cxz1GqdH4Hjlg8cpYXRLjly4uLxwlQEXpwmXDJwitAf/MkJwVEKgyfiP+qxX7WXgwoWLiwtXGXBx2nDJwCnitEoLTZhVCS/z9t0NPFy4uPzQO0K6cPG6cMnAKeIkWf9HfYYr/blw4eJlcNUBF6cJlwycIpz2FDguZuUMvIxg6BDCUb0JXLhwcXmgmw65cHEacMnAKeF1GfrLqg1m5Rg45Se4noILF5cfrjLg4jThkoFTgunZm9692UtAb0Xs9BlHMf6XVRIct7rgqAoG8/v4vN/vf6HL4WQysX2G2YlxOp26zVFcnDmOm79jdhE9z4utbj7kVg+5eB24ZOAU4fP5AACj0UgWP05QLqKcrOPxGJPJxDaRuYgeB8fxCrgI87Mty4LP53M0Gkd1LbQsC+PxGF6vFz6fTx49Hg+Gw6Gcx2QygcfjkddoQzUYDM61UXXx7sAkpno+mM2+LkKXPx7jSeyHCxcmXDJwijiqZ4BT74DjLI6vs4DSOMw6HifDMSt5ka/lwq8/TxMJbTwDgQD8fj+i0Sj8fneouTgbmB4/iap+Xit2wMHc8Xq9CAaDCAaDb/+gT4Dzrl64uBhwLfQpQXv29MbpmU+nU4zHYwCHnof2NsxF+yQT+6jFm4ZsOp1iNBrBsiyMRiNZ0LmQ8/u1auCUpDidTtFqtWBZFvx+P7xeL/x+PwKBAIBDojAajQAAa2trWFpawvLyMu7evSuvc+HibUGPaz33tHKniWy/38dkMkEqlUIikcDCwgJu3Lhxrsksz8ephbkLF8fF+R3hFxhO3QI1QTjqtfo9x5X8Zr2Ocj5/N6sdaEBM9cI0Kpog6BwBek/6+3QvhGg0imQyiWw2i6WlJZcMuDgz6DAA55apGDCMBgDBYBCRSATxeBzZbPZckwHAVQdcvD7O9wi/QJhOp+j1ei/830miNw0T/89F9qSYRQb6/T76/b7tNT6fDz6f7wVZX3v0XOC1YsH3BQIBWJYluQKj0Qjj8RiRSASrq6uIRCJYW1tDMplENBpFJBLBZDLBH//4R1iWhd/+9revdI4uXLwKOEY9Hg8CgYBNfSOxDQQCiMfjCIVCWF5eRiKRQCKRQCwWw3Q6RbPZPOOzmA2eh7tduYvXhUsGTglcIOldcCGdJd05xfLNpMOTqANOxzMajTAajeD1ehEIBGyPmoBowwjYe57TU+I5MRFSv4dkIJvNIp1O44MPPsD8/DyGwyHG4zH29vbw+PFjIRsuXLwtcB5wTumqHhIFn8+HUCiEeDyO69evY35+HtFoFOFwGJVKBU+ePHllov424KoCLk4DLhk4JdDzACDxdJ2UNB6Pbd64ltidego4Zfwfd8LzdYyVEswdML9PVwjo9+sKAf5NMlAoFBAOh5FIJJBKpRCJRJDL5RAIBNDtdvHs2TPUajU0Gg3U63Xs7++fa4Pq4nJC5wwAsClhgUAA0WgUsVgM+XwekUgEnU5HcgcGgwE6nQ4qlcq5rijQ5+TicsNM3tZE0On3k4wJlwycEpiwxzJCxhhZlkcywLJDLsB6EdbhA60omOEF/b+jQFlfkxGqF/q7KZ/yO8fjsbyHZECrBH6/H1evXkWhUMDVq1dx+/ZtAAclld1uF19++SX29vawubmJ7e1tjMdjSWB04eJtgvOR0OM6Go0im80ilUphZWUFfr8fjUYD1WoVz58/x97eHiaTyQsVNOcN7u6F7x5I/nSIyOnxJCTWJQOnCN2Yhz8+n0/ikiQGuiZYL/y8cUfdQJMZHvU8YK9y0GVV/E4eJ8uo+D+tWvj9fkQiEfh8PkQiEQQCAczPzyMej2M0GmFvbw/j8RjNZhO9Xg+7u7uoVCrodrsvhD5cuHib0D02uKhTLSA57na7KJVK8Pl86HQ6GA6HkmtzEeCGCS4enErOzf8d9ZxuWmfmfjmVeR8HLhk4JWhJ3e/3IxaLIRKJIJFI2F5HD918L+Pv0+kU/X7/hdfpQWD+T79OP+/EDM1BQjIQDAaRTCYRCAQwNzeHSCSCWCyGeDyOZDKJQqFgUzxarRa63S52d3fx9ddfo9Vq4enTpxgMBhgMBphMJkJ0mGvgwsXbBtUvTcRJ0lkq22g08OTJEyHJnMPBYBCTyQTD4fCsT2MmzIXAxfmGttnagwdme/sAbPlcx3ECZ/3vKLgW+hSh6/aZlBQOh22hAN5Ms6cA5cvpdIpQKGQjA07sbpaKoAeAk7xpfqbP55NeAYlEAoFAQIhMPB6XRKpgMCgL+3Q6xXA4RK/XQ7PZRLVaRbPZRK1WkzAEcFCexTwKVxVwcdYwq2RI4MfjMfr9/szk3/Nev/8q8WEXr4dZ1/q4/9eO2nFkfpMcvAm4ZOAUQSk8EAggGAwiHo9LUl0ymRQpnp4yvWVzv4JZ6gEfnRJHzNfpvATzNU7HrAch8xrG4zHq9Tr29vbw1VdfYTKZoNfrYTQaodVqodfrod/vo9PpiCqiy7e0EXXJgIuzgCbf4XAYgL0VOAlAOp2W55ho2+/3EQgEEAqFzvX45QLhkoG3C1OWNxfuWf+bFQ44bsjgTcElA28A9CrocYfDYcRiMfj9foTDYfh8PvGatQcya4HXfx9FBsxwQSAQsCkSGmaC4mQykfBEs9nEcDiU2Gmj0cDW1hYGgwFarRYGgwF6vZ5NPuX5msmQ+vfzbFBdXE5wnuj9NHQ5LckAS24BOyEwk3nPI1xV4PXwKtfOKVavCab+HwDbc+f1Xrlk4BTBxa7dbktm/f7+vkjxusyJyoDOdj7Kiz+KNQLOoQSzzbFTbwMtR7FVMasfmMfQ7/dRr9clPKCNqC6DNHcrnHXcLly8TXB8t9tt2/9JXj0ej1S7sB0xlTWSh/NMZM3kMcAl3i+Dk1OlFRann1nvm/X3rOfOK1wycErQC22320Wv10O1WpUFlYuoXkj5YxKF4wyYk7yGnw0cEgTNXLWnpM9F5whwbwX9vO75flTZ43meAC4uNzThHQwGkpND1SwUCmEymUjSKx85LwGcezIAuOrASaEXadN7f1m53mW9zi4ZeAMw2aNu56vjlDpeDxxmjDoZntfpRKg/28lT1949j9fpNU6P+nzPu8F08W6ChDUcDtvmHlUvPX6DwaCEFfScuAgLABerdyEs5xQiPe7/9HMv+zETtS/COHhVuGTglOE0AD0eD0KhEAC84EVTObCsw8RBnfhHHBWDnzXpzQFtvkcn+jkt7vpcnLZDNs93VjjChYuzgu6yGQqF4PP5ZD+N4XCIwWAAr9eLUCgEr9eLaDQqZYe63fZFAOe6OZ8vK17mvc+K2c/KyL/MC/1x4JKBt4hZbYaJowbjST3vo77DfO4oJcIpBjkrlDHrs9/1SebifEAvknp8m4SWoTGX1F48vCyOf5ll/teFx3KvjAsXLly4cPFO43zXzLhw4cKFCxcu3jhcMuDChQsXLly843DJgAsXLly4cPGOwyUDLly4cOHCxTsOlwy4cOHChQsX7zhcMuDChQsXLly843DJgAsXLly4cPGOwyUDLly4cOHCxTsOlwy4cOHChQsX7zj+PxxyqgiuXuusAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } - }, - "outputs": [], + ], "source": [ "# Plot 3 examples from the training set\n", "check_data = first(train_loader)\n", @@ -195,28 +285,37 @@ { "cell_type": "markdown", "id": "d860d83a", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Download Validation Data" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "ec954b77", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-03-07 15:34:30,509 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-07 15:34:30,509 - INFO - File exists: /tmp/tmpma12lzmd/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-07 15:34:30,510 - INFO - Non-empty folder exists in /tmp/tmpma12lzmd/MedNIST, skipped extracting.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3325.63it/s]\n" + ] } - }, - "outputs": [], + ], "source": [ "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n", - "val_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"HeadCT\"]\n", + "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"HeadCT\"]\n", "val_transforms = transforms.Compose(\n", " [\n", " transforms.LoadImaged(keys=[\"image\"]),\n", @@ -225,110 +324,306 @@ " ]\n", ")\n", "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n", - "val_loader = DataLoader(val_ds, batch_size=64, shuffle=True, num_workers=4)" + "val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True)" ] }, { "cell_type": "markdown", "id": "09da3d54", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "## Vector Quantized Variational Autoencoder (VQ-VAE) Training\n", + "## Vector Quantized Variational Autoencoder\n", + "\n", + "The first step is to train a Vector Quantized Variation Autoencoder (VQ-VAE). This network is responsible for creating a compressed version of the inputted data. Once its training is done, we can use the encoder to obtain smaller and discrete representations of the 2D images to generate the inputs required for our autoregressive transformer.\n", "\n", - "The first step is to train a VQVAE network - once this is done we can use the trained vqvae model to encode the 2d images to generate the inputs required for the transformer" + "For its training, we will use the L1 loss, and we will update its codebook using a method based on Exponential Moving Average (EMA)." ] }, { "cell_type": "markdown", "id": "2c7a91c3", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Define network, optimizer and losses" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "757d00ff", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cuda\n" + ] + }, + { + "data": { + "text/plain": [ + "VQVAE(\n", + " (encoder): Encoder(\n", + " (blocks): ModuleList(\n", + " (0): Convolution(\n", + " (conv): Conv2d(1, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", + " (adn): ADN(\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (1): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (2): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (3): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (4): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (5): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (6): Convolution(\n", + " (conv): Conv2d(256, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " )\n", + " (decoder): Decoder(\n", + " (blocks): ModuleList(\n", + " (0): Convolution(\n", + " (conv): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " (1): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (2): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (3): Convolution(\n", + " (conv): ConvTranspose2d(256, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (4): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (5): VQVAEResidualUnit(\n", + " (conv1): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " (adn): ADN(\n", + " (D): Dropout(p=0.0, inplace=False)\n", + " (A): ReLU()\n", + " )\n", + " )\n", + " (conv2): Convolution(\n", + " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", + " )\n", + " )\n", + " (6): Convolution(\n", + " (conv): ConvTranspose2d(256, 1, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n", + " )\n", + " )\n", + " )\n", + " (quantizer): VectorQuantizer(\n", + " (quantizer): EMAQuantizer(\n", + " (embedding): Embedding(16, 64)\n", + " )\n", + " )\n", + ")" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" } - }, - "outputs": [], + ], "source": [ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "print(f\"Using {device}\")\n", + "\n", "vqvae_model = VQVAE(\n", " spatial_dims=2,\n", " in_channels=1,\n", " out_channels=1,\n", " num_res_layers=2,\n", - " num_levels=2,\n", " downsample_parameters=((2, 4, 1, 1), (2, 4, 1, 1)),\n", " upsample_parameters=((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),\n", " num_channels=(256, 256),\n", " num_res_channels=(256, 256),\n", - " num_embeddings=256,\n", - " embedding_dim=32,\n", + " num_embeddings=16,\n", + " embedding_dim=64,\n", ")\n", "vqvae_model.to(device)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "7611f596", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ - "optimizer = torch.optim.Adam(params=vqvae_model.parameters(), lr=1e-4)\n", + "optimizer = torch.optim.Adam(params=vqvae_model.parameters(), lr=5e-4)\n", "l1_loss = L1Loss()" ] }, { "cell_type": "markdown", "id": "f1d81a89", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### VQVAE Model training\n", - "We will run our model for 100 epochs" + "### VQ-VAE Model training\n", + "We will train our VQ-VAE for 50 epochs." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "fe7459e4", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 0: 100%|████████████████| 125/125 [00:30<00:00, 4.14it/s, recons_loss=0.113, quantization_loss=1.03e-5]\n", + "Epoch 1: 100%|███████████████| 125/125 [00:30<00:00, 4.16it/s, recons_loss=0.0482, quantization_loss=1.72e-5]\n", + "Epoch 2: 100%|███████████████| 125/125 [00:30<00:00, 4.11it/s, recons_loss=0.0372, quantization_loss=1.66e-5]\n", + "Epoch 3: 100%|████████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.032, quantization_loss=2.15e-5]\n", + "Epoch 4: 100%|███████████████| 125/125 [00:31<00:00, 4.01it/s, recons_loss=0.0289, quantization_loss=2.08e-5]\n", + "Epoch 5: 100%|███████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.0272, quantization_loss=2.77e-5]\n", + "Epoch 6: 100%|███████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.0277, quantization_loss=2.99e-5]\n", + "Epoch 7: 100%|███████████████| 125/125 [00:31<00:00, 4.00it/s, recons_loss=0.0262, quantization_loss=2.74e-5]\n", + "Epoch 8: 100%|███████████████| 125/125 [00:31<00:00, 3.99it/s, recons_loss=0.0263, quantization_loss=3.67e-5]\n", + "Epoch 9: 100%|███████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0239, quantization_loss=4.39e-5]\n", + "Epoch 10: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0253, quantization_loss=4.57e-5]\n", + "Epoch 11: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0239, quantization_loss=4.43e-5]\n", + "Epoch 12: 100%|███████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.024, quantization_loss=4.89e-5]\n", + "Epoch 13: 100%|██████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0243, quantization_loss=4.32e-5]\n", + "Epoch 14: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0227, quantization_loss=4.01e-5]\n", + "Epoch 15: 100%|██████████████| 125/125 [00:32<00:00, 3.83it/s, recons_loss=0.0229, quantization_loss=4.47e-5]\n", + "Epoch 16: 100%|███████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0239, quantization_loss=4.5e-5]\n", + "Epoch 17: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0234, quantization_loss=4.14e-5]\n", + "Epoch 18: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0231, quantization_loss=4.68e-5]\n", + "Epoch 19: 100%|██████████████| 125/125 [00:31<00:00, 3.96it/s, recons_loss=0.0223, quantization_loss=5.42e-5]\n", + "Epoch 20: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0218, quantization_loss=5.61e-5]\n", + "Epoch 21: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0216, quantization_loss=3.92e-5]\n", + "Epoch 22: 100%|██████████████| 125/125 [00:31<00:00, 3.96it/s, recons_loss=0.0222, quantization_loss=4.68e-5]\n", + "Epoch 23: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0228, quantization_loss=5.01e-5]\n", + "Epoch 24: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0228, quantization_loss=5.88e-5]\n", + "Epoch 25: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0214, quantization_loss=4.72e-5]\n", + "Epoch 26: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0209, quantization_loss=5.43e-5]\n", + "Epoch 27: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0209, quantization_loss=5.33e-5]\n", + "Epoch 28: 100%|██████████████| 125/125 [00:32<00:00, 3.90it/s, recons_loss=0.0214, quantization_loss=4.47e-5]\n", + "Epoch 29: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0211, quantization_loss=5.16e-5]\n", + "Epoch 30: 100%|██████████████| 125/125 [00:32<00:00, 3.88it/s, recons_loss=0.0214, quantization_loss=4.03e-5]\n", + "Epoch 31: 100%|██████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.0219, quantization_loss=3.97e-5]\n", + "Epoch 32: 100%|███████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.022, quantization_loss=4.01e-5]\n", + "Epoch 33: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0206, quantization_loss=4.68e-5]\n", + "Epoch 34: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0213, quantization_loss=4.12e-5]\n", + "Epoch 35: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0204, quantization_loss=5.13e-5]\n", + "Epoch 36: 100%|██████████████| 125/125 [00:31<00:00, 3.98it/s, recons_loss=0.0203, quantization_loss=5.18e-5]\n", + "Epoch 37: 100%|██████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.0202, quantization_loss=5.57e-5]\n", + "Epoch 38: 100%|██████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0202, quantization_loss=4.05e-5]\n", + "Epoch 39: 100%|███████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.021, quantization_loss=4.77e-5]\n", + "Epoch 40: 100%|███████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0215, quantization_loss=4.1e-5]\n", + "Epoch 41: 100%|██████████████| 125/125 [00:31<00:00, 4.00it/s, recons_loss=0.0209, quantization_loss=3.46e-5]\n", + "Epoch 42: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0209, quantization_loss=3.66e-5]\n", + "Epoch 43: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0205, quantization_loss=4.18e-5]\n", + "Epoch 44: 100%|█████████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0201, quantization_loss=4e-5]\n", + "Epoch 45: 100%|████████████████| 125/125 [00:32<00:00, 3.84it/s, recons_loss=0.02, quantization_loss=4.12e-5]\n", + "Epoch 46: 100%|██████████████| 125/125 [00:32<00:00, 3.87it/s, recons_loss=0.0209, quantization_loss=3.39e-5]\n", + "Epoch 47: 100%|███████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.021, quantization_loss=4.09e-5]\n", + "Epoch 48: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0197, quantization_loss=4.87e-5]\n", + "Epoch 49: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0199, quantization_loss=3.09e-5]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train completed, total time: 1588.7614703178406.\n" + ] } - }, - "outputs": [], + ], "source": [ - "n_epochs = 100\n", + "n_epochs = 50\n", "val_interval = 10\n", - "epoch_recon_loss_list = []\n", - "epoch_quant_loss_list = []\n", - "val_recon_epoch_loss_list = []\n", - "intermediary_images = []\n", - "n_example_images = 4\n", + "epoch_losses = []\n", + "val_epoch_losses = []\n", "\n", "total_start = time.time()\n", "for epoch in range(n_epochs):\n", @@ -342,9 +637,7 @@ "\n", " # model outputs reconstruction and the quantization error\n", " reconstruction, quantization_loss = vqvae_model(images=images)\n", - "\n", " recons_loss = l1_loss(reconstruction.float(), images.float())\n", - "\n", " loss = recons_loss + quantization_loss\n", "\n", " loss.backward()\n", @@ -355,33 +648,20 @@ " progress_bar.set_postfix(\n", " {\"recons_loss\": epoch_loss / (step + 1), \"quantization_loss\": quantization_loss.item() / (step + 1)}\n", " )\n", - " epoch_recon_loss_list.append(epoch_loss / (step + 1))\n", - " epoch_quant_loss_list.append(quantization_loss.item() / (step + 1))\n", + " epoch_losses.append(epoch_loss / (step + 1))\n", "\n", " if (epoch + 1) % val_interval == 0:\n", " vqvae_model.eval()\n", " val_loss = 0\n", " with torch.no_grad():\n", - " k = 0\n", " for val_step, batch in enumerate(val_loader, start=1):\n", - " k += 1\n", - " if k == 3:\n", - " break\n", " images = batch[\"image\"].to(device)\n", - "\n", " reconstruction, quantization_loss = vqvae_model(images=images)\n", - "\n", - " # get the first sample from the first validation batch for\n", - " # visualizing how the training evolves\n", - " if val_step == 1:\n", - " intermediary_images.append(reconstruction[:n_example_images, 0])\n", - "\n", " recons_loss = l1_loss(reconstruction.float(), images.float())\n", - "\n", " val_loss += recons_loss.item()\n", "\n", " val_loss /= val_step\n", - " val_recon_epoch_loss_list.append(val_loss)\n", + " val_epoch_losses.append(val_loss)\n", "\n", "total_time = time.time() - total_start\n", "print(f\"train completed, total time: {total_time}.\")" @@ -390,61 +670,74 @@ { "cell_type": "markdown", "id": "6ff4ec88", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### Plotting evolution of reconstruction performance" + "### Learning curves" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "54943066", "metadata": { - "lines_to_next_cell": 2, - "pycharm": { - "name": "#%%\n" - } + "lines_to_next_cell": 2 }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAHZCAYAAAB0J2SuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABwDElEQVR4nO3dd3hUVeI+8PdOS68kJCGQBELoXYSAFIW4KBIUKSKoIOqquyxfV9xFWRVUVsWuP8QVCxYQgyBKEUVQOog0EQIBQkIgJKSTnmnn98dlhhlm0pMpyft5nnkyc++5c8+chOTlnHPPlYQQAkRERERULYWzK0BERETk6hiYiIiIiGrBwERERERUCwYmIiIiolowMBERERHVgoGJiIiIqBYMTERERES1YGAiIiIiqgUDExEREVEtGJiIyKXdfPPNkCQJN998s7OrQkStGAMTkYNs374dkiRBkiQsXLjQ2dUhF3Hy5Em88MILGDFiBDp06AAvLy/4+voiOjoaiYmJeOutt5Cdne3sahK1eipnV4CIqDUqKCjAE088gZUrV8JoNNrsLysrQ0ZGBjZu3Ih58+bh4Ycfxn//+18EBwc7obZExMBERC5t+/btzq5Ckzt37hxuv/12nD59GgDQtm1bTJs2DSNGjEBERAQkScKlS5ewfft2rF27FpmZmfjf//6HMWPG4K677nJu5YlaKQYmIiIHKi8vR2JiojksPfTQQ3j77bfh5+dnU3bChAl4/fXX8b///Q//+c9/HF1VIrLAwERE5EDPPPMMkpOTAQAPP/wwPvrooxrLazQazJkzB6NHj0ZlZaUjqkhEdnDSN5Gb+fXXXzFjxgx06tQJ3t7e8Pf3R+/evfGvf/0Lly5dqvHY48ePY9GiRRgzZgzat28PDw8P+Pr6Ii4uDjNmzMD+/ftrPH7hwoXmiesAcOXKFbz00kvo378/AgMDIUkSPvvsM7tlKysr8frrr2PAgAHw8/ODn58fBg0ahCVLlkCv11d7zpqukktPTzefw3Ten3/+GYmJiQgPD4eHhwc6duyIxx9/HBcvXqzxswFAfn4+/v3vf6Nr167w8vJCWFgYbr31Vqxbtw4A8Nlnn5nPl56eXuv7XS83N9cckCIiIvDOO+/U+diePXvihhtusNpW1ysIr/9eXO/6ixF++eUXTJ48GR06dIBarUZMTAzKy8vh5+cHSZIwffr0Wuu7b98+8/suXbrUbpns7Gz85z//wcCBAxEcHAwPDw906NABU6ZMwdatW2t8f4PBgM8++wxjxoxBeHg4NBoNAgICEBcXh9GjR+Pll182B1OiJiGIyCF+/fVXAUAAEAsWLKj38RUVFWLq1Knm97D38PHxEevXr6/1/DU9nn766WrrsGDBAnO506dPi5iYGJvjly9fblM2Oztb9OvXr9pzJiYmCoPBYPecI0eOFADEyJEjbfalpaVZnffpp5+u9hyhoaEiOTm52s927NgxERYWVu3xf/3rX8Xy5cvNr9PS0qp9r+q899575uOfe+65eh9/vZraxpLl98Iey5/L+fPn23z26OhoIYQQ9913n/nnrLS0tMZz/v3vfxcAhEqlErm5uTb7V6xYIXx8fGr8WXzooYeETqezObakpEQMHz681p/liRMn1lhHovrgkByRGxBCYNKkSdi0aRMAIDExEVOmTEGnTp2gUChw4MABvPnmm8jIyMCkSZOwZ88eDBw40Oo99Ho9fHx8cMcdd2DUqFHo1q0b/P39kZOTgxMnTuC9997D+fPn8eqrr6JLly548MEHa6zTpEmTkJmZiX/84x8YP348goKCcObMGURHR9uUvfvuu5GcnIw5c+YgMTERwcHBSElJwUsvvYSTJ09iw4YN+Oijj/Doo482uI0++ugj7N27FyNHjsSjjz6KLl26oKioCF988QW++OIL5ObmYtasWdi3b5/NsUVFRbjttttw+fJlAMD999+PadOmITQ0FGfPnsW7776LZcuW4Y8//mhw/QBgx44d5ud33HFHo96rOXz77bf4888/0bt3b/zzn/9Er169UFFRgaNHjwIApk+fjhUrVqCsrAzff/89pk2bZvd99Ho9vvnmGwDAmDFjEBISYrV/9erVuP/++yGEQKdOnTB79mz06NEDoaGhSE9PxyeffIIffvgBn3zyCfz9/fHWW29ZHb9w4ULs2rULADBu3DhMnz4dUVFR8PT0RE5ODo4cOYKNGzdW26NG1CDOTmxErUVjepiWLVsmAAi1Wi02b95st0xBQYHo2bOnACBuuukmm/25ubmisLCw2nNUVVWJW2+91dyjoNfrbcpY9lQoFArx008/Vft+lmXVarX49ddfbcrk5+ebe3X69Olj933q2sMEQDzyyCPCaDTalHv44YfNZQ4fPmyz/4knnjDvf+ed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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Plot every evaluation as a new line and example as columns\n", - "val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))\n", - "fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)\n", - "fig.set_size_inches(18, 30)\n", - "for image_n in range(len(val_samples)):\n", - " reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T\n", - " ax[image_n].imshow(reconstructions.cpu(), cmap=\"gray\")\n", - " ax[image_n].set_xticks([])\n", - " ax[image_n].set_yticks([])\n", - " ax[image_n].set_ylabel(f\"Epoch {val_samples[image_n]:.0f}\")" + "plt.style.use(\"ggplot\")\n", + "plt.title(\"Learning Curves\", fontsize=20)\n", + "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color=\"C0\", linewidth=2.0, label=\"Train\")\n", + "plt.plot(\n", + " np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),\n", + " val_epoch_losses,\n", + " color=\"C1\",\n", + " linewidth=2.0,\n", + " label=\"Validation\",\n", + ")\n", + "plt.yticks(fontsize=12)\n", + "plt.xticks(fontsize=12)\n", + "plt.xlabel(\"Epochs\", fontsize=16)\n", + "plt.ylabel(\"Loss\", fontsize=16)\n", + "plt.legend(prop={\"size\": 14})\n", + "plt.show()" ] }, { "cell_type": "markdown", "id": "8dfa3270", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Plot reconstructions of final trained vqvae model" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "0789cfcc", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAEMCAYAAABZZbUfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLU0lEQVR4nO2deZQVRZbGbyFQWsUiCEqDLFIsBYjsiIjsiKiAiA6iNIKtiC1uPS4cbRvamdZR7BEX7GG0RcWNblEQRZBdVER2RSl2EGRTBBfQASHnD6dyvviqXtR7j9rz+53DOZHv5hIZmRGV3C/ujZQgCAITQgghRGQpU9QVEEIIIUTRoo8BIYQQIuLoY0AIIYSIOPoYEEIIISKOPgaEEEKIiKOPASGEECLi6GNACCGEiDj6GBBCCCEijj4GhBBCiIijj4GIMnbsWEtJSbGFCxcWdVWEECLf0RiXGCX6YyAlJcVSUlKKuhpxU69ePatXr15Me0pKinXt2rXQ6pMI2R1r7NixRV0VIfKN7DEk+99JJ51kVatWta5du9rzzz9vUc7W/vzzz1tKSoo9//zzRV2VXCnu9StplC3qCgghRFEzZswYMzM7evSobdq0yd58801btGiRLV++3J566qkirp1IhlGjRtlVV11lderUKeqqlAj0MSCEiDzs8frwww+tc+fO9vTTT9u//uu/2llnnVU0FRNJU61aNatWrVpRV6PEUKJlgtzYtm2bpaSk2LBhw2zbtm121VVXWbVq1ezkk0+2tm3b2ttvv53jGHQ3vfPOO9axY0dLT0+3KlWq2BVXXGEbN27McUzXrl1jShTsvlq4cKGlpKTY9u3bbfv27Y5bctiwYeH+ZmaLFi1y7DxILV261K644gqrUaOGlS9f3mrXrm033nij7dq1K9e6rFixwi666CKrWLGiVapUyXr27GlLlixJoEX9DBs2zFJSUmzr1q321FNPWdOmTe3kk0+2evXq2YMPPhi6Wf/5z39a+/btLT093U4//XQbNWqU/fTTTznON23aNBsyZIg1atTI0tPTLT093dq0aWNPPPGEHT9+PNc6bNiwwQYOHGhVqlSx9PR069ixo73zzjteN+LOnTtt1KhRVr9+fUtNTbXTTjvN+vXrZ8uWLcu3thEll/PPP98yMzMtCAJbsWJFDnui/fDbb7+1++67z84++2xLS0uzypUrW4sWLWz06NF26NAhZ9+NGzfa0KFDrVatWla+fHmrWbOmDR06NNdxCHXx119/3dq3b29paWlWtWpVu+qqq+yrr77KccyWLVtsxIgR1qBBAzvllFOsatWq1rx5cxs5cqTt37/fzH4d34YPH25mZsOHD3fGpG3btuW49iuvvGLnnnuuVahQIZRCs8e9WNKiTzadMmWK9ejRw6pWrRqOJ4MHD7bly5cnVT9m3rx5dtFFF1nVqlUtNTXVGjVqZKNHj7bvvvsux77ZY/0vv/xiDz74oDVs2NBSU1Otdu3ads8999iRI0dyvYeSRqn1DGzfvt3at29v9evXt9/+9rf27bff2pQpU6x///42d+5c69atW45j3njjDXv33XdtwIAB1rVrV1u9erVNnTrVFixYYB999JE1btw4qbrUq1fPxowZY+PHjzczs9tvvz20tWzZMrT/+c9/trp169qwYcNCO84heO6552zEiBGWmppq/fr1s9q1a9vGjRvt2WeftRkzZtjHH3/suMQ++ugj69mzpx05csQuv/xya9Cgga1evdq6du1q3bt3T+peYnHnnXfawoULrW/fvnbhhRfaW2+9Zffdd58dOXLEqlataqNHj7bLLrvMLrjgApszZ45NmDDBjh07Zn/729+c84wePdrKlClj5557rtWqVcu+++47mz9/vt122222bNkymzx5srN/VlaWdezY0Q4cOGCXXHKJnXPOObZlyxYbMGCAXXzxxbnWdeXKlXbhhRfat99+a71797bLL7/cvvnmG5s2bZp16tTJ3nzzzZjHiuhRrlw5ZzvRfrh161br1q2bbd++3dq0aWM33XSTHT9+3DZs2GCPPfaYjRw50tLT083MbNmyZdazZ0/74YcfrF+/fta0aVPLysqyl156yaZPn25z5861du3a5ajj008/bW+99Zb169fPunTpYkuXLrUpU6bYmjVrbPXq1ZaammpmZrt377Z27drZ999/bxdffLENHDjQfv75Z9u6datNnjzZRo0aZaeddpoNGzbMTj31VJs+fbr179/fWrZsGV7r1FNPda7917/+1ebMmWN9+/a1bt265foHNV6CILDhw4fbCy+8YNWqVbPLL7/cqlevbjt37rQFCxZY48aNrW3btgnVj5k4caLddNNNlp6ebldeeaWdfvrptnDhQnv44YdtxowZ9uGHH+Z6jquvvtoWL15sffr0sUqVKtnMmTPtkUcesX379tmkSZOSvudiQ1CCMbOAb2Hr1q3h72PHjnVss2bNCsws6NOnj/P7pEmTwmNmzJjh2MaPHx+YWdC9e3fn9y5duuS4Np9v0qRJzu9169YN6tat672fLl265Gpbv359UK5cuSAjIyPYuXOnY5s7d25QpkyZ4LLLLgt/O378eNC4cePAzIJp06blek9mFixYsCBmfZAxY8YEZhaMGTPG+f3aa68NzCyoW7euU68DBw4Ep512WpCWlhZUq1Yt+OKLL0Lbzz//HDRp0iQoX758sHfvXud8mzZtynHtY8eOBUOHDg3MLPj4448dW/fu3QMzC55++mnn95kzZ4b3iM/h6NGjQUZGRpCamhosXLjQOearr74KatasGdSoUSP4+eef42oXUbLJbQwJgiBYtGhRUKZMmaB8+fLBrl27wt8T7YdBEATnnXdeYGbBgw8+mOM6X3/9dfDTTz8FQfBrn83MzAzMLHjppZec/V577bXAzILGjRsHx44dC3/P7pcVK1YMPv30U+eYwYMHB2YWTJkyJfztiSeeCMwsGD9+fI66/Pjjj8Hhw4fD7VjjGF87LS0tWLlyZQ77ggULch0zssltPJw4cWJgZkG7du2CgwcPOrZffvnFeRbx1g/HuG3btgXly5cPKlasGKxbt87Z/6abbgrMLLjhhhuc37PH+tatWwf79+8Pf//xxx+DjIyMoEyZMsHu3btzrUNJotTJBNnUrVvX/vjHPzq/9e7d2+rUqWOffPJJrsd0797dLr30Uue3UaNGWUZGhs2fP9+2b99eYPXNi7/97W929OhRe/zxx61WrVqOrUePHtavXz+bMWOG/fDDD2b2q1dg/fr11rlzZ+vfv7+zf/Y95Sf333+/U69TTz3V+vXrZ4cPH7abbrrJmjRpEtpSU1Nt0KBBduTIEVu3bp1zntzqVaZMGbvtttvMzGz27Nnh7zt27LD58+dbgwYN7MYbb3SO6dOnj/Xs2TPHud555x3bvHmz3XLLLdalSxfHVrNmTbv77rttz549Nm/evATuXpR0xo4da2PHjrX77rvPBg0aZD179rQgCOzRRx+13/zmN+F+ifbDFStW2JIlS6xly5Z2zz335LhutoRp9mufzcrKsvPOO8+uueYaZ79BgwZZp06dbP369fbBBx/kOM+tt95qzZs3d3674YYbzMxyHe9OOeWUHL+lp6fn+ntejBgxwlq1apXwcbnx5JNPmtmv/3uvXLmyYzvppJOcZ5EML730kh05csRGjRplmZmZju0vf/mLVaxY0SZPnmz/8z//k+PYhx9+2KpWrRpup6en2zXXXGPHjx8P5YuSTKmVCVq2bGknnXRSjt9r164dUzPnPw5mv76AnTp1ss2bN9uqVausbt26+V7XeMiu86JFi3LVtfft22fHjh2zDRs2WJs2bWzlypVmlvc95Rdt27bN8VvNmjXNzKxNmzY5bNkD6c6dO53f9+/fb+PGjbOZM2fali1bcuipqIGuXr3azMzOO+88K1Mm53dtp06dbO7cuc5v2e24ffv2XLXMbF123bp1kgoixJ///GdnOyUlxf7+97+HunQ2ifbDjz/+2Mx+/Y9Ibu8okt1nY0l43bt3tw8++MBWrVplnTt3dmy59b/atWubmdmBAwfC3/r162f33nuv3XzzzTZ79mzr3bu3nX/++da0adOkw7Tbt2+f1HHMoUOHbO3atXbGGWfk28cF42vjKlWqWKtWrez999+3rKwsa9GihWOPt41LKqX2YyCWblS2bNmYE9HOOOOMXH+vUaOGmdkJaWEnSvbEnnHjxnn3+/HHH83s/+ua1z3lF/wVb/ZrW+dlO3r0aPjbwYMHrV27drZ161Zr3769DR061KpWrWply5a1gwcP2uOPP+58sed1j7n9nt2O//znP733k92OIhoE/zfR9dChQ7ZkyRL73e9+ZyNHjrS6des6fzgS7YcHDx40M8vhRciN7Pc51v9+s3/PPieS23iX3ceOHTsW/la3bl375JNPbOzYsTZr1ix74403zOzXP2p33nmn3XrrrXnWk8mvsSSRtkqWwmjjkkqp/RhIhr179+b6+549e8zM/aOW/ZX/yy+/hC9ENrm9SCdK9rW/++47q1SpUtz753VPxYlnn33Wtm7damPGjMnxv/YlS5bY448/7vyW3Q6x7jG337PbZfr06davX798qLUoTaSnp1vPnj1txowZ1rp1a7v22mtt/fr1lpaWZmaJ98PsPyC5zepnss8dq2/u3r3b2S9ZmjRpYlOmTLFffvnF1qxZY3PnzrUnn3zSbrvtNktPT7ff/e53CZ0vlkcBx8jcOHjwoPMHNpG2ShZs42bNmuWw51cbl0RK7ZyBZFi0aFGO344dOxZqdOi6qlKlipn9qlszsfSjk046yfsFWaZMmZj2Dh06mJnZ4sWLYx6PtG7d2szyvqfixKZNm8zMbODAgTlsud1H9gziJUuW5Ortye0eE21HEU3OOeccu+GGG2znzp322GOPhb8n+v5k7z979uyYHslssseXWOlzFyxYYGb/37dPlLJly1qbNm3snnvusVdffdXMfg3tzSZbZk32f72+MXLTpk05PK3p6el29tln2969e23VqlV5nj+Z+vna+ODBg7Z69Wo7+eSTnTlOUUEfA8D8+fNz5CF46qmnbPPmzdatWzdnvkC2TvbMM884+8+bNy/sWMxpp51mX3/9da7x9dn23DqO2a+T/sqVK2d33HGHbdiwIYf9yJEjzgDVsWNHa9y4sb3//vs2ffr0XO+puIHxyciqVavsoYceyrF/nTp1rGvXrrZp0yabOHGiY5s1a1aO+QJmZv3797eMjAybMGGCzZw5M9d6LFmyxA4fPpzcTYhSwx//+EdLTU21Rx99NNSEE+2Hbdq0sY4dO9rq1avt4YcfzrH//v377eeffzazX3MbNG7c2D744AN7/fXXnf1ef/11W7x4sTVq1Mg6deqU9D2tWLEiV7kz24uW7QEx+3U8MjP78ssvk7pWZmamVapUyaZPn2779u0Lf//pp59iyhHZv99444056nn8+PHwf+7J1m/IkCFWrlw5e/LJJ8P/fGRz//332/fff29DhgwJQzGjhGQCoG/fvjZgwAAbMGBAGJP/7rvvWtWqVe3pp5929h0+fLiNGzfOHnroIVuzZo01bdrUNmzYEOYpmDp1ao7z9+jRw5YtW2YXXXSRde7c2VJTU61FixbWt2/f0P7aa69Z3759rXXr1lauXDnr3Lmzde7c2TIzM+25556z6667zpo1a2YXXXSRNWrUyI4ePWpffvmlLV682KpXr25ZWVlm9v8ToHr16mUDBw508gxkJ9yYNWtWwTdqAgwdOtTGjRtnt99+uy1YsMAaNmxoGzdutLffftsuv/xymzJlSo5jJkyYYOeff779/ve/t5kzZ4Z5BqZOnWr9+/e36dOnOxO3ypUrZ2+88Yb17t3bLrnkEuvYsaO1bNnS0tLSbMeOHbZs2TLbsmWL7d692xkYRfSoVauWjRw50h5//HF75JFH7KGHHkq4H5r9OoO9a9eudu+999rUqVOta9euFgSBbdy40d577z3Lysqy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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } - }, - "outputs": [], + ], "source": [ "fig, ax = plt.subplots(nrows=1, ncols=2)\n", "ax[0].imshow(images[0, 0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", @@ -459,69 +752,51 @@ { "cell_type": "markdown", "id": "773f5f43", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "## Autoregressive Transformer Training\n", + "# Autoregressive Transformer\n", "\n", - "Now that a vqvae model has been trained, we can use this model to encode the data into its discrete latent representations. These inputs can then be flattened into a 1D sequence for the transformer to learn in an autoregressive manor.\n", + "Now that our VQ-VAE model has been trained, we can use this model to encode the data into its discrete latent representations. Then, to be able to input it into the autoregressive Transformer, it is necessary to transform this 2D latent representation into a 1D sequence.\n", "\n", - "For this tutorial we will use the first appraoch and use the vqvae network to encode the data during the training cycle" + "In order to train it in an autoregressive manner, we will use the CrossEntropy Loss as the Transformer will try to predict the next token value for each position of the sequence.\n", + "\n", + "Here we will use the MONAI's `VQVAETransformerInferer` class to help with the forward pass and to get the predicted likelihood from the VQ-VAE + Transformer models." ] }, { "cell_type": "markdown", "id": "83352d19", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ "### Datasets\n", - "We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformer models we will need to reduce the batch size" + "We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformers we will need to reduce the batch size." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "2b3c3a82", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ - "train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4)\n", - "val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4)" + "train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True)\n", + "val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True)" ] }, { "cell_type": "markdown", "id": "b0f5a3cd", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### Latent sequence ordering\n", + "### 2D latent representation -> 1D sequence\n", "We need to define an ordering of which we convert our 2D latent space into a 1D sequence. For this we will use a simple raster scan." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "efab0cc5", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ "spatial_shape = next(iter(train_loader))[\"image\"].shape[2:]" @@ -529,13 +804,10 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "f91086e3", "metadata": { - "lines_to_next_cell": 2, - "pycharm": { - "name": "#%%\n" - } + "lines_to_next_cell": 2 }, "outputs": [], "source": [ @@ -553,24 +825,16 @@ { "cell_type": "markdown", "id": "ace09890", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "## Define Network, optimizer and losses" + "### Define Network, optimizer and losses" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "aab1891a", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", @@ -582,18 +846,16 @@ " attn_layers_depth=12,\n", " attn_layers_heads=8,\n", ")\n", - "transformer_model.to(device)" + "transformer_model.to(device)\n", + "\n", + "inferer = VQVAETransformerInferer()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "fa3cd231", - "metadata": { - "pycharm": { - "name": "#%%\n" - } - }, + "metadata": {}, "outputs": [], "source": [ "optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3)\n", @@ -603,32 +865,143 @@ { "cell_type": "markdown", "id": "0921fcfb", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### Transformer Model Training\n", - "We will train the model for 100 epochs" + "### Transformer Training\n", + "We will train the Transformer for 100 epochs." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "9c32f0a9", - "metadata": { - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 0: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=1.58]\n", + "Epoch 1: 100%|█████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=1.3]\n", + "Epoch 2: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.66it/s, ce_loss=1.22]\n", + "Epoch 3: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.93it/s, ce_loss=1.18]\n", + "Epoch 4: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.74it/s, ce_loss=1.15]\n", + "Epoch 5: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.77it/s, ce_loss=1.13]\n", + "Epoch 6: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.78it/s, ce_loss=1.12]\n", + "Epoch 7: 100%|█████████████████████████████████████████████████| 999/999 [00:58<00:00, 17.09it/s, ce_loss=1.1]\n", + "Epoch 8: 100%|████████████████████████████████████████████████| 999/999 [00:58<00:00, 16.95it/s, ce_loss=1.09]\n", + "Epoch 9: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.84it/s, ce_loss=1.08]\n", + "Epoch 10: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.22it/s, ce_loss=1.07]\n", + "Epoch 11: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.22it/s, ce_loss=1.06]\n", + "Epoch 12: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=1.05]\n", + "Epoch 13: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=1.04]\n", + "Epoch 14: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.41it/s, ce_loss=1.03]\n", + "Epoch 15: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.35it/s, ce_loss=1.03]\n", + "Epoch 16: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.48it/s, ce_loss=1.02]\n", + "Epoch 17: 100%|███████████████████████████████████████████████| 999/999 [00:59<00:00, 16.68it/s, ce_loss=1.02]\n", + "Epoch 18: 100%|███████████████████████████████████████████████| 999/999 [01:01<00:00, 16.21it/s, ce_loss=1.01]\n", + "Epoch 19: 100%|███████████████████████████████████████████████| 999/999 [01:00<00:00, 16.56it/s, ce_loss=1.01]\n", + "Epoch 20: 100%|██████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.83it/s, ce_loss=1]\n", + "Epoch 21: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.98it/s, ce_loss=0.997]\n", + "Epoch 22: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.75it/s, ce_loss=0.992]\n", + "Epoch 23: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.81it/s, ce_loss=0.989]\n", + "Epoch 24: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.55it/s, ce_loss=0.985]\n", + "Epoch 25: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.50it/s, ce_loss=0.982]\n", + "Epoch 26: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.45it/s, ce_loss=0.979]\n", + "Epoch 27: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.53it/s, ce_loss=0.975]\n", + "Epoch 28: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.67it/s, ce_loss=0.973]\n", + "Epoch 29: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.50it/s, ce_loss=0.967]\n", + "Epoch 30: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.965]\n", + "Epoch 31: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.82it/s, ce_loss=0.962]\n", + "Epoch 32: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.94it/s, ce_loss=0.959]\n", + "Epoch 33: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.956]\n", + "Epoch 34: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.00it/s, ce_loss=0.954]\n", + "Epoch 35: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.80it/s, ce_loss=0.953]\n", + "Epoch 36: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.87it/s, ce_loss=0.949]\n", + "Epoch 37: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.84it/s, ce_loss=0.948]\n", + "Epoch 38: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.23it/s, ce_loss=0.945]\n", + "Epoch 39: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=0.942]\n", + "Epoch 40: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.10it/s, ce_loss=0.939]\n", + "Epoch 41: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.80it/s, ce_loss=0.938]\n", + "Epoch 42: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.94it/s, ce_loss=0.936]\n", + "Epoch 43: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.78it/s, ce_loss=0.934]\n", + "Epoch 44: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.92it/s, ce_loss=0.932]\n", + "Epoch 45: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.931]\n", + "Epoch 46: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.92it/s, ce_loss=0.928]\n", + "Epoch 47: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.03it/s, ce_loss=0.924]\n", + "Epoch 48: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.17it/s, ce_loss=0.922]\n", + "Epoch 49: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 16.99it/s, ce_loss=0.92]\n", + "Epoch 50: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.08it/s, ce_loss=0.922]\n", + "Epoch 51: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.919]\n", + "Epoch 52: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.918]\n", + "Epoch 53: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.82it/s, ce_loss=0.915]\n", + "Epoch 54: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.913]\n", + "Epoch 55: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.95it/s, ce_loss=0.911]\n", + "Epoch 56: 100%|███████████████████████████████████████████████| 999/999 [00:59<00:00, 16.81it/s, ce_loss=0.91]\n", + "Epoch 57: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.99it/s, ce_loss=0.908]\n", + "Epoch 58: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.18it/s, ce_loss=0.904]\n", + "Epoch 59: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.20it/s, ce_loss=0.904]\n", + "Epoch 60: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.56it/s, ce_loss=0.903]\n", + "Epoch 61: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.05it/s, ce_loss=0.903]\n", + "Epoch 62: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.91it/s, ce_loss=0.898]\n", + "Epoch 63: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.89it/s, ce_loss=0.901]\n", + "Epoch 64: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.33it/s, ce_loss=0.895]\n", + "Epoch 65: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.896]\n", + "Epoch 66: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.895]\n", + "Epoch 67: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.73it/s, ce_loss=0.896]\n", + "Epoch 68: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.83it/s, ce_loss=0.891]\n", + "Epoch 69: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.76it/s, ce_loss=0.891]\n", + "Epoch 70: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=0.889]\n", + "Epoch 71: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.37it/s, ce_loss=0.887]\n", + "Epoch 72: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.44it/s, ce_loss=0.886]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 73: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.48it/s, ce_loss=0.883]\n", + "Epoch 74: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=0.883]\n", + "Epoch 75: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.06it/s, ce_loss=0.881]\n", + "Epoch 76: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.08it/s, ce_loss=0.88]\n", + "Epoch 77: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.87it/s, ce_loss=0.878]\n", + "Epoch 78: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.90it/s, ce_loss=0.881]\n", + "Epoch 79: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.879]\n", + "Epoch 80: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.21it/s, ce_loss=0.876]\n", + "Epoch 81: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.872]\n", + "Epoch 82: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.875]\n", + "Epoch 83: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.28it/s, ce_loss=0.875]\n", + "Epoch 84: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.42it/s, ce_loss=0.873]\n", + "Epoch 85: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.35it/s, ce_loss=0.867]\n", + "Epoch 86: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.47it/s, ce_loss=0.869]\n", + "Epoch 87: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.869]\n", + "Epoch 88: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.20it/s, ce_loss=0.868]\n", + "Epoch 89: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.01it/s, ce_loss=0.863]\n", + "Epoch 90: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.866]\n", + "Epoch 91: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=0.862]\n", + "Epoch 92: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.43it/s, ce_loss=0.861]\n", + "Epoch 93: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.39it/s, ce_loss=0.858]\n", + "Epoch 94: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.17it/s, ce_loss=0.862]\n", + "Epoch 95: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.27it/s, ce_loss=0.859]\n", + "Epoch 96: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.11it/s, ce_loss=0.857]\n", + "Epoch 97: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.29it/s, ce_loss=0.856]\n", + "Epoch 98: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.26it/s, ce_loss=0.857]\n", + "Epoch 99: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.32it/s, ce_loss=0.857]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train completed, total time: 5912.983795166016.\n" + ] } - }, - "outputs": [], + ], "source": [ "n_epochs = 100\n", "val_interval = 10\n", - "epoch_ce_loss_list = []\n", - "val_ce_epoch_loss_list = []\n", - "intermediary_images = []\n", + "epoch_losses = []\n", + "val_epoch_losses = []\n", "vqvae_model.eval()\n", "\n", "total_start = time.time()\n", @@ -640,6 +1013,9 @@ " for step, batch in progress_bar:\n", "\n", " images = batch[\"image\"].to(device)\n", + " \n", + "\n", + " \n", " # Encode images using vqvae and transformer to 1D sequence\n", " quantizations = vqvae_model.index_quantize(images)\n", " quantizations = quantizations.reshape(quantizations.shape[0], -1)\n", @@ -654,7 +1030,7 @@ "\n", " optimizer.zero_grad(set_to_none=True)\n", "\n", - " # model outputs\n", + " \n", " logits = transformer_model(x=quantizations_input).transpose(1, 2)\n", "\n", " loss = ce_loss(logits, quantizations_target)\n", @@ -665,7 +1041,7 @@ " epoch_loss += loss.item()\n", "\n", " progress_bar.set_postfix({\"ce_loss\": epoch_loss / (step + 1)})\n", - " epoch_ce_loss_list.append(epoch_loss / (step + 1))\n", + " epoch_losses.append(epoch_loss / (step + 1))\n", "\n", " if (epoch + 1) % val_interval == 0:\n", " transformer_model.eval()\n", @@ -691,22 +1067,10 @@ "\n", " loss = ce_loss(logits, quantizations_target)\n", "\n", - " # Generate a random sample to visualise progress\n", - " if val_step == 1:\n", - " starting_token = 255 * torch.ones((1, 1), device=device)\n", - " generated_latent = generate(\n", - " transformer_model, vqvae_model, starting_token, spatial_shape[0] * spatial_shape[1]\n", - " )\n", - " generated_latent = generated_latent[0]\n", - " vqvae_latent = generated_latent[revert_sequence_ordering]\n", - " vqvae_latent = vqvae_latent.reshape((1,) + spatial_shape)\n", - " decoded = vqvae_model.decode_samples(vqvae_latent)\n", - " intermediary_images.append(decoded[:, 0])\n", - "\n", " val_loss += loss.item()\n", "\n", " val_loss /= val_step\n", - " val_ce_epoch_loss_list.append(val_loss)\n", + " val_epoch_losses.append(val_loss)\n", "\n", "total_time = time.time() - total_start\n", "print(f\"train completed, total time: {total_time}.\")" @@ -715,97 +1079,218 @@ { "cell_type": "markdown", "id": "98070e8e", - "metadata": { - "pycharm": { - "name": "#%% md\n" - } - }, + "metadata": {}, "source": [ - "### Plot evoluation of Generated Samples" + "### Learning Curves" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "59e3e3e2", - "metadata": { - "lines_to_next_cell": 2, - "pycharm": { - "name": "#%%\n" + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAHZCAYAAACB2e8eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB81klEQVR4nO3dd3hUZd7G8e+ZzKQnJCEJCTX0LohIEUEUXEQBRURR7Oval1XXXcvqYll1WdvqIuti2/UVFIyioIKINBExFJHeE0oIpJOQPpnz/jFkSEgCqTMp9+e6cjFz6pMfQ3LznOc8xzBN00RERESkmbF4ugEiIiIinqAQJCIiIs2SQpCIiIg0SwpBIiIi0iwpBImIiEizpBAkIiIizZJCkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiHjFy5EgMw2DkyJGeboqINFMKQSK1tHLlSgzDwDAMnnnmGU83RxqInTt38uyzzzJixAjatWuHn58fgYGBdOjQgfHjx/Paa69x7NgxTzdTpFmzeroBIiJNSXp6Og899BBz5szB4XCUW5+Tk8OhQ4f46quveOyxx7jrrrt44YUXCAsL80BrRZo3hSAR8YiVK1d6ugl17sCBA4wdO5Y9e/YAEBkZyU033cSIESOIjo7GMAyOHj3KypUr+eyzz0hMTOTtt99mzJgxXHPNNZ5tvEgzpBAkIlIHcnNzGT9+vCsA/fa3v+X1118nKCio3LYTJ07k5Zdf5u233+Yvf/mLu5sqIqcoBImI1IEnnniCHTt2AHDXXXfxzjvvnHV7b29vpk2bxqhRo8jPz3dHE0XkDBoYLdJArFixgttuu41OnTrh7+9PcHAwffv25U9/+hNHjx49677btm3jb3/7G2PGjKFt27b4+PgQGBhI165due2221i3bt1Z93/mmWdcg7sBTpw4wfPPP8/5559PSEgIhmHw3//+t8Jt8/PzefnllxkwYABBQUEEBQUxaNAgZs6cid1ur/ScZ7s7LCEhwXWOkvN+9913jB8/nqioKHx8fOjYsSP33XcfR44cOev3BpCWlsaf//xnunfvjp+fH61ateLyyy9nwYIFAPz3v/91nS8hIeGcxztTSkqKK/RER0fzz3/+s8r79u7dmwsuuKDMsqreOXfm38WZzhywv3z5ciZPnky7du2w2WzExMSQm5tLUFAQhmEwderUc7b3p59+ch131qxZFW5z7Ngx/vKXvzBw4EDCwsLw8fGhXbt2XH/99Sxbtuysxy8uLua///0vY8aMISoqCm9vb1q0aEHXrl0ZNWoUL774oitsitSaKSK1smLFChMwAXP69OnV3j8vL8+cMmWK6xgVfQUEBJgLFy485/nP9vX4449X2obp06e7ttuzZ48ZExNTbv8PPvig3LbHjh0z+/fvX+k5x48fbxYXF1d4zksuucQEzEsuuaTcuvj4+DLnffzxxys9R0REhLljx45Kv7ctW7aYrVq1qnT/u+++2/zggw9c7+Pj4ys9VmXefPNN1/5PP/10tfc/09lqU1rpv4uKlP5cPvnkk+W+9w4dOpimaZo333yz63N28uTJs57zgQceMAHTarWaKSkp5dZ/9NFHZkBAwFk/i7/97W/NoqKicvtmZ2ebw4cPP+dnedKkSWdto0hV6XKYiAeZpsl1113H119/DcD48eO5/vrr6dSpExaLhbi4OF599VUOHTrEddddx48//sjAgQPLHMNutxMQEMBVV13FZZddRo8ePQgODiY5OZnt27fz5ptvcvDgQf7+97/TrVs37rjjjrO26brrriMxMZHf//73TJgwgdDQUPbu3UuHDh3KbXvttdeyY8cOpk2bxvjx4wkLC2P37t08//zz7Ny5k0WLFvHOO+9wzz331LhG77zzDmvXruWSSy7hnnvuoVu3bmRmZvLhhx/y4YcfkpKSwp133slPP/1Ubt/MzEyuuOIKjh8/DsAtt9zCTTfdREREBPv27eONN95g9uzZ/PrrrzVuH8CqVatcr6+66qpaHas+fP7552zdupW+ffvy8MMP06dPH/Ly8ti8eTMAU6dO5aOPPiInJ4cvv/ySm266qcLj2O12Pv30UwDGjBlDeHh4mfXz58/nlltuwTRNOnXqxIMPPkivXr2IiIggISGB9957j2+++Yb33nuP4OBgXnvttTL7P/PMM/zwww8AjBs3jqlTp9K+fXt8fX1JTk7ml19+4auvvqq050uk2jydwkQau9r0BM2ePdsETJvNZi5evLjCbdLT083evXubgDls2LBy61NSUsyMjIxKz1FQUGBefvnlrv/52+32ctuU7lGwWCzmt99+W+nxSm9rs9nMFStWlNsmLS3N1fty3nnnVXicqvYEAebvfvc70+FwlNvurrvucm2zadOmcusfeugh1/p//vOf5dbb7Xbz6quvLnOumvQEdenSxVW7/Pz8au9/prruCQLMUaNGVdq2oqIiMzIy0gTMq666qtLzLV682HW8uXPnllmXkpJitmjRwgTMO++8s8KeHtM0XT1SFovF3LVrV5l17dq1MwHzuuuuO9u3baalpZ11vUhVaUyQiIeYpsmMGTMAmDZtGldccUWF24WGhvLyyy8D8OOPP7J3794y68PDwwkJCan0PN7e3q79Dx486Prff2Vuv/12fvOb31Tpe/j9739f4biVsLAwV4/T1q1bOXHiRJWOV5Ho6Gj+9a9/Vfi//0cffdT1uqQHoURBQYFrPNGFF17IH/7wh3L7e3l58Z///AdfX98atw+cY44AWrRogY+PT62OVR8sFgvvvvtupW2zWq3ccMMNACxdutT1/Zxpzpw5AAQGBnL11VeXWffvf/+bEydO0KZNG2bNmoXVWvGFhmeffZY2bdrgcDj48MMPy6wrmTxy+PDhZ/1+NKeS1BWFIBEP2bFjB/v37wecl6DOZsSIEa7XFV32Ka2goIBDhw6xY8cOtm3bxrZt2zBN07X+XJd+qjI4tirblgz2NU2T+Pj4Kh/zTNddd12lv7y7d+9OYGAg4Jyjp7QNGzaQmZkJwM0331zp8Vu1asWYMWNq3D6A7OxsAAICAmp1nPoybNgwYmJizrpNyd9lUVER8+fPL7c+Ly+PL774AoBrrrkGf3//MusXLlwIOC9jnS0IWq1Whg4dCpT/LEdHRwMwb948cnNzz9pekbqgECTiIRs2bHC9Hjp0qOuOm4q+Sn7RAxU+aiEnJ4eXXnqJfv36ERAQQIcOHejduzd9+/alb9++nH/++a5tU1NTz9qu8847r8rfQ48ePSpdV/p/6yUhoSbOdg5w9pRVdI5t27a5Xp9599WZzhxnVV0lcwHl5OTU6jj1pSp/p4MHD6Zz587A6R6f0hYuXMjJkyeB8uG3uLjY1cP4n//856yfZcMwiI2NBcp/lm+77TYA1q5dS8eOHXnwwQdZsGABKSkp1fuGRapIIUjEQ5KTk2u035n/Q05ISKBv3748+eSTbNmyheLi4rPun5eXd9b1JaGiKs7sDSjNYjn94+VcbarpOUqf58xzZGRkuF5HRESc9RjnWn8uLVu2BJxTCxQUFNTqWPWhqn+nJeFm7dq15aYKKAlGkZGRjB49usy69PT0s06HUJkzP8tPP/00d955J4ZhkJyczFtvvcW1115LZGQkffr0Yfr06a5B7iJ1QXeHiXhI6V/aixYtOuflihKRkZFl3t9yyy3Ex8djGAZ33HEHU6ZMoWfPnkRERODt7Y1hGDgcDry8vADKXBqrSMl2UnX9+vVj3759OBwONm/ezODBgz3dpDKq+nc6depUnnvuOUzT5OOPP+aJJ54AnCHn22+/BeCGG24oN96n9Gf5rrvuqnD8VUW8vb3LvLfZbLz33nv88Y9/5OOPP2b58uVs2LCBwsJCtm/fzvbt23nttdf46KOPyo1JEqkJhSARDynpPQAICQmhT58+1T7Grl27WLNmDQBPPvkkf/vb3yrcLj09vWaNbMRK936kpKTQrVu3Sret7eWWSy65hM8++wyAr7/+utYhqKR3q6IHsJZW15ffunXrxsCBA9mwYQNz5851haDY2FgKCwuBiseBlb70aZpmjT7LpfXq1Yvnn3+e559/nvz8fNasWcPcuXP58MMPOXnyJDfeeCP79+93jSESqSldDhPxkNLjdH788ccaHWP79u2u1yV391Sk9Pij5qJ3796u1xs3bjzrtrWtz5QpU/Dz8wPg3XffrXU4KRljVPqSXkVKnlNWl0pCzrZt29iyZQtw+lJY586dKwx43t7ernrX9LNcGV9fX0aPHs3777/vussxLy+Pr776qk7PI82TQpCIhwwYMIC2bdsCMHv27Bo9P6r0OIyz/eJ9++23q9/ARm7gwIG0aNECgI8++qjS7Y4fP+661FNTERER/O53vwMgKSmJhx56qMr77tixo1xI69ixI+AMOZUNKk9NTeW7776rWYPPYsqUKa7LZ3PmzOHIkSOu6QfOdjfghAkTAGfvZG3rWZlRo0a5Xp9rgL9IVSgEiXiIxWLhySefBJy3d996661nHVSblZXFzJkzyyzr2rWr63XJnDhn+ve//82XX35Z+wY3Mr6+vtx6660ArF+/njfeeKPcNg6Hg3vuuadOHmD64osv0rNnT8DZG/S73/3OdTdVRYqKipg5cyaDBw/m8OHDZdZdcsklABQWFvKvf/2rwn3vuuuucw5yr4moqCguu+wyAD7++GPmzp3rGkd2thD0hz/8wXUX4x133FGml7IiX3/9taunCZyXbBctWnTWMWtLly51vS4JiiK1oTFBInVo8+bNlYaR0i677DLat2/Pvffey3fffceC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Ly8Ph8NR+wbVtZJxQeoJEhFpUG666SYAPvnkk7Nu98UXX5Cfn8/VV1+Nn59frc87b968eu3VqYk77riDVatWcf7553u6KfWiwY4JqgvPPvss+fn5WK1W+vXrx6233kp0dLSnm+XkrRAkItIQDR8+nPbt2/Pjjz+SmJhImzZtKtyuJLDceOONdXLemg79qE9hYWGEhYV5uhn1psH2BNWGt7c3I0eO5Le//S2PPvooEyZMYNu2bTz11FOkpqZWul9RURG5ubmur9Ldm4Zh1OrrzGO4nh9WWFjrY+vr7LXWl2rdFL48UevmyjAMrr/+ehwOR6U9M7t37+aXX36hZ8+edOzYkbfeeotJkyYxYMAAYmJiGDBgANOmTSMhIaHK561sTFBGRgaPPfYY/fr1o3Pnzlx55ZUsXry40uN88skn3HHHHQwePJhOnTrRu3dvbrrpJn788ccy27366qtMnjwZgNdee402bdq4vg4fPuzaprIxQUuXLuW6666jR48edO7cmdGjR/Of//wHu91eZrvDhw/Tpk0bHnroIeLj4/ntb39Lr1696NKlC5MmTWL79u1VrlGJuvrsNsmeoIsuuoiLLrrI9X7QoEH079+f6dOn8/nnn3P33XdXuN+CBQuIjY11ve/YsSMzZswgIiKiTtoVFRXlen3MP4AigKLChtM71YSUrrXUL9Xafdxd67y8PGw2m1vP2VBMnTqV1157jU8//ZQ///nP5X6xfvrppwDcfPPNxMfH88orrzBs2DCuvPJK/P392bdvH1988QXLly9n2bJltGvXzrWv1Wp1/Vm6viXnKL0sNzeXyZMns3PnTgYOHMhFF11EYmIi9913HyNP3S195nH+8pe/0Lt3by655BJatmxJUlISixcvZsqUKXzwwQeMHTsWcPZ4JSYmMm/evHK/N1u2bInNZsNisVR4jn//+99Mnz6d0NBQrr32Wvz9/fn222957rnnWL9+Pf/9739d30/J95uYmMiECRPo3r07N954IwkJCSxZsoTrr7+eNWvWEBkZWaW/G29v7zr7vdkkQ1BFevToQZcuXdi6dWul20ycOJFx48a53pf8BaakpJRLttVhGAZRUVEcO3YM0zQBsJf8g7IXcTTxCIbFq8bHl9MqqrXUD9XafTxV68LCQoqKitx2vobCZrMRGRnJJZdcwooVK1ixYgXDhw93rbfb7cTGxuLj48PVV1+Nl5cXmzZtIjQ0tMxxfvzxR6ZMmcKrr77Kyy+/XGb/kj9L17fk77b0sjfffJOdO3cydepU/vGPf7iWX3vttUydOrXC46xYsYL27duXacsTTzzBlVdeyTPPPMPo0aMBZweB3W5n3rx5DBkyhIcffrjMPkVFRa4xtaXPkZCQwPPPP094eDjffPON63Lhn/70J6ZMmcLixYv55JNPuO6668p8v2vXruXJJ5/kgQcecJ3j1Vdf5bXXXmPOnDk8+OCDFf59nKmwsJCkpKSzbmO1WqvUgdFsQhA4k+3Ro0crXW+z2Sr9X09d/OAxTfP0cUpNmGgWFoKPb62PL6eVqbXUK9XafRpKrR9ZnEBmXs3/Y+gOIX5WXhsbU6tjTJkyhRUrVjBv3rwyIWjZsmWkpKQwfvz4csGntGHDhtG9e3d++OGHGrchNjYWb29vHn300TLLR44cycUXX8yaNWvK7XNmAAJo1aoVV155Je+//z5Hjhyhbdu2NW7TggULsNvt3HPPPWXGS/n4+PDkk09yzTXXMH/+fFcIKt2u++67r8yym266iddee41ff/21Wm2oq38HzSoEJScnExwc7OlmOJV6dAYKQSLSiGTm2Ulr4CGoLowZM4aWLVuyePFisrKyXL8/Su4aKz0geu3atbz77rv88ssvpKenl7l6UNOpWbKzszl06BDdunWr8FLR4MGDKwxBBw8eZObMmfz4448cO3aMgoKyU7EcO3asViGoZAzP0KFDy60bOHAgvr6+FY7z6d27t+vyWonWrVsDcOLEiRq3pzYafQjKyMggNzeXVq1aua47lv6wlti0aRMHDhxwXQv1OD1JXkQaqRC/hv+roy7aaLPZmDRpErNnz2bBggXcdtttJCcns2LFCtq0aePqHVq0aBH33XcfAQEBXHLJJbRr1w4/Pz8Mw2D+/PkcOXKkRufPzs4GnFcxKhIeHl5uWXx8POPGjSM7O5uLLrqI0aNHExQUhMVi4aeffuKnn36isJZPKihpV0WXmwzDIDw8nGPHjpVbFxgYWG5Zye9tT01l06A/yUuWLCEnJ4eMjAwANmzYQFpaGgBjx47F39+fuXPnsmrVKmbOnOlKyk899RQxMTF07twZf39/4uPjWbFiBS1btmTixIke+35KM7y9cXXm6dEZItKI1PYyU2Ny4403Mnv2bD755BNuu+02PvvsM+x2OzfccIOrV+O1117Dx8eHxYsX06lTpzL7f/nllzU+d1BQEIDr996ZKrrb+Z133iEzM5M333yTSZMmlVn32GOP8dNPP9W4PWe2KyUlpVyPkmmapKamVhh4GqIGHYIWLVpESkqK631cXBxxcXGAc1R7ZY/AuOiii9i0aRNbtmyhoKCA0NBQRo0axXXXXef554aV0ENURUQavG7dujFgwAA2bdrEjh07mDdvHoZhcMMNN7i2OXjwIN26dSsXgI4fP86hQ4dqfO6goCDat29PQkICycnJ5S6J/fzzz+X2OXjwIOC8lFeaaZps2LCh3PZeXs6bcoqLi6vcrt69e7N48WJ++umncpMobtq0ifz8fC644IIqH8+TGnQIeuutt865zQMPPFBmpDk4B7NNmTKlvppVN8qMCdLlMBGRhurGG29k06ZNPPnkk+zdu5cRI0aU6QFp06YNCQkJpKSkuC4R5efn88QTT9T67rpJkybx+uuv88orr5S5O2zVqlUVjgcqGagcFxfHZZdd5lo+c+ZMdu3aVW77ko6Bs900dKaJEyfyz3/+k9mzZ3Pttde6pm4oLCzkxRdfBJzP7mwMGnQIatK81RMkItIYTJgwgenTp7N+/XqAcv/JvvPOO3nqqacYM2YMV111FXa7ndWrVwPQq1cvduzYUeNz33///SxevJg5c+awe/duhgwZwtGjR1m0aBGjRo3i+++/L7P9rbfeyvz58/nd737nuntt06ZNbNu2rcLtu3TpQlRUFAsXLnTNv2MYBnfeeWelNxLFxMTw5JNP8txzzzF69GjGjx+Pv78/3333Hfv372fMmDHlLsU1VE1yxuhGwVaqJ0ghSESkwQoMDGT8+PGAs+fkiiuuKLP+9ttv5+9//zshISHMnTuXJUuWMHToUBYuXEiLFi1qdW5/f39iY2OZOnUq8fHxvPvuu+zbt49///vfXHXVVeW279OnD3PnzqVv374sXryYefPmERwczBdffEG/fv3Kbe/l5cU777zDgAED+PLLL3nllVd4+eWXz3m31j333MMHH3xAjx49+Pzzz/nggw/w9vbmr3/9K7Nnz240M44bZkOYdKKBS0lJqVWXpmEYREdHk5SU5JrbwPHt55ix/wXAcu9jGBcMq4umNnsV1Vrqh2rtPp6qdUV32jYHNputWU4S6Qk1qXVVPpc2m61KkyWqJ8hTzpwsUURERNxKIchTNE+QiIiIRykEecqZM0aLiIiIWykEeYiheYJEREQ8SiHIU0rfIq+eIBEREbdTCPKUMrfIa0yQiIiIuykEeYp6gkRERDxKIchTNCZIRBoBzQElDUldfx4VgjxFPUEi0sBZrVYK9fNJGpDCwkKs1rp74pdCkKeUGhNkakyQiDRAvr6+5OfnU1BQoB4h8SjTNCkoKCA/Px9fX986O64eoOopeoCqiDRwFouFoKAg8vPzyc7O9nRz3Mbb21s9YG5SnVpbrVaCgoKwWOqu/0YhyFNsuhwmIg2fxWLB39/f081wGz0Tz30aQq11OcxTNDBaRETEoxSCPMQwjNNBqFBjgkRERNxNIciTSkKQeoJERETcTiHIk0oGR2tMkIiIiNspBHmSeoJEREQ8RiHIk7xPzRWkeYJERETcTiHIk0pCUGGhbsUUERFxM4UgT9Jt8iIiIh6jEORJmjVaRETEYxSCPEmzRouIiHiMQpAHGaUeoqrB0SIiIu6lEORJ3uoJEhER8RSFIE/SwGgRERGPUQjyJPUEiYiIeIxCkCdpTJCIiIjHKAR5knqCREREPEYhyJNKjQkyNSZIRETErRSCPKlMT5Auh4mIiLiT1dMNqEx+fj4LFy5k79697Nu3j5ycHO6//35GjhxZ7WO9/fbbLF++nAEDBvD444/XfWNrqsyYIPUEiYiIuFOD7QnKysoiNjaWxMREYmJianyc/fv3s2rVKmw2W901ro4YemyGiIiIxzTYEBQaGsrs2bOZNWsWN998c42OYZomH3zwASNGjCAkJKRuG1gX9NgMERERj2mwIchms9U6uKxevZrDhw9z44031k2j6lqZyRI1JkhERMSdGmwIqq28vDzmzJnDxIkTG2YvEIB3qTFB6gkSERFxqwY7MLq2YmNj8fb25qqrrqryPkVFRRQVFbneG4aBn5+f63VNlexb7hjeZQdG1+Yc4lRpraXOqdbuo1q7j2rtPg2h1k0yBB09epRvvvmGP/zhD9UaEL1gwQJiY2Nd7zt27MiMGTOIiIiok3ZFRUWVeV9UXMCxU6/9rF60jI6uk/NI+VpL/VGt3Ue1dh/V2n08WesmGYL++9//0r17d4YMGVKt/SZOnMi4ceNc70vSaUpKCna7vcbtMQyDqKgojh07hmmaruXmiSzX67wTJ0hKSqrxOcSpslpL3VOt3Ue1dh/V2n3qs9ZWq7VKHRhNLgRt27aNzZs38+ijj5KcnOxaXlxcTGFhIcnJyQQGBuLv719uX5vNVmnPUV38BZmmWTYEWUvNGF1YoH9wdejMWkv9Ua3dR7V2H9XafTxZ6yYXglJTUwF45ZVXyq1LT0/nwQcf5LbbbqvWWKF6oxmjRUREPKbRh6CMjAxyc3Np1aoVVquVPn368Oijj5bbbvbs2URERDBx4kTat2/vgZZWwKbJEkVERDylQYegJUuWkJOTQ0ZGBgAbNmwgLS0NgLFjx+Lv78/cuXNZtWoVM2fOJDIykvDwcMLDw8sd63//+x8tWrRg0KBBbv0ezsawWMBqBbtdt8iLiIi4WYMOQYsWLSIlJcX1Pi4ujri4OACGDx9e4bieRsfm4wxB6gkSERFxqwYdgt56661zbvPAAw/wwAMP1MmxPMLbG/JyNGO0iIiImzXZGaMbjZJxQbocJiIi4lYKQZ5WEoJ0OUxERMStFII8reTRGYWFmpNCRETEjRSCPK2kJ8h0QHHNZ6UWERGR6lEI8rQyEybqkpiIiIi7KAR5miZMFBER8QiFIA8zSsYEgR6dISIi4kYKQZ6mniARERGPUAjyNG+FIBEREU9QCPI0mwZGi4iIeIJCkKfZSo0J0qMzRERE3EYhyNN0i7yIiIhHKAR5Wqm7w0yNCRIREXEbhSBP05ggERERj1AI8rQyl8M0JkhERMRdFII8TQOjRUREPEIhyMMMDYwWERHxCIUgT9OM0SIiIh6hEORp6gkSERHxCIUgT9OYIBEREY9QCPI09QSJiIh4hEKQp2lMkIiIiEcoBHlaqZ4gzRgtIiLiPgpBnlZ6TJAmSxQREXEbhSBP0+UwERERj1AI8jDDagXLqb8GDYwWERFxG4WghqDkkph6gkRERNxGIaghKBkcrTFBIiIibqMQ1BCUjAtST5CIiIjbKAQ1BN4KQSIiIu6mENQQlPQEaWC0iIiI2ygENQTepwZGF9sxHcWebYuIiEgzoRDUEHiXnjBRvUEiIiLuYPV0AyqSn5/PwoUL2bt3L/v27SMnJ4f777+fkSNHnnPfHTt2sGjRIhISEsjKysLf35+YmBgmTZpEjx496r/xNVF6wsTCAvD181xbREREmokG2ROUlZVFbGwsiYmJxMTEVGvfpKQkDMPg8ssv57e//S3jx48nMzOT6dOns3nz5nppb20ZmjVaRETE7RpkT1BoaCizZ88mJCSE/fv388QTT1R531GjRjFq1Kgyy8aMGcODDz7I119/Tf/+/eu4tXXAu3RPkEKQiIiIOzTIniCbzUZISEidHc/Hx4fg4GByc3Pr7Jh1qvRDVIs0YaKIiIg7NMieoLqQm5uL3W4nOzubVatWcfjwYSZOnOjpZlVMPUEiIiJu12RD0Ouvv86vv/4KgNVqZfTo0UyaNOms+xQVFVFUVOR6bxgGfn5+rtc1VbJvpccoc3dYQa3O1dyds9ZSZ1Rr91Gt3Ue1dp+GUOsmG4KmTp3K+PHjSU1NZdWqVdjtdhwOx1n3WbBgAbGxsa73HTt2ZMaMGURERNRJm6Kioipcnt2uA5mnXofgICA6uk7O15xVVmupe6q1+6jW7qNau48na91kQ1Dpu8pGjBjBY489xltvvcUf//jHSveZOHEi48aNc70vSacpKSnY7fYat8UwDKKiojh27BimaZZb77D5ul5n7t9DVu+kGp+ruTtXraXuqNbuo1q7j2rtPvVZa6vVWqUOjCYbgkqzWq1ccMEFfPnllxQWFuJdegxOKTabDZvNVuG6uvgLMk2z4uOEnf6LMlOP6x9eHai01lLnVGv3Ua3dR7V2H0/WukHeHVYfCgsLMU2TvLw8TzelvJalQlBasgcbIiIi0nw06hCUkZFBYmJimUtVJ06cKLddTk4OP//8My1btqRFixbubGKVGP6B4B/gfKMQJCIi4hYN9nLYkiVLyMnJISMjA4ANGzaQlpYGwNixY/H392fu3LmsWrWKmTNnEhkZCcCLL75Iy5Yt6dKlCy1atCA1NZWVK1eSnp7Oww8/7LHv55xaRkJuPGSkYhYXY3h5ebpFIiIiTVqDDUGLFi0iJSXF9T4uLo64uDgAhg8fjr+/f4X7XXrppaxdu5avv/6a3NxcAgIC6Nq1K9OmTaNnz55uaXuNtIyEw/FQXAyZ6WUukYmIiEjda7Ah6K233jrnNg888AAPPPBAmWVXXHEFV1xxRX01q94YLSNxDQtLS1YIEhERqWeNekxQkxIe6XqpwdEiIiL1TyGogTBatjr9Ju245xoiIiLSTCgENRSlL3+lqidIRESkvikENRSleoLM9JSzbCgiIiJ1QSGoofAPAL9Td7yl6nKYiIhIfVMIaiAMw3DeJg+Qnop5joe9ioiISO0oBDUkJSGo2A4nMjzbFhERkSZOIagBMVqevk1ed4iJiIjUL4WghqRUCDJ1h5iIiEi9UghqQIzw0j1BCkEiIiL1SSGoIWmpECQiIuIuCkENSUs9OkNERMRdavUAVYfDQX5+Pj4+Pnh5ebmWFxYW8uWXX5KQkEBERAQTJkwgLCys1o1t8gKCwMcPCvI0a7SIiEg9q1VPUGxsLHfccQd79uxxLTNNk2eeeYbY2Fg2bNjA4sWLeeqppzh58mStG9vUGYZx+kGq6cmaK0hERKQe1SoEbd26lZCQEHr27OlatnHjRvbv3090dDS33XYb/fr1Iy0tje+//77WjW0Wwk49Q8xuh6xMjzZFRESkKatVCEpOTqZNmzZllq1fvx6AadOmceWVV/LYY48RHBzMunXranOqZkN3iImIiLhHrULQyZMnCQkJKbNs9+7dhIWF0alTJwC8vLzo2rUrqamptTlV81H6Qap6hpiIiEi9qVUIslgs5Ofnu96fPHmSpKQkunfvXmY7Pz8/cnNza3OqZkM9QSIiIu5RqxDUqlUr9u7di+PUAN5NmzYB0KNHjzLbZWVlERwcXJtTNR9hpUNQiufaISIi0sTVKgQNHDiQrKws/vGPf/DNN98wZ84cLBYLAwcOdG1jmibx8fFERkae5UjiEl56riBdDhMREakvtZonaMKECaxfv55ffvmFX375BYCrr76a8PBw1za7du0iOzu7XO+QVCIwGLx9oLBAl8NERETqUa1CkL+/Py+99BLr1q0jMzOTLl260KtXrzLbZGdnM3bsWC666KJaNbS5MAzDOXN00mFIS8E0TecyERERqVO1CkEA3t7ejBgxotL1gwYNYtCgQbU9TfNSEoKKCiE7E4JDPd0iERGRJqdenx2Wm5uLaZr1eYomqcwdYnp8hoiISL2oVU/QoUOH2LZtG/3796d169au5du2bePf//43qampBAYGcssttzBy5MjatrX5OONBqkan7mfZWERERGqiVj1Bixcv5sMPP8Tb29u1LDs7m5dfftk1OeLJkyd5++23iY+Pr11Lm5NSEyZqcLSIiEj9qFUI2r17N+3atStzN9jq1avJz89n9OjRfPDBBzzwwAOYpsnixYtr3djmwmgZcfqNQpCIiEi9qFUIOnHiBC1btiyzbMuWLVgsFqZMmYK/vz8jRowgJiaGvXv31qqhzUrpuYI0JkhERKRe1CoE5ebm4u/vX2bZvn37iImJISgoyLUsOjqa9PT02pyqeQkKcc4VBM67xERERKTO1SoE+fv7k5GR4Xp/5MgRTp48Sbdu3WrdsObMMAzoeKqGacl6kKqIiEg9qFUIiomJYffu3Rw7dgyA5cuXA5SbMDE5OZnQUM11Ux1G976u1+bubR5siYiISNNUq1vkR48ezbZt23jsscdo1aoVBw8epEWLFgwYMMC1TV5eHgkJCVxwwQW1bmxzYnTvi2uGpd1bYNgoTzZHRESkyalVT9DQoUOZPHkyDoeDgwcPEhERwSOPPILNZnNt89NPP1FcXFyud0jOoWM3sDmnHjB3b9OkkyIiInWs1o/NuO6667jmmmvIzc0lODi43PrzzjuPGTNmEBUVVeVj5ufns3DhQvbu3cu+ffvIycnh/vvvr9KEi1u3buWHH35g9+7dpKWlERISQp8+fbjhhhsa1SU5w2aDLj1h56+QngKpxyGi6jUUERGRs6t1CAKwWq0VBiCA8PDwMvMIVUVWVhaxsbGEh4cTExPD9u3bq7zvnDlzOHnyJEOGDCE6Oprjx4/z7bffsnHjRl5++WVCQkKq1RZPMrr1wdz5KwDm7q0YCkEiIiJ1pk5CEIDdbufAgQOuW+HDwsLo1KkTVmv1TxEaGsrs2bMJCQlh//79PPHEE1Xe99Zbb6VHjx5YLKev9PXv359nnnmGJUuWMGXKlGq3x1OMHn0xvzz1ZvdWuPhyj7ZHRESkKal1CCouLubTTz9lyZIl5OXllVnn5+fH2LFjue666/Dy8qryMW02W417bCoae9SrVy8CAwM5cuRIjY7pMTFdnfMFFRa4xgUZhuHpVomIiDQJtQpBDoeDf/zjH2zevBmAgIAAIiOdsx0nJyeTk5PD559/zoEDB3jsscfK9M64U35+Pvn5+ZVesitRVFREUVGR671hGPj5+ble11TJvtU9hmHzxuzSE3PHZshIxUg5htGq9Tn3a85qWmupPtXafVRr91Gt3ach1LpWIWj58uVs3ryZiIgIbrnlFgYPHlxmfVxcHB9++CGbN29m+fLljB49ulaNramvv/4au93ORRdddNbtFixYQGxsrOt9x44dmTFjBhEREWfZq+qqMzi8RNbAizixYzMAwccPE9hfUw1URU1qLTWjWruPau0+qrX7eLLWtQpBq1atwtvbm7/+9a+uHqDSBg0aRExMDI888girVq3ySAjasWMHsbGxDB06lD59+px124kTJzJu3DjX+5J0mpKSgt1ur3EbDMMgKiqKY8eOVftWd7NNR9frzJ9/IPu8wWfZWmpTa6ke1dp9VGv3Ua3dpz5rbbVaq9SBUasQdPjwYXr16lVhACoRGRlJnz592LVrV21OVSOJiYm88sortGvXjnvvvfec29tstjJzHJVWF39BpmlWPwS17ww+vlCQj7l7Kw6HQ920VVCTWkvNqNbuo1q7j2rtPp6sda0G6RQVFZV7gGpFfH19y4y1cYfU1FT+9re/4e/vzxNPPOEa29PYGFarc74ggMx0OH7Usw0SERFpImoVgsLDw9mzZw8Oh6PSbRwOB3v37qVly5a1OVW1ZGdn88ILL2C32/nLX/7SqCZJrEiZ54jt2erBloiIiDQdtQpB/fr1IzU1lQ8++KDCMTN2u53333+f1NRU+vfvX5tTVSgjI4PExMQy587Pz+ell14iPT2dJ554gujo6Do/r7uVDkHsUggSERGpC7UaE3TNNdewZs0ali5dyoYNG7joootc44OOHz/OTz/9RHp6OoGBgVxzzTXVOvaSJUvIyckhIyMDgA0bNpCWlgbA2LFj8ff3Z+7cuaxatYqZM2e6zvvmm2+yb98+Lr30Uo4cOVJmbiBfX18GDRpUm2/ZM9p3Bh8/KMjD3KP5gkREROpCrUJQWFgYTz75JK+//jqpqal89dVX5bYJDw/nj3/8I2FhYdU69qJFi0hJSXG9j4uLIy4uDoDhw4dXOhbp4MGDAKxYsYIVK1aUWRcREdEoQ5BhtULXXrBtI5zIgGOJEN3W080SERFp1AyzDoZk2+12fvrpJ7Zv3+7quQkNDaV3794MHTqUI0eOkJub22ifJJ+SklKrgd2GYRAdHU1SUlKNR8A7lnyG+dn/nMebfCeW31xT4/Y0ZXVRa6ka1dp9VGv3Ua3dpz5rbbPZ6v8WeddBrFaGDx/O8OHDK1z/zjvvsH//fj755JO6OF2zZPQb7ApB5vofQCFIRESkVtz2HAsl6toxottCu1MTJybsxUzWrfIiIiK14ZmHeUmNGIMvcb0241Z7sCUiIiKNn0JQI2IMPH250Yz7Qb1rIiIitaAQ1IgYLSOgy6nB5UmH4UiCR9sjIiLSmCkENTLGoBGu17okJiIiUnMKQY2MMXAYWJx/bWbcasyzPLJEREREKletW+RXrVpVo5NkZWXVaD8pzwhqAb36w7ZNkJ4CB3advkQmIiIiVVatEDRr1qz6aodUg3HhCMxtmwBnb5ChECQiIlJt1QpB4eHh9dUOqQbj/CGYH3lDUSHmhh8xb/gdhpeXp5slIiLSqFQrBL311lv11Q6pBsPPH84bCBvXQvYJ2Pkr9Bng6WaJiIg0KhoY3UhZdJeYiIhIrSgENVZ9B4KfPwDmxh8xT2rwuYiISHUoBDVShs0bY8ilzjeFBZjfL/Jsg0RERBoZhaBGzBhzLZwaEG0u/wozL9fDLRIREWk8FIIaMaNlBMaQkc43uTmYKxd7tD0iIiKNiUJQI2dcMQkMAwDzuy8wCws83CIREZHGQSGokTOi2mJcMMz5JvsE5g/febZBIiIijYRCUBNgXDnZ9dpc+jmmvciDrREREWkcFIKaAKNdRzjvQueb9FTMdSs92h4REZHGQCGoibCU7g1a/Bmmo9iDrREREWn4FIKaCKNzD+je1/km+Sjmz5pFWkRE5GwUgpoQy1XXu16bn/1P8waJiIichUJQE2L07Af9BjnfnEjH/OoTzzZIRESkAVMIamIsN9wFNm8AzGULMRMPerhFIiIiDZNCUBNjRERhXHmd843DgWPufzBN07ONEhERaYAUgpogY8y1EBHlfLNnG2acBkmLiIicSSGoCTJs3lim/M713vz0fQ2SFhEROYNCUBNlnHch9B/sfHMiA3Phx55tkIiISAOjENSElRkkvXwR5tFDHm6RiIhIw6EQ1IQZ4a3KDpL+5B0NkhYRETlFIaiJM34zEVpGOt/s/BU2/+zZBomIiDQQVk83oCL5+fksXLiQvXv3sm/fPnJycrj//vsZOXLkOffNyMjgm2++Yd++fezfv5/8/HymT59O796967/hDZDh7YNl8p043v47AI7572HpMwDj1GUyERGR5qpB9gRlZWURGxtLYmIiMTEx1dr36NGjfPnll6Snp9O+ffv6aWBjM2Do6eeKpR7HXPqFR5sjIiLSEDTIEBQaGsrs2bOZNWsWN998c7X27dSpE++//z5vvPEG48aNq6cWNi6GYThvmTecf93m4ljMjDQPt0pERMSzGmQIstlshISE1GhfPz8/AgMD67ZBTYDRNgZj5BXONwX5mJ/915PNERER8bgGGYKkfhhXT4WAIADMn1dh7tnu4RaJiIh4ToMcGO0pRUVFFBUVud4bhoGfn5/rdU2V7FubY9QFIzAYrpmKY87bADjefQWvp17HaBHq0XbVpYZS6+ZAtXYf1dp9VGv3aQi1VggqZcGCBcTGxrred+zYkRkzZhAREVEnx4+KiqqT49SGecPtJG9eR+H2zZCRhvWDfxLxwiwMa9P6KDSEWjcXqrX7qNbuo1q7jydr3bR+89XSxIkTywymLkmnKSkp2O32Gh/XMAyioqI4duxYg5is0LzzEXj+IchMp2DbJhLffAGvG+/2dLPqREOrdVOmWruPau0+qrX71GetrVZrlTowFIJKsdls2Gy2CtfVxV+QaZoN4x9VcAiWex/H8cqTYLdjfr+I4g5dsAy91NMtqzMNptbNgGrtPqq1+6jW7uPJWmtgdDNldO6BceM9rvfm/72FeXC/B1skIiLiXo06BGVkZJCYmFirS1XNmWXEGIwRY5xvigpxzHoR82SWZxslIiLiJg32ctiSJUvIyckhIyMDgA0bNpCW5pzgb+zYsfj7+zN37lxWrVrFzJkziYyMdO372WefAXD48GEAVq9eza5duwCYNGmSO7+NBs+YcjfmkQQ4sBvSU3C89xqW3/8Vw9Ko87GIiMg5NdgQtGjRIlJSUlzv4+LiiIuLA2D48OH4+/tXuu+8efPKvF+xYoXrtUJQWYbN5hwf9PxDkH0Ctm3C/Ho+xvgpnm6aiIhIvTJMjfw6p5SUlDLzB1WXYRhER0eTlJTUYAfamTt/xfH6dDAdYBhYpk3H6DPA082qtsZQ66ZCtXYf1dp9VGv3qc9a22y2Kt0dpmseAoDRsx/GNVOdb0wTx3uvYqalnH0nERGRRkwhSFyMKybBeRc635zMxvGfGZi16AETERFpyBSCxMWwWLDc+TCEt3IuiN+D+d83MIuLPdswERGReqAQJGUYAYFY7nscrM5JI8241ZjvvoqpaQhERKSJUQiScoz2nbHc+xicep6YuWENjtn/wLTr0piIiDQdCkFSIaPfICz3/8XVI8Qv63D8++8aIyQiIk2GQpBUyuh7AZbfPw3e3s4FW9bjeOtvmAX5nm2YiIhIHVAIkrMyevXHMm06+Pg6F2z/BcerT2Fmn/Bsw0RERGpJIUjOyejeF8sfngG/U7N0x+/B8fc/YyYnebRdIiIitaEQJFVidO2F5c9/h5Aw54LkJGcQStjr2YaJiIjUkEKQVJnRNgbL4y9DdDvnguwTOF75C+aOXzzbMBERkRpQCJJqMVpGYHlsBnTt5VxQkI9j1kuYB/d7tmEiIiLVpBAk1WYEBGJ5+DnoP9i5oCAfx7+ew0xL9mzDREREqkEhSGrEsHljuftP0LmHc8GJDBxvPIuZe9KzDRMREakihSCpMcPmjeWBpyCytXNB0mHnpTHNLC0iIo2AQpDUihEUjOUPf4XAYOeC3Vsx/zdTD10VEZEGTyFIas2IbI3lwafA5pxZ2ly3AscLj2DG7/Fwy0RERCqnECR1wujcA8tdj4Dl1EfqcDyOl/6EY+7bmLk5nm2ciIhIBRSCpM4YAy5y3j7ftqNzgWlirvgGx18fwNz8s2cbJyIicgaFIKlTRqfuWJ56DWPyHeDt41x4Ih3HWy/g+PQDjRUSEZEGQyFI6pzh5YXlNxOxPPcW9B3oWm4uXYDj1b9gZqZ7sHUiIiJOCkFSb4yWkVh+/zTGlN+Bl5dz4d4dOJ5/CHPXFs82TkREmj2FIKlXhmFgGTUey59egtBw58KsTByvPY3jf/9Sr5CIiHiMQpC4hdG5B5an/wm9zncuME3MNd/heOpeHIs+wSzI92j7RESk+VEIErcpmVjRmHwH+Pk7FxbkYy6ci+Op+3D8vArTND3bSBERaTYUgsStDMupQdMv/Afj0itPzyuUmYb57qs4/vU8ZnqqZxspIiLNgkKQeIQR1ALLTfdieWYm9Bt0esXWDTieeRDHD0vVKyQiIvVKIUgqlJCRT2JWYb2fx4hui9eDT2G5/0loEepcmJeL+eFMHK//FTPxYL23QUREmieFICnHYZrM/PkYv//qAO9uPM7Jgvqf4NA4fwiWZ9/CGDbq9MKdv+J4dhqO917HTDlW720QEZHmRSFIyllzMJu9afkUm7BoVwb3LtzP17szsDvq9/KUERCI5fY/YPnDMxAW4Vxoms4Hsj59P445b2OeyKjXNoiISPOhECTlDGobyJS+LfH2MgDILnQwe8Nx/vB1PJuOnqz38xt9BmB5bhbGdbdDQJBzYbEdc+U3OJ6+D8fKbzAdjnpvh4iING0KQVKOr9XCjedF8O8JnRgZE+xafiSrkGdXHOHZ5Yc5dKKgXttg+PhgGXMtlhdnY4y7AXx8nSvycjHnvI3j5Scwjx6q1zaIiEjTphAklQr3t/HwsNa8PKYD3cP9XMs3JeXwh6/jmb3+GFn1PF7I8A/AcvVUZxi6+PLTK/btxPHcQzi+nKtLZCIiUiNWTzegMvn5+SxcuJC9e/eyb98+cnJyuP/++xk5cmSV9s/JyeGjjz4iLi6OwsJCunTpwi233EKnTp3qt+FNULdwP2b8pj0/HMzmw1+SScm14zDh6z2ZrEzIYkrfcMZ2DcV26vJZfTCCQzBu+z3mkJE4PnwLko86L5F99QnmV59A244Yvc/H6DMAMzy83tohIiJNR4PtCcrKyiI2NpbExERiYmKqta/D4eDvf/87a9as4YorrmDq1KmcOHGCZ599lqSkpPppcBNnGAYjYoJ5a3wnpvYLx9fqDDw5hQ7e25jMtK8PEHcku97n9jG698Uy/Q2MKyeffigrwJF4zG8/x/HqUyT9biLm/l312g4REWn8GmwICg0NZfbs2cyaNYubb765WvuuW7eO3bt388ADDzB58mSuuOIKnnnmGSwWC/Pnz6+nFjcPPlYL1/cJZ9b4Tozq1IKSvp+j2UW8sCqR6csPk5BRv88BM7x9sEy8Bcv0N51hqEOXMuuLU45R/I8ncCz/ShMuiohIpRpsCLLZbISEhNRo33Xr1tGiRQsGDTo9E3FwcDBDhw5lw4YNFBUV1VErm6+W/jamDY3mlSti6BVxerzQr8dyeXhxArN+PkZmvr1e22BEt8My8Ra8nnoNy2v/h3HXH6FLT+fKYjvmx7Mx33tND2cVEZEKNdgQVBsJCQl06tQJi6Xst9elSxcKCgp0SawOdWnpy4uXt+ex4a1pFWgDwGHCt/syuW/hAT7fkUZRcf3fzm4EtcAy+BK8Hn2RoImnew7Nn1fheOlPmFs3Yir8iohIKQ12YHRtZGRk0LNnz3LLS3qW0tPTad++fbn1RUVFZXqJDMPAz8/P9bqmSvatzTEaMsMwGNahBRe2DWLRrnTmb0sjr8hBbpGD//2Swrd7M7ljQCRD2gXVew0Mm42Qux4iN6otxe+/AQV5kHgQx5vPgp8/Rt+BGP2HYPS9AKPkSfZSI039c92QqNbuo1q7T0OodZMMQYWFhdhstnLLvb29XesrsmDBAmJjY13vO3bsyIwZM4iIiKiTdkVFRdXJcRqyB9u24cahhby95gBfbjmKCRw7WcRLqxMZ0C6ERy7tSvdWQfXejtbjrqOo30BSX/gT9sPxzoV5uZhxqzHjVmP4+RM47nqCJt6MV4uQem9PU9YcPtcNhWrtPqq1+3iy1k0yBHl7e1c47qck/JSEoTNNnDiRcePGud6XpNOUlBTs9pqPbzEMg6ioKI4dO9ZsBureeV4LLm3nw7sbjrP1eC4Amw5ncsuH6xnVuQW39I8k1K/uP35lam31wXzyVSxbN2D+sg7z1zjIdc54beblkv3pf8le+AnGpVdhGTMRI6hFnbenKWuOn2tPUa3dR7V2n/qstdVqrVIHRpMMQaGhoWRmZpZbXrIsLCyswv1sNluFPUhAnfwFmabZrP5RxYT48PyodsQdOckHvySTlF2ECSzbf4I1B7OZ3LslE3qG4u1V90PTXLW2WjHOH4Jx/hBMux32bsdc/wPmT8vBboeCfMwln1G8/CuM/kOg7wCMXudjBIfUeZuaqub2ufYk1dp9VGv38WStm2QIiomJYefOnTgcjjKDo/fu3YuPjw/R0dEebF3zYhgGg9sFMaB1IN/syWDe1lRyihzk2x38368pfLsvg9vOj2RYezeMF7JaoWc/jJ79MMdNwVwSi/nDUmcYKizAjFsFcaswATp0cY4fGjYKI7xVvbZLREQ8o9HfHZaRkUFiYmKZy1VDhgzhxIkTxMXFuZZlZWWxbt06Lrjggkp7e6T+2LwMru4Zxr8ndGJs1xAsp/JOco6dl9cc5YnvDrE3Lc9t7THCwrHcdC+WF9/BuGwc+PqV3eDgPsyvPsHx5N0Uv/kc5pb1mI76fUSIiIi4V4PuCVqyZAk5OTlkZDifDbVhwwbS0tIAGDt2LP7+/sydO5dVq1Yxc+ZMIiMjAWcI6tq1K7NmzeLIkSMEBQWxdOlSHA4H119/vce+H4EWvlbuHRTFld1CeW9TMpuTcgDYmZLHo0sOcmnHYG7pH0FLf/cEVSO0JcaNd2NOvhMO7MLctglz+yY4dMC5gWnC1g04tm6AlpEYF1+OcdEojDA9mkNEpLFr0CFo0aJFpKSkuN7HxcW5eneGDx+Ov3/FtzhbLBaeeOIJPvroIxYvXkxhYSGdO3fm/vvvp3Xr1m5pu5xd+xAfnrm0LRuP5vDBpmSOZDkHra+Iz2LtoWyu7d2SiT3D8LG6p7PSsFqhWx+Mbn3g2lsxM9Iw136PuXoJpKc6N0pLxvxyDubCj6F3fywXXw79BmFY1bMoItIYGaZGfp1TSkpKrWaZNgyD6OhokpKSNNCuAnaHyZK9GXy8JZWThacnVmzpb+XW/hGMiAnGUsXxQnVda9NRDFs34li5GLZvcvYMlRYQhNH7fOhzAUbv/hjBobU+Z2Ohz7X7qNbuo1q7T33W2mazNd+7w6RxsVoMxnUP45KYFszbmso3ezIoNiEt187ra5P4encGdw1sRfdwv3MfrI4ZFi/oNwivfoMw05Ixf/wec+33kJbs3CAnGzNuNcStPj2gesBQjOG/0S33IiINnHqCqkA9Qe51JKuA/25KZn1iTpnlIzoEc+v5EUQEVH75yR21Nh0O2PUr5pplmNs2Ql5u+Y2sNoxBIzAuG4fRoXO9tMPT9Ll2H9XafVRr91FPkEgF2gb78NTIdvySlMP7G49z6IRzvNDqg1msO5LNNT3DuLZXS/xsnrm50bBYoNf5GL3Od849VNGAanuRc0zR2u+hYzeMTt0hqi1GdFuIagvBIZqWX0TEwxSCpME6PzqAf17ZkaX7Mpm7JZWsgmIKi03mb0vju/0nuLV/BCM7Vn28UH0oN6A65Rjmym8w13wHuad6suL3YMbvAcD1f502HbDceA9G9z4eabeIiDSBeYKkafOyGIztFsq/J3Timp5hlNwslpFn542fknh0yUG2J1dwOcpDjIgoLJPvxPKPDzBuvh/adKh4w8SDOF55Esf//oWZk+3eRoqICKCeIGkkAr29uGNAJFd0DeGDTcn8fMT5DLD96fk8+d0hLmofxO3nRxAV5OPhljoZPr4Yl1yBOWIMnMiA44mYSUfg2BHMPdvg1ENdzTXfYf4ah3HDXRgXDndeahMREbdQCJJGJTrImycvacuWYzm8vymZ+IwCANYeyibuyEmu7hnGg2HnHgznLoZhQEgYhIRhdO8LOG+7N1ctwfz8Q8jPg+wTmO++ivnJbOjSG6N7b4yufaBdjPPuNBERqRe6O6wKdHdYw1TsMPn+wAk++jWFE/mnH2lh8zLoHOZLz3A/ekb60TPcj2Dfhpf3zYw0HB//B35ZV/EGfv7QsTtG5x4YXXpCp24YvhVPEOoJ+ly7j2rtPqq1+zSEu8MUgqpAIahhyy0qJnZbGl/uysDuqLi+bYO96RnhR69If3pG+BEVaGswd2eZv67HsWYp7NkOuScr39CwOB8AO2wUxvlDMGze7mtkRc3R59ptVGv3Ua3dpyGEoIb332ORavK3eXHr+ZGM6RrC5zvS2ZFawKGMsg9jPZJVyJGsQr7bfwKAEF8vekb4nwpGfnQM9cVq8UwoMvpdiFe/C53zDx09iLlnu3Pc0L5dcCL99IamA3b8grnjF0z/AOc8REMvg5iuGkskIlID6gmqAvUENR4ltd5x4DA7U3LZmZzLzpQ89qfnU3yW0vt4GXQL93P1FnUP98Xf5tnxOKZpOp9Xtn8X7NvpnJgx9Xj5DVuEYZw3EKPfIOjRD8PHPYPD9bl2H9XafVRr9zEMg6ioKA4nJlHXj4nU5bA6pBDUeFRW6wK7gz1peexMyWNnch67UvPILXJUehyLAR1CfOgV4UePCH96RfoR7qYn21fGdDhg73bMH5dhblwLhQXlN7J5Q+v2EB6JEd4KwqMwwiMhNAJCW2L4B9RZe/S5dh/V2n1U69ozTZOThQ4y8+3Or7ziU69P/ZlnJyO/mBP5dk4UFDOueyi3nx9Zp23Q5TCRUnysFvq2CqBvK2cIKHaYHD5RwI5ToWhnSi4puXbX9g4T4jMKiM8o4Os9mQBEBlidgSjC2WPUPsTHrRM1GhYLdO+L0b0v5k33YG74EXPzz7BjMxQ5Z9WmqBAO7oOD+1wTM5b5Me7rB6HhGN37YFw23jmDtYjIOZQEm4xTISbzVIjJyCsVbk79eSLfjr3y/2OWk1nqxhZ3UwiSZsnLYhAT6ktMqC9XdnM++T0lp8jZU5TivISWkFFQJkAk59hJzslidUIWAAE2Cz1OBaKeEf50bemLT1336VbC8PXHuPhyuPhyzIIC57PMfo3D3PkrpKU4xw9VJD8Pkg5jJh3GXLkY+lyA5fIJ0LN/gxkoLiLuYZom2SU9Nnlle2pOBxtnT86JguoFm3OxGBDs40VEkB8t/TwXRRSCRE6JCLAREWBjREwwADmFxexOPXUJLSWP3al5FJYaWJRT5GDj0Rw2HnU+HsNqwXlr/qkB1z0j/GjhhlvzDR8f6DfIOSYIMO1FkJ4KqccxU485Q1FGKmZGmnN5ejLYT/V6bduIY9tGaNUGoto4n3x/6sto3R669fb4XWgiUnUO0+RkQXGZ3hlnb83p3pvMfDsZec7XZxsrWV0WA1r4eBHiZ6WFr5UQXy9CfK2E+jn/DClZ5mclyNsLq5fF45ceFYJEKhHg7cWA1oEMaB0IgN1hciA939VbtCMlr8z8RHYH7E7NZ3dqPl/sdC5rHeRNr8jTvUWtg+r/1nzDaoPIaIiMpqIzmbk5zpmql38FacnOhccTnbNal94OwNvHeVt+34EYfS/AaEATUYrUVoHdwbGTRRzNLiTJ9VVEXvEhiuz2cx+gBurrX78JZBfUb7AJKRVsQioJNl4eusu2pjQwugo0MLrxcGetTdPk2MkidiQ7A9GulDyOZBWedZ8WPl7OCRxPhaJOob7YvDzzQ8MsLobN63AsWwT7d0JV6tWtN8bwMRgXXITF20efazfRz5CaKwk6SdmFpcKOM/ik5dZP0GnoLAZlempO99hYaVFqWaiflSAfr3ob+9gQ5glSCKoChaDGw9O1zsq3szPVOdh6R0oe+9Pzznod3dvLoFtLX3pE+BMVaCM8wEaEv5XwABu+bhpfBGDa7ZCTDdmZkJ3lvHS2Zyvm1o2QlVl+h4AgjKGXEjnhBlL9gtzWzubK05/rhq7A7uB4mR6d069TaxB0fKyWRlnnAG8vZ3g5o6emxalAUxJu6jPYVIdCUCOhENR4NLRaF9gd7EvPd92BtjM1j5zCqo0uDPS2EO5vIyLASri/zfkVYCXi1J9hfrZ670UyHQ44fABzywbMuNVw7Ej5jVqEYvTqD73Ox+jVDyM4tF7b1Bw1tM+1JxQWOziWXbpH5/TrtFw71a1KkI8X0YE2Wgd5Ex3kTXSQjdbB3rQO8qFrTNtmXWt3aQghSGOCROqRj9VC70h/ekf6Ay1xmCaHTxSemsjR2VuUnFNxwD5Z6OBkYQEJmRXMB4RzbEGIn5Vwf2u5gOQMTc7u7dr8j8+wWKBDF4wOXTDH3eCctHH1t5gb1oD9VLtPZGD+tAJ+WuH8ReTjB8GlBliHt8Lo1hu69cEIDK5xW6TpKyw+dekqq2zQKenRqXbQ8bacCjjep8KOzfU+yKfiyVB1l2TzohAk4kYWw6BDiA8dQny4oquzxyQtt4gD6QWk5haRklNEaq791Gs76XlFlV5OM4GMPOc8HXvT8ivcxmqBMD9nIIoIcP4ZHlD6vY1Ab0uVfvAbhgFde2F07YU55S5Y/wPee7aR/+v6shM3FuRBSh6kHHO10/x+ERgGtInB6NHX+aiPtjHQqg2GVT+GmhNX0DkVbo5mFZF0spCkrLoJOlFBp3t3Kgs6IiX000fEw1r622hZyWzUDtMkM7+Y1JwiUnKLSM1xBqTUXLsrMGXmVf6Lw+6A5JwiZ29TSl6F2/h4GWXGIpX0LJUOTWeOTzICgjAuvYqIm+7i6KFDmPt3Ym7fhLl/t3MMUfYJ5xij0kwTjsRjHol3vgXwsjpvzW/X0dnj1LEbtOuI4e2eR39I3SoqNskpLCa7sJiTBcWcKCh2jdU5ml3IsexCUnJqFnSizujNUdCRuqAQJNKAWQyDMD8rYX5WuuFX4TZFxSbpec6AlHIqIKXmFLnCUmpOEdlnGYdUUGySmFVI4lnubAv0tpwORafGJ0UE2miTYyMtPZ9ivw44LuiAY4AzuDlMKLYX48jPxUxLpfhYIsXJSTgyM3Bg4DAMHIbF+ScWHMcsmMcP44g7gsPiRXFQCxx+QZg+PjisPji8vXHYfHEEh2BabTjM0+c588/iU6/NSrYxTfCzWfC3eRFgs+DvXfHrAG8v/L0tzuU2L3ytRrO4VGKaJgXFJtkFxZwsLHb9ebLQwcmCUwGnsJjsAsep5cWnljvIr8VseoGnenTOvGzVWkFH6pFCkEgjZ/MyaBXoTavAyic1zLc7TgUje9nLbjlFpJz6s+Ask4uUjE+KzzhzfNLRKrTQF+gM4Z0hvErfUln2U18AJ/KAinu06pvFAP+S8ORtKfO6JCg5Q5MX/jbLqW08F6QcpkluoaNUaDkVZFyhpWyYyS4oPtWL48DuqJ8BwYFlLl0p6IjnKQSJNAO+VgttW/jQtkXFl5lKngt0ZkAqfdktLbeoTidh84SSedxq8jveYZaEQQfk1Pz8zh6nU0HpzNenQlPgqWX+p3qkAry9yPfO4UByLtkFdleYcfXSFJwOOyUh52Sho9qXnWrCaoEgby8Cfbxcfwae+h6CvL2IDDwddoIVdKSBUQgSEQzDIMjHOX9Ix1DfCrcpGZ+UcupSW1quHR//QE5mZ2MY4GUYWAznJbyyfzqPX7LMq4JtjFKvvQwDw2HHknvy1FcORm42lpQkjAO7sBw9hAUHFtOBxTSxmA4Mmw2vISPxGnkFXmHhruOUPYczAZmmSWGxSW6Rg5yiYnILHZW+zilykOt6XUzOqfW5RcU1eo6Sw4TsQsdZL09W7kAN9qk6X6uFIG/LqRDj/AryOR1mToccS6n1Xvh4NY/LhNI0KQSJSJWUHp/UHT83zF1T8e30ZvYJ54NiN/+MufFHcDigEPj+M1i+ACKioFVrjMho591nrdtBu07gHwA4w5CP1cDHaiHE1wtOZICvtVq371c1SDlDU9nwVNsgdTYGzktOAacCyukAY3GFFmeAsZQJNgHeXh6buVzEkxSCRKRRMYJaYAwaAYNGYKbeirn0C8wfv4PCQjAdkHwUko+6LgW54llkNEb7zhDdFtJTMZMOQ9IRyMtxdkV164Mx+BKMARdhBASevQ2lglRoDZ+AXVGQyilykFtY7OqBOh2YHPj5+WEtLjwj5FjKhB1/b0uDmAlYpLFQCBKRRssIb4Vx0z2Y46dgLv8a89ef4fjRsvMWlUhOwkxOqvhApgm7t2Lu3oo5923oc4FzHiP/QPAPwPAPhJCWztv362heo+oEKc0YLVI/FIJEpNEzglpgXH0TXH2TMyScSIfjRzGPJ8LhBMyD++BIAhSdMQ1AWISzZyjluLMHCcBud15q2/yzazNX7PDxg649MXqch9G9L7TvhGHRYF+RxkohSESaFMMwnL02IS2dQeUUs7gYkg47Z7IObQlRbTF8nXMvmaYJB/dh/rwKc/0PznFCFSnIg22bMLdtcgYj/wDocR5Gz37O56dFRGuQsEgjohAkIs2C4eUFbWOcX2euMwznozxiumJOvgMOJ0D2Cczck5B7EnJOwtHDmLu3OnuZSuTmwKafMDf95AxFYeHQvjNG244Y7WKgbUcIj1RvkUgDpRAkIlKKYfGCDp2dr89YZ5omHEvE3L0Fc+cW2LXFGZJKpKc6B11v/vn0JTSLBVqEQYjzywgNd15Gi+kK0W0VkEQ8qMGGoKKiIubNm8cPP/zAyZMn6dChA1OmTOG88847574//vgjCxcu5MiRI/j6+jJw4ECmTp1KcLCeYC0iNWcYhjO4RLeFkVdiOorhcDzmjl8xd26GA7uh4IyH2TockJHq/IKyd635+EKHzhjdz8MYMQYjJMyN342INNgQ9NZbb/Hzzz9z5ZVXEh0dzcqVK3nppZeYPn06PXr0qHS/pUuX8u6779K3b19uvfVW0tLSWLx4MQcOHOCFF17A27vyRwuIiFSHs9eoC0aHLjB2EqbDAanHnIOxj8RjHkmA9BTITHc+VPbMO7sK8mHPdsw92zG/+RRj0HCM0VdjtO/kke9HpLlpkCFo3759rF27lptvvpkJEyYAMGLECP74xz/y0Ucf8be//a3C/ex2Ox9//DE9e/bkqaeecg1Q7N69OzNmzOD7779n7Nixbvs+RKR5MSwWiGwNka0xLriozDrTboesDOet+gl7MRP2QsI+SEt2blBsx/xpBeZPK6BLLwgIdI5FOjUm6ai3jeKQlhhhEdAyElpGgK8/hs0bbDaweUNoS4zI1h74zkUapwYZgtatW4fFYmH06NGuZd7e3lx22WV8/PHHpKamEh5e/kmMhw4dIicnh4suuqjMHRoXXHABvr6+rF27ViFIRDzCsFqdt+SHRWD0OH1Z30xPwVy5GHPVktPji/btKLd/MUDK8XLPAys3a9B5F2KZeDNG245lt7PbYedmzPRUjEEjMPz8a/stiTR6DTIExcfHEx0djb9/2X+kXbp0ASAhIaHCEGS3Ox81XdElL29vb+Lj43E4HFgslnpotYhI9RlhERjX3op51fWYPy3HXLYIjiee3sDbBwICsRQX48jKPPcBt6zHsXWDM+hMuAnycpw9THGrnZfkAHNxLJY7/lBmCgGR5qhBhqDMzExCQ0PLLS9ZlpFR8RweUVFRGIbB7t27ufTSS13Ljx49SlZWFgA5OTkEBQVVuH9RURFFRUWu94Zh4Ofn53pdUyX7av6Q+qdau49qXbcMXz+49CrMS8Y6xxFZbRAQiGHzxjAMoqKiSDqYgJmajJl23HknWmEBFBViFhVBQR7m+jXOAdim6Zzz6OdVFZ8sLRnHq09hjL4ay7W3OC+pCaDPtTs1hFo3yBBUWFiIzWYrt7xkWWFhYbl1AMHBwQwdOpRVq1bRpk0bBg0aRHp6Ou+//z5eXl4UFxdXui/AggULiI2Ndb3v2LEjM2bMICIiopbfkVNUVFSdHEfOTbV2H9W6HrRpU+Hi6A4x0CGm0t3MwgJOfv0pWfM/wJF1ouxKmzd+g0fgyEynYNsmZ1D67guM3VsI/M3VFKenYk85RnHKcRwnT2BpEYpXSEu8QlviFRaOaTpwZJ3AcSKD4hMZUFSE74XDCLzyOiynHk7blOhz7T6erHWDDEHe3t5lemRKlCw72x1ed999N4WFhfzf//0f//d//wfA8OHDadWqFXFxcfj6+la678SJExk3bpzrfUk6TUlJcV1qq4mS/8UdO3ZMz/2pZ6q1+6jW7lOtWg8ZhdFvKMbSLzDXLIXwKCxDL8UYOIwi/0BMhwPLsoU4Pv8Q7EXYDx0g893Xyx/nyMFztqtg2yZOzP8vltETMEaNcz5jrZHT59p96rPWVqu1Sh0YDTIEhYSEkJ6eXm55yWWwii6VlfD39+fPf/4zqampJCcnExERQUREBE899RTBwcEEBFT+PxabzVZhDxRQJ39BpmnqH5WbqNbuo1q7T5Vr7euHZcKNMOHGcvtjGBiXX42lV38c770Gh+PL7+/j53xESFXkZOP4cg4sXYAxYCh42QDz9HQAUW0xOvdwzqRdyc/Xhkifa/fxZK0bZAiKiYlh+/bt5ObmlhkcvXfvXtf6cwkPD3cNns7JyeHAgQMMHjy4XtorItLYGG06YHnyFdi6ETMvFyMs3Hn3WmhLDJs3ZlGh8xlqJV8WAwJbQFALCAqGE5mYiz91jjtyOCAvF/PH7ys8lwnOMU4dOmN06u6cMbtdZ4hq43yciYiHNMgQNGTIEBYtWsSyZctc8wQVFRWxcuVKunbt6go3qampFBQU0KaS6+cl5s6dS3FxMVdddVW9t11EpLEwrDY4f0i5x4MAzsHS4a2cXxXxD8S482HMcVMwl3yGuXY5FJ9l2IC9CPbvwty/CzgVjGze0DYGI7wVtAiF4BAIDsVoGQGdezaqniNpnBpkCOratStDhgzh448/Jisri6ioKFatWkVKSgr33nuva7uZM2eyY8cO5s+f71r2xRdfcOjQIbp27YqXlxfr16/n119/ZcqUKa5b7EVEpG4YkdEYtz6Iee2tkJYChuHsNTIszjvXEvbBgVPhJzmp7M5FhRC/BzN+T5nFzkeK+GH0GQD9B2P0HYgR0PjHG0nD0yBDEMCDDz7IvHnzWL16NTk5ObRv357HHnuMXr16nXW/9u3bExcXx8aNG3E4HLRv356HH36YoUOHuqnlIiLNjxEYDIHln89oxHSFkc5Jas2sTDi4H/PQfucz1w4fKB+MShTkYW78ETb+iOnl5bxU5+3j/LJ5g6+fswcpMhojMhoioqFlpHqPpFoMUyO/ziklJaXCu9WqyjAMoqOjSUpK0kC7eqZau49q7T5NudZmQT6cSIesTOc4oxPpkLAPc+t6OJld/QP6B0Cw89KaERIGnXpg9OrnHKB96o5f01EMB3ZjbtmAeWA3BAZhtGoDka2xRLUhqv9Ajp/MaXK1bmjq83Nts9ka791hIiLSPBg+vq7nrQGu8UlmcTHs24m5+WfMbRuds10XFcBZ5noDIDfH+XXsiPOyWtxq558hYRg9+4HDgbl9U7mAVfIruBhINAzo1N15Ga7fIGjTQZMnNlEKQSIi0uAYXl7QvQ9G9z5ww29dy03TdA6yzjkJKccwk486L6klJ2FmpjnvZMvKhIL8sgfMTHc+nLYqTNM1iNv84iPnZbZBwzEuG4cR0rLuvknxOIUgERFpNAzDcI4JCglz9u50rXicqJmfB8lHMXdtwdz5K+zZ7nzMCICfP/Tqj3HehRi9+juXHz+KefwoHE/EK3439oMHTh8sLRlz8WeYS7/EGHIJxuUTMdq0x8xIw9y2EXPbJtj1K+SdMbeSzQptYpzjomK6YnTsCq3aYOj5lQ2GQpCIiDQ5hq+fc4LG9p3hNxOdz1dLcM41R8euzukBSotsjdH39DiVo1t+wfHreswtcbB7m/P2/2I75o/fO+dDioiClGNnb0Rh2bvfTHD2Kl17K8aFw3WJrQFQCBIRkSbPsNmgkl6jCrePiMIyahyMGoeZmY65fBHmyiWQl+Pc4MwAFBDkDEal5Z4sf/dbWjLmO69grvgGy5TfYXTo7FplFhTAkXjnpbv8XMjPg7xcZ09VeCuMtjHO8Uk+lT/+SapHIUhEROQsjJAwjGtvw7xyMuaa7zCXLYK0ZOjQxTl4us8AZ++Spfzs12buSefdbgl7Mbf/Anu2OVfs24HjhUcwBl/i3O7gfjiWCKaj0naY4JyHKSIao1M3jIsvh259KuxRMvPzoLhY8yudg0KQiIhIFRi+/hijr4bRV2Pa7RjWc/8KNfwDneOPevXHHHsdbN2AY957kHwUTBNz3crqNcI0nWOdko86923TAePSqzCGjIS8HMzNcZi//gy7toDdDr3PxzL+Rufz26QchSAREZFqqkoAKrePYcB5F2Lp1R9z+VeYX81zXu4C8LJCm/bOMUyRrZ2Dt/38MXz9wcsL83iic4LJIwlw9JBztm2AxIOYH83CnP/e6YHfpW3/Bcf2X6DX+VjGT8Ho0rNabTZN0zkeysvaJMcwKQSJiIi4kWG1YfxmIubQURC/23mnW+v25Qdrl96nzwDXa9NehLlxLeaKr+HUs9jKBaDQcOels/QU5/sdv+DY8Ytz5u2AQPAPBP8AjOAQ57F7D3A+L67kHEVFmHGrML/7EhIPQnQ7jEEjMAZfgnHm2KdGTCFIRETEA4ygYDjvwurvZ7U5xxINvgTz4D7M5V9jbt0ALUIx+g/G6D8Y2neG4mLMn5ZjfvMppB537pyecjoY4RxnZK5a4nwMSf/BGAMuwkxMwFzxjXO+pRJJhzG/nIP55RznRJLnXegcrB0aDmHhENKyRr1jntb4WiwiIiIAGB26YNzxh4pXWq0Yw3+DOfQyzJ9XOoNNeopzRu1ie9lt8/Mw162seIxSeKvTIQqcjxw5sBs4PdM2huF8XEmYMxQZYRHg4wsnsyA7C/NkFuRkg9XmvNTnH4DhF0BGRCSOiNYYFw6vbSlqRCFIRESkCTOsVoxho2HYaODUOJ/CAues20fiMTf8iLn559O3/wMYFowBQzEuvxqjcw/MtGTMuB8wf17pvDx2JtN0PgPuRLpzbqQqtMsETgLG4JEKQSIiIlL/DMNw9tL4+Dp7bc670DmZ5I7NmNs3gl8gxvDLMcJbnd6nZSTG2EkwdhJm0mHngOz0VMhIdf1JeqozBFXGaoXiYmdgKs3fv56+03NTCBIREWnmDJsN+l2I0e/cY5SM6HbOgdIVrDPtRZCR5rzsVlgIgcEQFAxBLcDbxxmACvIhNwcjP5eW/n6kFRbV/TdURQpBIiIiUicMq805c3Zld5AZxunb/w0Dn+hojKQk5yU6D9BT3ERERKRZUggSERGRZkkhSERERJolhSARERFplhSCREREpFlSCBIREZFmSSFIREREmiWFIBEREWmWFIJERESkWVIIEhERkWZJIUhERESaJYUgERERaZYUgkRERKRZ0lPkq8BqrZsy1dVx5NxUa/dRrd1HtXYf1dp96qPWVT2mYXrq+fUiIiIiHqTLYW6Ql5fHY489Rl5enqeb0uSp1u6jWruPau0+qrX7NIRaKwS5gWmaxMfHo063+qdau49q7T6qtfuo1u7TEGqtECQiIiLNkkKQiIiINEsKQW5gs9m47rrrsNlsnm5Kk6dau49q7T6qtfuo1u7TEGqtu8NERESkWVJPkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiIiLNkh6OUo+KioqYN28eP/zwAydPnqRDhw5MmTKF8847z9NNa7T27dvHqlWr2L59OykpKQQGBtK1a1emTJlC69aty2x75MgR/ve//7Fr1y6sVisDBgzgtttuIzg42EOtb9w+//xzPvnkE9q1a8err75aZt3u3bv56KOPiI+Px8/Pj6FDh3LTTTfh6+vrodY2TgcOHODTTz9l165dFBUV0apVK0aNGsWVV17p2ka1rr2kpCTmzZvHrl27OHnyJOHh4Vx88cWMHz8eHx8f13aqddXl5+ezcOFC9u7dy759+8jJyeH+++9n5MiR5bat6s9mh8PBokWLWLp0KZmZmURHR3PNNddw8cUX11m7FYLq0VtvvcXPP//MlVdeSXR0NCtXruSll15i+vTp9OjRw9PNa5S+/PJLdu/ezZAhQ+jQoQOZmZksWbKExx57jBdeeIH27dsDkJaWxvTp0/H39+fGG28kPz+fRYsWcejQIV566SU9HLGa0tLSWLBgQZlfECUSEhJ47rnnaNu2Lbfeeivp6eksWrSIY8eO8eSTT3qgtY3Tr7/+yowZM+jYsSOTJk3C19eX48ePk56e7tpGta691NRUnnzySfz9/bniiisIDAxkz549zJ8/nwMHDvDnP/8ZUK2rKysri9jYWMLDw4mJiWH79u0Vbledn82ffPIJX3zxBaNGjaJz585s2LCBN998E8MwGDZsWN003JR6sXfvXnPy5Mnml19+6VpWUFBgPvjgg+Zf/vIXD7ascdu1a5dZVFRUZtnRo0fNm266yXzjjTdcy9555x1z6tSpZkpKimvZr7/+ak6ePNn87rvv3NbepuL11183n332WXP69OnmI488Umbdiy++aN59991mTk6Oa9myZcvMyZMnm5s3b3Z3UxulnJwc86677jJffvlls7i4uNLtVOva++yzz8zJkyebhw4dKrP8X//6lzl58mQzOzvbNE3VuroKCwvNjIwM0zRNc9++febkyZPNFStWlNuuqj+b09LSzClTppjvvvuua5nD4TD/+te/mvfee+9Z/51Uh8YE1ZN169ZhsVgYPXq0a5m3tzeXXXYZe/bsITU11YOta7y6d+9erhcnOjqatm3bkpiY6Fr2888/M2DAAMLDw13LzjvvPKKjo/npp5/c1t6mYMeOHaxbt47bb7+93Lrc3Fy2bNnC8OHD8ff3dy2/5JJL8PX1Va2raM2aNZw4cYIpU6ZgsVjIz8/H4XCU2Ua1rhslD+ts0aJFmeWhoaEYhoHValWta8BmsxESEnLO7ar6s3n9+vUUFxczZswY1zLDMLj88stJS0tjz549ddJuhaB6Eh8fT3R0dJl/QABdunQBnF2tUjdM0+TEiROu68np6emcOHGCzp07l9u2S5cuxMfHu7uJjZbD4eCDDz7gsssuc11qLO3QoUMUFxfTqVOnMsutVisxMTGqdRVt3boVPz8/0tPT+cMf/sCtt97KbbfdxjvvvENhYSGgWteV3r17A/D222+TkJBAamoqa9euZenSpYwdOxZfX1/Vup5U52dzfHw8Pj4+tGnTptx2JevrggZG1JPMzExCQ0PLLS9ZlpGR4e4mNVk//PAD6enpXH/99cDp2lZW/5MnT1JUVKRp8atg6dKlpKSk8PTTT1e4PjMzE6i41iEhIezatas+m9dkHDt2DIfDwcsvv8yll17KTTfdxPbt21myZAk5OTk89NBDqnUd6d+/PzfccAMLFixgw4YNruXXXnstU6ZMAfS5ri/V+dmcmZlJSEgIhmGU2670sWpLIaieFBYWVvhLtmRZyf/upHYSExN577336Natm+suhJLaVjT4uXT9FYLOLjs7m/nz5zNp0qRK76grqXVFtfT29tbnvIry8/MpKCjg8ssv58477wRg8ODB2O12li1bxg033KBa16GIiAh69uzJ4MGDCQoKYtOmTSxYsICQkBCuuOIK1bqeVOdnc2Fh4Tm3qwsKQfXE29uboqKicstLlnl7e7u7SU1OZmYmf//73/H39+eRRx7BYnFe3S2prd1uL7eP6l91n3zyCYGBgYwdO7bSbUrqWNFnvbCwUHWuopI6nXnHy8UXX8yyZcvYs2eP68481bp2fvzxR2bPns0bb7xBy5YtAWfgNE2TOXPmMGzYMH2u60l1fjZ7e3u75We4xgTVk5CQkAq7687WHShVl5uby4svvkhOTg5/+ctfCAsLc607W3dpRkYGgYGB6gU6h6SkJJYtW8bYsWNJT08nOTmZ5ORkioqKsNvtJCcnc/LkSddAyIpqXdklYSmvpE5nDiwtGbybk5OjWteRpUuX0rFjR1cAKjFw4EAKCgqIj49XretJdX42h4SEkJmZiXnGM97r+neoQlA9iYmJISkpidzc3DLL9+7d61ovNVNYWMiMGTNISkri8ccfp23btmXWh4WFERwczP79+8vtu2/fPtW+CtLT0zFNkw8++IAHH3zQ9bV3716SkpJ48MEHiY2NpX379nh5eXHgwIEy+9vtdhISElTrKioZgFt6TiA4/QM/ODhYta4jmZmZ5e68g9O9Ew6HQ7WuJ9X52RwTE0NBQUGZu35LtitZXxcUgurJkCFDcDgcLFu2zLWsqKiIlStX0rVr1zK3B0rVORwO/vnPf7Jnzx4efvhhunXrVuF2gwcPZtOmTWWmIti6dStJSUkMGTLEXc1ttNq1a8ejjz5a7qtdu3aEh4fz6KOPctlll+Hv70/fvn354YcfXLceA6xevZr8/HyGDh3qwe+i8Sip0/Lly8ss//777/Hy8qJXr16qdR2Jjo4mPj6eo0ePlln+448/YhgG7du3V63rUVV/Nl944YV4eXnx7bffupaZpsl3331HWFgY3bt3r5P2aExQPenatStDhgzh448/Jisri6ioKFatWkVKSgr33nuvp5vXaH344Yds2LCBCy64gJMnT7J69eoy60eMGAHAxIkTWbduHc8++yxXXnmla0r39u3bc+mll3qi6Y1KcHAwgwYNKrf8m2++ASizbsqUKTz99NM888wzjBo1yjWzbr9+/ejfv7+7mtyodezYkUsvvZQVK1ZQXFxMr1692L59O+vWreOaa65xXe5VrWtvwoQJbN68menTpzNmzBjXwOhffvmFyy67TLWuhZK7GUt6MDds2EBaWhoAY8eOxd/fv8o/m1u2bMlVV13FwoULKS4upnPnzqxfv56dO3cybdo01xjQ2jLMMy+4SZ0pLCx0PTssJyeH9u3bc8MNN+gfUC0888wz7Nixo9L18+fPd70+fPgwH374oev5NOeffz633nprlSb0koo988wzZGdnl3t22K5du5gzZw4HDhwo84wlPz8/D7W08bHb7SxYsICVK1eSnp5OREQEY8aM4aqrriqznWpde/v27ePTTz8lPj6e7OxsIiMjueSSS7j66qvx8vJybadaV88DDzxASkpKhetmzpxJZGQkUPWfzQ6Hgy+//JJly5aRkZHhenbY8OHD66zNCkEiIiLSLGlMkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiIiLNkkKQiIiINEsKQSIiItIsKQSJiIhIs6QQJCIiIs2SHpshIvXubDPJlnb//fczcuTI+m9QHbj++uuBsrOUi0jjohAkIm7TvXt3oqKiKl1/tnUiInVNIUhE3GbUqFGNpqdHRJo+jQkSERGRZkk9QSLSIJUec7Ns2TK+++47jh49ipeXF927d2fSpEl069atwn1PnjzJwoUL2bBhA8nJyVgsFqKjo7nooosYO3Ys3t7eFe6Xnp7O119/zebNm0lJScE0TcLCwujWrRujR4+me/fuFe63bt06vv76aw4dOoTD4SAmJoaJEycyYMCActtmZGTwxRdfsHnzZlJTUzEMg6CgIKKjo+nfvz8TJkyoYcVEpLoUgkSkQfvf//7HN998Q/fu3Rk4cCCHDh3il19+YcuWLTz88MMMGjSozPbHjx/nueeeIyUlheDgYM4//3yKi4vZvn07c+bMYe3atTz99NMEBgaW2W/r1q289tpr5OTk0KJFC/r06YPVaiUlJYU1a9YAVBiC5s+fz2effUa3bt04//zzSUxMZPfu3cyYMYM//vGPZdqXmZnJ448/TkZGBuHh4fTr1w9vb28yMjJISEjgwIEDCkEibqQQJCIN2nfffcfTTz9Nnz59XMsWLlzIRx99xKxZs+jevTstWrRwrXvzzTdJSUlh4MCBTJs2DV9fXwCysrJ44YUXiI+P5/3332fatGmufVJTU3n11VfJzc3lmmuu4frrr8dqPf3j8cSJEyQlJVXYvsWLF/O3v/2Nrl27upbNnz+f2NhY5syZUyYELVu2jIyMDEaPHs3vfvc7DMNwrbPb7ezcubMWlRKR6lIIEhG3mTVrFrNmzap0/QcffEBAQECZZaNHjy4TgAAmTJjATz/9xP79+/n++++59tprAdi1axd79+7Fx8eHu+++2xWAAIKDg7nnnnt4/PHH+fHHH5k6dSotW7YE4KuvviI3N5cLLriAm266qVy7WrRoUSZolXb99deXCUAAEydO5JtvviEpKYnU1FTCw8MBZ08QQP/+/csEIACr1Urfvn0rrY2I1D2FIBFxm3PdIl+696VEZXeTjRgxgv3797Njxw5XCNq+fTsA/fr1IyQkpNw+nTp1okOHDhw8eJAdO3YwfPhwAH799VfAGbiq64ILLii3zGaz0apVK+Lj40lPT3eFoC5durB06VLmzJmDaZr069evTFATEfdSCBIRt6nJLfKRkZFnXZ6WluZalp6eftZ9AFq1asXBgwdd2wKuiRzbtGlTrbYBroBzJj8/PwCKiopcy0aMGMGWLVtYs2YNr776KhaLhbZt29KjRw+GDBlSrsdLROqXQpCISC1YLFWfacRisTBt2jSuvfZaNm3axK5du9i9ezdLly5l6dKlXHDBBfzpT3+q1jFFpOYUgkSkQUtOTiYmJqbc8pLem7CwMNeyktfJyclnPd6Z+4WHh3P06FESExPdMmt127Ztadu2LRMmTMA0TbZt28abb77Jxo0bWbVqFZdeemm9t0FENFmiiDRwq1evPuvy3r17u5aVvN68ebNrEHJp8fHxJCQkYBgGPXv2dC3v378/AN9//30dtbrqDMOgb9++DBs2DICEhAS3t0GkuVIIEpEGbenSpa4BzyW++uor9u3bh5+fH5dddplreY8ePejatSuFhYXMnj2bgoIC17qsrCxmz54NwLBhw8qM5Rk3bhx+fn5s2LCBTz75BLvdXuZ8J06cYNeuXbX+XlatWsWBAwfKLc/Ly2PHjh0ARERE1Po8IlI1uhwmIm7z/ffflws0pfXr14+LL764zLLRo0fz3HPP0aNHD8LCwjh8+DCHDh3CYrFw3333lbsLbNq0aTz33HNs2LCBBx98kJ49e2K329m+fTt5eXl07NiRO++8s8w+4eHhPPLII7z22mt8/vnnfP/993Tr1g0vLy9SU1OJj4/n4osvpkePHrX6/n/++WfeeustQkNDiYmJISAggJycHHbv3k1ubi7t2rVj1KhRtTqHiFSdQpCIuM3u3bvZvXt3pesDAgLKhaDbb7+d1q1bs2zZMtavX4+Xlxf9+/dn0qRJFc7g3KpVK2bMmMHChQtZv349GzduxGKx0Lp1a4YOHcqVV15Z4WMz+vXrx6uvvspXX33F5s2b2bx5M15eXoSGhjJixIg6CSfjx48nMjKSPXv2EB8fz8mTJwkMDKRt27ZcfPHFjBw5UrfMi7iRYZqm6elGiIicqfSzw0RE6oPGBImIiEizpBAkIiIizZJCkIiIiDRLGhMkIiIizZJ6gkRERKRZUggSERGRZkkhSERERJolhSARERFplhSCREREpFlSCBIREZFmSSFIREREmiWFIBEREWmWFIJERESkWfp/aZQ0qaBMkngAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } - }, - "outputs": [], + ], "source": [ - "# Plot every evaluation as a new line and example as columns\n", - "val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))\n", - "print(len(val_samples))\n", - "fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)\n", - "fig.set_size_inches(12, 30)\n", - "for image_n in range(len(val_samples)):\n", - " reconstructions = intermediary_images[image_n][0]\n", - " ax[image_n].imshow(reconstructions.cpu(), cmap=\"gray\")\n", - " ax[image_n].set_xticks([])\n", - " ax[image_n].set_yticks([])\n", - " ax[image_n].set_ylabel(f\"Epoch {val_samples[image_n]:.0f}\")" + "plt.style.use(\"ggplot\")\n", + "plt.title(\"Learning Curves\", fontsize=20)\n", + "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color=\"C0\", linewidth=2.0, label=\"Train\")\n", + "plt.plot(\n", + " np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),\n", + " val_epoch_losses,\n", + " color=\"C1\",\n", + " linewidth=2.0,\n", + " label=\"Validation\",\n", + ")\n", + "plt.yticks(fontsize=12)\n", + "plt.xticks(fontsize=12)\n", + "plt.xlabel(\"Epochs\", fontsize=16)\n", + "plt.ylabel(\"Loss\", fontsize=16)\n", + "plt.legend(prop={\"size\": 14})\n", + "plt.show()" ] }, { "cell_type": "markdown", - "id": "46a4f043", - "metadata": { - "pycharm": { - "name": "#%% md\n" + "id": "29a35d4b", + "metadata": {}, + "source": [ + "## Image-wise anomaly detection\n", + "\n", + "To verify the performance of the VQ-VAE + Transformerperforming unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "aa3938fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023-03-07 17:39:35,982 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-07 17:39:35,982 - INFO - File exists: /tmp/tmpma12lzmd/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-07 17:39:35,983 - INFO - Non-empty folder exists in /tmp/tmpma12lzmd/MedNIST, skipped extracting.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3067.09it/s]\n", + "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:02<00:00, 5.99it/s]\n" + ] } - }, + ], + "source": [ + "test_data = MedNISTDataset(root_dir=root_dir, section=\"test\", download=True, seed=0)\n", + "\n", + "in_distribution_datalist = [{\"image\": item[\"image\"]} for item in test_data.data if item[\"class_name\"] == \"HeadCT\"]\n", + "in_distribution_ds = Dataset(data=in_distribution_datalist, transform=val_transforms)\n", + "in_distribution_loader = DataLoader(\n", + " in_distribution_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True\n", + ")\n", + "\n", + "in_likelihoods = []\n", + "\n", + "progress_bar = tqdm(enumerate(in_distribution_loader), total=len(in_distribution_loader), ncols=110)\n", + "progress_bar.set_description(f\"In-distribution data\")\n", + "for step, batch in progress_bar:\n", + " images = batch[\"image\"].to(device)\n", + "\n", + " log_likelihood = inferer.get_likelihood(\n", + " inputs=images, vqvae_model=vqvae_model, transformer_model=transformer_model, ordering=ordering\n", + " )\n", + " in_likelihoods.append(log_likelihood.sum(dim=(1, 2)).cpu().numpy())\n", + "\n", + "in_likelihoods = np.concatenate(in_likelihoods)" + ] + }, + { + "cell_type": "markdown", + "id": "19541717", + "metadata": {}, "source": [ - "### Generating samples from the trained model" + "We will use the other classes of the dataset for the out-of-distribution examples." ] }, { "cell_type": "code", - "execution_count": null, - "id": "56cc187d", - "metadata": { - "pycharm": { - "name": "#%%\n" + "execution_count": 25, + "id": "f3e714ee", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "out-of-distribution data: 14%|██████▊ | 11/76 [00:02<00:12, 5.20it/s]\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[25], line 12\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step, batch \u001b[38;5;129;01min\u001b[39;00m progress_bar:\n\u001b[1;32m 10\u001b[0m images \u001b[38;5;241m=\u001b[39m batch[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimage\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m---> 12\u001b[0m log_likelihood \u001b[38;5;241m=\u001b[39m \u001b[43minferer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_likelihood\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mimages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvqvae_model\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvqvae_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransformer_model\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtransformer_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mordering\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mordering\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m ood_likelihoods\u001b[38;5;241m.\u001b[39mappend(log_likelihood\u001b[38;5;241m.\u001b[39msum(dim\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m))\u001b[38;5;241m.\u001b[39mcpu()\u001b[38;5;241m.\u001b[39mnumpy())\n\u001b[1;32m 17\u001b[0m ood_likelihoods \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mconcatenate(ood_likelihoods)\n", + "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/torch/autograd/grad_mode.py:27\u001b[0m, in \u001b[0;36m_DecoratorContextManager.__call__..decorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecorate_context\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclone():\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/generative/inferers/inferer.py:609\u001b[0m, in \u001b[0;36mVQVAETransformerInferer.get_likelihood\u001b[0;34m(self, inputs, vqvae_model, transformer_model, ordering, condition, resample_latent_likelihoods, resample_interpolation_mode, verbose)\u001b[0m\n\u001b[1;32m 606\u001b[0m probs \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mlog(probs)\n\u001b[1;32m 608\u001b[0m \u001b[38;5;66;03m# reshape\u001b[39;00m\n\u001b[0;32m--> 609\u001b[0m probs \u001b[38;5;241m=\u001b[39m \u001b[43mprobs\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mordering\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_revert_sequence_ordering\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 610\u001b[0m probs_reshaped \u001b[38;5;241m=\u001b[39m probs\u001b[38;5;241m.\u001b[39mreshape((inputs\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m],) \u001b[38;5;241m+\u001b[39m latent_spatial_dim)\n\u001b[1;32m 611\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m resample_latent_likelihoods:\n", + "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/monai/data/meta_tensor.py:276\u001b[0m, in \u001b[0;36mMetaTensor.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 275\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m--> 276\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__torch_function__\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtypes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 277\u001b[0m \u001b[38;5;66;03m# if `out` has been used as argument, metadata is not copied, nothing to do.\u001b[39;00m\n\u001b[1;32m 278\u001b[0m \u001b[38;5;66;03m# if \"out\" in kwargs:\u001b[39;00m\n\u001b[1;32m 279\u001b[0m \u001b[38;5;66;03m# return ret\u001b[39;00m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _not_requiring_metadata(ret):\n", + "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/torch/_tensor.py:1279\u001b[0m, in \u001b[0;36mTensor.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 1276\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\u001b[1;32m 1278\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _C\u001b[38;5;241m.\u001b[39mDisableTorchFunction():\n\u001b[0;32m-> 1279\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1280\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m func \u001b[38;5;129;01min\u001b[39;00m get_default_nowrap_functions():\n\u001b[1;32m 1281\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] } - }, - "outputs": [], + ], "source": [ - "samples = []\n", - "for i in range(5):\n", - " starting_token = 255 * torch.ones((1, 1), device=device)\n", - " generated_latent = generate(transformer_model, vqvae_model, starting_token, spatial_shape[0] * spatial_shape[1])\n", - " generated_latent = generated_latent[0]\n", - " vqvae_latent = generated_latent[revert_sequence_ordering]\n", - " vqvae_latent = vqvae_latent.reshape((1,) + spatial_shape)\n", - " decoded = vqvae_model.decode_samples(vqvae_latent)\n", - " samples.append(decoded[:, 0])" + "ood_datalist = [{\"image\": item[\"image\"]} for item in test_data.data if item[\"class_name\"] != \"HeadCT\"]\n", + "ood_ds = Dataset(data=ood_datalist, transform=val_transforms)\n", + "ood_loader = DataLoader(ood_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True)\n", + "\n", + "ood_likelihoods = []\n", + "\n", + "progress_bar = tqdm(enumerate(ood_loader), total=len(ood_loader), ncols=110)\n", + "progress_bar.set_description(f\"out-of-distribution data\")\n", + "for step, batch in progress_bar:\n", + " images = batch[\"image\"].to(device)\n", + "\n", + " log_likelihood = inferer.get_likelihood(\n", + " inputs=images, vqvae_model=vqvae_model, transformer_model=transformer_model, ordering=ordering\n", + " )\n", + " ood_likelihoods.append(log_likelihood.sum(dim=(1, 2)).cpu().numpy())\n", + "\n", + "ood_likelihoods = np.concatenate(ood_likelihoods)" + ] + }, + { + "cell_type": "markdown", + "id": "5aa92638", + "metadata": {}, + "source": [ + "## Log-likehood plot\n", + "\n", + "Here, we plot the log-likelihood of the images. In this case, the lower the log-likelihood, the more unlikely the image belongs to the training set." ] }, { "cell_type": "code", - "execution_count": null, - "id": "37d2c316", - "metadata": { - "pycharm": { - "name": "#%%\n" + "execution_count": 30, + "id": "cd456a7c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0, 'Log-likelihood')" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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LiQpKclbZsuWLRw8eJDTp0+j0+l48803W1ynvLycvLw8jh49SkhICF//+td56KGH0GrlH96ZM2eYNWsWaWlprF27lgEDBnD8+HFWrFjBv/71L/Lz84mNjeXAgQPMmzePyZMns2HDBhISEjh06BC//OUvKSgo4I9//CMGg8F73qVLlzJ//nwcDgfnzp1jy5YtzJs3j+eff54f/ehHAbxjIXqnYz14kHqTpqDqkk1+t4uO61RQ1a9fP375y1/y5ptvereiyc/PB+CWW27h8ccfx2Qytft8u3fvZsOGDSxatIiMjAz+9re/8fLLL7NmzRqio6NblD9+/Di5ubk89NBDZGVlUVBQwKpVq1i5ciUDBgwA4C9/+Qtbt27lySefxGQysWnTJl5++WVWr17t/QB3Op2MHz+ewYMH869//avFddxuN6+88goxMTGsWLGCqqoqXn/9dbRaLQ899FCH2609VFXF7Wps9ppGceFydv0vM43WiKK0fzrx8uXL0ev1bNy4kdDQUADMZjPDhw9nwoQJrFy5kldeeYWlS5eSkZHBunXrvHtEJicnk5aWxtSpU8nLy+PJJ5/0njciIsL7/JjNZsaPH4/JZCInJ4cZM2bcMNgWQviWqsLRCs/vzFviem5QlSSZKtEJnQqqAPr378/PfvYzrFYrly5dQlVV+vbtS1RUVIfP9de//pW77rqLO++8E4BFixZx8OBBtm3bxr333tui/HvvvceoUaOYNWsWAPPmzePzzz/n/fff54knnkBVVd577z3mzJnDmDFjAHjqqadYtGgR+/fvZ+LEiQA88MADANdd/uGzzz7j/Pnz/OxnPyMmJoaUlBS++93v8vvf/54HHngAna7TzdiC29XI53+f23bBLjBi6h/R6kLaVbaqqort27eTnZ3tDaiamEwm5syZQ35+PgsWLKCwsJC1a9e22HQ7MzOTyZMn8+677zYLqlrz+OOPs2bNGj744AMJqoTwo8v1WsobtGgVlaG9oPuvrF6L0w26HrbAqehaNx0NOBwOdu7cyWeffcbly5epr68nNDSUxMRERo0axaRJkzoUbDidTk6dOtUseNJoNIwYMYLCwsJW31NYWMjMmTObvTZy5Ej2798PQGlpKRaLhVtvvdV7PCwsjPT0dAoLC71BVVsKCwsZMGAAMTEx3tdGjRrFunXrOHfuHKmpqa2+z+Fw4HBc/eWjKIo38OhIJiiYFRcXo6oqGRkZrR5PT0/HYrFw8uRJ7/etycjIaNdCsbGxscTHx3Pu3Lmbr3Qv0N2er6b6drd6d1c3095HKz1ZqowYB6F6gJ75s+oTqqLXqDjcCuUNOpLCW44Z7ih5vv0rkO19U0HV2bNn+T//5/9QVlYGeAKVkJAQampqKC4u5uOPP2bLli0sW7aM5OTkdp2zpqYGt9vdLHABiImJ4cKFC62+x2KxtOgWjI6OxmKxeI83vXa9Mu1hsVha1KvpnDc6zzvvvMOf/vQn7/epqamsXLmShISEFmXr6+vR6/Xe73U6HVkz3213HX2pI91/TYGzRqNpVv8mTWPOmsrpdLpWy2k0GhRF8R5TFAWtVttqWVVVr3vM1/xxDV8zGAzNxgx2J4mJiYGuQq/SkfYuLvL8d2z/7vt8tVe/SDhTDc5QE768VXm+/SsQ7d3hoKqhoYGVK1dSU1PDgw8+yJQpU4iLi/Mer6ys5KOPPmLLli2sXLmSVatWERLSvq6knua+++5rlklrClTKyspwOpuv8WK325tltTya9+nr9fpWyvie29n+9WeSk5NRFIVjx47x7W9/u8Xx48ePExMTw8CBAwH48ssvGTp0aKvlUlNTvfenqioul6vF/VZWVlJRUUFycnKXt4W/2tvX7HY7Fy9eDHQ1OkRRFBITE71DCETXupn23ne2D2AgNdTCxYv1bZbvzuKNcZzByJFzFvprOn+v8nz7V1e0t06nazUh0qJcR0+8bds2ysvLeemll8jMzGxxPC4ujvvuu4+MjAx+9atfsX37dqZNm9bmeaOiotBoNC0yP61liZrExMRQXV3d7LXq6mpv+ab/VldXExsb26xMSkpKm3W69jpNexpee45rr9EavV5/3UxHT/mHFRcXx5QpU3jrrbdYtGhRs3FVpaWlbNmyhfvvv5/MzEzS09PJy8tj9uzZzcZVHT16lJ07d/LCCy+0eb3169ej0WhaXcFfXNVdny9VVbtt3buj9ra33XV15l9mXGOP/xl516qyaXx6r/J8+1cg2rvDQ/AOHjzIyJEjWw2orjV8+HBuvfVWDhw40K7z6nQ60tLSOHLkiPc1t9vNkSNHGDx4cKvvGTx4MJ9//nmz1w4fPuwd32MymYiJiWlWpq6ujhMnTlz3nNe7ztmzZ5sFcIcPHyY0NLTd3Zs92YoVK7Db7cyfP589e/ZQUlLCtm3bePDBB0lMTCQ7OxtFUcjJyaGwsJBFixZx6NAhSkpKyM/P59FHH2X06NEsXLiw2XmtViulpaWUlJSwZ88eli1bRm5uLtnZ2dcdxyaE8L0iix6HWyHG4CLZB2OMgp2sVSVuVoeDqrNnz3LLLbe0q+zw4cM5e/Zsu889c+ZMPvzwQ7Zv38758+dZt24djY2N3HHHHQC8/vrrbNy40Vt++vTpfPbZZ+Tn51NSUsLmzZs5efKkNzOmKArTp09ny5YtfPLJJ5w9e5bXX3+d2NhY72xA8KxBdfr0acrLy3G73Zw+fZrTp097V4sfOXIkycnJvP7665w+fZpPP/2Ut99+m6lTp3bLMTe+lpaWxtatWxkwYABLlixh4sSJLFu2jAkTJvC///u/3izhmDFjyM/PR6PRsGDBAiZOnMirr77K3LlzefvttzEajc3Om5OTw2233cakSZN45plnqKmpYdOmTW3OEBRC+NbhK0spZPZx0BvGWveVVdXFTepw95/Var1hl9e1oqOjsVqt7T73hAkTqKmpYfPmzVgsFlJSUnjxxRe91ysvL282gHrIkCE888wzvP322/zhD38gKSmJ559/3rtGFcDs2bNpbGzkjTfeoK6ujqFDh/Liiy82W2Ry06ZNfPTRR97vly1bBsDPf/5zMjMz0Wg0/OQnP2HdunX89Kc/xWg08vWvf53vfve77b63ni45OZk1a9a0WW7YsGHk5eW1WW7v3r0+qJUQwhcOlHr+4LktobGNkj1D0/5/kqkSHdXhoMrpdLZ7qQStVttiQHZbpk2bdt0xWL/4xS9avPa1r33thps6K4rCd7/73RsGQE8++WSb2Y+EhIR2jfkRQoiexOmGQ2WeP0JvN9kDXBv/SLym+09V6RXZOeEbN7WkQmlpKadOnWpXOSGEEN3XcYueOqeGSL2b9B68Pc21TFeCqjqnhhqHQrRBBpeL9rmpoGrTpk3ebWmEEEL0XAev6frT9pKMTYgWYo0uqhq1XK7TEm3oWI+L6L06HFT94Ac/6Ip6CCGECEIHSj1df1m9pOuvSWLY1aBqcIwEVaJ9OhxUNc3EE0II0bM53XC43BNUje4lg9SbJIa5+LIKLtl0QO+6d3HzZKtIIYQQrfq03EC9S0Os0UVadO/K1siyCuJmSFAlhBCiVbsueLYYm5DUiKaXjKdqIkGVuBkSVAkhhGhBVaHgoieompTUEODa+F9iuKyqLjpOgiohhBAtnKnVcd6qQ69RGdO3940pSpStasRNkKBKCCFEC7suepZSyEpoJFzf+9Zpagqqyhu02Hv+dofCRySoEj5RUlLCc889R1ZWFikpKYwdO5aXXnqJysrKZuWOHz/O4sWLGTFiBKmpqUyaNIlVq1ZRX1/frNy4ceMwm82YzWYGDRrEuHHjWLx4MQUFBf68LSF6rYIr46km9ut9XX8A0QY3Rq0bgNJ6yVaJ9pGgSnTamTNnmD59OsXFxaxdu5Zdu3bx6quvUlBQwKxZs6iqqgLgwIEDzJw5E4fDwYYNG9i5cyfZ2dls3ryZefPmYbc3Xwdn6dKlHDp0iB07dpCbm0t0dDTz5s0jNzc3ELcpRK9xqU7Lp+WeTNWUXhpUKYoMVhcdd1Mrqouup6oqOJuPY1BxoTr8sE2Ezths4+q2LF++HL1ez8aNGwkNDQXAbDYzfPhwJkyYwMqVK3nllVdYunQpGRkZrFu3Do3GE88nJyeTlpbG1KlTycvLa7YHY0REBCaTyXu+8ePHYzKZyMnJYcaMGaSnp/vwpoUQTf5x1vPvOCuhkb5h7gDXJnCSwlycrdVzwaYDetfip+LmSFAVrJyNuDbObfaSv7r1tQ/9EfQh7SpbVVXF9u3byc7O9gZUTUwmE3PmzCE/P58FCxZQWFjI2rVrvQFVk8zMTCZPnsy7777b5sbWjz/+OGvWrOGDDz6QoEqILqCq8P4Zz7/lqQPq2yjds5kjXHAZLtokUyXaR7r/RKcUFxejqioZGRmtHk9PT8disXDy5Env963JyMho1ybdsbGxxMfHc+7cuZuvtBDiuk5U6zhVo0evUbkzuXcHVUnhngVPL0hQJdpJMlXBSmf0ZIyuodfrcfip+6+jVNV/s4NUVe1Q96QQov3+ejoMgIlJDUQaet+sv2v1u7JWlaf7T4i2yZMSpBRFadEFp+j1KATXX0wpKSkoikJRURF33313i+MnTpwgJiaGQYMGAVBUVMTw4cNblCsqKiItLa3N61VWVlJRUcGAAQM6X3khRDM2h8Jfiz1B1ay0ugDXJvCagirp/hPtJd1/olPi4uKYMmUKb731VotlEUpLS9myZQv33HMPmZmZpKenk5eXh9vdfODr0aNH2blzJ/fee2+b11u/fj0ajYapU6f68jaEEHiyVHVODQMjHYzvhQt+flVT919Fg5YGp2THRdskqBKdtmLFCux2O/Pnz2fPnj2UlJSwbds2HnzwQRITE8nOzkZRFHJycigsLGTRokUcOnSIkpIS8vPzefTRRxk9ejQLFy5sdl6r1UppaSklJSXs2bOHZcuWkZubS3Z2NqmpqQG6WyF6JpcKfywKB+CBDBvSww5RepVwneePwIuyrIJoB+n+E52WlpbG1q1bycnJYcmSJVgsFhISEpg2bRrPPvsssbGxAIwZM4b8/HxWr17NggULsNlsmM1m5s6dy9NPP43R2HwsV05ODjk5ORgMBhISEsjKymLTpk1MnDgxELcpRI/2r3MhlNh0ROrd3D2wdw9Qb6Io0C/CRZFFwwWbltQoZ6CrJIKcBFXCJ5KTk1mzZk2b5YYNG0ZeXl6b5fbu3euDWgkh2sPhhjeORAEwb7CVUF3vHqB+rX7hToosepkBKNpFuv+EEKKXe/dUGCU2HXFGFw8OtgW6OkHl6mB1yUGItklQJYQQvVhlg4b1RyMBeDyzVrJUXyFrVYmOkKBKCCF6KVWFlQeiqbZrSY92MCtVllH4KlmrSnSEBFVCCNFLvXcmlB0XQtEpKi+NrUInnwgteIMqqxY/rnEsuin5JySEEL3Q/guw8pNoAB67pZaMGJnZ1pqm7j+bU0ONXdaZEDcmQZUQQvQyJ6t1LMoHu1thSr96Hh5mDXSVglaIFkyhnmzVeat0AYobk6BKCCF6kU/LDCz5Vx+qGmBYrJ1fjLOglQTMDSVHeLJVElSJtkhQJYQQvYBLhf/vWARPf9SHWoeG0UmwZkqlzPZrh6tBlcwAFDcmYbcQQvRgqgoFF42sPxrJcYsBgG8k1/Ofs0KxlKsy+LodkiOk+0+0jzwhQgjRA7lV2HEhhN99EUmRRQ9AmM7Nj0bVMCu1nlB9KJbAVrHbkO4/0V7yhAifKCkp4bXXXmP79u1UVlZiMpmYNm0aP/7xj4mLi/OWO378OKtXr2b37t1YrVbMZjOzZ8/mqaeeIjQ01Ftu3LhxnD9/HoCQkBDi4+MZNWoU3/ve95g0aZLf70+I7sKtwvaSEP7ni0hOVF8Npu5Pt/HgYBsxRjeK7JbcIdL9J9pLxlSJTjtz5gzTp0+nuLiYtWvXsmvXLl599VUKCgqYNWsWVVVVABw4cICZM2ficDjYsGEDO3fuJDs7m82bNzNv3jzsdnuz8y5dupRDhw6xY8cOcnNziY6OZt68eeTm5gbiNoUIai4V/nkuhO99kMDyj+M4Ua0nTOfm0WG1bJl+mR+MqCXG6A50Nbsl85XuP4tdS60sqyBuQDJVwUpVweH6ymuAww9ryei1nu3Z22n58uXo9Xo2btzozTaZzWaGDx/OhAkTWLlyJa+88gpLly4lIyODdevWodF44vnk5GTS0tKYOnUqeXl5PPnkk97zRkREYDKZvOcbP348JpOJnJwcZsyYQXp6ug9vWojuSVVh54UQfnskkuIaT2YqQu/mgQwb382wEmWQQVOdFaZTiTO6qGzUUmLTMdTgCHSVRJCSoCpYOVzE/cfbAbl05TPzwNC+R6Oqqort27eTnZ3drPsOwGQyMWfOHPLz81mwYAGFhYWsXbvWG1A1yczMZPLkybz77rvNgqrWPP7446xZs4YPPvhAgirR6x2t0PP64Sg+LTcCEKl3893BVh5ItxEpwZRPJUc4qWzUct6qZWisBFWidRJUiU4pLi5GVVUyMjJaPZ6eno7FYuHkyZPe71uTkZHBvn372rxebGws8fHxnDt37uYrLUQ3V2LV8l+fR/Hhec8fMgaNyoODrSwYaiVCL8FUV0iOcHG4QgarixuTpyNY6bWejNG1L+l1OPzV/ddBqh/nZauqKgNtRa9U3ajwP19G8ucT4ThVBQWV6Sn1PJFZgylMxkt1pabB6udq5WNTXJ88HcFKUVp2wen1EGSxREpKCoqiUFRUxN13393i+IkTJ4iJiWHQoEEAFBUVMXz48BblioqKSEtLa/N6lZWVVFRUMGDAgM5XXohuwumGP50I53dfRFLr8HSfj+vbwFO31pAue/b5Rf/IK0GVZKrEDcjsP9EpcXFxTJkyhbfeeov6+vpmx0pLS9myZQv33HMPmZmZpKenk5eXh9vd/C/qo0ePsnPnTu699942r7d+/Xo0Gg1Tp0715W0IEbQ+vmhk/gcJ5H4WTa1DQ3q0g9wpFayZUikBlR8NvBJUnZFMlbgBCapEp61YsQK73c78+fPZs2cPJSUlbNu2jQcffJDExESys7NRFIWcnBwKCwtZtGgRhw4doqSkhPz8fB599FFGjx7NwoULm53XarVSWlpKSUkJe/bsYdmyZeTm5pKdnU1qamqA7lYI/zhdo+O5nXE8V9CHs7V6Yo0ufjLawpvfKmNs38ZAV6/X6X9lWYUauwZLo3x0itZJyC06LS0tja1bt5KTk8OSJUuwWCwkJCQwbdo0nn32WWJjYwEYM2YM+fn5rF69mgULFmCz2TCbzcydO5enn34ao9HY7Lw5OTnk5ORgMBhISEggKyuLTZs2MXHixEDcphB+4XTD/zsWwfovInGpCjpF5YEMG9+/pVYGoQdQiE4lMczJpTodZ2p1xBjtbb9J9DoSVAmfSE5OZs2aNW2WGzZsGHl5eW2W27t3rw9qJUT3crpGxy/3xfBllWePvglJDfxoZDUDIl1tvFP4w8DIq0HVyHgJqkRLElQJIUSAqSq8cyqM3E+jsbsVIvVu/u22ar49oL4j6/CKLjYw0sney3CmRj46RevkyRBCiAByuCHnYDT/WxwOwPjEBl643YIpVJZICDYDrgxWPyuD1cV1yJMhhBABUudUeGF3LPsuh6Cg8sMRtcwfYpXsVJAaGCUzAMWNyZMhhBABYHUo/HhHH45WGgjVulnxtSomJMmsvmDWlKm6YNPicINeJgGKr5BHQggh/KzBBc8XxHG00kCUwc1vvl4hAVU3kBDiJkznxqUqlMgioKIVElQFka8uiilER/lzuyBxc5xu+OnHcXxabiRc5+Y/plSQ2Uc26O0OFOVqtuq0dAGKVkhQFSTCwsKora2VwEp0Sl1dXYv1vkTwcKuwYn8Muy6GYNCorJpUyZBYCai6k5SmoEpmAIpWyFMRJHQ6HeHh4Vit1uuWMRgM2O2yNoq/dLf2VlUVnU4nQVWQUlX4v59G8fezYWgVlV9PqOS2hO7zfAmPtGhPUHWqWj4+RUvyVAQRnU5HVFRUq8cURSEpKYmLFy9KF48fSHsLX1v3RSR/OhGBgsrPxlqYKGOouqW0aE9m8VSNPsA1EcFIuv+EEKKLvV0Yzu++iATguduqmTqgvo13iGCV1rSsQo0Op4zWEF8hQZUQQnShv50OJfezaACeyKzh/vS6ANdIdEZimIswnRunqnBOZgCKr5CgSgghusjfz4Ty6/0xAMzLsPLosOuPmRTdg6JczVadlHFV4iskqBJCiC7w/plQfrkvBjcKs1JtPD2yRlZK7yGaxlWdrJZxVaI5CaqEEMLH3j8Tyq+uCaiyR1ejkYCqx5AZgOJ65IkQQggf2nIyjNcORuNGYXaqjWUSUPU4aVEyA1C0ToIqIYTwAacb1h6O4u2iCABmp9lYliUBVU806EqmqsSqpcGpEKKTZVeEhwRVQgjRSRdtWn6+N5bPKwwALB5ewyNDrTKGqoeKNbqJNbqoatRyslon2wwJLxlTJYQQnbD9fAiP/COBzysMhOvcvPy1Sh4dJgFVT6YoeLcXOm6RLkBxlWSqhBDiJjS44DefRbPlZDgAt8TZ+dX4KvqFuwJcM+EPQ2Ic7LkUwvEqCarEVRJUCSFEB52s1vHSnljvQOX5Q6wsGV6DTnL/vcbgpkyVBFXiGhJUCSFEB7xzMow1n0ZjdyvEGV28NNbCuETZx6+3GRJzda0qhxv0ElALJKgSQoh2canwH59GsfmEZ3bfhMQGlo+xEBciG8D1Rv3CXUTo3VgdGoprdAyOcQa6SiIISGwthBBtcLrhF3tjvQHVkuE15EyqlICqF1OUq9kq6QIUTSSoEkKIG3CpsGJ/DP88F4pOUfnV+Eoekdl9gmvHVRkCXBMRLKT7TwghbuC/Po/i72fD0CoqL3+tiinmhkBXSQSJITJYXXyFZKqEEOI6/n42lN8f93T5/WysRQIq0cwtsXbAs1aVXVbSEEhQJYQQrTpdo+OVT6IBeHhoLVMH1Ae4RiLYJEe4iDG4cLgVCmURUIEEVUII0YLTDb/cF0OjS8PYvg08Mbw20FUSQUhR8G5R07RFkejdJKgSQoiveOtYBF9WGYjUu1k+xoJWBqWL6xjex9MFeESCKkGQDlR///33yc/Px2KxMHDgQB577DHS09OvW/7jjz9m06ZNlJWVkZiYyPz588nKyvIeV1WVzZs38+GHH2Kz2Rg6dCgLFy4kKSnJW8ZqtfK73/2OAwcOoCgK48aN4/vf/z4hISEAlJaW8tRTT7W49ooVKxg8eLAP714IEUjnarW89WUkAP+WVY0pVJZNENd365WgSjJVAoIwU7V79242bNjA/fffz8qVKxk4cCAvv/wy1dXVrZY/fvw4ubm5fOMb32DlypWMGTOGVatWcfbsWW+Zv/zlL2zdupVFixbx61//GqPRyMsvv4zdbveW+Y//+A/OnTvHT3/6U37yk5/w5Zdf8sYbb7S43s9+9jP++7//2/uVlpbm+0YQQgSEqsL//TQah1thXN8Gvt1fxlGJGxsW50CrqJTVa7lcF3QfqcLPgu4J+Otf/8pdd93FnXfeSXJyMosWLcJgMLBt27ZWy7/33nuMGjWKWbNmkZyczLx580hLS+P9998HPFmq9957jzlz5jBmzBgGDhzIU089RVVVFfv37wfg/PnzfPrppyxZsoSMjAyGDh3KY489xu7du6msrGx2vcjISGJiYrxfOl1QJvuEEDeh4KKRjy+FoFNUnrutWtaiEm0K1akMipZxVcIjqCICp9PJqVOnuPfee72vaTQaRowYQWFhYavvKSwsZObMmc1eGzlypDdgKi0txWKxcOutt3qPh4WFkZ6eTmFhIRMnTqSwsJDw8HAGDRrkLTNixAgUReHEiROMHTvW+/rKlStxOBwkJSUxe/Zsbr/99uvej8PhwOFweL9XFIXQ0FDv/3dEU/mOvk/cHGlv/wqG9na6Ye1hz2y/h4bYGBjlBnrmzz8Y2rsnuTXeQaHFwOFyI98a0HIfSGlv/wpkewdVUFVTU4Pb7SYmJqbZ6zExMVy4cKHV91gsFqKjo5u9Fh0djcVi8R5veu1GZaKiopod12q1REREeMuEhITw8MMPM2TIEBRFYe/evaxatYrnn3/+uoHVO++8w5/+9Cfv96mpqaxcuZKEhITrNUGbEhMTb/q9ouOkvf0rkO39hyNwphZiQ+D5OyKIMkYErC7+Is+3b3xjMPzpBByuCicpKfy65aS9/SsQ7R1UQVUwi4qKapYRS09Pp6qqiv/93/+9blB13333NXtPU9RcVlaG09mxzTcVRSExMZFLly6hqupN3IHoCGlv/wp0ezc44bXdJkDLI0OrsVXWYfN7Lfwn0O3d06TpFSCR4xVwpPgyfb6yJ6S0t391RXvrdLp2JUSCKqiKiopCo9F4s0NNLBZLi+xVk5iYmBaD2Kurq73lm/5bXV1NbGxsszIpKSneMjU1Nc3O4XK5sFqt170ueAKrw4cPX/e4Xq9Hr299Qbib/UGrqir/KP1I2tu/AtXe754Kp6xeS2KYk/vSbPSWH7k8374RbVDJiHZQVK3nYKmeb/ZvfeV9aW//CkR7B9VAdZ1OR1paGkeOHPG+5na7OXLkyHWXLRg8eDCff/55s9cOHz5MRkYGACaTiZiYmGZl6urqOHHihPecgwcPxmazcerUKW+ZI0eOoKrqDZdyOH36dLNATQjR/dhdeLeieXioFYM2wBUS3dJok2cs1SelxgDXRARSUAVVADNnzuTDDz9k+/btnD9/nnXr1tHY2Mgdd9wBwOuvv87GjRu95adPn85nn31Gfn4+JSUlbN68mZMnTzJt2jTAkwacPn06W7Zs4ZNPPuHs2bO8/vrrxMbGMmbMGACSk5MZNWoUb7zxBidOnODYsWP87ne/Y8KECcTFxQGwfft2CgoKKCkpoaSkhC1btrBt2zbvdYQQ3dPWM2GU1WuJD3ExI6Uu0NUR3VRTUHVAgqpeLai6/wAmTJhATU0NmzdvxmKxkJKSwosvvujthisvL282on/IkCE888wzvP322/zhD38gKSmJ559/ngEDBnjLzJ49m8bGRt544w3q6uoYOnQoL774IgbD1emvzzzzDOvXr+eXv/yld/HPxx57rFnd/vznP1NeXo5Go8FsNvPss88yfvz4rm0QIUSXcbrh/x3zZKkeGiJZKnHzbkuwo1VUzlt1XKrTkhgmOyz3RooqHbx+V1ZW1myphfZQFIWkpCQuXrwoffJ+IO3tX4Fq77+fCeUX+2KJMbjYMqOUUF3v+FnL8901Fv0rniMVBrJHW7g37WrWU9rbv7qivfV6fbsGqgdd958QQviDW/Xs8Qfw3cG2XhNQia4zMckzQL3gQkiAayICRYIqIUSvtONCCMU1esJ1br4zqCcvoCD8ZdKVoGr/ZSMNTlnoszeSoEoI0euoKrz1pSdLdX+6jUiDZKlE5w2KdpIY5sTuVthfKlvW9EYSVAkhep29l40cqzIQonXz3cGSpRK+oSgwMckzC3CXdAH2ShJUCSF6naYs1ey0OmKN7jZKC9F+k/pdGVd1MQSXJEB7HQmqhBC9yqEyA5+WG9FrVB4aYg10dUQPk5XQSKTeTUWDlk/LpAuwt5GgSgjRqzRlqWak1GEKlSyV8C2DFu5IrgfgH2dDA1wb4W8SVAkheo0vKvXsvRyCVlH53lDJUomu8e0BnqDqX+dDcUjc3qtIUCWE6DWaslTfGlBPv3BZ8Vp0jdsS7MSHuKh1aNhzSbat6U0kqBJC9AonLDp2XAhFQeURyVKJLqRV4K7+nmzV+2fCAlwb4U8SVAkheoXffREJwJ3JDaREOQNcG9HTNW3O/VFJCBUN8lHbW8hPWgjR452w6NhW4slSPX5LbaCrI3qBjBgnw+PsuFSF/FMyYL23kKBKCNHjrb+SpbqrfwNp0ZKlEv5x35Xtj949FYZLBqz3ChJUCSF6tCKLju1XslTfHyZZKuE/3+hfT6TezaU6HdtOB7o2wh8kqBJC9Gi/kyyVCJAQLcxO82SrfnsgwJURfiFBlRCix7o2S/WYjKUSAfBAhg29RmX/Bfi0TB/o6oguJkGVEKLH+s/PowBPlipVZvyJAEgIdXtnAv6/YxEBro3oahJUCSF6pL2XjOy5FIJOUXlieE2gqyN6sflDbGgU2HUxhKMVkq3qySSoEkL0OC4VfnPYk6X6TrqN/hGyeroInP6RLr4z1PP/az+PQlUDWx/RdSSoEkL0OH87HcbJaj2Rejffl7FUIgg8Ox4MGpVDZUbZuqYHk6BKCNGj1DkV/vuIZ8bf92+pJdogaQEReOYomJvhmQn4m8NROGXdqh5JgiohRI+y8XgEFQ1azOFOvnNl8UUhgsHDQ63EGFwU1+h5u1AGrfdEElQJIXqMCzatd4bVD2+twaANcIWEuEa0UeWpkZ5JE+u/iOBSnTygPY0EVUKIHkFV4bWD0djdCqMTGrnT3BDoKgnRwvSB9YyKb6TBpeHVT6Jl0HoPI0GVEKJH+KgkhN2XQtBrVJ4fbUFRAl0jIVpSFMgeXY1Bo7L3cgjvnAoLdJWED0lQJYTo9mwOhdWfRgMwf4iVgZGyhIIIXilRTn54q6cb8DefRXGmVroBewoJqoQQ3d66o5GU1XsGpz8imyaLbmBuuo3bTZ5uwOUfx9HglNRqTyBBlRCiWztepWdzUTgA/5ZVTYj80S+6AY0CvxhXRZzRxclqPTmHZHxVTyBBlRCi23K4YcX+GNwo3JVcz9cSGwNdJeEnmgoHxj01hG6tJPS9Coy7qtFeaKQ7RSZ9Qtz8+/gqNKj87XQYfygMD3SVRCfpAl0BIYS4WW99GcmJaj0xBhfP3VYd6OoIP9CdqCd0uwXdBXurx51JBuq/GYszNcTPNbs5t5vsPD2yhtzPonn9cBTmCBdfl5mr3ZZkqoQQ3VKhRcebX3rWpPq3rGriQmSJ6p5MqXUSsbGUyI2l6C7YURVwpIVQPymK+snR2IeEouoUdBftRP6/y4R+UAXu7pG1+m6GjTmDbKgo/HxvDMeqZNPl7koyVUKIbsfphhX7YnGpCnea67krWf6y78l0J+oJf7ccTZ0bVQONY6NomBiFGt58AJ1S5yJ0mwXjASshe2rQ1Dqx3RsP2uAeBK4o8Oyoai7YtOy5FMLSgjjyvlFOUrjMYu1uJFMlhOh23joWQVG1nmiDi6VZ1bImVQ9m3FdDxMZSNHVunIl6apb0o/7bsS0CKgA1TEvdjD5YvxOPqgHD0TrC/1TWLTJWOg2sGF9FWpSDigYtT33Uh8t18hHd3chPTAjRrRRZdPzPF54Nk//tNun267FUldB/VBH2fhUK0HhbBLWPJeGOb7trzJEZjnWeCVWnYDheT+iHli6vri+E61X+75QKzOFOLth0PP1RPGX18jHdnchPSwjRbTjd8Kv9nm6/r5vr+WZ/6fbrkVSV0K2VhHzsWSCz7q4Y6mbGga79KUlneii2WX0ACPm4BsNn1i6pqq+ZQt28fkcFSWFOzll1PP1RHyob5KO6u5CflBCi2/ifLyMpsuiJMrh5Xrr9eiZVJexvlYR8YkUFbPf0oXFiNDfzw3YMD6d+smel/bD3KtFUOnxc2a6RGObi9TsqMIW6OFOr5wfb+3DRJguwdQcSVAkhuoXD5Xre/MIz22/pbRb6SLdfz+NWCfvfCowHragK1N3bB/ttEZ06ZcMd0TgGGlEcKuHvVnSL8VUA/cJdvH5HOX1DnZyt1bN4WzynqmVuWbCToEoIEfRsDoVf7I3FjcK0gXV8a4B0+/U4bpWwv1Rg/MyGqoDtvnjst3YuoAJAUaibHY9qVNCdb8R4pUuxO+gf4eKNb5STGuWgrF7Lkm3xfFZuCHS1xA1I2CuECHo5h6K5WKejX7iTpbLIZ8/jUgl/pxzDF3WoGrDNicdxy/VXF1dVqKrSUlahpaZWS0ODgsuloNephIe7iY1x0dfkJCTEk5Vyx+iomxpH+P9WEPpRNfbh4ajR3ePjr2+Ym/+6s5znC/rweYWBZz7qw4u3W5g6sD7QVROt6B5PlRCi1/rH2RDePxOGBpWfj60iXN89um9EOzlVwv9UhqGw3hNQ3Z+AY2hYq0VrajWcPqPn7DkDdW3OilNJNDnJSLeT2NeJfWQ4hk+t6M82Evb3SmwPmHx/L10k2qDyH1Mq+NmeWAouhvCLfbEct+j54YgadNLfFFQkqBJCBK3TNTpePRADwPdvsXJrfPcYaCzayeEmYlMZ+lMNqDoF69wEnBmhLYpVVWn44lgIJRevLqeg16kkxDuJiXERFuZGqwGHQ6HWqqGsXIelWsulUj2XSvXE93Ey+rZ6NHfHEfXfFzEcq6exqL7VawWrEJ3KqxMryTsSyVvHIvlDYQQnLHp+Nb6SaKP8oREsJKgSQgQlm0Mhe3csdU4NtyU08uiw2kBXSfhSg5uITaXozzSi6hWs8xJwpjYPcmw2hU8/D+VCiUKMu4hBriMkGk8RoyvBqFbD5UYo1YIhAiUiASVmAJiGomQOxdYQyolTBk4WGyiv0PGPf0UwbIie28ZaCd9bS9j7ldSk9uvQMg2BplVgyYhaMmIcrNgfw/5SI9/7h4lfjK0iy9T6XojCvySoEkIEHbcKv9wXw9laPaZQFyvGV0k3Rw+isTiJ+EMp2jIHqlGh9kETrgFXN0B2ueDYMQ3VXxykn/0jspwfo8fmOdjY+jnVsi/x5mt0IYSaR3Nr+jcZPGg0Bz4L5+IlPUe/DOFyXDLTok8SXmUn5OMaGq4sudCd3NW/gYGR5Sz/OI6zVh1PfdSHh4daWZhZK/9OAkyCKiFE0Hnrywh2XAhFr1H59YRKWTW9B9GWNBLxdikamxt3pBbrvARcSUbv8UunKqg5+A8G1m0lRK28+kZDOIrpFohNRYk2Q0gMis6I6naiNtSA9TJUnkIt/QLqKlDP7EI9swtDRCIThn+H8+a7OfhZJOWVet5JTefuL08Rt6uaxlHhqJHd76MwPcbJ/3yrjDWfRpFfHM5bxyLZd9nIz8ZaSI1yBrp6vVb3e5KEED3a9vMh5B31bEPzfJaFzDgZR9UjqCrGfbWE/rMKxQXOvnqsD5pwR2qpbHRTUlxIyJE/k2LbRzyeILpaG8O+qIl8GjmGi+FpKLpS0J7GVXeeRtun1LlrqHPX4VRdKCiERBno02cotzm0TKiykH6pCJ31EuqetZgj/kT8LY/z0ZlvYq3T8Zf0QUwrPk2fbRbqZsUHuHFuTphO5cXbqxnXt5GVB2L4ssrAI/9I4LFbalkwxCpZqwCQoEoIETQOlBp4aW8sKgpzBtm4J1WmjfcESp2LsL9UYCiqRwVO3xLK/nFRHCmxU3/xC75V/g6j6g97yx8JuYV/RH2T/WG34NCfwK09iFuzBdQGcEKoU0NyvZGBdh197NGEujQ4NCpORaVG38jBsAb+FmVHF2lmWlUtc8stRFgvY9z3a76V+D77Y57nvMXM1pRUphadJupiY7NsWXdzV/8GRsSXsvJADLsvhvDGkSi2nQ/hp2MsZMRI1sqfFFVVZdqAn5WVleFwdOyvb0VRSEpK4uLFi8iPrOtJe/uXoihcIIkFW9zUOTV83VzPy1+rQtt9xhB3K357vlUVw2c2jP+s4oRWYYdJz84BIVxQIaOhiLlVf+bWhiMAuNDwScRodiWNp1hvo0o9hU1zCa3qJsMaxihLBMOrw0m3hWOu16Hhxg+HU3FzIcLKtj5V/COhhvG2S9xXXoVeVVH1YRTF/YgjtmloVZW76kuIWRB5U1vhtIe/2ltV4e9nQ1l9KJpahwatovLIMCuPDqtF34uyVl3R3nq9noSEhLavLUGV/0lQFfykvf3rs3ID/1YQj80BoxMaeW1yBUbZ6qzLdPnzrarojtdxfm8t23QKOxIMlIV4PtXTGk/wQNUfGVV/FAAnGj6KTufPfTK5ZLShVy8xxKplVHUEoywR3FodQZirZUTQqG2gUVePQ9eAU+NAo2pQVA1GZyhh9ki0avOOmMthFv6adJ7B9pMMafCsyF8aPpm9SjZuNYJvpFYSO1rf4jq+4O/fJxUNGnIORrO9xDObMi3KwfIxFm7pJV3pElT1MhJUBT9pb//54GwoL++Pwe5WuN3UyKqJlYTopM27UqvPt6qi1DWgtdSiqbaiNDhQHA4UhwtVo4BWi6rXooYacYeFoIaFeP4bagTNlaCn0Y3liJWC0438K0zL2XBPZKzSwCDnEeZV/Y1brUUAuFDYFpXBjoghxDkaGV7jYERNGENqwzCozYOoBq2TS5GXsYSW4dBX0WCsxqHzTAN0KRpqtSFUakKo1+hQcKNXHSTVK6TUxGOuNhNbZ0JzZVc2q6GWI3EnGOgsRKuAVRvNXuP/oV4ZzB132ojp4/tnLxC/T1QV/nU+hNcORVPVqEVB5b5BdSwZXkOkoWf/+5KgqpeRoCr4SXt3PVWF330RwbovogD4dhq8OOoiRq20d1dTFIXExETKDh1Bd+YiuvOl6C6Uo2ns+FpHKuDQ66nWGris03MhxEilXkud1kmj1kGkWslt1jMMbKxGUbXgDqVK0wcHkSQ1KIS4W2ahqnVwNrKGishTXI68hKKtJtYBTcnLesXIUf1wjhlu4bQuBbeipa9RR0IIuJV6iusqsbnsGNQGEl3nGGM7y7cvRpJekY7e7dk7ryq0nIqIQ0RRiV3RsDvsCep13+XOb9mICPftMxjI3yeWRg25n0bx/lnPKvWxRhfPjKzh2wPq0fTQ7nUJqnoZCaqCn7R316p3Krx6IJoPrvyinz/EyoqpEVy+JO3d1bSXKzF8WYzxxHk0luYLqrqByhADl0IMVOk02DQaGjQKGlVF71Yxut1EO13EOlzEOJxEO1x0tpfWrrg5E+bmRKQRS2Q1deGfUq8/jwLEOaCPXYPuyjPRGNKfsj53UhqZhcWlUNZop7TBTtVXfp+qqJhDQatp4FxDJW7c6NVGRjYc5+Fz9YwoHYJW1aHipiyyCIyHQXGzJyKLqtBf881vOAkN8d1zGAy/Tw6UGlh1MJoztZ4uzqGxdn4wopaxfa+z8Fc3JkFVLyNBVfCT9u46Jyw6fronljO1erSKyvNZ1dw7qF7au4uoqsolWz22oyfpd7SY5Moa77E6jYZPYsI5HBXG4ahQisOMODTXH9GsUUGnKrhVcGpcKNQT6awjzllHH4cbU4OD26yVjLBWEe10ejJTaKnSRnEmNJTLRisVBjuVBge1IRoSEgcxNCaM6uq9XK76FBU3qNDHpcfk0KI4PR/4xoj+JA35HtF9x6O0Mpi81uGkyGqjsNbG4eoajtfavAuBahQX8SFOSu1VuHGgUZ1Mqi1k8WmF/tX9AajXW6iL2INLV82XobEUxr3CrK+b0ftoiFWw/D5xuGHj8Qg2HIugzun5Od9uauSJ4TWM6NNzxltJUNXLSFAV/KS9fU9V4Z1TYeR+Go3drRAf4uLfx1eRlWCX9vaxSrudA1U1fFZeRXLROb5ztpS+ds/UeocCBXGRbI+P4lRiHxLCQ+kbYiTWoCdaryNarydKpyNcoyH0goPwYw1UnG3kX3EKHyXaqAypRtVUguIJeBRVZVj9Je6qOsl46ymMqud3m4MQvowcyf+a9RzQlXrrlhqSxNTIFPo0XqKkbDeNzitBngrJhv7E2Ky4Gy0A6EMTSMx4iLjkO1GU9ufEquwO9lda+Kiski9rrVdOrxKlt1PjqkJVHBjVehZePMa9p/tjdIXgVlxURxzCYTzJRaOeD/stYsHEaeh8sI1NsD3fVY0a3vwygi0nwnGqnvu7LaGR7w21Mr5vY1dNgvQbCap6GQmqgp+0t2/V2hVeORDDtvOe2UgTEhv46VgLsUbPIo/S3q1T3U4arOdpsJ7DUV+Gvb4Ue30ZjsZK3M4G3K4G3M563G4HqqLDiZZGNNS79fSrTmVkaX8iHZ50S61B4WiqiZqRmSQlxDEqNYXyy5dbtLe73o1rVx0FF+v5sE81J6IqaNBVgdLgLWN0O7jVepFJNaWMrDtFhPtqN2K1IYFPEpL4fVQjVVfGx2lUha9HJHOrosFW/Rm2hsve8qH6WFLDbsFgOYfdeg4AnSGavukP0GfA3Wi0nUsXnbbV8fdLZWwrq8DuVlFxE6JtpF6tAsXF4PoL/PJ4Hf1qEwGwhpyiLuIANi28nTyZhyY9SaS+cxsvB+vzfdGm5XdfRPD+mTBvcDU4xs73hlq5M7mh2y5pIkFVLyNBVfCT9vad41U6Xtgdx8U6HTpF5Ye31vDdDFuzQbLS3p5uOnvdRawVn2OzHKe++hQN1jOo7o4t3hhjM5Fx+TYiG2MAaNTVcbrPl1yMOYVb40ajCyM0cgAJ5ttwa/tjt2ViKUvkeI2VA9qLnA69TK2+HFVjb6oYcc460hoquNVmIbOulGR7CVqu1suhNXKkTyJ/jlA4GqoHRSHU7WCY1sgwRUHXcB6742q3o04bSnLcOBJ1fbFf3EdD7WkANLpQTGn3kZA6G60urFPt+VVVdgfvllzi75fLvMGVRqnHpVSiVe28dLqIO0r6o6ChQV+JNXIXDm0df0hK4WtfW8qQyIE3fe1gf75L6zT8oTCCv5wKo/7K8hXJEU4WDLEyPaWu261xJUFVLyNBVfCT9vaNv58J5defeJZL6Bfu5Ffjq1pdK6e3trezsZrq0v1Yyz/FWvE5jsbKFmU8QdBADKEm9KEmtCF9OOMM5VCtnSNWBw0YcKJlQKOdJ0vqGVrmWYXepVcoH6qnrF8tjfbLNFjP02gtAVruo1irhHFRG0+9GoFbNRDqUkmy12K2W0myWzCqLWcFVhvD2BcZzp5wHWdDdYTgJNrdSD/c9HE3orjqmpXXaUNJjBlF/7ixhDXUUXX2AxqsZ6/cYygJA2eSkDYbnaFrNziutDvYdO4C/7xcjgooOHAptaCxcW/ZKZ4qisbgMuLUNFAb+TEOQyl/j43BOeb7zEq8s9UxXW3pLs93daPCn06Es/lEBDV2TySVEulgaVY1o00dnxkaKBJU9TISVAU/ae/Ocbph7eEo3i6KADzdfb8YV3Xd9XF6U3s32i5gubiLmtL92KqOAVfvV9HoCIsZQkRcJqFRgwiNTsMQ2heAU7Z6tpdVsKOsAqujkRBsGLExVKcy/6KDzFP1aNygKnAhTaF4sEpjIzisKrU2N6VKPZW6KqLcl+nrqKKvvZ44h51IhwujC/Q3aHY3UGnQUBKi5WKIQlkINGjdhOLC0EqQBqCgITp8IEmxt5EUMxJjYyO1pfuwXNyN2+UJ/DS6MBJS7iEhdTY6Q6Svmrhdim11rC8+xxc1VlRUFMWOW6liUH0Zrx21EtcQg4qb2vBPaQgt4vOIUP6ZeSeLMx4mShfeoWt1t+e7zqnwv6fC2HAsgqpGz1i2BzKsPDmiBkM3WJRXgqpeRoKq4CftffOqGjX87ONYDpR59lJ7dFgtCzNrbzg+o6e3t8tRh+ViAZXn/4mt6stmx0KjBhFlup2I+JGExwxG0RhocFiwNlzisrWELytOc9F6DrezEqNqJQQrRupRVIVbytIYd34EYc4QAM5GXaRgwCEqQ2sIdUG0HWKufEXbIdLBDbd3sWtU7FqwaxTsWmi88uXQQoNG9XyvAfuVL4cCbgX0+igiQvoSGZpEbOgAIvWxhBKC3XoWW9Vx6izHcbuuGZMVbqbPwLuJS74LnT6iaxq9HVRVZUd5Jf9TfJ4apxMVNyoNGN2lrCk8Q2alCYC6kGKsEZ9w0ajlPwcN4aFhCxkROajd1+muz3etXeG3R6LYctITRA6JsfN/JlViCm09kA4WElT1MhJUBT9p75tzvErPT3bHcqlOR6jWzUtjLdyR3NDm+3pie6uqG2vF51Se/5DqS7txu5rWA9IQmTCK6L7jMcYOweaqpbruDBbbaSy2M1TXncXpuvFG0snVfZl09jbi62MAsBjq+aTvCWpCztPX0UC/BgfhrtbbsVGBCoOWCoOWcr2GcoOWcoMWq8GIxhBKqMZAtKoQ53AQ5agnrNGKzm5rY6c9hWszbq3Rh8QTnTiemMQJhMcNv6lutK5S63Dy5unzbCuruPKKEzfV/Oj8l8w5G4uChkZdBbVRBdTq7eT078eQjFk82O/baNsxK7G7P9+7Lxr51b4YLHYt8SEuXptcweAg3qhZgqpeRoKq4Cft3XHvnwnllSvjp/pHOHl1QiVp0e37xduT2rux7hKV5/9F1fkPsddfXUrAEN4PXZ+h1IWEU9lwDou1mAaHpdVzqCjUEYVNiUWnM9FPGcDgulSiL4fSt7yExEYbAPVaB6ejjxOqO0aY6mp2DhdQYjRwJiSUS/po6tzx6BwJhNv7EBPfh+Tb09HodcToI4nVRaLX6FqpiYfTYaXOUkiD9RyN1hIabZ4vp7261YH0OmMshpB4QiIHEBY7lPCYIYREpgRVINWaw5YafnvqLJcaGlE9a8VzZ9WXvFgIBpcBp6aemqhdNOor+F1SAqf6j+Tf0haQaOxzw/P2hOf7gk3L0oI4imv0ROrd/ObrFQyJDc61rSSo6mUkqAp+0t7t53TD64ej2NTO8VOt6e7t7XI2UH1pF5XnPsRa+fnVAxoDjvA4yjUNVLmqaJnuUUAXT4WaQKk7nmqlL9WKCQOJTGrox20lUZznLIfjPmeipZwZl8PQqRrcuGkIPYEt7Kh3lp5No+VYaBynQgfiNg4nyzKIWwvDiXB6tmVxh2lozIqgcUwkROl90t6qquJ2NeJ21nnWkdJo0WiNaDRdszGxPzS63Gw+f4G/lFzGjSfj2L++jP84doa4hkjcuLBGHKAhtJgPY6L4ffIAHk+dy9fjsq57zu7+fDexOhSe29mHzysMROrd/MfXKxgahIGVBFW9jARVwU/au32qGjX89ONYDl4zfmpRZm2H9xTrju2tqiq2qi+oOPcPLBcLUK9076mATQsWvUqtzjNw3EMhOqw/4WGDKCeZw/UxfNkQhUvxBD16VcNtVbFENdZzIfwMp6KOASUsORPH3RcTMbo9gUqjoQRr+GfYdbUcC+3LFyEjqdNM4lbHMG6/WEtcefNZd87+RhpHhWMfHk7T3Pju2N7+dtJax3+eOE1xnacrNsTp5LXCA2RaPHtV1oUUYY34lPMhOnL6JzEwaTxP9L+X6FbGiPWk9rY5FJ69JrDKnVLBsFZm9AaSBFW9jARVwU/au21fVOpZ/rFn/FSYzs3PxrRv/FRrulN719tKuHDqHWov7Qb71UUvGxWVaj1Y9ODUQKghjj6Rg4mLHIxqSKHQHs8nFjuF1qtbqCiqSt96cGvKsYScxWYoRkMjo6vtPHI2nlsrB6JVPcGUQ2uhOvIzPouK5Iz+a9iYRrwjgeGl5Qy2VGFwewYPqxpwmo04B4VgHxGOO7Zl1qg7tXcguVSVvx6/wB/KLmHXAm43z5z7gjklnnFUdl0ltVEfU6+z8WZiArtM/VgyYA6TYkc16+rsae1tcyg8tzOOwxVGIq50BQZTxkqCql5GgqrgJ+19fW4V/lAYzn99HoVL9YyfWjmxktSomx+4GsztXW+voqzqM8ovbMNZcQx9Y523F8+FSo0eavRaQqIHkRB9C/FRQwkLS6e4IYTPK2vZX1nNZdfVTWtV7BjcVdh1l3Fqz4GmGp3bzUhbHXeVu5hSaia6PgXNlWDKrq2mMNbKpxGjsSnfQlWiGFBbQ2ZFOf2tVhTAmajHmRKKIzUE50AjGG68WmMwt3cwKj9YyX9dOM+hKxmZO8ou88KpSxhdBtyKw9MdaDzDpxFhvNHPxADTKBb1v9c71qontrfNofBvBXF8Vm4kyuDm9a+XkxEkg9cDGVRdf2SiEEJ8RWWDhl/tj2HPJc8U/juT63lhtKVD46eCmcvtoNp2hvLa45RXf0FtxWcYbRainJ6lCAxXytXrtBAzkKjErzEg5lbCw9Iostk5XFbLkVNWTjpLcF+JvDzT9CtQNeWomouomss4FZVQl4uxtXV8zWJjYkUUMfVpGOz9UK6EbDa9ncPRqXwe8ThuTQh6l4vMyioyK48RGeHGOSQEW2o8zpQQ1LBusHhQNxafFcevL7j51xcV/FeGje0JfTkaGc1rhUcZYA0jqnY8hsZkstwHWFN3hrdrrDxVfYxZiXcyN/EuwnQhgb4FnwvXq7w2qZIf7+jDkUoDz3zUh7V3VLR7ckpPJZmqAJBMVfCT9m7OrcJfi8P4r88jsdi1GDQqz95WzezUOp9svhqI9narLmrqzlFRW0Rl7QkqrIVYak8R6nQR6YRIJ+ivDohC1YcRkjAS04CZ2MMGU2Sto7DMxvEaG6dddbgUT71VVFBqcStlqJrLqJoLoHgGkyfYHYyptTK2uoFRllDC7WZCGgagUa9+6JYZI9kfM4mzYamgKPSpr2eYrYqB8Q0oaUYcqSGo0Z37e1ie75vgUol4uxTr2TrWD6njvcQGFFXlB2dP8J0LdjSqBpdixxb+GQ0hxZwO0fP/EhM4HZvIg+apfG/4bMovl/W49q61Kzyzow/HqgzEGV2svaOClE5krX1Buv96GQmqgp+091XHqvTkHIzmaKUnTzMo2sG/j6tikA//Iu3q9na7ndTUn6fKWkyl9QSVtUVUWk/icjeiqBBxJYiKdIL2mil6ii6MkL4TqImdyElXEoVV9RQ22KhTmt+7ig1VU3YlkLoAGs+SB0a3m6G2ev7/9u48PKr6Xvz4+8yaTJLJQghbgABJiCIBKVAQLfBDEbkIdaNeaLm3KPT5sWh/t9feXlsEFKSUp177iFWfCi6lLLktgsiiFwRLCvWKQkKoElkCIQGSkEwm68yc5ffHJMcMCRBwEgJ8Xs8znO17tg8n53zmnDPf78Caer7r0ehXE43T1wOHvxsWw2nO77PY+TJmAF/G3E6lIx6rrpNCNWld6ojtb8HoHGxPL1zk+L5Gfp2Yd89jK/ZztJPGKyN8HPHV0q+mhiVff0W32mB7hQFbBdVRBwk4SjniiuSPXRPxJCTzSNJY7u007LLVV9yIKv0K8/ck8nWlnViHxm/vKWfAdXx5XZKqW4wkVR2fxBsOX7Cz5qto9hZHYKDgsuk8OaCKx1JrsIW5gdVwxdswDOr85Q0VaZ7EU3MKT81JvLVn0I2GRMiASA2iNYjSLERqRkhNB7othnJXJnnKbRxQkqm9KJcJ1l9UhW6pwFBKMCxnwVINQKSmkVZXT2ZVPUM9dlJrIogIdMYeSMSmuUOW47PYOenqx4nofhRG9sJAoavDR69kP91vM3C04RMjOb6vnVKvE72uBFuhD90Ge+938q6tglPVNcwoKuCfz1ThaPilZr2jiFrXl6j2CxyKcrG1UxwnEroxvvMI7k8cQaIj7vruTBh5fBb+bW8CX1Y4iLDqLBju4f9c4w9Xvi1Jqm4xklR1fLdqvOtVheyzTv58LIqcsm/upNzfq5Z5mV4S26h5iquNt6b7qaorpqquGG/tmWC3rghv7Rn86je/yMMItmkXqYFLt+PS7ThVH8pF7dVVWhL4hz2Drxz9KbQmYygKoGOgAtUYFi+G4gHLhWAXP3Gqxm3VKoOqrKRXW+lZF0G8LwqbGotNc6PQ/D2nCnssp1x9KHD14XxEVywKJMUE6NJLo2cvlcjI9jnWbtXjO2z8OtF/LsN+LFjdQv1gF7uHWdhYUkJpRSX/79RRvleqYCH47cNvL6E28ih+x1nOOaxs7xTP3jg36Z0yGddpGENiM3DewHV7NapVFZ7dF8+n54PfCP45vZqf3OHF2c6v/ElSdYuRpKrju5XiXacqfFHqYGdhJH8tiqBWDV4IbIrBhN61TO9fc8V3JAzDIGDo1GsqPl0jYOgEdJ2AoaPqGv6G/oCuoRq6OazqOgYGOhATE4PHW4luGGi6iq5WogfKMdQKDNUDgQoMtRwlUIaieVCaNItiMcCuBxMop6Zg0504dYVI3Y+1hQZ/a5QITtqTOWlP5oS9O+UWFwp1ROl1uLQ64tQ6kvx1JPl9dPZDF5+VLj4bCX47MQEHkaoTmx6BxXA0W3YjVVEod8RTFNGbcxHdOBfRDex24mM04pJ0unRRSeykYb0O75jfSsd3m9ENIv5aScRfK1EAPcpC7ZhYDvWFTWdLKC0+z/8tzOe75VYsRvBvSrPUUe88hc95Gr+tgi+jIvhbbAyfx8aT0ukORicMZmBMKvH29m1cOpxUHV477GZtfrC+rl4xAf5tsJfhXXzhfIJ9WZJUXWTHjh1s2bIFj8dD7969mTlzJqmpqZcsv3//fjZs2EBpaSldu3Zl+vTpDBnyTe22hmGQlZXFrl27qKmpISMjgyeffJJu3bqZZaqrq1m9ejWff/45iqLw3e9+lx//+MdERHxzD/7UqVOsWrWK48eP43a7mTBhAlOmTLnq/ZOkquO7keNtGAZqw0czDFQ92NUa9qNetXDSa+dIuZVDZRbyPQqaEkDBj2KtJz6ilv4JVaQmVKEofuo0P3W6nzrVjxbwo/gDWHwqNlXFFtCwB1Scqk6EClFa8K6QQ1ewGwp2HRw62Awl2NUhwjBw6AYWDKyGjgUdKwYWI9htHKcQrIC84f3vhmHD7McABQULhjm+8d/Gc7diBMepigUNG4ZhxWJYsRoKtoZttBoWrLoFm2Ezf3l3NQIWjVqrg2pbLB5bNzwR3ah2xaPHROGKhYhOClExBrGxGq5Io90uLJdzIx/fHY3tVD2urRewlgW/eGixVnzfiaH4djsferwcOlXMI0X/YEyZn0j1myRcs9Tid5zFbz9PwF7GuQg/udEu8qKiOBvThYT4DAbHpnJHTArJEZ1b1cZgR7K32MlvPo+jrD643YMTfTyWVsM93esb66BtM5JUNbFv3z5WrlzJrFmzSEtLY+vWrfz973/n5ZdfJjY2tln5o0ePsnDhQqZNm8aQIUPIzs5m8+bNLF++nF69egGwadMmNm3axNy5c0lKSmLDhg2cPn2al156CYcjeJC/+OKLVFRUMHv2bDRN4/e//z39+vXj6aefBqC2tpann36agQMH8tBDD3H69Glee+01/vVf/5V77733qvZRkqrW0w0DzaDJJzhsNLnQomBegCH4Pq/Z39CnKGBRwGIYwQu2oWLRAyi6Brra8AlgaAF0LYCuq8S5YygrO4+u+TE0FUMPmGUVXQWtoaurXNyYrGHo6EbwHkxjv46ObujoGOiGhmYY6IaOpkDAMAgAfgz8hoHfAB9Gk2E9ONxwR8jfMC2gGPhomFcJDgcUUBUDjWCCZceCQ1Nw6BacugWnBi7NQqRmwaUpRGkKLs1KlGrBpVlxaRaiVKs5LlKzEqVZcKnWkJe4b1YGGrrix7Co6DRtT88OeiRoMSiWeIzYruhJ8WhJkWiJdrQkO4bbGtYXytvKrXo+aTOqgfNAFRH7vFiqg8eMAWjdHARSnBzuqvCJqmI9dZgJZcdI9zqw66Evq2uWWlRrJZrNi2qtwmfzUhpRT0GkxslIJyXOBHyuROzR3UiI7kFSVBLdI+JJdnYi3hGNRWnjTOUaeP0Kq/8Rw3vHo/A31DESY9f5blcfmYk+UmNV+sUGcIe5Shapp6qJDz74gHHjxjF27FgAZs2axRdffMHu3bv5/ve/36z8tm3bGDx4MJMnTwbg8ccf5/Dhw+zYsYPZs2djGAbbtm3j4YcfZtiwYQDMmzePWbNm8dlnnzFq1CjOnDnDoUOHWLZsGf369QNg5syZLFu2jB/96EckJCSQnZ2NqqrMmTMHm81Gz549KSgo4IMPPrjqpCrc/l4WCF7AG76VGxDSj0GwDasm/RC84LZUvrEfgj+lByiqL6NWradfeU5wPkM350cPJgoYRsM4Awy9IfFpKNswPTiyoexF4wyjBgu1WA0teLeioWszNGzo5vhgv47NCHatBPttjWWNJsPmNAPF0IOfxn27TEwtgBe49MOdS8ynRWJXOzVpmySY7pl3QIyQ9K9V4xWsYFiadC0oxjfjFMMCDeOCHxuKYQ92W3iv59syMNCVALqiolsCGIoaHDb7VVB0DDRQdIKR1oLdhmHlmyPyG8rFJz+z3vEWNqKlxEUJ6VeVxjtUVlSLBRUrmtJwX0y3oxh2bHoETtVFtN+NU43Coruw6G4sWgwW3YUSaUPrbEfvbA8mTp2DHyP6xkieRDuxKfhGuPF9JxpHXi2OQ9XYC33YzvqxnfUzHBgOGPZU8rvczjt9DHT9NHdUfUlqTT2JdS6sevBD4JsnKJ2B2wFd8aNb6tEVH4blAoZyHl1RURUV1aqiWnR8io6mGKgWA00xuBBZjtdZR5UlCt1iw8BKqSMBzW7HUKzkxvdFt0UQ57Dhttt5MGkkfaPiwhoWt8Pgp4O9TEuvZuPxKLYWuCirt7KzMJKdhZFmuU4RGgkROgnOYNdlM4iwGURYDSJsOhFWA2vDF2NFAQtG8Etyk2HzizPwvR6+S29UG+tQSZWqqpw4cSIkebJYLAwcOJD8/PwW58nPz2fSpEkh4wYNGsRnn30GQElJCR6Ph8zMTHO6y+UiNTWV/Px8Ro0aRX5+PlFRUWZCBTBw4EAUReHYsWMMHz6c/Px8brvtNmw2W8h6Nm/eTHV1NdHRzdt7CgQCIXekFEUhMjIyZBmt1djkgd1ub5Z5bzvnQ23jL5uarRSLUsUzVfvDu+CmucRlC1kbPuGnKqApoCkKKkqwqyjmOM0c1zCsKGjQUCb4aQx/95pO3FnWv02289sw0DAUDRQNQ1ExFA0D9Zt+i9pQRgVFQ1capqFCYxlzPq0V/2cXszR8GrcnVECx4rfY8GMjYLUTUByoVieqNQLD5gCrE2uFgk1z4tTsRKpOIgNOogIO7LoDxXCg6HYUgl0M++UTyoZJhgMMlxXdZcWIsaK7bahuK4bbhu62YjhDv/0rdLCT5jW63PlEfAt2MIY78Q2Px1+nYS3yYyvyYS0NYKlUUTTIADI8AP1QlX6UdnLy9xidWkcFLoqJ18ro5A/g9tlxao7g42qu/uxX4zqMz3E2dKThA38w4Xg+4jxemw0v4FUVTvkz6R935Tsx16JHLMwfUs/cO+s5Xmkj74KDU1U2CqusXKi30Xh+r9Ht1NReaWlXNjalDAjv8d3a63aHOj94vV50XScuLi5kfFxcHMXFxS3O4/F4mj0WjI2NxePxmNMbx12ujNsd+nNnq9VKdHR0SJmkpKRm29U4raWk6r333uPPf/6zOTxq1Ciefvpp4uPjW9yX1khMTGw27s3xbfOHEKpPQ/cH7bAuIUR7aOl8IsKo15WLRPPN2TWcnFeY/lobrLM1uiTBXWltvZbgcX09ju+O9xD2JvLQQw/x9ttvm59Zs2Zd9btUjerq6viP//gP6urqwryVoiUS7/Yl8W5fEu/2JfFuX9cz3h3qTpXb7cZisZh3hxp5PJ5md68axcXFUVlZGTKusrLSLN/YraysDLlDVFlZSUpKilnG6/WGLEPTNKqrq0OW09J2NV3Hxex2O3Z7eOoeMQyDkydPyq36diLxbl8S7/Yl8W5fEu/2dT3j3aHuVNlsNvr27UteXp45Ttd18vLySE9Pb3Ge9PR0Dh8+HDIuNzeXtLTg/cWkpCTi4uJCytTW1nLs2DFzmenp6dTU1HDixAmzTF5eHoZhmFU5pKen8+WXX6Kqash6unfv3uKjPyGEEELcWjpUUgUwadIkdu3axZ49ezhz5gxvvvkmPp+PMWPGALBy5UrWrl1rlp84cSI5OTls2bKFoqIisrKyOH78OBMmTACCL2ROnDiRjRs3cuDAAU6fPs3KlSuJj483fw2YnJzM4MGDeeONNzh27BhfffUVq1ev5q677iIhIQGAu+++G5vNxuuvv05hYSH79u1j+/btzV6SF0IIIcStqUM9/gO466678Hq9ZGVl4fF4SElJ4dlnnzUfsZWVlZm/XAHo378/Tz31FOvXr2fdunV069aNZ555xqyjCmDKlCn4fD7eeOMNamtrycjI4NlnnzXrqAJ46qmnWLVqFc8//7xZ+efMmTPN6S6Xi1/96lesWrWKX/ziF8TExPDII4+0W3UKdrudRx99NGyPE8XlSbzbl8S7fUm825fEu31dz3h3uMo/hRBCCCFuRB3u8Z8QQgghxI1IkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECIMO9+u/W01JSQl/+ctfyMvLw+PxkJCQwD333MPDDz9stjVUUlLCvHnzms27ZMmSkPq79u/fz4YNGygtLaVr165Mnz6dIUOGmNMNwyArK4tdu3ZRU1NDRkYGTz75JN26dWu27JtRa2INcOrUKVatWsXx48dxu91MmDCBKVOmhCxLYt06Gzdu5IsvvqCgoACbzcbbb7/drMzUqVObjXv66acZNWqUOXzkyBHeffddCgsL6dSpE4888ohZzUqjHTt2sGXLFjweD71792bmzJlmPXO3itbEu6ysjD/84Q8cOXKEiIgIRo8ezbRp07Bav2ldTuJ9bebOnUtpaWnIuGnTpoW0ZxuO84u4tOt9XEpSdZ0VFxdjGAazZ8+ma9euFBYW8sYbb1BfX8+MGTNCyi5YsICePXuaw00rHT169Ci/+93vmDZtGkOGDCE7O5sVK1awfPlys3qJzZs3s337dubOnUtSUhIbNmxg6dKlvPTSSyHVS9ysWhPr2tpalixZwsCBA5k1axanT5/mtddeIyoqyqw+Q2LdeqqqMmLECNLT0/n4448vWW7OnDkMHjzYHHa5XGZ/SUkJv/71r7nvvvuYP38+eXl5vP7668TFxZnz7Nu3j3fffZdZs2aRlpbG1q1bWbp0KS+//HKzdj9vZleKt67rLFu2jLi4OJYsWUJFRQUrV67EarUybdo0QOL9bU2dOjWkqp2IiAizP1znF9GyjnBcyuO/62zw4MHMmTOHQYMG0aVLF4YOHcqDDz7I//7v/zYrGxMTQ1xcnPlpendl27ZtDB48mMmTJ5OcnMzjjz9O37592bFjBxC8c7Jt2zYefvhhhg0bRu/evZk3bx4VFRV89tln7ba/11NrYp2dnY2qqsyZM4eePXsyatQoHnjgAT744AOzjMS69aZOncqkSZOueDFwuVwhx3bTxPOjjz4iKSmJGTNmkJyczIQJExgxYgRbt241y3zwwQeMGzeOsWPHkpyczKxZs3A4HOzevbvN9q0julK8c3JyOHPmDPPnzyclJYU777yTH/zgB3z44YdmaxES728nMjIy5FhumlSF4/wiLq0jHJeSVHVAtbW1LTZ9s3z5cp588kkWLFjAgQMHQqbl5+czcODAkHGDBg3i66+/BoLfPj0eD5mZmeZ0l8tFamoq+fn5bbAXN4aLY52fn89tt90WkrAOGjSI4uJiqqurzTIS6/BatWoVTzzxBP/5n//Jxx9/HNJm19dff91ivBtjqaoqJ06cCCljsVgYOHCgxPsi+fn59OrVK6S90sGDB1NXV0dhYSEg8f62Nm3axMyZM/n5z3/O+++/j6Zp5rRwnF9EyzrKcSmP/zqYc+fOsX37dn70ox+Z4yIiIpgxYwb9+/dHURQ+/fRTVqxYwTPPPMPQoUOBYOPOF9/ejI2NNRt9buxersytpqVYezwekpKSQso1XoA8Hg/R0dES6zCbOnUqd9xxB06nk5ycHFatWkV9fT0TJ04ELn1s19XV4ff7qa6uRtf1Zg2bx8XFUVxc3F67cUNoqXH6xtg2PX4l3tfmgQceoE+fPkRHR3P06FHWrVtHRUUF//Iv/wKE5/wiWub1ejvEcSlJVRv505/+xObNmy9b5r/+67/o0aOHOVxeXs7SpUsZOXJkyDN5t9sd0sZgamoqFRUVvP/++2ZSdSsLZ6zFlV1LvC/n0UcfNfv79OmDz+djy5YtZlJ1qwt3vMXVuZr4Nz1P9+7dG5vNxh/+8AemTZsmTdTcIiSpaiMPPvhgs1/LXKxLly5mf3l5OYsXL6Z///7Mnj37istPTU0lNzfXHI6Li6OysjKkTGVlpZm1N3YrKyuJj48PKZOSknLF9XVk4Yx1XFxcs2+EjcNNY3mrxhquPt5XKy0tjb/85S8EAgHsdvsl4x0ZGYnD4cDtdmOxWFr8f7v4W+uNKJzxjouL49ixYyHjGmN7peP7Von3xb5N/NPS0tA0jdLSUrp37x6W84toWUc5LiWpaiNutxu3292qso0X+T59+jBnzhwsliu/6lZQUBBywU5PT+fw4cP80z/9kzkuNzeXtLQ0AJKSkoiLi+Pw4cPmhb22tpZjx44xfvz4q9izjiecsU5PT2fdunWoqmq+95Cbm0v37t3Nd69u5VjD1cX7WhQUFBAVFWV+s09LS+PgwYMhZXJzc83qRGw2G3379iUvL4/hw4cDwV+55eXlMWHChDbbzvYSzninp6ezceNGKisrzUdMubm5REZGkpycDEi8L/Zt4l9QUICiKOb84Ti/iJZ1lONSXlS/zsrLy1m0aBGJiYnMmDEDr9eLx+MJybb37NlDdnY2RUVFFBUVsXHjRnbv3h1yoEycOJGcnBy2bNlCUVERWVlZHD9+3CyjKAoTJ05k48aNHDhwgNOnT7Ny5Uri4+MZNmxYe+/2ddGaWN99993YbDZef/11CgsL2bdvH9u3bw+5rS+xbr2ysjIKCgooKytD13UKCgooKCigvr4egAMHDrBr1y5Onz7NuXPn+Oijj3jvvfd44IEHzGWMHz+ekpIS1qxZQ1FRER9++CH79+8PuehMmjSJXbt2sWfPHs6cOcObb76Jz+e74h2Gm82V4j1o0CCSk5NZuXIlBQUFHDp0iPXr13P//febSazE+9rk5+ezdetWCgoKOH/+PHv37uWdd97hnnvuMROmcJxfxKV1hONSMZr+zEa0uz179vD73/++xWlZWVlmmc2bN1NWVobFYqFHjx5MnjyZESNGhJTfv38/69evp7S0lG7dul2yQsqdO3dSW1tLRkYGTzzxBN27d2+7HexAWhNrCK2cLyYmhgkTJoRU3gcS69Z69dVX+eSTT5qNX7hwIQMGDODQoUOsXbuWc+fOYRgGXbt2Zfz48YwbNy7kLuKRI0d45513OHPmzGUro3z//ffxeDykpKTw4x//+Jb7dn+leAOUlpby5ptvcuTIEZxOJ6NHj2b69OnNKv+UeF+dEydOsGrVKoqKiggEAiQlJfG9732PSZMmhbxPFY7zi7i0631cSlIlhBBCCBEG8vhPCCGEECIMJKkSQgghhAgDSaqEEEIIIcJAkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECANJqoQQQgghwkCSKiGEEEKIMJCkSghxS5o7dy6vvvqqOXzkyBGmTp3KkSNHzHGLFi3iZz/7WVjW19LyX331VebOnWsOl5SUMHXqVN5///2wrDMc9uzZw9SpUykpKbnemyJEhydJlRCi3TReoI8fP369N0UIIcLOdr03QAghOoLbbruNNWvWYLO132nxJz/5CdJSmBA3D0mqhBACsFgsOByOdl1neyZwQoi2J3/RQogO5eTJk6xbt46jR4+i6zppaWk8/vjjpKenh5Q7deoUq1ev5tixY8TExHDfffeRkJDAa6+9xsqVK0lKSrqq9R45coTFixezcOFCBgwYcMlyOTk5rFixgqFDhzJ//nysVitFRUWsX7+evLw8/H4/PXv25NFHH2Xo0KGXXeerr77KP/7xj5B3uxrt3LmTzZs3c+HCBXr37s0TTzxBampqSJm8vDyysrI4efIkVquV22+/nWnTppGcnBxSrrUxLSwsZPXq1eTn55sxjY+Pv1LohBANJKkSQnQYhYWFPPfcc7hcLiZPnozVamXnzp0sXryYRYsWkZaWBkB5eTmLFy9GURQeeughnE4nH3/8cZvf+fn888956aWXGDlyJHPmzMFisVBYWMiCBQtISEjg+9//Pk6nk/3797NixQp+9rOfMXz48Ktez9/+9jfq6uq49957URSFzZs389vf/pZXXnnF3Mfc3FyWLVtGUlISjz32GH6/n+3bt7NgwQKWL19uJpWtjanH42Hx4sVommbux65du9r97p0QNzJJqoQQHcb69evRNI3nn3+eLl26ADB69Gh++tOfsmbNGhYvXgzApk2bqKmpYfny5aSkpAAwduxYnnrqqTbbtk8//ZSXX36ZMWPGMGvWLCyW4O983n77bRITE1m2bBl2ux2A+++/n+eee44//elP15RUlZWV8bvf/Y7o6GgAunfvzm9+8xtycnL4zne+A8CaNWuIjo5m6dKlZrlhw4bx85//nKysLObNmwdcXUy9Xi8vvviieUdszJgxbRpTIW428us/IUSHoOs6ubm5DBs2zLz4A8THxzNq1Ci++uoramtrgeAjuPT0dDOhAoiOjubuu+9uk23Lzs7m5Zdf5r777mP27NlmQlVdXU1eXh4jR46krq4Or9eL1+ulqqqKQYMGcfbsWcrLy696fSNHjjQTJYCMjAwAzp8/D0BFRQUFBQWMHj06pFzv3r3JzMzk4MGDwNXF9ODBg6SlpYU8YnS73W0WUyFuRnKnSgjRIXi9Xnw+H927d282LTk5GcMwuHDhAi6Xi9LSUvOxVVNdu3YNGa6trcXv95vDNpstJAlpjZKSEl555RVGjhzJzJkzQ6adO3cOwzDYsGEDGzZsaHH+yspKEhISrmqdiYmJIcON21xTUwNAaWkpQIux6tGjBzk5OdTX11NfX9/qmJaVlbUY05bmFUK0TJIqIcRN66233uKTTz4xh2+//XYWLVp0VcuIi4sjPj6egwcPcvz4cfr162dO03UdgAcffJBBgwa1OP/FiV5rNN4Ju5hUvyBExyZJlRCiQ3C73TidToqLi5tNKyoqQlEUOnXqBEDnzp3NR2FNnTt3LmR4ypQp3HPPPebw1d6lAnA4HPziF79g8eLFvPjiiyxatIiePXsCmI/UrFYrmZmZV73sa9W5c2eAFmNVXFxMTEwMEREROByOVsc0MTGRs2fPtrg8IUTryDtVQogOwWKxkJmZyYEDB0KaRPF4PGRnZ5ORkYHL5QJg0KBB5OfnU1BQYJarrq4mOzs7ZJnJyclkZmaan759+17TtrlcLn75y1/idrtZsmSJmbzFxsYyYMAAdu7cSUVFRbP5vF7vNa3vSuLj40lJSeGTTz4xHwkCnD59mpycHO68807g6mJ655138vXXX3Ps2LGQ7b84pkKIS5M7VUKIdrd7924OHTrUbPxjjz1Gbm4uzz33HOPHjzd//q+qKj/84Q/NcpMnT2bv3r288MILPPDAA2aVComJiVRXV6MoSti32e12s2DBAhYsWMALL7zACy+8QEJCAk888QQLFizg3//93xk3bhxJSUlUVlaSn59PeXk5K1asCPu2APzwhz9k2bJl/OpXv2Ls2LH4/X527NiBy+Vi6tSpZrnHH3+8VTGdMmUKe/fuZenSpUycONGsUqFz586cOnWqTfZBiJuNJFVCiHb30UcftTh+zJgxPP/886xdu5ZNmzZhGAapqanMnz8/5CXqxMREFi5cyFtvvcV7772H2+3m/vvvx+l08tZbb5lVG4RbQkICCxYsYOHChbzwwgssXryY5ORkfv3rX/Pf//3f7Nmzh6qqKmJjY0lJSeGRRx5pk+0AyMzM5NlnnyUrK4usrCyz8s/p06eHVHzas2fPVsU0Pj6ehQsXsnr1ajZt2hRS+efrr7/eZvshxM1EMeTNRyHETeLtt9/mf/7nf/jjH/94yZe9hRCirchZRwhxQ2paVQJAVVUVf/3rX8nIyJCESghxXcjjPyHEDemXv/wlAwYMoEePHlRWVvLxxx9TV1fXpo/chBDicuTxnxDihrR27Vo+/fRTLly4gKIo9OnTh0cffbRdqzYQQoimJKkSQgghhAgDefFACCGEECIMJKkSQgghhAgDSaqEEEIIIcJAkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECANJqoQQQgghwkCSKiGEEEKIMPj/lET2CDaW2DkAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } - }, - "outputs": [], + ], "source": [ - "fig, ax = plt.subplots(nrows=1, ncols=5)\n", - "for i in range(5):\n", - " ax[i].imshow(samples[i][0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n", - " ax[i].axis(\"off\")\n", - " ax[i].title.set_text(\"Sample \" + str(i))\n", - "plt.show()" + "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", label=\"In-distribution\")\n", + "sns.kdeplot(ood_likelihoods, color=\"deeppink\", label=\"OOD\")\n", + "plt.legend()\n", + "plt.xlabel(\"Log-likelihood\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89c3dc99", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "jupytext": { - "formats": "auto:percent,ipynb" + "formats": "py:percent,ipynb" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", @@ -827,4 +1312,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py index 6d598ead..cd8d0d9f 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -16,14 +16,22 @@ # %% [markdown] # # Anomaly Detection with Transformers # -# This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in [1]. +# This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in Pinaya et al.[1]. # -# We will work with the MedNIST dataset available on MONAI -# (https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset). Similar to "Experiment 2 – image-wise anomaly detection on 2D synthetic data", we will train our models on HeadCT images and check the likelihood of similar images (in-distribution) and images from other classes -# -# [1] - [Pinaya et al. "Unsupervised brain imaging 3D anomaly detection and segmentation with transformers"](https://doi.org/10.1016/j.media.2022.102475) +# Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to "Experiment 2 – image-wise anomaly detection on 2D synthetic data" from [1], we will train our generative models on `HeadCT` images. # +# Finally, we will compute the log-likelihood of images from the same class (in-distribution class) and images from other classes (out-of-distribution). # +# [1] - [Pinaya et al. "Unsupervised brain imaging 3D anomaly detection and segmentation with transformers"](https://doi.org/10.1016/j.media.2022.102475) + +# %% [markdown] +# ### Setup environment + +# %% +# !python -c "import seaborn" || pip install -q seaborn +# %matplotlib inline + +# %% [markdown] # ### Setup imports # %% @@ -41,23 +49,24 @@ import tempfile import time - import matplotlib.pyplot as plt import numpy as np +import seaborn as sns import torch -from torch.nn import L1Loss, CrossEntropyLoss import torch.nn.functional as F +from ignite.utils import convert_tensor from monai import transforms from monai.apps import MedNISTDataset from monai.config import print_config from monai.data import DataLoader, Dataset from monai.utils import first, set_determinism +from torch.nn import CrossEntropyLoss, L1Loss from tqdm import tqdm -from ignite.utils import convert_tensor +from generative.inferers import VQVAETransformerInferer from generative.networks.nets import VQVAE, DecoderOnlyTransformer -from generative.utils.ordering import Ordering from generative.utils.enums import OrderingType +from generative.utils.ordering import Ordering print_config() @@ -103,7 +112,7 @@ train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True) # %% [markdown] -# ### Visualse some examples from the dataset +# ### Visualise some examples from the dataset # %% # Plot 3 examples from the training set @@ -118,7 +127,7 @@ # %% val_data = MedNISTDataset(root_dir=root_dir, section="validation", download=True, seed=0) -val_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "HeadCT"] +val_datalist = [{"image": item["image"]} for item in val_data.data if item["class_name"] == "HeadCT"] val_transforms = transforms.Compose( [ transforms.LoadImaged(keys=["image"]), @@ -130,9 +139,11 @@ val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True) # %% [markdown] -# ## Vector Quantized Variational Autoencoder (VQ-VAE) Training +# ## Vector Quantized Variational Autoencoder # -# The first step is to train a VQVAE network - once this is done we can use the trained vqvae model to encode the 2d images to generate the inputs required for the transformer +# The first step is to train a Vector Quantized Variation Autoencoder (VQ-VAE). This network is responsible for creating a compressed version of the inputted data. Once its training is done, we can use the encoder to obtain smaller and discrete representations of the 2D images to generate the inputs required for our autoregressive transformer. +# +# For its training, we will use the L1 loss, and we will update its codebook using a method based on Exponential Moving Average (EMA). # %% [markdown] # ### Define network, optimizer and losses @@ -140,6 +151,7 @@ # %% device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"Using {device}") + vqvae_model = VQVAE( spatial_dims=2, in_channels=1, @@ -159,16 +171,14 @@ l1_loss = L1Loss() # %% [markdown] -# ### VQVAE Model training -# We will run our model for 100 epochs +# ### VQ-VAE Model training +# We will train our VQ-VAE for 50 epochs. # %% -n_epochs = 10 -val_interval = 5 -epoch_recon_loss_list = [] -val_recon_epoch_loss_list = [] -intermediary_images = [] -n_example_images = 4 +n_epochs = 50 +val_interval = 10 +epoch_losses = [] +val_epoch_losses = [] total_start = time.time() for epoch in range(n_epochs): @@ -182,9 +192,7 @@ # model outputs reconstruction and the quantization error reconstruction, quantization_loss = vqvae_model(images=images) - recons_loss = l1_loss(reconstruction.float(), images.float()) - loss = recons_loss + quantization_loss loss.backward() @@ -195,50 +203,44 @@ progress_bar.set_postfix( {"recons_loss": epoch_loss / (step + 1), "quantization_loss": quantization_loss.item() / (step + 1)} ) - epoch_recon_loss_list.append(epoch_loss / (step + 1)) + epoch_losses.append(epoch_loss / (step + 1)) if (epoch + 1) % val_interval == 0: vqvae_model.eval() val_loss = 0 with torch.no_grad(): - k = 0 for val_step, batch in enumerate(val_loader, start=1): - k += 1 - if k == 3: - break images = batch["image"].to(device) - reconstruction, quantization_loss = vqvae_model(images=images) - - # get the first sample from the first validation batch for - # visualizing how the training evolves - if val_step == 1: - intermediary_images.append(reconstruction[:n_example_images, 0]) - recons_loss = l1_loss(reconstruction.float(), images.float()) - val_loss += recons_loss.item() val_loss /= val_step - val_recon_epoch_loss_list.append(val_loss) + val_epoch_losses.append(val_loss) total_time = time.time() - total_start print(f"train completed, total time: {total_time}.") # %% [markdown] -# ### Plotting evolution of reconstruction performance +# ### Learning curves # %% -# Plot every evaluation as a new line and example as columns -val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)) -fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True) -fig.set_size_inches(18, 30) -for image_n in range(len(val_samples)): - reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T - ax[image_n].imshow(reconstructions.cpu(), cmap="gray") - ax[image_n].set_xticks([]) - ax[image_n].set_yticks([]) - ax[image_n].set_ylabel(f"Epoch {val_samples[image_n]:.0f}") +plt.style.use("ggplot") +plt.title("Learning Curves", fontsize=20) +plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color="C0", linewidth=2.0, label="Train") +plt.plot( + np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)), + val_epoch_losses, + color="C1", + linewidth=2.0, + label="Validation", +) +plt.yticks(fontsize=12) +plt.xticks(fontsize=12) +plt.xlabel("Epochs", fontsize=16) +plt.ylabel("Loss", fontsize=16) +plt.legend(prop={"size": 14}) +plt.show() # %% [markdown] @@ -255,22 +257,24 @@ plt.show() # %% [markdown] -# ## Autoregressive Transformer Training +# # Autoregressive Transformer # -# Now that a vqvae model has been trained, we can use this model to encode the data into its discrete latent representations. These inputs can then be flattened into a 1D sequence for the transformer to learn in an autoregressive manor. +# Now that our VQ-VAE model has been trained, we can use this model to encode the data into its discrete latent representations. Then, to be able to input it into the autoregressive Transformer, it is necessary to transform this 2D latent representation into a 1D sequence. # -# For this tutorial we will use the first appraoch and use the vqvae network to encode the data during the training cycle +# In order to train it in an autoregressive manner, we will use the CrossEntropy Loss as the Transformer will try to predict the next token value for each position of the sequence. +# +# Here we will use the MONAI's `VQVAETransformerInferer` class to help with the forward pass and to get the predicted likelihood from the VQ-VAE + Transformer models. # %% [markdown] # ### Datasets -# We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformer models we will need to reduce the batch size +# We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformers we will need to reduce the batch size. # %% -train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4) -val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4) +train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True) +val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True) # %% [markdown] -# ### Latent sequence ordering +# ### 2D latent representation -> 1D sequence # We need to define an ordering of which we convert our 2D latent space into a 1D sequence. For this we will use a simple raster scan. # %% @@ -289,7 +293,7 @@ # %% [markdown] -# ## Define Network, optimizer and losses +# ### Define Network, optimizer and losses # %% device = torch.device("cuda" if torch.cuda.is_available() else "cpu") @@ -303,20 +307,21 @@ ) transformer_model.to(device) +inferer = VQVAETransformerInferer() + # %% optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3) ce_loss = CrossEntropyLoss() # %% [markdown] -# ### Transformer Model Training -# We will train the model for 100 epochs +# ### Transformer Training +# We will train the Transformer for 100 epochs. # %% n_epochs = 100 val_interval = 10 -epoch_ce_loss_list = [] -val_ce_epoch_loss_list = [] -intermediary_images = [] +epoch_losses = [] +val_epoch_losses = [] vqvae_model.eval() total_start = time.time() @@ -328,6 +333,9 @@ for step, batch in progress_bar: images = batch["image"].to(device) + + + # Encode images using vqvae and transformer to 1D sequence quantizations = vqvae_model.index_quantize(images) quantizations = quantizations.reshape(quantizations.shape[0], -1) @@ -342,7 +350,7 @@ optimizer.zero_grad(set_to_none=True) - # model outputs + logits = transformer_model(x=quantizations_input).transpose(1, 2) loss = ce_loss(logits, quantizations_target) @@ -353,7 +361,7 @@ epoch_loss += loss.item() progress_bar.set_postfix({"ce_loss": epoch_loss / (step + 1)}) - epoch_ce_loss_list.append(epoch_loss / (step + 1)) + epoch_losses.append(epoch_loss / (step + 1)) if (epoch + 1) % val_interval == 0: transformer_model.eval() @@ -382,29 +390,91 @@ val_loss += loss.item() val_loss /= val_step - val_ce_epoch_loss_list.append(val_loss) + val_epoch_losses.append(val_loss) total_time = time.time() - total_start print(f"train completed, total time: {total_time}.") # %% [markdown] -# ### Plot evoluation of Generated Samples +# ### Learning Curves + +# %% +plt.style.use("ggplot") +plt.title("Learning Curves", fontsize=20) +plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color="C0", linewidth=2.0, label="Train") +plt.plot( + np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)), + val_epoch_losses, + color="C1", + linewidth=2.0, + label="Validation", +) +plt.yticks(fontsize=12) +plt.xticks(fontsize=12) +plt.xlabel("Epochs", fontsize=16) +plt.ylabel("Loss", fontsize=16) +plt.legend(prop={"size": 14}) +plt.show() + +# %% [markdown] +# ## Image-wise anomaly detection +# +# To verify the performance of the VQ-VAE + Transformerperforming unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images. # %% -# Plot every evaluation as a new line and example as columns -val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)) -print(len(val_samples)) -fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True) -fig.set_size_inches(12, 30) -for image_n in range(len(val_samples)): - reconstructions = intermediary_images[image_n][0] - ax[image_n].imshow(reconstructions.cpu(), cmap="gray") - ax[image_n].set_xticks([]) - ax[image_n].set_yticks([]) - ax[image_n].set_ylabel(f"Epoch {val_samples[image_n]:.0f}") +test_data = MedNISTDataset(root_dir=root_dir, section="test", download=True, seed=0) + +in_distribution_datalist = [{"image": item["image"]} for item in test_data.data if item["class_name"] == "HeadCT"] +in_distribution_ds = Dataset(data=in_distribution_datalist, transform=val_transforms) +in_distribution_loader = DataLoader( + in_distribution_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True +) + +in_likelihoods = [] + +progress_bar = tqdm(enumerate(in_distribution_loader), total=len(in_distribution_loader), ncols=110) +progress_bar.set_description(f"In-distribution data") +for step, batch in progress_bar: + images = batch["image"].to(device) + log_likelihood = inferer.get_likelihood( + inputs=images, vqvae_model=vqvae_model, transformer_model=transformer_model, ordering=ordering + ) + in_likelihoods.append(log_likelihood.sum(dim=(1, 2)).cpu().numpy()) + +in_likelihoods = np.concatenate(in_likelihoods) # %% [markdown] -# ### Generating samples from the trained model +# We will use the other classes of the dataset for the out-of-distribution examples. + +# %% +ood_datalist = [{"image": item["image"]} for item in test_data.data if item["class_name"] != "HeadCT"] +ood_ds = Dataset(data=ood_datalist, transform=val_transforms) +ood_loader = DataLoader(ood_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True) + +ood_likelihoods = [] + +progress_bar = tqdm(enumerate(ood_loader), total=len(ood_loader), ncols=110) +progress_bar.set_description(f"out-of-distribution data") +for step, batch in progress_bar: + images = batch["image"].to(device) + + log_likelihood = inferer.get_likelihood( + inputs=images, vqvae_model=vqvae_model, transformer_model=transformer_model, ordering=ordering + ) + ood_likelihoods.append(log_likelihood.sum(dim=(1, 2)).cpu().numpy()) + +ood_likelihoods = np.concatenate(ood_likelihoods) -# Add anomaly detection using inferer \ No newline at end of file +# %% [markdown] +# ## Log-likehood plot +# +# Here, we plot the log-likelihood of the images. In this case, the lower the log-likelihood, the more unlikely the image belongs to the training set. + +# %% +sns.kdeplot(in_likelihoods, color="dodgerblue", label="In-distribution") +sns.kdeplot(ood_likelihoods, color="deeppink", label="OOD") +plt.legend() +plt.xlabel("Log-likelihood") + +# %% From 45ae49c7d5c83531252e2a86fd2c6d0d42e22904 Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Sat, 11 Mar 2023 09:03:55 +0000 Subject: [PATCH 3/6] [WIP] Add Anomaly detection tutorial Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 801 ++++++++++-------- .../anomaly_detection_with_transformers.py | 120 +-- 2 files changed, 483 insertions(+), 438 deletions(-) diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb index 55677cce..997f10d2 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -61,7 +61,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-07 15:34:06,427 - A matching Triton is not available, some optimizations will not be enabled.\n", + "2023-03-10 23:52:11,507 - A matching Triton is not available, some optimizations will not be enabled.\n", "Error caught was: No module named 'triton'\n", "MONAI version: 1.2.dev2304\n", "Numpy version: 1.23.5\n", @@ -163,7 +163,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "/tmp/tmpma12lzmd\n" + "/tmp/tmpaurm48lm\n" ] } ], @@ -191,14 +191,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "MedNIST.tar.gz: 59.0MB [00:04, 12.8MB/s] " + "MedNIST.tar.gz: 59.0MB [00:04, 13.4MB/s] " ] }, { "name": "stdout", "output_type": "stream", "text": [ - "2023-03-07 15:34:11,317 - INFO - Downloaded: /tmp/tmpma12lzmd/MedNIST.tar.gz\n" + "2023-03-10 23:52:16,176 - INFO - Downloaded: /tmp/tmpaurm48lm/MedNIST.tar.gz\n" ] }, { @@ -212,15 +212,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-07 15:34:11,425 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-07 15:34:11,426 - INFO - Writing into directory: /tmp/tmpma12lzmd.\n" + "2023-03-10 23:52:16,270 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-10 23:52:16,271 - INFO - Writing into directory: /tmp/tmpaurm48lm.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3265.04it/s]\n" + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████| 47164/47164 [00:13<00:00, 3379.57it/s]\n" ] } ], @@ -235,9 +235,9 @@ " 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 / 18, np.pi / 18), (-np.pi / 18, np.pi / 18)],\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", + " scale_range=[(-0.01, 0.01), (-0.01, 0.01)],\n", " spatial_size=[image_size, image_size],\n", " padding_mode=\"zeros\",\n", " prob=0.5,\n", @@ -245,7 +245,7 @@ " ]\n", ")\n", "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n", - "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)" + "train_loader = DataLoader(train_ds, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True)" ] }, { @@ -264,7 +264,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -300,16 +300,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-07 15:34:30,509 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-07 15:34:30,509 - INFO - File exists: /tmp/tmpma12lzmd/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-07 15:34:30,510 - INFO - Non-empty folder exists in /tmp/tmpma12lzmd/MedNIST, skipped extracting.\n" + "2023-03-10 23:52:35,261 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-10 23:52:35,262 - INFO - File exists: /tmp/tmpaurm48lm/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-10 23:52:35,262 - INFO - Non-empty folder exists in /tmp/tmpaurm48lm/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3325.63it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3401.03it/s]\n" ] } ], @@ -324,7 +324,7 @@ " ]\n", ")\n", "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n", - "val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True)" + "val_loader = DataLoader(val_ds, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True)" ] }, { @@ -559,69 +559,100 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|████████████████| 125/125 [00:30<00:00, 4.14it/s, recons_loss=0.113, quantization_loss=1.03e-5]\n", - "Epoch 1: 100%|███████████████| 125/125 [00:30<00:00, 4.16it/s, recons_loss=0.0482, quantization_loss=1.72e-5]\n", - "Epoch 2: 100%|███████████████| 125/125 [00:30<00:00, 4.11it/s, recons_loss=0.0372, quantization_loss=1.66e-5]\n", - "Epoch 3: 100%|████████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.032, quantization_loss=2.15e-5]\n", - "Epoch 4: 100%|███████████████| 125/125 [00:31<00:00, 4.01it/s, recons_loss=0.0289, quantization_loss=2.08e-5]\n", - "Epoch 5: 100%|███████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.0272, quantization_loss=2.77e-5]\n", - "Epoch 6: 100%|███████████████| 125/125 [00:30<00:00, 4.04it/s, recons_loss=0.0277, quantization_loss=2.99e-5]\n", - "Epoch 7: 100%|███████████████| 125/125 [00:31<00:00, 4.00it/s, recons_loss=0.0262, quantization_loss=2.74e-5]\n", - "Epoch 8: 100%|███████████████| 125/125 [00:31<00:00, 3.99it/s, recons_loss=0.0263, quantization_loss=3.67e-5]\n", - "Epoch 9: 100%|███████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0239, quantization_loss=4.39e-5]\n", - "Epoch 10: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0253, quantization_loss=4.57e-5]\n", - "Epoch 11: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0239, quantization_loss=4.43e-5]\n", - "Epoch 12: 100%|███████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.024, quantization_loss=4.89e-5]\n", - "Epoch 13: 100%|██████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0243, quantization_loss=4.32e-5]\n", - "Epoch 14: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0227, quantization_loss=4.01e-5]\n", - "Epoch 15: 100%|██████████████| 125/125 [00:32<00:00, 3.83it/s, recons_loss=0.0229, quantization_loss=4.47e-5]\n", - "Epoch 16: 100%|███████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0239, quantization_loss=4.5e-5]\n", - "Epoch 17: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0234, quantization_loss=4.14e-5]\n", - "Epoch 18: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0231, quantization_loss=4.68e-5]\n", - "Epoch 19: 100%|██████████████| 125/125 [00:31<00:00, 3.96it/s, recons_loss=0.0223, quantization_loss=5.42e-5]\n", - "Epoch 20: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0218, quantization_loss=5.61e-5]\n", - "Epoch 21: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0216, quantization_loss=3.92e-5]\n", - "Epoch 22: 100%|██████████████| 125/125 [00:31<00:00, 3.96it/s, recons_loss=0.0222, quantization_loss=4.68e-5]\n", - "Epoch 23: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0228, quantization_loss=5.01e-5]\n", - "Epoch 24: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0228, quantization_loss=5.88e-5]\n", - "Epoch 25: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0214, quantization_loss=4.72e-5]\n", - "Epoch 26: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0209, quantization_loss=5.43e-5]\n", - "Epoch 27: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0209, quantization_loss=5.33e-5]\n", - "Epoch 28: 100%|██████████████| 125/125 [00:32<00:00, 3.90it/s, recons_loss=0.0214, quantization_loss=4.47e-5]\n", - "Epoch 29: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0211, quantization_loss=5.16e-5]\n", - "Epoch 30: 100%|██████████████| 125/125 [00:32<00:00, 3.88it/s, recons_loss=0.0214, quantization_loss=4.03e-5]\n", - "Epoch 31: 100%|██████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.0219, quantization_loss=3.97e-5]\n", - "Epoch 32: 100%|███████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.022, quantization_loss=4.01e-5]\n", - "Epoch 33: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0206, quantization_loss=4.68e-5]\n", - "Epoch 34: 100%|██████████████| 125/125 [00:31<00:00, 3.91it/s, recons_loss=0.0213, quantization_loss=4.12e-5]\n", - "Epoch 35: 100%|██████████████| 125/125 [00:31<00:00, 3.97it/s, recons_loss=0.0204, quantization_loss=5.13e-5]\n", - "Epoch 36: 100%|██████████████| 125/125 [00:31<00:00, 3.98it/s, recons_loss=0.0203, quantization_loss=5.18e-5]\n", - "Epoch 37: 100%|██████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.0202, quantization_loss=5.57e-5]\n", - "Epoch 38: 100%|██████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0202, quantization_loss=4.05e-5]\n", - "Epoch 39: 100%|███████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.021, quantization_loss=4.77e-5]\n", - "Epoch 40: 100%|███████████████| 125/125 [00:32<00:00, 3.89it/s, recons_loss=0.0215, quantization_loss=4.1e-5]\n", - "Epoch 41: 100%|██████████████| 125/125 [00:31<00:00, 4.00it/s, recons_loss=0.0209, quantization_loss=3.46e-5]\n", - "Epoch 42: 100%|██████████████| 125/125 [00:31<00:00, 3.93it/s, recons_loss=0.0209, quantization_loss=3.66e-5]\n", - "Epoch 43: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0205, quantization_loss=4.18e-5]\n", - "Epoch 44: 100%|█████████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0201, quantization_loss=4e-5]\n", - "Epoch 45: 100%|████████████████| 125/125 [00:32<00:00, 3.84it/s, recons_loss=0.02, quantization_loss=4.12e-5]\n", - "Epoch 46: 100%|██████████████| 125/125 [00:32<00:00, 3.87it/s, recons_loss=0.0209, quantization_loss=3.39e-5]\n", - "Epoch 47: 100%|███████████████| 125/125 [00:31<00:00, 3.92it/s, recons_loss=0.021, quantization_loss=4.09e-5]\n", - "Epoch 48: 100%|██████████████| 125/125 [00:31<00:00, 3.94it/s, recons_loss=0.0197, quantization_loss=4.87e-5]\n", - "Epoch 49: 100%|██████████████| 125/125 [00:31<00:00, 3.95it/s, recons_loss=0.0199, quantization_loss=3.09e-5]\n" + "Epoch 0: 100%|██████████████████| 32/32 [00:29<00:00, 1.07it/s, recons_loss=0.207, quantization_loss=1.48e-6]\n", + "Epoch 1: 100%|██████████████████| 32/32 [00:29<00:00, 1.08it/s, recons_loss=0.099, quantization_loss=4.51e-6]\n", + "Epoch 2: 100%|█████████████████| 32/32 [00:29<00:00, 1.08it/s, recons_loss=0.0732, quantization_loss=7.78e-5]\n", + "Epoch 3: 100%|█████████████████| 32/32 [00:29<00:00, 1.07it/s, recons_loss=0.0587, quantization_loss=3.59e-5]\n", + "Epoch 4: 100%|█████████████████| 32/32 [00:30<00:00, 1.06it/s, recons_loss=0.0529, quantization_loss=3.12e-5]\n", + "Epoch 5: 100%|██████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.047, quantization_loss=3.68e-5]\n", + "Epoch 6: 100%|█████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0421, quantization_loss=4.53e-5]\n", + "Epoch 7: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0406, quantization_loss=4.59e-5]\n", + "Epoch 8: 100%|█████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0392, quantization_loss=3.37e-5]\n", + "Epoch 9: 100%|█████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0358, quantization_loss=4.11e-5]\n", + "Epoch 10: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0331, quantization_loss=3.34e-5]\n", + "Epoch 11: 100%|████████████████| 32/32 [00:31<00:00, 1.02it/s, recons_loss=0.0322, quantization_loss=3.38e-5]\n", + "Epoch 12: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0302, quantization_loss=3.61e-5]\n", + "Epoch 13: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0297, quantization_loss=3.42e-5]\n", + "Epoch 14: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0305, quantization_loss=5.24e-5]\n", + "Epoch 15: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0308, quantization_loss=4.61e-5]\n", + "Epoch 16: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0292, quantization_loss=6.12e-5]\n", + "Epoch 17: 100%|██████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.03, quantization_loss=5.07e-5]\n", + "Epoch 18: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0276, quantization_loss=7.42e-5]\n", + "Epoch 19: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0275, quantization_loss=9.32e-5]\n", + "Epoch 20: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0295, quantization_loss=0.000102]\n", + "Epoch 21: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0288, quantization_loss=0.000104]\n", + "Epoch 22: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0271, quantization_loss=8.86e-5]\n", + "Epoch 23: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0263, quantization_loss=9.44e-5]\n", + "Epoch 24: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0263, quantization_loss=0.000108]\n", + "Epoch 25: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0251, quantization_loss=0.000105]\n", + "Epoch 26: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0261, quantization_loss=0.000109]\n", + "Epoch 27: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0267, quantization_loss=0.000115]\n", + "Epoch 28: 100%|█████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.027, quantization_loss=8.48e-5]\n", + "Epoch 29: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0257, quantization_loss=0.000122]\n", + "Epoch 30: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0241, quantization_loss=0.000109]\n", + "Epoch 31: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.024, quantization_loss=0.000107]\n", + "Epoch 32: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0241, quantization_loss=0.000108]\n", + "Epoch 33: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0244, quantization_loss=0.000111]\n", + "Epoch 34: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0241, quantization_loss=0.000117]\n", + "Epoch 35: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0245, quantization_loss=0.000124]\n", + "Epoch 36: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0276, quantization_loss=0.00012]\n", + "Epoch 37: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0258, quantization_loss=0.000137]\n", + "Epoch 38: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0242, quantization_loss=0.00011]\n", + "Epoch 39: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0236, quantization_loss=0.000131]\n", + "Epoch 40: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0227, quantization_loss=0.000125]\n", + "Epoch 41: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0227, quantization_loss=0.000118]\n", + "Epoch 42: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0239, quantization_loss=0.000112]\n", + "Epoch 43: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0267, quantization_loss=0.000131]\n", + "Epoch 44: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0249, quantization_loss=0.000113]\n", + "Epoch 45: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0243, quantization_loss=0.000131]\n", + "Epoch 46: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0248, quantization_loss=0.000108]\n", + "Epoch 47: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0243, quantization_loss=0.000122]\n", + "Epoch 48: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0237, quantization_loss=0.000143]\n", + "Epoch 49: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0241, quantization_loss=0.000121]\n", + "Epoch 50: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0232, quantization_loss=0.000119]\n", + "Epoch 51: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0233, quantization_loss=0.000131]\n", + "Epoch 52: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0226, quantization_loss=0.00017]\n", + "Epoch 53: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.022, quantization_loss=0.000167]\n", + "Epoch 54: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0216, quantization_loss=0.000186]\n", + "Epoch 55: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0219, quantization_loss=0.000161]\n", + "Epoch 56: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0216, quantization_loss=0.000138]\n", + "Epoch 57: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.022, quantization_loss=0.00015]\n", + "Epoch 58: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.024, quantization_loss=0.000124]\n", + "Epoch 59: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0243, quantization_loss=0.000117]\n", + "Epoch 60: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.023, quantization_loss=0.00017]\n", + "Epoch 61: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0218, quantization_loss=0.000161]\n", + "Epoch 62: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0213, quantization_loss=0.000153]\n", + "Epoch 63: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0212, quantization_loss=0.000139]\n", + "Epoch 64: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.022, quantization_loss=0.000149]\n", + "Epoch 65: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0213, quantization_loss=0.000159]\n", + "Epoch 66: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0209, quantization_loss=0.000138]\n", + "Epoch 67: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0216, quantization_loss=0.000117]\n", + "Epoch 68: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0223, quantization_loss=0.000143]\n", + "Epoch 69: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0225, quantization_loss=0.00012]\n", + "Epoch 70: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0246, quantization_loss=0.000147]\n", + "Epoch 71: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0235, quantization_loss=0.000151]\n", + "Epoch 72: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.023, quantization_loss=0.000159]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 73: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0217, quantization_loss=0.000164]\n", + "Epoch 74: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0212, quantization_loss=0.000134]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "train completed, total time: 1588.7614703178406.\n" + "train completed, total time: 2301.2195658683777.\n" ] } ], "source": [ - "n_epochs = 50\n", - "val_interval = 10\n", + "n_epochs = 75\n", + "val_interval = 25\n", "epoch_losses = []\n", "val_epoch_losses = []\n", "\n", @@ -667,52 +698,6 @@ "print(f\"train completed, total time: {total_time}.\")" ] }, - { - "cell_type": "markdown", - "id": "6ff4ec88", - "metadata": {}, - "source": [ - "### Learning curves" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "54943066", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAHZCAYAAAB0J2SuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABwDElEQVR4nO3dd3hUVeI+8PdOS68kJCGQBELoXYSAFIW4KBIUKSKoIOqquyxfV9xFWRVUVsWuP8QVCxYQgyBKEUVQOog0EQIBQkIgJKSTnmnn98dlhhlm0pMpyft5nnkyc++5c8+chOTlnHPPlYQQAkRERERULYWzK0BERETk6hiYiIiIiGrBwERERERUCwYmIiIiolowMBERERHVgoGJiIiIqBYMTERERES1YGAiIiIiqgUDExEREVEtGJiIyKXdfPPNkCQJN998s7OrQkStGAMTkYNs374dkiRBkiQsXLjQ2dUhF3Hy5Em88MILGDFiBDp06AAvLy/4+voiOjoaiYmJeOutt5Cdne3sahK1eipnV4CIqDUqKCjAE088gZUrV8JoNNrsLysrQ0ZGBjZu3Ih58+bh4Ycfxn//+18EBwc7obZExMBERC5t+/btzq5Ckzt37hxuv/12nD59GgDQtm1bTJs2DSNGjEBERAQkScKlS5ewfft2rF27FpmZmfjf//6HMWPG4K677nJu5YlaKQYmIiIHKi8vR2JiojksPfTQQ3j77bfh5+dnU3bChAl4/fXX8b///Q//+c9/HF1VIrLAwERE5EDPPPMMkpOTAQAPP/wwPvrooxrLazQazJkzB6NHj0ZlZaUjqkhEdnDSN5Gb+fXXXzFjxgx06tQJ3t7e8Pf3R+/evfGvf/0Lly5dqvHY48ePY9GiRRgzZgzat28PDw8P+Pr6Ii4uDjNmzMD+/ftrPH7hwoXmiesAcOXKFbz00kvo378/AgMDIUkSPvvsM7tlKysr8frrr2PAgAHw8/ODn58fBg0ahCVLlkCv11d7zpqukktPTzefw3Ten3/+GYmJiQgPD4eHhwc6duyIxx9/HBcvXqzxswFAfn4+/v3vf6Nr167w8vJCWFgYbr31Vqxbtw4A8Nlnn5nPl56eXuv7XS83N9cckCIiIvDOO+/U+diePXvihhtusNpW1ysIr/9eXO/6ixF++eUXTJ48GR06dIBarUZMTAzKy8vh5+cHSZIwffr0Wuu7b98+8/suXbrUbpns7Gz85z//wcCBAxEcHAwPDw906NABU6ZMwdatW2t8f4PBgM8++wxjxoxBeHg4NBoNAgICEBcXh9GjR+Pll182B1OiJiGIyCF+/fVXAUAAEAsWLKj38RUVFWLq1Knm97D38PHxEevXr6/1/DU9nn766WrrsGDBAnO506dPi5iYGJvjly9fblM2Oztb9OvXr9pzJiYmCoPBYPecI0eOFADEyJEjbfalpaVZnffpp5+u9hyhoaEiOTm52s927NgxERYWVu3xf/3rX8Xy5cvNr9PS0qp9r+q899575uOfe+65eh9/vZraxpLl98Iey5/L+fPn23z26OhoIYQQ9913n/nnrLS0tMZz/v3vfxcAhEqlErm5uTb7V6xYIXx8fGr8WXzooYeETqezObakpEQMHz681p/liRMn1lhHovrgkByRGxBCYNKkSdi0aRMAIDExEVOmTEGnTp2gUChw4MABvPnmm8jIyMCkSZOwZ88eDBw40Oo99Ho9fHx8cMcdd2DUqFHo1q0b/P39kZOTgxMnTuC9997D+fPn8eqrr6JLly548MEHa6zTpEmTkJmZiX/84x8YP348goKCcObMGURHR9uUvfvuu5GcnIw5c+YgMTERwcHBSElJwUsvvYSTJ09iw4YN+Oijj/Doo482uI0++ugj7N27FyNHjsSjjz6KLl26oKioCF988QW++OIL5ObmYtasWdi3b5/NsUVFRbjttttw+fJlAMD999+PadOmITQ0FGfPnsW7776LZcuW4Y8//mhw/QBgx44d5ud33HFHo96rOXz77bf4888/0bt3b/zzn/9Er169UFFRgaNHjwIApk+fjhUrVqCsrAzff/89pk2bZvd99Ho9vvnmGwDAmDFjEBISYrV/9erVuP/++yGEQKdOnTB79mz06NEDoaGhSE9PxyeffIIffvgBn3zyCfz9/fHWW29ZHb9w4ULs2rULADBu3DhMnz4dUVFR8PT0RE5ODo4cOYKNGzdW26NG1CDOTmxErUVjepiWLVsmAAi1Wi02b95st0xBQYHo2bOnACBuuukmm/25ubmisLCw2nNUVVWJW2+91dyjoNfrbcpY9lQoFArx008/Vft+lmXVarX49ddfbcrk5+ebe3X69Olj933q2sMEQDzyyCPCaDTalHv44YfNZQ4fPmyz/4knnjDvf+ed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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.style.use(\"ggplot\")\n", - "plt.title(\"Learning Curves\", fontsize=20)\n", - "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color=\"C0\", linewidth=2.0, label=\"Train\")\n", - "plt.plot(\n", - " np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),\n", - " val_epoch_losses,\n", - " color=\"C1\",\n", - " linewidth=2.0,\n", - " label=\"Validation\",\n", - ")\n", - "plt.yticks(fontsize=12)\n", - "plt.xticks(fontsize=12)\n", - "plt.xlabel(\"Epochs\", fontsize=16)\n", - "plt.ylabel(\"Loss\", fontsize=16)\n", - "plt.legend(prop={\"size\": 14})\n", - "plt.show()" - ] - }, { "cell_type": "markdown", "id": "8dfa3270", @@ -723,13 +708,13 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "0789cfcc", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAEMCAYAAABZZbUfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLU0lEQVR4nO2deZQVRZbGbyFQWsUiCEqDLFIsBYjsiIjsiKiAiA6iNIKtiC1uPS4cbRvamdZR7BEX7GG0RcWNblEQRZBdVER2RSl2EGRTBBfQASHnD6dyvviqXtR7j9rz+53DOZHv5hIZmRGV3C/ujZQgCAITQgghRGQpU9QVEEIIIUTRoo8BIYQQIuLoY0AIIYSIOPoYEEIIISKOPgaEEEKIiKOPASGEECLi6GNACCGEiDj6GBBCCCEijj4GhBBCiIijj4GIMnbsWEtJSbGFCxcWdVWEECLf0RiXGCX6YyAlJcVSUlKKuhpxU69ePatXr15Me0pKinXt2rXQ6pMI2R1r7NixRV0VIfKN7DEk+99JJ51kVatWta5du9rzzz9vUc7W/vzzz1tKSoo9//zzRV2VXCnu9StplC3qCgghRFEzZswYMzM7evSobdq0yd58801btGiRLV++3J566qkirp1IhlGjRtlVV11lderUKeqqlAj0MSCEiDzs8frwww+tc+fO9vTTT9u//uu/2llnnVU0FRNJU61aNatWrVpRV6PEUKJlgtzYtm2bpaSk2LBhw2zbtm121VVXWbVq1ezkk0+2tm3b2ttvv53jGHQ3vfPOO9axY0dLT0+3KlWq2BVXXGEbN27McUzXrl1jShTsvlq4cKGlpKTY9u3bbfv27Y5bctiwYeH+ZmaLFi1y7DxILV261K644gqrUaOGlS9f3mrXrm033nij7dq1K9e6rFixwi666CKrWLGiVapUyXr27GlLlixJoEX9DBs2zFJSUmzr1q321FNPWdOmTe3kk0+2evXq2YMPPhi6Wf/5z39a+/btLT093U4//XQbNWqU/fTTTznON23aNBsyZIg1atTI0tPTLT093dq0aWNPPPGEHT9+PNc6bNiwwQYOHGhVqlSx9PR069ixo73zzjteN+LOnTtt1KhRVr9+fUtNTbXTTjvN+vXrZ8uWLcu3thEll/PPP98yMzMtCAJbsWJFDnui/fDbb7+1++67z84++2xLS0uzypUrW4sWLWz06NF26NAhZ9+NGzfa0KFDrVatWla+fHmrWbOmDR06NNdxCHXx119/3dq3b29paWlWtWpVu+qqq+yrr77KccyWLVtsxIgR1qBBAzvllFOsatWq1rx5cxs5cqTt37/fzH4d34YPH25mZsOHD3fGpG3btuW49iuvvGLnnnuuVahQIZRCs8e9WNKiTzadMmWK9ejRw6pWrRqOJ4MHD7bly5cnVT9m3rx5dtFFF1nVqlUtNTXVGjVqZKNHj7bvvvsux77ZY/0vv/xiDz74oDVs2NBSU1Otdu3ads8999iRI0dyvYeSRqn1DGzfvt3at29v9evXt9/+9rf27bff2pQpU6x///42d+5c69atW45j3njjDXv33XdtwIAB1rVrV1u9erVNnTrVFixYYB999JE1btw4qbrUq1fPxowZY+PHjzczs9tvvz20tWzZMrT/+c9/trp169qwYcNCO84heO6552zEiBGWmppq/fr1s9q1a9vGjRvt2WeftRkzZtjHH3/suMQ++ugj69mzpx05csQuv/xya9Cgga1evdq6du1q3bt3T+peYnHnnXfawoULrW/fvnbhhRfaW2+9Zffdd58dOXLEqlataqNHj7bLLrvMLrjgApszZ45NmDDBjh07Zn/729+c84wePdrKlClj5557rtWqVcu+++47mz9/vt122222bNkymzx5srN/VlaWdezY0Q4cOGCXXHKJnXPOObZlyxYbMGCAXXzxxbnWdeXKlXbhhRfat99+a71797bLL7/cvvnmG5s2bZp16tTJ3nzzzZjHiuhRrlw5ZzvRfrh161br1q2bbd++3dq0aWM33XSTHT9+3DZs2GCPPfaYjRw50tLT083MbNmyZdazZ0/74YcfrF+/fta0aVPLysqyl156yaZPn25z5861du3a5ajj008/bW+99Zb169fPunTpYkuXLrUpU6bYmjVrbPXq1ZaammpmZrt377Z27drZ999/bxdffLENHDjQfv75Z9u6datNnjzZRo0aZaeddpoNGzbMTj31VJs+fbr179/fWrZsGV7r1FNPda7917/+1ebMmWN9+/a1bt265foHNV6CILDhw4fbCy+8YNWqVbPLL7/cqlevbjt37rQFCxZY48aNrW3btgnVj5k4caLddNNNlp6ebldeeaWdfvrptnDhQnv44YdtxowZ9uGHH+Z6jquvvtoWL15sffr0sUqVKtnMmTPtkUcesX379tmkSZOSvudiQ1CCMbOAb2Hr1q3h72PHjnVss2bNCsws6NOnj/P7pEmTwmNmzJjh2MaPHx+YWdC9e3fn9y5duuS4Np9v0qRJzu9169YN6tat672fLl265Gpbv359UK5cuSAjIyPYuXOnY5s7d25QpkyZ4LLLLgt/O378eNC4cePAzIJp06blek9mFixYsCBmfZAxY8YEZhaMGTPG+f3aa68NzCyoW7euU68DBw4Ep512WpCWlhZUq1Yt+OKLL0Lbzz//HDRp0iQoX758sHfvXud8mzZtynHtY8eOBUOHDg3MLPj4448dW/fu3QMzC55++mnn95kzZ4b3iM/h6NGjQUZGRpCamhosXLjQOearr74KatasGdSoUSP4+eef42oXUbLJbQwJgiBYtGhRUKZMmaB8+fLBrl27wt8T7YdBEATnnXdeYGbBgw8+mOM6X3/9dfDTTz8FQfBrn83MzAzMLHjppZec/V577bXAzILGjRsHx44dC3/P7pcVK1YMPv30U+eYwYMHB2YWTJkyJfztiSeeCMwsGD9+fI66/Pjjj8Hhw4fD7VjjGF87LS0tWLlyZQ77ggULch0zssltPJw4cWJgZkG7du2CgwcPOrZffvnFeRbx1g/HuG3btgXly5cPKlasGKxbt87Z/6abbgrMLLjhhhuc37PH+tatWwf79+8Pf//xxx+DjIyMoEyZMsHu3btzrUNJotTJBNnUrVvX/vjHPzq/9e7d2+rUqWOffPJJrsd0797dLr30Uue3UaNGWUZGhs2fP9+2b99eYPXNi7/97W929OhRe/zxx61WrVqOrUePHtavXz+bMWOG/fDDD2b2q1dg/fr11rlzZ+vfv7+zf/Y95Sf333+/U69TTz3V+vXrZ4cPH7abbrrJmjRpEtpSU1Nt0KBBduTIEVu3bp1zntzqVaZMGbvtttvMzGz27Nnh7zt27LD58+dbgwYN7MYbb3SO6dOnj/Xs2TPHud555x3bvHmz3XLLLdalSxfHVrNmTbv77rttz549Nm/evATuXpR0xo4da2PHjrX77rvPBg0aZD179rQgCOzRRx+13/zmN+F+ifbDFStW2JIlS6xly5Z2zz335LhutoRp9mufzcrKsvPOO8+uueYaZ79BgwZZp06dbP369fbBBx/kOM+tt95qzZs3d3674YYbzMxyHe9OOeWUHL+lp6fn+ntejBgxwlq1apXwcbnx5JNPmtmv/3uvXLmyYzvppJOcZ5EML730kh05csRGjRplmZmZju0vf/mLVaxY0SZPnmz/8z//k+PYhx9+2KpWrRpup6en2zXXXGPHjx8P5YuSTKmVCVq2bGknnXRSjt9r164dUzPnPw5mv76AnTp1ss2bN9uqVausbt26+V7XeMiu86JFi3LVtfft22fHjh2zDRs2WJs2bWzlypVmlvc95Rdt27bN8VvNmjXNzKxNmzY5bNkD6c6dO53f9+/fb+PGjbOZM2fali1bcuipqIGuXr3azMzOO+88K1Mm53dtp06dbO7cuc5v2e24ffv2XLXMbF123bp1kgoixJ///GdnOyUlxf7+97+HunQ2ifbDjz/+2Mx+/Y9Ibu8okt1nY0l43bt3tw8++MBWrVplnTt3dmy59b/atWubmdmBAwfC3/r162f33nuv3XzzzTZ79mzr3bu3nX/++da0adOkw7Tbt2+f1HHMoUOHbO3atXbGGWfk28cF42vjKlWqWKtWrez999+3rKwsa9GihWOPt41LKqX2YyCWblS2bNmYE9HOOOOMXH+vUaOGmdkJaWEnSvbEnnHjxnn3+/HHH83s/+ua1z3lF/wVb/ZrW+dlO3r0aPjbwYMHrV27drZ161Zr3769DR061KpWrWply5a1gwcP2uOPP+58sed1j7n9nt2O//znP733k92OIhoE/zfR9dChQ7ZkyRL73e9+ZyNHjrS6des6fzgS7YcHDx40M8vhRciN7Pc51v9+s3/PPieS23iX3ceOHTsW/la3bl375JNPbOzYsTZr1ix74403zOzXP2p33nmn3XrrrXnWk8mvsSSRtkqWwmjjkkqp/RhIhr179+b6+549e8zM/aOW/ZX/yy+/hC9ENrm9SCdK9rW/++47q1SpUtz753VPxYlnn33Wtm7damPGjMnxv/YlS5bY448/7vyW3Q6x7jG337PbZfr06davX798qLUoTaSnp1vPnj1txowZ1rp1a7v22mtt/fr1lpaWZmaJ98PsPyC5zepnss8dq2/u3r3b2S9ZmjRpYlOmTLFffvnF1qxZY3PnzrUnn3zSbrvtNktPT7ff/e53CZ0vlkcBx8jcOHjwoPMHNpG2ShZs42bNmuWw51cbl0RK7ZyBZFi0aFGO344dOxZqdOi6qlKlipn9qlszsfSjk046yfsFWaZMmZj2Dh06mJnZ4sWLYx6PtG7d2szyvqfixKZNm8zMbODAgTlsud1H9gziJUuW5Ortye0eE21HEU3OOeccu+GGG2znzp322GOPhb8n+v5k7z979uyYHslssseXWOlzFyxYYGb/37dPlLJly1qbNm3snnvusVdffdXMfg3tzSZbZk32f72+MXLTpk05PK3p6el29tln2969e23VqlV5nj+Z+vna+ODBg7Z69Wo7+eSTnTlOUUEfA8D8+fNz5CF46qmnbPPmzdatWzdnvkC2TvbMM884+8+bNy/sWMxpp51mX3/9da7x9dn23DqO2a+T/sqVK2d33HGHbdiwIYf9yJEjzgDVsWNHa9y4sb3//vs2ffr0XO+puIHxyciqVavsoYceyrF/nTp1rGvXrrZp0yabOHGiY5s1a1aO+QJmZv3797eMjAybMGGCzZw5M9d6LFmyxA4fPpzcTYhSwx//+EdLTU21Rx99NNSEE+2Hbdq0sY4dO9rq1avt4YcfzrH//v377eeffzazX3MbNG7c2D744AN7/fXXnf1ef/11W7x4sTVq1Mg6deqU9D2tWLEiV7kz24uW7QEx+3U8MjP78ssvk7pWZmamVapUyaZPn2779u0Lf//pp59iyhHZv99444056nn8+PHwf+7J1m/IkCFWrlw5e/LJJ8P/fGRz//332/fff29DhgwJQzGjhGQCoG/fvjZgwAAbMGBAGJP/7rvvWtWqVe3pp5929h0+fLiNGzfOHnroIVuzZo01bdrUNmzYEOYpmDp1ao7z9+jRw5YtW2YXXXSRde7c2VJTU61FixbWt2/f0P7aa69Z3759rXXr1lauXDnr3Lmzde7c2TIzM+25556z6667zpo1a2YXXXSRNWrUyI4ePWpffvmlLV682KpXr25ZWVlm9v8ToHr16mUDBw508gxkJ9yYNWtWwTdqAgwdOtTGjRtnt99+uy1YsMAaNmxoGzdutLffftsuv/xymzJlSo5jJkyYYOeff779/ve/t5kzZ4Z5BqZOnWr9+/e36dOnOxO3ypUrZ2+88Yb17t3bLrnkEuvYsaO1bNnS0tLSbMeOHbZs2TLbsmWL7d692xkYRfSoVauWjRw50h5//HF75JFH7KGHHkq4H5r9OoO9a9eudu+999rUqVOta9euFgSBbdy40d577z3Lysqy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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAELCAYAAABEYIWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGwElEQVR4nO2deXBWVbb2FwgJMQwGSBgSIBBAZBIMggMIioKidoPQtt7bJaBto+BYDlfbEkGpplCxsRzQ7rqKirevit2K92orqDggKioNLco8j2FKGAJ6Ief7o83+1n6Sd+Wcl0xynl+VVftknWGf/Z6zOa5nr7XqBEEQCCGEEEJiS92a7gAhhBBCahZ+DBBCCCExhx8DhBBCSMzhxwAhhBASc/gxQAghhMQcfgwQQgghMYcfA4QQQkjM4ccAIYQQEnP4MUAIIYTEHH4MxJTc3FwZM2ZMTXeDEEKSYsGCBVKnTh1ZsGBBTXflhCB2HwOzZs2SOnXqyFdffVXTXRERkeLiYpk0aVK5D/Tbb78tkyZNqvY+aerUqSM33XRTjfaBkNpE6RxS+l+9evUkOztbxowZI1u3bq3p7lUqTz/9tMyaNSv2fYgD9Wq6A3GnuLhYJk+eLCIigwYN8mxvv/22PPXUUzX+QUAIKcuDDz4o7du3lyNHjsjnn38us2bNkk8//VS+/fZbadCgQU13r1J4+umnpXnz5jXqRUzUh/POO08OHz4sKSkpNdOxEwx+DBBCSBJccskl0qdPHxER+e1vfyvNmzeXadOmydy5c+XKK6+s4d5VP4cOHZL09PRqu17dunVPmI+u2kDsZILyGDNmjDRs2FC2bt0qw4cPl4YNG0pmZqbceeedcuzYMbffhg0bpE6dOvLoo4/KH//4R2nXrp2kpaXJwIED5dtvv/XOOWjQoDL/p196rdzcXHe+zMxMERGZPHmycztOmjRJxowZI0899ZSIiOeSLKWkpERmzJgh3bp1kwYNGkiLFi1k3Lhxsm/fPu96QRDIlClTJCcnR04++WQ5//zzZfny5UmPValO9+qrr8rkyZMlOztbGjVqJKNGjZKioiL54Ycf5LbbbpOsrCxp2LChjB07Vn744QfvHM8//7xccMEFkpWVJampqdK1a1eZOXNmmWuVlJTIpEmTpHXr1q7v3333XbnrHQoLC+W2226TNm3aSGpqqnTs2FGmTZsmJSUlSd8rIVEYMGCAiIisXbvW/W3FihUyatQoadq0qTRo0ED69Okjc+fOLXNsYWGh3H777ZKbmyupqamSk5Mj11xzjezevdvtU1BQINddd520aNFCGjRoIKeffrq88MIL3nn0HPWnP/1J8vLyJDU1Vc4880xZvHixt++OHTtk7NixkpOTI6mpqdKqVSv55S9/KRs2bBCRf60rWr58uXz00Udu/imd00qlko8++kjGjx8vWVlZkpOTIyL+HKeZNGmSN4eVMnv2bOnbt6+cfPLJkpGRIeedd5689957FfYh0ZqB1157TfLz8yUtLU2aN28uv/nNb8rIN2Hn/DhBz8BPHDt2TIYOHSr9+vWTRx99VObPny/Tp0+XvLw8ufHGG719X3zxRTlw4IBMmDBBjhw5Io8//rhccMEF8s9//lNatGgR+pqZmZkyc+ZMufHGG2XEiBFyxRVXiIhIz5495dChQ7Jt2zaZN2+evPTSS2WOHTdunMyaNUvGjh0rt9xyi6xfv16efPJJWbJkiSxcuFDq168vIiITJ06UKVOmyLBhw2TYsGHyzTffyJAhQ+THH388jtESmTp1qqSlpck999wja9askSeeeELq168vdevWlX379smkSZOc67R9+/YyceJEd+zMmTOlW7du8otf/ELq1asnb731lowfP15KSkpkwoQJbr97771XHn74Ybn88stl6NChsnTpUhk6dKgcOXLE60txcbEMHDhQtm7dKuPGjZO2bdvKZ599Jvfee69s375dZsyYcVz3SkgYSv8RzcjIEBGR5cuXy7nnnivZ2dlyzz33SHp6urz66qsyfPhwef3112XEiBEiInLw4EEZMGCAfP/993LttdfKGWecIbt375a5c+fKli1bpHnz5nL48GEZNGiQrFmzRm666SZp3769vPbaazJmzBgpLCyUW2+91evLf/3Xf8mBAwdk3LhxUqdOHXn44YfliiuukHXr1rm5YeTIkbJ8+XK5+eabJTc3VwoKCmTevHmyadMmyc3NlRkzZsjNN98sDRs2lPvuu09EpMz8Nn78eMnMzJSJEyfKoUOHIo/Z5MmTZdKkSXLOOefIgw8+KCkpKfLFF1/IBx98IEOGDAnVB03pnHjmmWfK1KlTZefOnfL444/LwoULZcmSJXLKKae4faPM+bEgiBnPP/98ICLB4sWL3d9Gjx4diEjw4IMP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\n", "text/plain": [ "
" ] @@ -774,13 +759,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "2b3c3a82", "metadata": {}, "outputs": [], "source": [ - "train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True)\n", - "val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True)" + "train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True)\n", + "val_loader = DataLoader(val_ds, batch_size=32, shuffle=False, num_workers=4, persistent_workers=True)" ] }, { @@ -794,7 +779,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "efab0cc5", "metadata": {}, "outputs": [], @@ -804,7 +789,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "f91086e3", "metadata": { "lines_to_next_cell": 2 @@ -816,10 +801,7 @@ "spatial_shape = next(iter(train_loader))[\"image\"].shape[2:]\n", "spatial_shape = (int(spatial_shape[0] / 4), int(spatial_shape[1] / 4))\n", "\n", - "ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(1,) + spatial_shape)\n", - "\n", - "sequence_ordering = ordering.get_sequence_ordering()\n", - "revert_sequence_ordering = ordering.get_revert_sequence_ordering()" + "ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(1,) + spatial_shape)" ] }, { @@ -827,12 +809,12 @@ "id": "ace09890", "metadata": {}, "source": [ - "### Define Network, optimizer and losses" + "### Define network, inferer, optimizer and loss function" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "aab1891a", "metadata": {}, "outputs": [], @@ -840,11 +822,11 @@ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "\n", "transformer_model = DecoderOnlyTransformer(\n", - " num_tokens=256, # must be equal to num_embeddings input of VQVAE\n", + " num_tokens=16+1,\n", " max_seq_len=spatial_shape[0] * spatial_shape[1],\n", - " attn_layers_dim=64,\n", - " attn_layers_depth=12,\n", - " attn_layers_heads=8,\n", + " attn_layers_dim=256,\n", + " attn_layers_depth=20,\n", + " attn_layers_heads=16,\n", ")\n", "transformer_model.to(device)\n", "\n", @@ -853,12 +835,12 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "fa3cd231", "metadata": {}, "outputs": [], "source": [ - "optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3)\n", + "optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-4)\n", "ce_loss = CrossEntropyLoss()" ] }, @@ -873,7 +855,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "9c32f0a9", "metadata": {}, "outputs": [ @@ -881,125 +863,343 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=1.58]\n", - "Epoch 1: 100%|█████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=1.3]\n", - "Epoch 2: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.66it/s, ce_loss=1.22]\n", - "Epoch 3: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.93it/s, ce_loss=1.18]\n", - "Epoch 4: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.74it/s, ce_loss=1.15]\n", - "Epoch 5: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.77it/s, ce_loss=1.13]\n", - "Epoch 6: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.78it/s, ce_loss=1.12]\n", - "Epoch 7: 100%|█████████████████████████████████████████████████| 999/999 [00:58<00:00, 17.09it/s, ce_loss=1.1]\n", - "Epoch 8: 100%|████████████████████████████████████████████████| 999/999 [00:58<00:00, 16.95it/s, ce_loss=1.09]\n", - "Epoch 9: 100%|████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.84it/s, ce_loss=1.08]\n", - "Epoch 10: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.22it/s, ce_loss=1.07]\n", - "Epoch 11: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.22it/s, ce_loss=1.06]\n", - "Epoch 12: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=1.05]\n", - "Epoch 13: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=1.04]\n", - "Epoch 14: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.41it/s, ce_loss=1.03]\n", - "Epoch 15: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.35it/s, ce_loss=1.03]\n", - "Epoch 16: 100%|███████████████████████████████████████████████| 999/999 [00:57<00:00, 17.48it/s, ce_loss=1.02]\n", - "Epoch 17: 100%|███████████████████████████████████████████████| 999/999 [00:59<00:00, 16.68it/s, ce_loss=1.02]\n", - "Epoch 18: 100%|███████████████████████████████████████████████| 999/999 [01:01<00:00, 16.21it/s, ce_loss=1.01]\n", - "Epoch 19: 100%|███████████████████████████████████████████████| 999/999 [01:00<00:00, 16.56it/s, ce_loss=1.01]\n", - "Epoch 20: 100%|██████████████████████████████████████████████████| 999/999 [00:59<00:00, 16.83it/s, ce_loss=1]\n", - "Epoch 21: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.98it/s, ce_loss=0.997]\n", - "Epoch 22: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.75it/s, ce_loss=0.992]\n", - "Epoch 23: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.81it/s, ce_loss=0.989]\n", - "Epoch 24: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.55it/s, ce_loss=0.985]\n", - "Epoch 25: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.50it/s, ce_loss=0.982]\n", - "Epoch 26: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.45it/s, ce_loss=0.979]\n", - "Epoch 27: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.53it/s, ce_loss=0.975]\n", - "Epoch 28: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.67it/s, ce_loss=0.973]\n", - "Epoch 29: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.50it/s, ce_loss=0.967]\n", - "Epoch 30: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.965]\n", - "Epoch 31: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.82it/s, ce_loss=0.962]\n", - "Epoch 32: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.94it/s, ce_loss=0.959]\n", - "Epoch 33: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.956]\n", - "Epoch 34: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.00it/s, ce_loss=0.954]\n", - "Epoch 35: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.80it/s, ce_loss=0.953]\n", - "Epoch 36: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.87it/s, ce_loss=0.949]\n", - "Epoch 37: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.84it/s, ce_loss=0.948]\n", - "Epoch 38: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.23it/s, ce_loss=0.945]\n", - "Epoch 39: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=0.942]\n", - "Epoch 40: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.10it/s, ce_loss=0.939]\n", - "Epoch 41: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.80it/s, ce_loss=0.938]\n", - "Epoch 42: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.94it/s, ce_loss=0.936]\n", - "Epoch 43: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.78it/s, ce_loss=0.934]\n", - "Epoch 44: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.92it/s, ce_loss=0.932]\n", - "Epoch 45: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.931]\n", - "Epoch 46: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.92it/s, ce_loss=0.928]\n", - "Epoch 47: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.03it/s, ce_loss=0.924]\n", - "Epoch 48: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.17it/s, ce_loss=0.922]\n", - "Epoch 49: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 16.99it/s, ce_loss=0.92]\n", - "Epoch 50: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.08it/s, ce_loss=0.922]\n", - "Epoch 51: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.919]\n", - "Epoch 52: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.918]\n", - "Epoch 53: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.82it/s, ce_loss=0.915]\n", - "Epoch 54: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.913]\n", - "Epoch 55: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.95it/s, ce_loss=0.911]\n", - "Epoch 56: 100%|███████████████████████████████████████████████| 999/999 [00:59<00:00, 16.81it/s, ce_loss=0.91]\n", - "Epoch 57: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 16.99it/s, ce_loss=0.908]\n", - "Epoch 58: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.18it/s, ce_loss=0.904]\n", - "Epoch 59: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.20it/s, ce_loss=0.904]\n", - "Epoch 60: 100%|██████████████████████████████████████████████| 999/999 [01:00<00:00, 16.56it/s, ce_loss=0.903]\n", - "Epoch 61: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.05it/s, ce_loss=0.903]\n", - "Epoch 62: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.91it/s, ce_loss=0.898]\n", - "Epoch 63: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.89it/s, ce_loss=0.901]\n", - "Epoch 64: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.33it/s, ce_loss=0.895]\n", - "Epoch 65: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.86it/s, ce_loss=0.896]\n", - "Epoch 66: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.79it/s, ce_loss=0.895]\n", - "Epoch 67: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.73it/s, ce_loss=0.896]\n", - "Epoch 68: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.83it/s, ce_loss=0.891]\n", - "Epoch 69: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.76it/s, ce_loss=0.891]\n", - "Epoch 70: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=0.889]\n", - "Epoch 71: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.37it/s, ce_loss=0.887]\n", - "Epoch 72: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.44it/s, ce_loss=0.886]\n" + "Epoch 0: 100%|███████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.302]\n", + "Epoch 1: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.00183]\n", + "Epoch 2: 100%|█████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.00124]\n", + "Epoch 3: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000942]\n", + "Epoch 4: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000746]\n", + "Epoch 5: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000604]\n", + "Epoch 6: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.54it/s, ce_loss=0.000495]\n", + "Epoch 7: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000411]\n", + "Epoch 8: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000343]\n", + "Epoch 9: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000289]\n", + "Epoch 10: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000244]\n", + "Epoch 11: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000208]\n", + "Epoch 12: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000177]\n", + "Epoch 13: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000152]\n", + "Epoch 14: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.00013]\n", + "Epoch 15: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000112]\n", + "Epoch 16: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=9.7e-5]\n", + "Epoch 17: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=8.37e-5]\n", + "Epoch 18: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.26e-5]\n", + "Epoch 19: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.3e-5]\n", + "Epoch 20: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.48e-5]\n", + "Epoch 21: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.75e-5]\n", + "Epoch 22: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.14e-5]\n", + "Epoch 23: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.6e-5]\n", + "Epoch 24: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.13e-5]\n", + "Epoch 25: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.73e-5]\n", + "Epoch 26: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.38e-5]\n", + "Epoch 27: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.08e-5]\n", + "Epoch 28: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.82e-5]\n", + "Epoch 29: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-5]\n", + "Epoch 30: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.39e-5]\n", + "Epoch 31: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.21e-5]\n", + "Epoch 32: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.05e-5]\n", + "Epoch 33: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.23e-6]\n", + "Epoch 34: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.08e-6]\n", + "Epoch 35: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=7.06e-6]\n", + "Epoch 36: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.16e-6]\n", + "Epoch 37: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.4e-6]\n", + "Epoch 38: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.72e-6]\n", + "Epoch 39: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.12e-6]\n", + "Epoch 40: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.59e-6]\n", + "Epoch 41: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.15e-6]\n", + "Epoch 42: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.74e-6]\n", + "Epoch 43: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.41e-6]\n", + "Epoch 44: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.12e-6]\n", + "Epoch 45: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.88e-6]\n", + "Epoch 46: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.64e-6]\n", + "Epoch 47: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-6]\n", + "Epoch 48: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.2e-6]\n", + "Epoch 49: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.04e-6]\n", + "Epoch 50: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.71e-7]\n", + "Epoch 51: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.31e-7]\n", + "Epoch 52: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.26e-7]\n", + "Epoch 53: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=5.24e-7]\n", + "Epoch 54: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=4.41e-7]\n", + "Epoch 55: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.99e-7]\n", + "Epoch 56: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.29e-7]\n", + "Epoch 57: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.98e-7]\n", + "Epoch 58: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.71e-7]\n", + "Epoch 59: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.43e-7]\n", + "Epoch 60: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.92e-7]\n", + "Epoch 61: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.75e-7]\n", + "Epoch 62: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.6e-7]\n", + "Epoch 63: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.44e-7]\n", + "Epoch 64: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.36e-7]\n", + "Epoch 65: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.29e-7]\n", + "Epoch 66: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.22e-7]\n", + "Epoch 67: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.06e-7]\n", + "Epoch 68: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.62e-8]\n", + "Epoch 69: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.11e-8]\n", + "Epoch 70: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.39e-8]\n", + "Epoch 71: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0325]\n", + "Epoch 72: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000163]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 73: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.92e-5]\n", + "Epoch 74: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.41e-5]\n", + "Epoch 75: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.12e-5]\n", + "Epoch 76: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.45e-5]\n", + "Epoch 77: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-5]\n", + "Epoch 78: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.9e-5]\n", + "Epoch 79: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.45e-5]\n", + "Epoch 80: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.18e-5]\n", + "Epoch 81: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.05e-5]\n", + "Epoch 82: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.27e-5]\n", + "Epoch 83: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.93e-6]\n", + "Epoch 84: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.8e-6]\n", + "Epoch 85: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.05e-6]\n", + "Epoch 86: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.39e-6]\n", + "Epoch 87: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.7e-6]\n", + "Epoch 88: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.16e-6]\n", + "Epoch 89: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.73e-6]\n", + "Epoch 90: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.33e-6]\n", + "Epoch 91: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.99e-6]\n", + "Epoch 92: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.69e-6]\n", + "Epoch 93: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.41e-6]\n", + "Epoch 94: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.16e-6]\n", + "Epoch 95: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.94e-6]\n", + "Epoch 96: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.74e-6]\n", + "Epoch 97: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-6]\n", + "Epoch 98: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-6]\n", + "Epoch 99: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.74e-6]\n", + "Epoch 100: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.32e-6]\n", + "Epoch 101: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.09e-6]\n", + "Epoch 102: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.19e-6]\n", + "Epoch 103: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1e-6]\n", + "Epoch 104: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=7.68e-7]\n", + "Epoch 105: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.78e-7]\n", + "Epoch 106: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6e-7]\n", + "Epoch 107: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.34e-7]\n", + "Epoch 108: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.76e-7]\n", + "Epoch 109: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.3e-7]\n", + "Epoch 110: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.83e-7]\n", + "Epoch 111: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.44e-7]\n", + "Epoch 112: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.14e-7]\n", + "Epoch 113: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.78e-7]\n", + "Epoch 114: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.49e-7]\n", + "Epoch 115: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.23e-7]\n", + "Epoch 116: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.01e-7]\n", + "Epoch 117: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.8e-7]\n", + "Epoch 118: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.62e-7]\n", + "Epoch 119: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.46e-7]\n", + "Epoch 120: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.35e-7]\n", + "Epoch 121: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.24e-7]\n", + "Epoch 122: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.14e-7]\n", + "Epoch 123: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.07e-7]\n", + "Epoch 124: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1e-7]\n", + "Epoch 125: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.35e-8]\n", + "Epoch 126: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.56e-8]\n", + "Epoch 127: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0083]\n", + "Epoch 128: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000353]\n", + "Epoch 129: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.18e-5]\n", + "Epoch 130: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.54e-5]\n", + "Epoch 131: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.47e-5]\n", + "Epoch 132: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.09e-5]\n", + "Epoch 133: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.32e-5]\n", + "Epoch 134: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.9e-6]\n", + "Epoch 135: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.32e-6]\n", + "Epoch 136: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.7e-6]\n", + "Epoch 137: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.35e-5]\n", + "Epoch 138: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.42e-6]\n", + "Epoch 139: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.55e-6]\n", + "Epoch 140: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.28e-6]\n", + "Epoch 141: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.5e-6]\n", + "Epoch 142: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.64e-6]\n", + "Epoch 143: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.6e-6]\n", + "Epoch 144: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-6]\n", + "Epoch 145: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.95e-5]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 146: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.9e-6]\n", + "Epoch 147: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.39e-5]\n", + "Epoch 148: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.07e-6]\n", + "Epoch 149: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000189]\n", + "Epoch 150: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.1e-5]\n", + "Epoch 151: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.3e-5]\n", + "Epoch 152: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.91e-6]\n", + "Epoch 153: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.3e-6]\n", + "Epoch 154: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.61e-6]\n", + "Epoch 155: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.13e-6]\n", + "Epoch 156: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-6]\n", + "Epoch 157: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.42e-7]\n", + "Epoch 158: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.69e-7]\n", + "Epoch 159: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.35e-7]\n", + "Epoch 160: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.19e-7]\n", + "Epoch 161: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.03e-6]\n", + "Epoch 162: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.85e-7]\n", + "Epoch 163: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.23e-7]\n", + "Epoch 164: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.63e-7]\n", + "Epoch 165: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.69e-6]\n", + "Epoch 166: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.42e-7]\n", + "Epoch 167: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.55e-7]\n", + "Epoch 168: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.19e-7]\n", + "Epoch 169: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-7]\n", + "Epoch 170: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.1e-7]\n", + "Epoch 171: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-7]\n", + "Epoch 172: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.26e-7]\n", + "Epoch 173: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.00232]\n", + "Epoch 174: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.13e-5]\n", + "Epoch 175: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-5]\n", + "Epoch 176: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.28e-6]\n", + "Epoch 177: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3e-6]\n", + "Epoch 178: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-6]\n", + "Epoch 179: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.86e-6]\n", + "Epoch 180: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-6]\n", + "Epoch 181: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.48e-6]\n", + "Epoch 182: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.23e-6]\n", + "Epoch 183: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.37e-6]\n", + "Epoch 184: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.81e-7]\n", + "Epoch 185: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.09e-7]\n", + "Epoch 186: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.77e-7]\n", + "Epoch 187: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.73e-7]\n", + "Epoch 188: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.81e-6]\n", + "Epoch 189: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.31e-7]\n", + "Epoch 190: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-5]\n", + "Epoch 191: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.51e-7]\n", + "Epoch 192: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.29e-7]\n", + "Epoch 193: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.96e-6]\n", + "Epoch 194: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.33e-7]\n", + "Epoch 195: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.09e-6]\n", + "Epoch 196: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.4e-7]\n", + "Epoch 197: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.4e-7]\n", + "Epoch 198: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.74e-7]\n", + "Epoch 199: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.71e-7]\n", + "Epoch 200: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.94e-7]\n", + "Epoch 201: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.47e-7]\n", + "Epoch 202: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.06e-7]\n", + "Epoch 203: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.03e-6]\n", + "Epoch 204: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.25e-7]\n", + "Epoch 205: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-7]\n", + "Epoch 206: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=9.46e-8]\n", + "Epoch 207: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.28e-8]\n", + "Epoch 208: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.98e-8]\n", + "Epoch 209: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.03e-7]\n", + "Epoch 210: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.3e-8]\n", + "Epoch 211: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.83e-8]\n", + "Epoch 212: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.85e-8]\n", + "Epoch 213: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.27e-8]\n", + "Epoch 214: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.97e-8]\n", + "Epoch 215: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.94e-8]\n", + "Epoch 216: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.34e-8]\n", + "Epoch 217: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.91e-8]\n", + "Epoch 218: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.68e-8]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Epoch 219: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.04e-8]\n", + "Epoch 220: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-8]\n", + "Epoch 221: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.27e-8]\n", + "Epoch 222: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=1.05e-8]\n", + "Epoch 223: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.68e-9]\n", + "Epoch 224: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.98e-9]\n", + "Epoch 225: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=8.61e-9]\n", + "Epoch 226: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.17e-8]\n", + "Epoch 227: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.35e-8]\n", + "Epoch 228: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.03e-8]\n", + "Epoch 229: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.77e-9]\n", + "Epoch 230: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.44e-9]\n", + "Epoch 231: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.66e-9]\n", + "Epoch 232: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.95e-9]\n", + "Epoch 233: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.88e-9]\n", + "Epoch 234: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.18e-9]\n", + "Epoch 235: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.52e-9]\n", + "Epoch 236: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.62e-9]\n", + "Epoch 237: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.34e-9]\n", + "Epoch 238: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.96e-9]\n", + "Epoch 239: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.36e-9]\n", + "Epoch 240: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.43e-9]\n", + "Epoch 241: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-9]\n", + "Epoch 242: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-9]\n", + "Epoch 243: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.21e-9]\n", + "Epoch 244: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.19e-9]\n", + "Epoch 245: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.18e-9]\n", + "Epoch 246: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.51e-9]\n", + "Epoch 247: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.51e-9]\n", + "Epoch 248: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.29e-9]\n", + "Epoch 249: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.08e-9]\n", + "Epoch 250: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=9.61e-10]\n", + "Epoch 251: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.65e-10]\n", + "Epoch 252: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.03e-9]\n", + "Epoch 253: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.44e-10]\n", + "Epoch 254: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.61e-10]\n", + "Epoch 255: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.74e-10]\n", + "Epoch 256: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=6.83e-10]\n", + "Epoch 257: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=6.71e-10]\n", + "Epoch 258: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=6.69e-10]\n", + "Epoch 259: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.14e-10]\n", + "Epoch 260: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.64e-10]\n", + "Epoch 261: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.68e-10]\n", + "Epoch 262: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.07e-9]\n", + "Epoch 263: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.42e-9]\n", + "Epoch 264: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.27e-9]\n", + "Epoch 265: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.99e-9]\n", + "Epoch 266: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.51e-9]\n", + "Epoch 267: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.69e-9]\n", + "Epoch 268: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.31e-8]\n", + "Epoch 269: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.61e-8]\n", + "Epoch 270: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-8]\n", + "Epoch 271: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.28e-8]\n", + "Epoch 272: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.5e-8]\n", + "Epoch 273: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.69e-8]\n", + "Epoch 274: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.75e-8]\n", + "Epoch 275: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.54it/s, ce_loss=2.8e-8]\n", + "Epoch 276: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", + "Epoch 277: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", + "Epoch 278: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.78e-8]\n", + "Epoch 279: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", + "Epoch 280: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=2.82e-8]\n", + "Epoch 281: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=2.85e-8]\n", + "Epoch 282: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.86e-8]\n", + "Epoch 283: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.9e-8]\n", + "Epoch 284: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.94e-8]\n", + "Epoch 285: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.99e-8]\n", + "Epoch 286: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0103]\n", + "Epoch 287: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.14e-5]\n", + "Epoch 288: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=4.6e-6]\n", + "Epoch 289: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.86e-6]\n", + "Epoch 290: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.13e-6]\n", + "Epoch 291: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-6]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Epoch 73: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.48it/s, ce_loss=0.883]\n", - "Epoch 74: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.19it/s, ce_loss=0.883]\n", - "Epoch 75: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.06it/s, ce_loss=0.881]\n", - "Epoch 76: 100%|███████████████████████████████████████████████| 999/999 [00:58<00:00, 17.08it/s, ce_loss=0.88]\n", - "Epoch 77: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.87it/s, ce_loss=0.878]\n", - "Epoch 78: 100%|██████████████████████████████████████████████| 999/999 [00:59<00:00, 16.90it/s, ce_loss=0.881]\n", - "Epoch 79: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.879]\n", - "Epoch 80: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.21it/s, ce_loss=0.876]\n", - "Epoch 81: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.872]\n", - "Epoch 82: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.15it/s, ce_loss=0.875]\n", - "Epoch 83: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.28it/s, ce_loss=0.875]\n", - "Epoch 84: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.42it/s, ce_loss=0.873]\n", - "Epoch 85: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.35it/s, ce_loss=0.867]\n", - "Epoch 86: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.47it/s, ce_loss=0.869]\n", - "Epoch 87: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.869]\n", - "Epoch 88: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.20it/s, ce_loss=0.868]\n", - "Epoch 89: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.01it/s, ce_loss=0.863]\n", - "Epoch 90: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.24it/s, ce_loss=0.866]\n", - "Epoch 91: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.31it/s, ce_loss=0.862]\n", - "Epoch 92: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.43it/s, ce_loss=0.861]\n", - "Epoch 93: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.39it/s, ce_loss=0.858]\n", - "Epoch 94: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.17it/s, ce_loss=0.862]\n", - "Epoch 95: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.27it/s, ce_loss=0.859]\n", - "Epoch 96: 100%|██████████████████████████████████████████████| 999/999 [00:58<00:00, 17.11it/s, ce_loss=0.857]\n", - "Epoch 97: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.29it/s, ce_loss=0.856]\n", - "Epoch 98: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.26it/s, ce_loss=0.857]\n", - "Epoch 99: 100%|██████████████████████████████████████████████| 999/999 [00:57<00:00, 17.32it/s, ce_loss=0.857]\n" + "Epoch 292: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.2e-6]\n", + "Epoch 293: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.1e-6]\n", + "Epoch 294: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=8.52e-7]\n", + "Epoch 295: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.27e-7]\n", + "Epoch 296: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=7.67e-6]\n", + "Epoch 297: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=5.5e-7]\n", + "Epoch 298: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.6e-7]\n", + "Epoch 299: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.09e-7]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "train completed, total time: 5912.983795166016.\n" + "train completed, total time: 29378.323362588882.\n" ] } ], "source": [ - "n_epochs = 100\n", - "val_interval = 10\n", + "n_epochs = 300\n", + "val_interval = 25\n", "epoch_losses = []\n", "val_epoch_losses = []\n", "vqvae_model.eval()\n", @@ -1013,26 +1213,13 @@ " for step, batch in progress_bar:\n", "\n", " images = batch[\"image\"].to(device)\n", - " \n", - "\n", - " \n", - " # Encode images using vqvae and transformer to 1D sequence\n", - " quantizations = vqvae_model.index_quantize(images)\n", - " quantizations = quantizations.reshape(quantizations.shape[0], -1)\n", - " quantizations = quantizations[:, sequence_ordering]\n", - "\n", - " # Pad input to give start of sequence token\n", - " quantizations = F.pad(quantizations, (1, 0), \"constant\", 255) # pad with 0 i.e. vocab size of vqvae\n", - " quantizations = quantizations.long()\n", - "\n", - " quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True)\n", - " quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True)\n", "\n", " optimizer.zero_grad(set_to_none=True)\n", "\n", - " \n", - " logits = transformer_model(x=quantizations_input).transpose(1, 2)\n", "\n", + " logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True)\n", + " logits = logits.transpose(1, 2)\n", + " \n", " loss = ce_loss(logits, quantizations_target)\n", "\n", " loss.backward()\n", @@ -1050,21 +1237,10 @@ " for val_step, batch in enumerate(val_loader, start=1):\n", "\n", " images = batch[\"image\"].to(device)\n", - " # Encode images using vqvae and transformer to 1D sequence\n", - " quantizations = vqvae_model.index_quantize(images)\n", - " quantizations = quantizations.reshape(quantizations.shape[0], -1)\n", - " quantizations = quantizations[:, sequence_ordering]\n", - "\n", - " # Pad input to give start of sequence token\n", - " quantizations = F.pad(quantizations, (1, 0), \"constant\", 255) # pad with 255 i.e. vocab size of vqvae\n", - " quantizations = quantizations.long()\n", - "\n", - " quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True)\n", - " quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True)\n", - "\n", - " # model outputs\n", - " logits = transformer_model(x=quantizations_input).transpose(1, 2)\n", "\n", + " logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True)\n", + " logits = logits.transpose(1, 2)\n", + " \n", " loss = ce_loss(logits, quantizations_target)\n", "\n", " val_loss += loss.item()\n", @@ -1076,50 +1252,6 @@ "print(f\"train completed, total time: {total_time}.\")" ] }, - { - "cell_type": "markdown", - "id": "98070e8e", - "metadata": {}, - "source": [ - "### Learning Curves" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "59e3e3e2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAHZCAYAAACB2e8eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB81klEQVR4nO3dd3hUZd7G8e+ZzKQnJCEJCTX0LohIEUEUXEQBRURR7Oval1XXXcvqYll1WdvqIuti2/UVFIyioIKINBExFJHeE0oIpJOQPpnz/jFkSEgCqTMp9+e6cjFz6pMfQ3LznOc8xzBN00RERESkmbF4ugEiIiIinqAQJCIiIs2SQpCIiIg0SwpBIiIi0iwpBImIiEizpBAkIiIizZJCkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiHjFy5EgMw2DkyJGeboqINFMKQSK1tHLlSgzDwDAMnnnmGU83RxqInTt38uyzzzJixAjatWuHn58fgYGBdOjQgfHjx/Paa69x7NgxTzdTpFmzeroBIiJNSXp6Og899BBz5szB4XCUW5+Tk8OhQ4f46quveOyxx7jrrrt44YUXCAsL80BrRZo3hSAR8YiVK1d6ugl17sCBA4wdO5Y9e/YAEBkZyU033cSIESOIjo7GMAyOHj3KypUr+eyzz0hMTOTtt99mzJgxXHPNNZ5tvEgzpBAkIlIHcnNzGT9+vCsA/fa3v+X1118nKCio3LYTJ07k5Zdf5u233+Yvf/mLu5sqIqcoBImI1IEnnniCHTt2AHDXXXfxzjvvnHV7b29vpk2bxqhRo8jPz3dHE0XkDBoYLdJArFixgttuu41OnTrh7+9PcHAwffv25U9/+hNHjx49677btm3jb3/7G2PGjKFt27b4+PgQGBhI165due2221i3bt1Z93/mmWdcg7sBTpw4wfPPP8/5559PSEgIhmHw3//+t8Jt8/PzefnllxkwYABBQUEEBQUxaNAgZs6cid1ur/ScZ7s7LCEhwXWOkvN+9913jB8/nqioKHx8fOjYsSP33XcfR44cOev3BpCWlsaf//xnunfvjp+fH61ateLyyy9nwYIFAPz3v/91nS8hIeGcxztTSkqKK/RER0fzz3/+s8r79u7dmwsuuKDMsqreOXfm38WZzhywv3z5ciZPnky7du2w2WzExMSQm5tLUFAQhmEwderUc7b3p59+ch131qxZFW5z7Ngx/vKXvzBw4EDCwsLw8fGhXbt2XH/99Sxbtuysxy8uLua///0vY8aMISoqCm9vb1q0aEHXrl0ZNWoUL774oitsitSaKSK1smLFChMwAXP69OnV3j8vL8+cMmWK6xgVfQUEBJgLFy485/nP9vX4449X2obp06e7ttuzZ48ZExNTbv8PPvig3LbHjh0z+/fvX+k5x48fbxYXF1d4zksuucQEzEsuuaTcuvj4+DLnffzxxys9R0REhLljx45Kv7ctW7aYrVq1qnT/u+++2/zggw9c7+Pj4ys9VmXefPNN1/5PP/10tfc/09lqU1rpv4uKlP5cPvnkk+W+9w4dOpimaZo333yz63N28uTJs57zgQceMAHTarWaKSkp5dZ/9NFHZkBAwFk/i7/97W/NoqKicvtmZ2ebw4cPP+dnedKkSWdto0hV6XKYiAeZpsl1113H119/DcD48eO5/vrr6dSpExaLhbi4OF599VUOHTrEddddx48//sjAgQPLHMNutxMQEMBVV13FZZddRo8ePQgODiY5OZnt27fz5ptvcvDgQf7+97/TrVs37rjjjrO26brrriMxMZHf//73TJgwgdDQUPbu3UuHDh3KbXvttdeyY8cOpk2bxvjx4wkLC2P37t08//zz7Ny5k0WLFvHOO+9wzz331LhG77zzDmvXruWSSy7hnnvuoVu3bmRmZvLhhx/y4YcfkpKSwp133slPP/1Ubt/MzEyuuOIKjh8/DsAtt9zCTTfdREREBPv27eONN95g9uzZ/PrrrzVuH8CqVatcr6+66qpaHas+fP7552zdupW+ffvy8MMP06dPH/Ly8ti8eTMAU6dO5aOPPiInJ4cvv/ySm266qcLj2O12Pv30UwDGjBlDeHh4mfXz58/nlltuwTRNOnXqxIMPPkivXr2IiIggISGB9957j2+++Yb33nuP4OBgXnvttTL7P/PMM/zwww8AjBs3jqlTp9K+fXt8fX1JTk7ml19+4auvvqq050uk2jydwkQau9r0BM2ePdsETJvNZi5evLjCbdLT083evXubgDls2LBy61NSUsyMjIxKz1FQUGBefvnlrv/52+32ctuU7lGwWCzmt99+W+nxSm9rs9nMFStWlNsmLS3N1fty3nnnVXicqvYEAebvfvc70+FwlNvurrvucm2zadOmcusfeugh1/p//vOf5dbb7Xbz6quvLnOumvQEdenSxVW7/Pz8au9/prruCQLMUaNGVdq2oqIiMzIy0gTMq666qtLzLV682HW8uXPnllmXkpJitmjRwgTMO++8s8KeHtM0XT1SFovF3LVrV5l17dq1MwHzuuuuO9u3baalpZ11vUhVaUyQiIeYpsmMGTMAmDZtGldccUWF24WGhvLyyy8D8OOPP7J3794y68PDwwkJCan0PN7e3q79Dx486Prff2Vuv/12fvOb31Tpe/j9739f4biVsLAwV4/T1q1bOXHiRJWOV5Ho6Gj+9a9/Vfi//0cffdT1uqQHoURBQYFrPNGFF17IH/7wh3L7e3l58Z///AdfX98atw+cY44AWrRogY+PT62OVR8sFgvvvvtupW2zWq3ccMMNACxdutT1/Zxpzpw5AAQGBnL11VeXWffvf/+bEydO0KZNG2bNmoXVWvGFhmeffZY2bdrgcDj48MMPy6wrmTxy+PDhZ/1+NKeS1BWFIBEP2bFjB/v37wecl6DOZsSIEa7XFV32Ka2goIBDhw6xY8cOtm3bxrZt2zBN07X+XJd+qjI4tirblgz2NU2T+Pj4Kh/zTNddd12lv7y7d+9OYGAg4Jyjp7QNGzaQmZkJwM0331zp8Vu1asWYMWNq3D6A7OxsAAICAmp1nPoybNgwYmJizrpNyd9lUVER8+fPL7c+Ly+PL774AoBrrrkGf3//MusXLlwIOC9jnS0IWq1Whg4dCpT/LEdHRwMwb948cnNzz9pekbqgECTiIRs2bHC9Hjp0qOuOm4q+Sn7RAxU+aiEnJ4eXXnqJfv36ERAQQIcOHejduzd9+/alb9++nH/++a5tU1NTz9qu8847r8rfQ48ePSpdV/p/6yUhoSbOdg5w9pRVdI5t27a5Xp9599WZzhxnVV0lcwHl5OTU6jj1pSp/p4MHD6Zz587A6R6f0hYuXMjJkyeB8uG3uLjY1cP4n//856yfZcMwiI2NBcp/lm+77TYA1q5dS8eOHXnwwQdZsGABKSkp1fuGRapIIUjEQ5KTk2u035n/Q05ISKBv3748+eSTbNmyheLi4rPun5eXd9b1JaGiKs7sDSjNYjn94+VcbarpOUqf58xzZGRkuF5HRESc9RjnWn8uLVu2BJxTCxQUFNTqWPWhqn+nJeFm7dq15aYKKAlGkZGRjB49usy69PT0s06HUJkzP8tPP/00d955J4ZhkJyczFtvvcW1115LZGQkffr0Yfr06a5B7iJ1QXeHiXhI6V/aixYtOuflihKRkZFl3t9yyy3Ex8djGAZ33HEHU6ZMoWfPnkRERODt7Y1hGDgcDry8vADKXBqrSMl2UnX9+vVj3759OBwONm/ezODBgz3dpDKq+nc6depUnnvuOUzT5OOPP+aJJ54AnCHn22+/BeCGG24oN96n9Gf5rrvuqnD8VUW8vb3LvLfZbLz33nv88Y9/5OOPP2b58uVs2LCBwsJCtm/fzvbt23nttdf46KOPyo1JEqkJhSARDynpPQAICQmhT58+1T7Grl27WLNmDQBPPvkkf/vb3yrcLj09vWaNbMRK936kpKTQrVu3Sret7eWWSy65hM8++wyAr7/+utYhqKR3q6IHsJZW15ffunXrxsCBA9mwYQNz5851haDY2FgKCwuBiseBlb70aZpmjT7LpfXq1Yvnn3+e559/nvz8fNasWcPcuXP58MMPOXnyJDfeeCP79+93jSESqSldDhPxkNLjdH788ccaHWP79u2u1yV391Sk9Pij5qJ3796u1xs3bjzrtrWtz5QpU/Dz8wPg3XffrXU4KRljVPqSXkVKnlNWl0pCzrZt29iyZQtw+lJY586dKwx43t7ernrX9LNcGV9fX0aPHs3777/vussxLy+Pr776qk7PI82TQpCIhwwYMIC2bdsCMHv27Bo9P6r0OIyz/eJ9++23q9/ARm7gwIG0aNECgI8++qjS7Y4fP+661FNTERER/O53vwMgKSmJhx56qMr77tixo1xI69ixI+AMOZUNKk9NTeW7776rWYPPYsqUKa7LZ3PmzOHIkSOu6QfOdjfghAkTAGfvZG3rWZlRo0a5Xp9rgL9IVSgEiXiIxWLhySefBJy3d996661nHVSblZXFzJkzyyzr2rWr63XJnDhn+ve//82XX35Z+wY3Mr6+vtx6660ArF+/njfeeKPcNg6Hg3vuuadOHmD64osv0rNnT8DZG/S73/3OdTdVRYqKipg5cyaDBw/m8OHDZdZdcsklABQWFvKvf/2rwn3vuuuucw5yr4moqCguu+wyAD7++GPmzp3rGkd2thD0hz/8wXUX4x133FGml7IiX3/9taunCZyXbBctWnTWMWtLly51vS4JiiK1oTFBInVo8+bNlYaR0i677DLat2/Pvffey3fffceC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Ly8Ph8NR+wbVtZJxQeoJEhFpUG666SYAPvnkk7Nu98UXX5Cfn8/VV1+Nn59frc87b968eu3VqYk77riDVatWcf7553u6KfWiwY4JqgvPPvss+fn5WK1W+vXrx6233kp0dLSnm+XkrRAkItIQDR8+nPbt2/Pjjz+SmJhImzZtKtyuJLDceOONdXLemg79qE9hYWGEhYV5uhn1psH2BNWGt7c3I0eO5Le//S2PPvooEyZMYNu2bTz11FOkpqZWul9RURG5ubmur9Ldm4Zh1OrrzGO4nh9WWFjrY+vr7LXWl2rdFL48UevmyjAMrr/+ehwOR6U9M7t37+aXX36hZ8+edOzYkbfeeotJkyYxYMAAYmJiGDBgANOmTSMhIaHK561sTFBGRgaPPfYY/fr1o3Pnzlx55ZUsXry40uN88skn3HHHHQwePJhOnTrRu3dvbrrpJn788ccy27366qtMnjwZgNdee402bdq4vg4fPuzaprIxQUuXLuW6666jR48edO7cmdGjR/Of//wHu91eZrvDhw/Tpk0bHnroIeLj4/ntb39Lr1696NKlC5MmTWL79u1VrlGJuvrsNsmeoIsuuoiLLrrI9X7QoEH079+f6dOn8/nnn3P33XdXuN+CBQuIjY11ve/YsSMzZswgIiKiTtoVFRXlen3MP4AigKLChtM71YSUrrXUL9Xafdxd67y8PGw2m1vP2VBMnTqV1157jU8//ZQ///nP5X6xfvrppwDcfPPNxMfH88orrzBs2DCuvPJK/P392bdvH1988QXLly9n2bJltGvXzrWv1Wp1/Vm6viXnKL0sNzeXyZMns3PnTgYOHMhFF11EYmIi9913HyNP3S195nH+8pe/0Lt3by655BJatmxJUlISixcvZsqUKXzwwQeMHTsWcPZ4JSYmMm/evHK/N1u2bInNZsNisVR4jn//+99Mnz6d0NBQrr32Wvz9/fn222957rnnWL9+Pf/9739d30/J95uYmMiECRPo3r07N954IwkJCSxZsoTrr7+eNWvWEBkZWaW/G29v7zr7vdkkQ1BFevToQZcuXdi6dWul20ycOJFx48a53pf8BaakpJRLttVhGAZRUVEcO3YM0zQBsJf8g7IXcTTxCIbFq8bHl9MqqrXUD9XafTxV68LCQoqKitx2vobCZrMRGRnJJZdcwooVK1ixYgXDhw93rbfb7cTGxuLj48PVV1+Nl5cXmzZtIjQ0tMxxfvzxR6ZMmcKrr77Kyy+/XGb/kj9L17fk77b0sjfffJOdO3cydepU/vGPf7iWX3vttUydOrXC46xYsYL27duXacsTTzzBlVdeyTPPPMPo0aMBZweB3W5n3rx5DBkyhIcffrjMPkVFRa4xtaXPkZCQwPPPP094eDjffPON63Lhn/70J6ZMmcLixYv55JNPuO6668p8v2vXruXJJ5/kgQcecJ3j1Vdf5bXXXmPOnDk8+OCDFf59nKmwsJCkpKSzbmO1WqvUgdFsQhA4k+3Ro0crXW+z2Sr9X09d/OAxTfP0cUpNmGgWFoKPb62PL6eVqbXUK9XafRpKrR9ZnEBmXs3/Y+gOIX5WXhsbU6tjTJkyhRUrVjBv3rwyIWjZsmWkpKQwfvz4csGntGHDhtG9e3d++OGHGrchNjYWb29vHn300TLLR44cycUXX8yaNWvK7XNmAAJo1aoVV155Je+//z5Hjhyhbdu2NW7TggULsNvt3HPPPWXGS/n4+PDkk09yzTXXMH/+fFcIKt2u++67r8yym266iddee41ff/21Wm2oq38HzSoEJScnExwc7OlmOJV6dAYKQSLSiGTm2Ulr4CGoLowZM4aWLVuyePFisrKyXL8/Su4aKz0geu3atbz77rv88ssvpKenl7l6UNOpWbKzszl06BDdunWr8FLR4MGDKwxBBw8eZObMmfz4448cO3aMgoKyU7EcO3asViGoZAzP0KFDy60bOHAgvr6+FY7z6d27t+vyWonWrVsDcOLEiRq3pzYafQjKyMggNzeXVq1aua47lv6wlti0aRMHDhxwXQv1OD1JXkQaqRC/hv+roy7aaLPZmDRpErNnz2bBggXcdtttJCcns2LFCtq0aePqHVq0aBH33XcfAQEBXHLJJbRr1w4/Pz8Mw2D+/PkcOXKkRufPzs4GnFcxKhIeHl5uWXx8POPGjSM7O5uLLrqI0aNHExQUhMVi4aeffuKnn36isJZPKihpV0WXmwzDIDw8nGPHjpVbFxgYWG5Zye9tT01l06A/yUuWLCEnJ4eMjAwANmzYQFpaGgBjx47F39+fuXPnsmrVKmbOnOlKyk899RQxMTF07twZf39/4uPjWbFiBS1btmTixIke+35KM7y9cXXm6dEZItKI1PYyU2Ny4403Mnv2bD755BNuu+02PvvsM+x2OzfccIOrV+O1117Dx8eHxYsX06lTpzL7f/nllzU+d1BQEIDr996ZKrrb+Z133iEzM5M333yTSZMmlVn32GOP8dNPP9W4PWe2KyUlpVyPkmmapKamVhh4GqIGHYIWLVpESkqK631cXBxxcXGAc1R7ZY/AuOiii9i0aRNbtmyhoKCA0NBQRo0axXXXXef554aV0ENURUQavG7dujFgwAA2bdrEjh07mDdvHoZhcMMNN7i2OXjwIN26dSsXgI4fP86hQ4dqfO6goCDat29PQkICycnJ5S6J/fzzz+X2OXjwIOC8lFeaaZps2LCh3PZeXs6bcoqLi6vcrt69e7N48WJ++umncpMobtq0ifz8fC644IIqH8+TGnQIeuutt865zQMPPFBmpDk4B7NNmTKlvppVN8qMCdLlMBGRhurGG29k06ZNPPnkk+zdu5cRI0aU6QFp06YNCQkJpKSkuC4R5efn88QTT9T67rpJkybx+uuv88orr5S5O2zVqlUVjgcqGagcFxfHZZdd5lo+c+ZMdu3aVW77ko6Bs900dKaJEyfyz3/+k9mzZ3Pttde6pm4oLCzkxRdfBJzP7mwMGnQIatK81RMkItIYTJgwgenTp7N+/XqAcv/JvvPOO3nqqacYM2YMV111FXa7ndWrVwPQq1cvduzYUeNz33///SxevJg5c+awe/duhgwZwtGjR1m0aBGjRo3i+++/L7P9rbfeyvz58/nd737nuntt06ZNbNu2rcLtu3TpQlRUFAsXLnTNv2MYBnfeeWelNxLFxMTw5JNP8txzzzF69GjGjx+Pv78/3333Hfv372fMmDHlLsU1VE1yxuhGwVaqJ0ghSESkwQoMDGT8+PGAs+fkiiuuKLP+9ttv5+9//zshISHMnTuXJUuWMHToUBYuXEiLFi1qdW5/f39iY2OZOnUq8fHxvPvuu+zbt49///vfXHXVVeW279OnD3PnzqVv374sXryYefPmERwczBdffEG/fv3Kbe/l5cU777zDgAED+PLLL3nllVd4+eWXz3m31j333MMHH3xAjx49+Pzzz/nggw/w9vbmr3/9K7Nnz240M44bZkOYdKKBS0lJqVWXpmEYREdHk5SU5JrbwPHt55ix/wXAcu9jGBcMq4umNnsV1Vrqh2rtPp6qdUV32jYHNputWU4S6Qk1qXVVPpc2m61KkyWqJ8hTzpwsUURERNxKIchTNE+QiIiIRykEecqZM0aLiIiIWykEeYiheYJEREQ8SiHIU0rfIq+eIBEREbdTCPKUMrfIa0yQiIiIuykEeYp6gkRERDxKIchTNCZIRBoBzQElDUldfx4VgjxFPUEi0sBZrVYK9fNJGpDCwkKs1rp74pdCkKeUGhNkakyQiDRAvr6+5OfnU1BQoB4h8SjTNCkoKCA/Px9fX986O64eoOopeoCqiDRwFouFoKAg8vPzyc7O9nRz3Mbb21s9YG5SnVpbrVaCgoKwWOqu/0YhyFNsuhwmIg2fxWLB39/f081wGz0Tz30aQq11OcxTNDBaRETEoxSCPMQwjNNBqFBjgkRERNxNIciTSkKQeoJERETcTiHIk0oGR2tMkIiIiNspBHmSeoJEREQ8RiHIk7xPzRWkeYJERETcTiHIk0pCUGGhbsUUERFxM4UgT9Jt8iIiIh6jEORJmjVaRETEYxSCPEmzRouIiHiMQpAHGaUeoqrB0SIiIu6lEORJ3uoJEhER8RSFIE/SwGgRERGPUQjyJPUEiYiIeIxCkCdpTJCIiIjHKAR5knqCREREPEYhyJNKjQkyNSZIRETErRSCPKlMT5Auh4mIiLiT1dMNqEx+fj4LFy5k79697Nu3j5ycHO6//35GjhxZ7WO9/fbbLF++nAEDBvD444/XfWNrqsyYIPUEiYiIuFOD7QnKysoiNjaWxMREYmJianyc/fv3s2rVKmw2W901ro4YemyGiIiIxzTYEBQaGsrs2bOZNWsWN998c42OYZomH3zwASNGjCAkJKRuG1gX9NgMERERj2mwIchms9U6uKxevZrDhw9z44031k2j6lqZyRI1JkhERMSdGmwIqq28vDzmzJnDxIkTG2YvEIB3qTFB6gkSERFxqwY7MLq2YmNj8fb25qqrrqryPkVFRRQVFbneG4aBn5+f63VNlexb7hjeZQdG1+Yc4lRpraXOqdbuo1q7j2rtPg2h1k0yBB09epRvvvmGP/zhD9UaEL1gwQJiY2Nd7zt27MiMGTOIiIiok3ZFRUWVeV9UXMCxU6/9rF60jI6uk/NI+VpL/VGt3Ue1dh/V2n08WesmGYL++9//0r17d4YMGVKt/SZOnMi4ceNc70vSaUpKCna7vcbtMQyDqKgojh07hmmaruXmiSzX67wTJ0hKSqrxOcSpslpL3VOt3Ue1dh/V2n3qs9ZWq7VKHRhNLgRt27aNzZs38+ijj5KcnOxaXlxcTGFhIcnJyQQGBuLv719uX5vNVmnPUV38BZmmWTYEWUvNGF1YoH9wdejMWkv9Ua3dR7V2H9XafTxZ6yYXglJTUwF45ZVXyq1LT0/nwQcf5LbbbqvWWKF6oxmjRUREPKbRh6CMjAxyc3Np1aoVVquVPn368Oijj5bbbvbs2URERDBx4kTat2/vgZZWwKbJEkVERDylQYegJUuWkJOTQ0ZGBgAbNmwgLS0NgLFjx+Lv78/cuXNZtWoVM2fOJDIykvDwcMLDw8sd63//+x8tWrRg0KBBbv0ezsawWMBqBbtdt8iLiIi4WYMOQYsWLSIlJcX1Pi4ujri4OACGDx9e4bieRsfm4wxB6gkSERFxqwYdgt56661zbvPAAw/wwAMP1MmxPMLbG/JyNGO0iIiImzXZGaMbjZJxQbocJiIi4lYKQZ5WEoJ0OUxERMStFII8reTRGYWFmpNCRETEjRSCPK2kJ8h0QHHNZ6UWERGR6lEI8rQyEybqkpiIiIi7KAR5miZMFBER8QiFIA8zSsYEgR6dISIi4kYKQZ6mniARERGPUAjyNG+FIBEREU9QCPI0mwZGi4iIeIJCkKfZSo0J0qMzRERE3EYhyNN0i7yIiIhHKAR5Wqm7w0yNCRIREXEbhSBP05ggERERj1AI8rQyl8M0JkhERMRdFII8TQOjRUREPEIhyMMMDYwWERHxCIUgT9OM0SIiIh6hEORp6gkSERHxCIUgT9OYIBEREY9QCPI09QSJiIh4hEKQp2lMkIiIiEcoBHlaqZ4gzRgtIiLiPgpBnlZ6TJAmSxQREXEbhSBP0+UwERERj1AI8jDDagXLqb8GDYwWERFxG4WghqDkkph6gkRERNxGIaghKBkcrTFBIiIibqMQ1BCUjAtST5CIiIjbKAQ1BN4KQSIiIu6mENQQlPQEaWC0iIiI2ygENQTepwZGF9sxHcWebYuIiEgzoRDUEHiXnjBRvUEiIiLuYPV0AyqSn5/PwoUL2bt3L/v27SMnJ4f777+fkSNHnnPfHTt2sGjRIhISEsjKysLf35+YmBgmTZpEjx496r/xNVF6wsTCAvD181xbREREmokG2ROUlZVFbGwsiYmJxMTEVGvfpKQkDMPg8ssv57e//S3jx48nMzOT6dOns3nz5nppb20ZmjVaRETE7RpkT1BoaCizZ88mJCSE/fv388QTT1R531GjRjFq1Kgyy8aMGcODDz7I119/Tf/+/eu4tXXAu3RPkEKQiIiIOzTIniCbzUZISEidHc/Hx4fg4GByc3Pr7Jh1qvRDVIs0YaKIiIg7NMieoLqQm5uL3W4nOzubVatWcfjwYSZOnOjpZlVMPUEiIiJu12RD0Ouvv86vv/4KgNVqZfTo0UyaNOms+xQVFVFUVOR6bxgGfn5+rtc1VbJvpccoc3dYQa3O1dyds9ZSZ1Rr91Gt3Ue1dp+GUOsmG4KmTp3K+PHjSU1NZdWqVdjtdhwOx1n3WbBgAbGxsa73HTt2ZMaMGURERNRJm6Kioipcnt2uA5mnXofgICA6uk7O15xVVmupe6q1+6jW7qNau48na91kQ1Dpu8pGjBjBY489xltvvcUf//jHSveZOHEi48aNc70vSacpKSnY7fYat8UwDKKiojh27BimaZZb77D5ul5n7t9DVu+kGp+ruTtXraXuqNbuo1q7j2rtPvVZa6vVWqUOjCYbgkqzWq1ccMEFfPnllxQWFuJdegxOKTabDZvNVuG6uvgLMk2z4uOEnf6LMlOP6x9eHai01lLnVGv3Ua3dR7V2H0/WukHeHVYfCgsLMU2TvLw8TzelvJalQlBasgcbIiIi0nw06hCUkZFBYmJimUtVJ06cKLddTk4OP//8My1btqRFixbubGKVGP6B4B/gfKMQJCIi4hYN9nLYkiVLyMnJISMjA4ANGzaQlpYGwNixY/H392fu3LmsWrWKmTNnEhkZCcCLL75Iy5Yt6dKlCy1atCA1NZWVK1eSnp7Oww8/7LHv55xaRkJuPGSkYhYXY3h5ebpFIiIiTVqDDUGLFi0iJSXF9T4uLo64uDgAhg8fjr+/f4X7XXrppaxdu5avv/6a3NxcAgIC6Nq1K9OmTaNnz55uaXuNtIyEw/FQXAyZ6WUukYmIiEjda7Ah6K233jrnNg888AAPPPBAmWVXXHEFV1xxRX01q94YLSNxDQtLS1YIEhERqWeNekxQkxIe6XqpwdEiIiL1TyGogTBatjr9Ju245xoiIiLSTCgENRSlL3+lqidIRESkvikENRSleoLM9JSzbCgiIiJ1QSGoofAPAL9Td7yl6nKYiIhIfVMIaiAMw3DeJg+Qnop5joe9ioiISO0oBDUkJSGo2A4nMjzbFhERkSZOIagBMVqevk1ed4iJiIjUL4WghqRUCDJ1h5iIiEi9UghqQIzw0j1BCkEiIiL1SSGoIWmpECQiIuIuCkENSUs9OkNERMRdavUAVYfDQX5+Pj4+Pnh5ebmWFxYW8uWXX5KQkEBERAQTJkwgLCys1o1t8gKCwMcPCvI0a7SIiEg9q1VPUGxsLHfccQd79uxxLTNNk2eeeYbY2Fg2bNjA4sWLeeqppzh58mStG9vUGYZx+kGq6cmaK0hERKQe1SoEbd26lZCQEHr27OlatnHjRvbv3090dDS33XYb/fr1Iy0tje+//77WjW0Wwk49Q8xuh6xMjzZFRESkKatVCEpOTqZNmzZllq1fvx6AadOmceWVV/LYY48RHBzMunXranOqZkN3iImIiLhHrULQyZMnCQkJKbNs9+7dhIWF0alTJwC8vLzo2rUrqamptTlV81H6Qap6hpiIiEi9qVUIslgs5Ofnu96fPHmSpKQkunfvXmY7Pz8/cnNza3OqZkM9QSIiIu5RqxDUqlUr9u7di+PUAN5NmzYB0KNHjzLbZWVlERwcXJtTNR9hpUNQiufaISIi0sTVKgQNHDiQrKws/vGPf/DNN98wZ84cLBYLAwcOdG1jmibx8fFERkae5UjiEl56riBdDhMREakvtZonaMKECaxfv55ffvmFX375BYCrr76a8PBw1za7du0iOzu7XO+QVCIwGLx9oLBAl8NERETqUa1CkL+/Py+99BLr1q0jMzOTLl260KtXrzLbZGdnM3bsWC666KJaNbS5MAzDOXN00mFIS8E0TecyERERqVO1CkEA3t7ejBgxotL1gwYNYtCgQbU9TfNSEoKKCiE7E4JDPd0iERGRJqdenx2Wm5uLaZr1eYomqcwdYnp8hoiISL2oVU/QoUOH2LZtG/3796d169au5du2bePf//43qampBAYGcssttzBy5MjatrX5OONBqkan7mfZWERERGqiVj1Bixcv5sMPP8Tb29u1LDs7m5dfftk1OeLJkyd5++23iY+Pr11Lm5NSEyZqcLSIiEj9qFUI2r17N+3atStzN9jq1avJz89n9OjRfPDBBzzwwAOYpsnixYtr3djmwmgZcfqNQpCIiEi9qFUIOnHiBC1btiyzbMuWLVgsFqZMmYK/vz8jRowgJiaGvXv31qqhzUrpuYI0JkhERKRe1CoE5ebm4u/vX2bZvn37iImJISgoyLUsOjqa9PT02pyqeQkKcc4VBM67xERERKTO1SoE+fv7k5GR4Xp/5MgRTp48Sbdu3WrdsObMMAzoeKqGacl6kKqIiEg9qFUIiomJYffu3Rw7dgyA5cuXA5SbMDE5OZnQUM11Ux1G976u1+bubR5siYiISNNUq1vkR48ezbZt23jsscdo1aoVBw8epEWLFgwYMMC1TV5eHgkJCVxwwQW1bmxzYnTvi2uGpd1bYNgoTzZHRESkyalVT9DQoUOZPHkyDoeDgwcPEhERwSOPPILNZnNt89NPP1FcXFyud0jOoWM3sDmnHjB3b9OkkyIiInWs1o/NuO6667jmmmvIzc0lODi43PrzzjuPGTNmEBUVVeVj5ufns3DhQvbu3cu+ffvIycnh/vvvr9KEi1u3buWHH35g9+7dpKWlERISQp8+fbjhhhsa1SU5w2aDLj1h56+QngKpxyGi6jUUERGRs6t1CAKwWq0VBiCA8PDwMvMIVUVWVhaxsbGEh4cTExPD9u3bq7zvnDlzOHnyJEOGDCE6Oprjx4/z7bffsnHjRl5++WVCQkKq1RZPMrr1wdz5KwDm7q0YCkEiIiJ1pk5CEIDdbufAgQOuW+HDwsLo1KkTVmv1TxEaGsrs2bMJCQlh//79PPHEE1Xe99Zbb6VHjx5YLKev9PXv359nnnmGJUuWMGXKlGq3x1OMHn0xvzz1ZvdWuPhyj7ZHRESkKal1CCouLubTTz9lyZIl5OXllVnn5+fH2LFjue666/Dy8qryMW02W417bCoae9SrVy8CAwM5cuRIjY7pMTFdnfMFFRa4xgUZhuHpVomIiDQJtQpBDoeDf/zjH2zevBmAgIAAIiOdsx0nJyeTk5PD559/zoEDB3jsscfK9M64U35+Pvn5+ZVesitRVFREUVGR671hGPj5+ble11TJvtU9hmHzxuzSE3PHZshIxUg5htGq9Tn3a85qWmupPtXafVRr91Gt3ach1LpWIWj58uVs3ryZiIgIbrnlFgYPHlxmfVxcHB9++CGbN29m+fLljB49ulaNramvv/4au93ORRdddNbtFixYQGxsrOt9x44dmTFjBhEREWfZq+qqMzi8RNbAizixYzMAwccPE9hfUw1URU1qLTWjWruPau0+qrX7eLLWtQpBq1atwtvbm7/+9a+uHqDSBg0aRExMDI888girVq3ySAjasWMHsbGxDB06lD59+px124kTJzJu3DjX+5J0mpKSgt1ur3EbDMMgKiqKY8eOVftWd7NNR9frzJ9/IPu8wWfZWmpTa6ke1dp9VGv3Ua3dpz5rbbVaq9SBUasQdPjwYXr16lVhACoRGRlJnz592LVrV21OVSOJiYm88sortGvXjnvvvfec29tstjJzHJVWF39BpmlWPwS17ww+vlCQj7l7Kw6HQ920VVCTWkvNqNbuo1q7j2rtPp6sda0G6RQVFZV7gGpFfH19y4y1cYfU1FT+9re/4e/vzxNPPOEa29PYGFarc74ggMx0OH7Usw0SERFpImoVgsLDw9mzZw8Oh6PSbRwOB3v37qVly5a1OVW1ZGdn88ILL2C32/nLX/7SqCZJrEiZ54jt2erBloiIiDQdtQpB/fr1IzU1lQ8++KDCMTN2u53333+f1NRU+vfvX5tTVSgjI4PExMQy587Pz+ell14iPT2dJ554gujo6Do/r7uVDkHsUggSERGpC7UaE3TNNdewZs0ali5dyoYNG7joootc44OOHz/OTz/9RHp6OoGBgVxzzTXVOvaSJUvIyckhIyMDgA0bNpCWlgbA2LFj8ff3Z+7cuaxatYqZM2e6zvvmm2+yb98+Lr30Uo4cOVJmbiBfX18GDRpUm2/ZM9p3Bh8/KMjD3KP5gkREROpCrUJQWFgYTz75JK+//jqpqal89dVX5bYJDw/nj3/8I2FhYdU69qJFi0hJSXG9j4uLIy4uDoDhw4dXOhbp4MGDAKxYsYIVK1aUWRcREdEoQ5BhtULXXrBtI5zIgGOJEN3W080SERFp1AyzDoZk2+12fvrpJ7Zv3+7quQkNDaV3794MHTqUI0eOkJub22ifJJ+SklKrgd2GYRAdHU1SUlKNR8A7lnyG+dn/nMebfCeW31xT4/Y0ZXVRa6ka1dp9VGv3Ua3dpz5rbbPZ6v8WeddBrFaGDx/O8OHDK1z/zjvvsH//fj755JO6OF2zZPQb7ApB5vofQCFIRESkVtz2HAsl6toxottCu1MTJybsxUzWrfIiIiK14ZmHeUmNGIMvcb0241Z7sCUiIiKNn0JQI2IMPH250Yz7Qb1rIiIitaAQ1IgYLSOgy6nB5UmH4UiCR9sjIiLSmCkENTLGoBGu17okJiIiUnMKQY2MMXAYWJx/bWbcasyzPLJEREREKletW+RXrVpVo5NkZWXVaD8pzwhqAb36w7ZNkJ4CB3advkQmIiIiVVatEDRr1qz6aodUg3HhCMxtmwBnb5ChECQiIlJt1QpB4eHh9dUOqQbj/CGYH3lDUSHmhh8xb/gdhpeXp5slIiLSqFQrBL311lv11Q6pBsPPH84bCBvXQvYJ2Pkr9Bng6WaJiIg0KhoY3UhZdJeYiIhIrSgENVZ9B4KfPwDmxh8xT2rwuYiISHUoBDVShs0bY8ilzjeFBZjfL/Jsg0RERBoZhaBGzBhzLZwaEG0u/wozL9fDLRIREWk8FIIaMaNlBMaQkc43uTmYKxd7tD0iIiKNiUJQI2dcMQkMAwDzuy8wCws83CIREZHGQSGokTOi2mJcMMz5JvsE5g/febZBIiIijYRCUBNgXDnZ9dpc+jmmvciDrREREWkcFIKaAKNdRzjvQueb9FTMdSs92h4REZHGQCGoibCU7g1a/Bmmo9iDrREREWn4FIKaCKNzD+je1/km+Sjmz5pFWkRE5GwUgpoQy1XXu16bn/1P8waJiIichUJQE2L07Af9BjnfnEjH/OoTzzZIRESkAVMIamIsN9wFNm8AzGULMRMPerhFIiIiDZNCUBNjRERhXHmd843DgWPufzBN07ONEhERaYAUgpogY8y1EBHlfLNnG2acBkmLiIicSSGoCTJs3lim/M713vz0fQ2SFhEROYNCUBNlnHch9B/sfHMiA3Phx55tkIiISAOjENSElRkkvXwR5tFDHm6RiIhIw6EQ1IQZ4a3KDpL+5B0NkhYRETlFIaiJM34zEVpGOt/s/BU2/+zZBomIiDQQVk83oCL5+fksXLiQvXv3sm/fPnJycrj//vsZOXLkOffNyMjgm2++Yd++fezfv5/8/HymT59O796967/hDZDh7YNl8p043v47AI7572HpMwDj1GUyERGR5qpB9gRlZWURGxtLYmIiMTEx1dr36NGjfPnll6Snp9O+ffv6aWBjM2Do6eeKpR7HXPqFR5sjIiLSEDTIEBQaGsrs2bOZNWsWN998c7X27dSpE++//z5vvPEG48aNq6cWNi6GYThvmTecf93m4ljMjDQPt0pERMSzGmQIstlshISE1GhfPz8/AgMD67ZBTYDRNgZj5BXONwX5mJ/915PNERER8bgGGYKkfhhXT4WAIADMn1dh7tnu4RaJiIh4ToMcGO0pRUVFFBUVud4bhoGfn5/rdU2V7FubY9QFIzAYrpmKY87bADjefQWvp17HaBHq0XbVpYZS6+ZAtXYf1dp9VGv3aQi1VggqZcGCBcTGxrred+zYkRkzZhAREVEnx4+KiqqT49SGecPtJG9eR+H2zZCRhvWDfxLxwiwMa9P6KDSEWjcXqrX7qNbuo1q7jydr3bR+89XSxIkTywymLkmnKSkp2O32Gh/XMAyioqI4duxYg5is0LzzEXj+IchMp2DbJhLffAGvG+/2dLPqREOrdVOmWruPau0+qrX71GetrVZrlTowFIJKsdls2Gy2CtfVxV+QaZoN4x9VcAiWex/H8cqTYLdjfr+I4g5dsAy91NMtqzMNptbNgGrtPqq1+6jW7uPJWmtgdDNldO6BceM9rvfm/72FeXC/B1skIiLiXo06BGVkZJCYmFirS1XNmWXEGIwRY5xvigpxzHoR82SWZxslIiLiJg32ctiSJUvIyckhIyMDgA0bNpCW5pzgb+zYsfj7+zN37lxWrVrFzJkziYyMdO372WefAXD48GEAVq9eza5duwCYNGmSO7+NBs+YcjfmkQQ4sBvSU3C89xqW3/8Vw9Ko87GIiMg5NdgQtGjRIlJSUlzv4+LiiIuLA2D48OH4+/tXuu+8efPKvF+xYoXrtUJQWYbN5hwf9PxDkH0Ctm3C/Ho+xvgpnm6aiIhIvTJMjfw6p5SUlDLzB1WXYRhER0eTlJTUYAfamTt/xfH6dDAdYBhYpk3H6DPA082qtsZQ66ZCtXYf1dp9VGv3qc9a22y2Kt0dpmseAoDRsx/GNVOdb0wTx3uvYqalnH0nERGRRkwhSFyMKybBeRc635zMxvGfGZi16AETERFpyBSCxMWwWLDc+TCEt3IuiN+D+d83MIuLPdswERGReqAQJGUYAYFY7nscrM5JI8241ZjvvoqpaQhERKSJUQiScoz2nbHc+xicep6YuWENjtn/wLTr0piIiDQdCkFSIaPfICz3/8XVI8Qv63D8++8aIyQiIk2GQpBUyuh7AZbfPw3e3s4FW9bjeOtvmAX5nm2YiIhIHVAIkrMyevXHMm06+Pg6F2z/BcerT2Fmn/Bsw0RERGpJIUjOyejeF8sfngG/U7N0x+/B8fc/YyYnebRdIiIitaEQJFVidO2F5c9/h5Aw54LkJGcQStjr2YaJiIjUkEKQVJnRNgbL4y9DdDvnguwTOF75C+aOXzzbMBERkRpQCJJqMVpGYHlsBnTt5VxQkI9j1kuYB/d7tmEiIiLVpBAk1WYEBGJ5+DnoP9i5oCAfx7+ew0xL9mzDREREqkEhSGrEsHljuftP0LmHc8GJDBxvPIuZe9KzDRMREakihSCpMcPmjeWBpyCytXNB0mHnpTHNLC0iIo2AQpDUihEUjOUPf4XAYOeC3Vsx/zdTD10VEZEGTyFIas2IbI3lwafA5pxZ2ly3AscLj2DG7/Fwy0RERCqnECR1wujcA8tdj4Dl1EfqcDyOl/6EY+7bmLk5nm2ciIhIBRSCpM4YAy5y3j7ftqNzgWlirvgGx18fwNz8s2cbJyIicgaFIKlTRqfuWJ56DWPyHeDt41x4Ih3HWy/g+PQDjRUSEZEGQyFI6pzh5YXlNxOxPPcW9B3oWm4uXYDj1b9gZqZ7sHUiIiJOCkFSb4yWkVh+/zTGlN+Bl5dz4d4dOJ5/CHPXFs82TkREmj2FIKlXhmFgGTUey59egtBw58KsTByvPY3jf/9Sr5CIiHiMQpC4hdG5B5an/wm9zncuME3MNd/heOpeHIs+wSzI92j7RESk+VEIErcpmVjRmHwH+Pk7FxbkYy6ci+Op+3D8vArTND3bSBERaTYUgsStDMupQdMv/Afj0itPzyuUmYb57qs4/vU8ZnqqZxspIiLNgkKQeIQR1ALLTfdieWYm9Bt0esXWDTieeRDHD0vVKyQiIvVKIUgqlJCRT2JWYb2fx4hui9eDT2G5/0loEepcmJeL+eFMHK//FTPxYL23QUREmieFICnHYZrM/PkYv//qAO9uPM7Jgvqf4NA4fwiWZ9/CGDbq9MKdv+J4dhqO917HTDlW720QEZHmRSFIyllzMJu9afkUm7BoVwb3LtzP17szsDvq9/KUERCI5fY/YPnDMxAW4Vxoms4Hsj59P445b2OeyKjXNoiISPOhECTlDGobyJS+LfH2MgDILnQwe8Nx/vB1PJuOnqz38xt9BmB5bhbGdbdDQJBzYbEdc+U3OJ6+D8fKbzAdjnpvh4iING0KQVKOr9XCjedF8O8JnRgZE+xafiSrkGdXHOHZ5Yc5dKKgXttg+PhgGXMtlhdnY4y7AXx8nSvycjHnvI3j5Scwjx6q1zaIiEjTphAklQr3t/HwsNa8PKYD3cP9XMs3JeXwh6/jmb3+GFn1PF7I8A/AcvVUZxi6+PLTK/btxPHcQzi+nKtLZCIiUiNWTzegMvn5+SxcuJC9e/eyb98+cnJyuP/++xk5cmSV9s/JyeGjjz4iLi6OwsJCunTpwi233EKnTp3qt+FNULdwP2b8pj0/HMzmw1+SScm14zDh6z2ZrEzIYkrfcMZ2DcV26vJZfTCCQzBu+z3mkJE4PnwLko86L5F99QnmV59A244Yvc/H6DMAMzy83tohIiJNR4PtCcrKyiI2NpbExERiYmKqta/D4eDvf/87a9as4YorrmDq1KmcOHGCZ599lqSkpPppcBNnGAYjYoJ5a3wnpvYLx9fqDDw5hQ7e25jMtK8PEHcku97n9jG698Uy/Q2MKyeffigrwJF4zG8/x/HqUyT9biLm/l312g4REWn8GmwICg0NZfbs2cyaNYubb765WvuuW7eO3bt388ADDzB58mSuuOIKnnnmGSwWC/Pnz6+nFjcPPlYL1/cJZ9b4Tozq1IKSvp+j2UW8sCqR6csPk5BRv88BM7x9sEy8Bcv0N51hqEOXMuuLU45R/I8ncCz/ShMuiohIpRpsCLLZbISEhNRo33Xr1tGiRQsGDTo9E3FwcDBDhw5lw4YNFBUV1VErm6+W/jamDY3mlSti6BVxerzQr8dyeXhxArN+PkZmvr1e22BEt8My8Ra8nnoNy2v/h3HXH6FLT+fKYjvmx7Mx33tND2cVEZEKNdgQVBsJCQl06tQJi6Xst9elSxcKCgp0SawOdWnpy4uXt+ex4a1pFWgDwGHCt/syuW/hAT7fkUZRcf3fzm4EtcAy+BK8Hn2RoImnew7Nn1fheOlPmFs3Yir8iohIKQ12YHRtZGRk0LNnz3LLS3qW0tPTad++fbn1RUVFZXqJDMPAz8/P9bqmSvatzTEaMsMwGNahBRe2DWLRrnTmb0sjr8hBbpGD//2Swrd7M7ljQCRD2gXVew0Mm42Qux4iN6otxe+/AQV5kHgQx5vPgp8/Rt+BGP2HYPS9AKPkSfZSI039c92QqNbuo1q7T0OodZMMQYWFhdhstnLLvb29XesrsmDBAmJjY13vO3bsyIwZM4iIiKiTdkVFRdXJcRqyB9u24cahhby95gBfbjmKCRw7WcRLqxMZ0C6ERy7tSvdWQfXejtbjrqOo30BSX/gT9sPxzoV5uZhxqzHjVmP4+RM47nqCJt6MV4uQem9PU9YcPtcNhWrtPqq1+3iy1k0yBHl7e1c47qck/JSEoTNNnDiRcePGud6XpNOUlBTs9pqPbzEMg6ioKI4dO9ZsBureeV4LLm3nw7sbjrP1eC4Amw5ncsuH6xnVuQW39I8k1K/uP35lam31wXzyVSxbN2D+sg7z1zjIdc54beblkv3pf8le+AnGpVdhGTMRI6hFnbenKWuOn2tPUa3dR7V2n/qstdVqrVIHRpMMQaGhoWRmZpZbXrIsLCyswv1sNluFPUhAnfwFmabZrP5RxYT48PyodsQdOckHvySTlF2ECSzbf4I1B7OZ3LslE3qG4u1V90PTXLW2WjHOH4Jx/hBMux32bsdc/wPmT8vBboeCfMwln1G8/CuM/kOg7wCMXudjBIfUeZuaqub2ufYk1dp9VGv38WStm2QIiomJYefOnTgcjjKDo/fu3YuPjw/R0dEebF3zYhgGg9sFMaB1IN/syWDe1lRyihzk2x38368pfLsvg9vOj2RYezeMF7JaoWc/jJ79MMdNwVwSi/nDUmcYKizAjFsFcaswATp0cY4fGjYKI7xVvbZLREQ8o9HfHZaRkUFiYmKZy1VDhgzhxIkTxMXFuZZlZWWxbt06Lrjggkp7e6T+2LwMru4Zxr8ndGJs1xAsp/JOco6dl9cc5YnvDrE3Lc9t7THCwrHcdC+WF9/BuGwc+PqV3eDgPsyvPsHx5N0Uv/kc5pb1mI76fUSIiIi4V4PuCVqyZAk5OTlkZDifDbVhwwbS0tIAGDt2LP7+/sydO5dVq1Yxc+ZMIiMjAWcI6tq1K7NmzeLIkSMEBQWxdOlSHA4H119/vce+H4EWvlbuHRTFld1CeW9TMpuTcgDYmZLHo0sOcmnHYG7pH0FLf/cEVSO0JcaNd2NOvhMO7MLctglz+yY4dMC5gWnC1g04tm6AlpEYF1+OcdEojDA9mkNEpLFr0CFo0aJFpKSkuN7HxcW5eneGDx+Ov3/FtzhbLBaeeOIJPvroIxYvXkxhYSGdO3fm/vvvp3Xr1m5pu5xd+xAfnrm0LRuP5vDBpmSOZDkHra+Iz2LtoWyu7d2SiT3D8LG6p7PSsFqhWx+Mbn3g2lsxM9Iw136PuXoJpKc6N0pLxvxyDubCj6F3fywXXw79BmFY1bMoItIYGaZGfp1TSkpKrWaZNgyD6OhokpKSNNCuAnaHyZK9GXy8JZWThacnVmzpb+XW/hGMiAnGUsXxQnVda9NRDFs34li5GLZvcvYMlRYQhNH7fOhzAUbv/hjBobU+Z2Ohz7X7qNbuo1q7T33W2mazNd+7w6RxsVoMxnUP45KYFszbmso3ezIoNiEt187ra5P4encGdw1sRfdwv3MfrI4ZFi/oNwivfoMw05Ixf/wec+33kJbs3CAnGzNuNcStPj2gesBQjOG/0S33IiINnHqCqkA9Qe51JKuA/25KZn1iTpnlIzoEc+v5EUQEVH75yR21Nh0O2PUr5pplmNs2Ql5u+Y2sNoxBIzAuG4fRoXO9tMPT9Ll2H9XafVRr91FPkEgF2gb78NTIdvySlMP7G49z6IRzvNDqg1msO5LNNT3DuLZXS/xsnrm50bBYoNf5GL3Od849VNGAanuRc0zR2u+hYzeMTt0hqi1GdFuIagvBIZqWX0TEwxSCpME6PzqAf17ZkaX7Mpm7JZWsgmIKi03mb0vju/0nuLV/BCM7Vn28UH0oN6A65Rjmym8w13wHuad6suL3YMbvAcD1f502HbDceA9G9z4eabeIiDSBeYKkafOyGIztFsq/J3Timp5hlNwslpFn542fknh0yUG2J1dwOcpDjIgoLJPvxPKPDzBuvh/adKh4w8SDOF55Esf//oWZk+3eRoqICKCeIGkkAr29uGNAJFd0DeGDTcn8fMT5DLD96fk8+d0hLmofxO3nRxAV5OPhljoZPr4Yl1yBOWIMnMiA44mYSUfg2BHMPdvg1ENdzTXfYf4ah3HDXRgXDndeahMREbdQCJJGJTrImycvacuWYzm8vymZ+IwCANYeyibuyEmu7hnGg2HnHgznLoZhQEgYhIRhdO8LOG+7N1ctwfz8Q8jPg+wTmO++ivnJbOjSG6N7b4yufaBdjPPuNBERqRe6O6wKdHdYw1TsMPn+wAk++jWFE/mnH2lh8zLoHOZLz3A/ekb60TPcj2Dfhpf3zYw0HB//B35ZV/EGfv7QsTtG5x4YXXpCp24YvhVPEOoJ+ly7j2rtPqq1+zSEu8MUgqpAIahhyy0qJnZbGl/uysDuqLi+bYO96RnhR69If3pG+BEVaGswd2eZv67HsWYp7NkOuScr39CwOB8AO2wUxvlDMGze7mtkRc3R59ptVGv3Ua3dpyGEoIb332ORavK3eXHr+ZGM6RrC5zvS2ZFawKGMsg9jPZJVyJGsQr7bfwKAEF8vekb4nwpGfnQM9cVq8UwoMvpdiFe/C53zDx09iLlnu3Pc0L5dcCL99IamA3b8grnjF0z/AOc8REMvg5iuGkskIlID6gmqAvUENR4ltd5x4DA7U3LZmZzLzpQ89qfnU3yW0vt4GXQL93P1FnUP98Xf5tnxOKZpOp9Xtn8X7NvpnJgx9Xj5DVuEYZw3EKPfIOjRD8PHPYPD9bl2H9XafVRr9zEMg6ioKA4nJlHXj4nU5bA6pBDUeFRW6wK7gz1peexMyWNnch67UvPILXJUehyLAR1CfOgV4UePCH96RfoR7qYn21fGdDhg73bMH5dhblwLhQXlN7J5Q+v2EB6JEd4KwqMwwiMhNAJCW2L4B9RZe/S5dh/V2n1U69ozTZOThQ4y8+3Or7ziU69P/ZlnJyO/mBP5dk4UFDOueyi3nx9Zp23Q5TCRUnysFvq2CqBvK2cIKHaYHD5RwI5ToWhnSi4puXbX9g4T4jMKiM8o4Os9mQBEBlidgSjC2WPUPsTHrRM1GhYLdO+L0b0v5k33YG74EXPzz7BjMxQ5Z9WmqBAO7oOD+1wTM5b5Me7rB6HhGN37YFw23jmDtYjIOZQEm4xTISbzVIjJyCsVbk79eSLfjr3y/2OWk1nqxhZ3UwiSZsnLYhAT6ktMqC9XdnM++T0lp8jZU5TivISWkFFQJkAk59hJzslidUIWAAE2Cz1OBaKeEf50bemLT1336VbC8PXHuPhyuPhyzIIC57PMfo3D3PkrpKU4xw9VJD8Pkg5jJh3GXLkY+lyA5fIJ0LN/gxkoLiLuYZom2SU9Nnlle2pOBxtnT86JguoFm3OxGBDs40VEkB8t/TwXRRSCRE6JCLAREWBjREwwADmFxexOPXUJLSWP3al5FJYaWJRT5GDj0Rw2HnU+HsNqwXlr/qkB1z0j/GjhhlvzDR8f6DfIOSYIMO1FkJ4KqccxU485Q1FGKmZGmnN5ejLYT/V6bduIY9tGaNUGoto4n3x/6sto3R669fb4XWgiUnUO0+RkQXGZ3hlnb83p3pvMfDsZec7XZxsrWV0WA1r4eBHiZ6WFr5UQXy9CfK2E+jn/DClZ5mclyNsLq5fF45ceFYJEKhHg7cWA1oEMaB0IgN1hciA939VbtCMlr8z8RHYH7E7NZ3dqPl/sdC5rHeRNr8jTvUWtg+r/1nzDaoPIaIiMpqIzmbk5zpmql38FacnOhccTnbNal94OwNvHeVt+34EYfS/AaEATUYrUVoHdwbGTRRzNLiTJ9VVEXvEhiuz2cx+gBurrX78JZBfUb7AJKRVsQioJNl4eusu2pjQwugo0MLrxcGetTdPk2MkidiQ7A9GulDyOZBWedZ8WPl7OCRxPhaJOob7YvDzzQ8MsLobN63AsWwT7d0JV6tWtN8bwMRgXXITF20efazfRz5CaKwk6SdmFpcKOM/ik5dZP0GnoLAZlempO99hYaVFqWaiflSAfr3ob+9gQ5glSCKoChaDGw9O1zsq3szPVOdh6R0oe+9Pzznod3dvLoFtLX3pE+BMVaCM8wEaEv5XwABu+bhpfBGDa7ZCTDdmZkJ3lvHS2Zyvm1o2QlVl+h4AgjKGXEjnhBlL9gtzWzubK05/rhq7A7uB4mR6d069TaxB0fKyWRlnnAG8vZ3g5o6emxalAUxJu6jPYVIdCUCOhENR4NLRaF9gd7EvPd92BtjM1j5zCqo0uDPS2EO5vIyLASri/zfkVYCXi1J9hfrZ670UyHQ44fABzywbMuNVw7Ej5jVqEYvTqD73Ox+jVDyM4tF7b1Bw1tM+1JxQWOziWXbpH5/TrtFw71a1KkI8X0YE2Wgd5Ex3kTXSQjdbB3rQO8qFrTNtmXWt3aQghSGOCROqRj9VC70h/ekf6Ay1xmCaHTxSemsjR2VuUnFNxwD5Z6OBkYQEJmRXMB4RzbEGIn5Vwf2u5gOQMTc7u7dr8j8+wWKBDF4wOXTDH3eCctHH1t5gb1oD9VLtPZGD+tAJ+WuH8ReTjB8GlBliHt8Lo1hu69cEIDK5xW6TpKyw+dekqq2zQKenRqXbQ8bacCjjep8KOzfU+yKfiyVB1l2TzohAk4kYWw6BDiA8dQny4oquzxyQtt4gD6QWk5haRklNEaq791Gs76XlFlV5OM4GMPOc8HXvT8ivcxmqBMD9nIIoIcP4ZHlD6vY1Ab0uVfvAbhgFde2F07YU55S5Y/wPee7aR/+v6shM3FuRBSh6kHHO10/x+ERgGtInB6NHX+aiPtjHQqg2GVT+GmhNX0DkVbo5mFZF0spCkrLoJOlFBp3t3Kgs6IiX000fEw1r622hZyWzUDtMkM7+Y1JwiUnKLSM1xBqTUXLsrMGXmVf6Lw+6A5JwiZ29TSl6F2/h4GWXGIpX0LJUOTWeOTzICgjAuvYqIm+7i6KFDmPt3Ym7fhLl/t3MMUfYJ5xij0kwTjsRjHol3vgXwsjpvzW/X0dnj1LEbtOuI4e2eR39I3SoqNskpLCa7sJiTBcWcKCh2jdU5ml3IsexCUnJqFnSizujNUdCRuqAQJNKAWQyDMD8rYX5WuuFX4TZFxSbpec6AlHIqIKXmFLnCUmpOEdlnGYdUUGySmFVI4lnubAv0tpwORafGJ0UE2miTYyMtPZ9ivw44LuiAY4AzuDlMKLYX48jPxUxLpfhYIsXJSTgyM3Bg4DAMHIbF+ScWHMcsmMcP44g7gsPiRXFQCxx+QZg+PjisPji8vXHYfHEEh2BabTjM0+c588/iU6/NSrYxTfCzWfC3eRFgs+DvXfHrAG8v/L0tzuU2L3ytRrO4VGKaJgXFJtkFxZwsLHb9ebLQwcmCUwGnsJjsAsep5cWnljvIr8VseoGnenTOvGzVWkFH6pFCkEgjZ/MyaBXoTavAyic1zLc7TgUje9nLbjlFpJz6s+Ask4uUjE+KzzhzfNLRKrTQF+gM4Z0hvErfUln2U18AJ/KAinu06pvFAP+S8ORtKfO6JCg5Q5MX/jbLqW08F6QcpkluoaNUaDkVZFyhpWyYyS4oPtWL48DuqJ8BwYFlLl0p6IjnKQSJNAO+VgttW/jQtkXFl5lKngt0ZkAqfdktLbeoTidh84SSedxq8jveYZaEQQfk1Pz8zh6nU0HpzNenQlPgqWX+p3qkAry9yPfO4UByLtkFdleYcfXSFJwOOyUh52Sho9qXnWrCaoEgby8Cfbxcfwae+h6CvL2IDDwddoIVdKSBUQgSEQzDIMjHOX9Ix1DfCrcpGZ+UcupSW1quHR//QE5mZ2MY4GUYWAznJbyyfzqPX7LMq4JtjFKvvQwDw2HHknvy1FcORm42lpQkjAO7sBw9hAUHFtOBxTSxmA4Mmw2vISPxGnkFXmHhruOUPYczAZmmSWGxSW6Rg5yiYnILHZW+zilykOt6XUzOqfW5RcU1eo6Sw4TsQsdZL09W7kAN9qk6X6uFIG/LqRDj/AryOR1mToccS6n1Xvh4NY/LhNI0KQSJSJWUHp/UHT83zF1T8e30ZvYJ54NiN/+MufFHcDigEPj+M1i+ACKioFVrjMho591nrdtBu07gHwA4w5CP1cDHaiHE1wtOZICvtVq371c1SDlDU9nwVNsgdTYGzktOAacCyukAY3GFFmeAsZQJNgHeXh6buVzEkxSCRKRRMYJaYAwaAYNGYKbeirn0C8wfv4PCQjAdkHwUko+6LgW54llkNEb7zhDdFtJTMZMOQ9IRyMtxdkV164Mx+BKMARdhBASevQ2lglRoDZ+AXVGQyilykFtY7OqBOh2YHPj5+WEtLjwj5FjKhB1/b0uDmAlYpLFQCBKRRssIb4Vx0z2Y46dgLv8a89ef4fjRsvMWlUhOwkxOqvhApgm7t2Lu3oo5923oc4FzHiP/QPAPwPAPhJCWztv362heo+oEKc0YLVI/FIJEpNEzglpgXH0TXH2TMyScSIfjRzGPJ8LhBMyD++BIAhSdMQ1AWISzZyjluLMHCcBud15q2/yzazNX7PDxg649MXqch9G9L7TvhGHRYF+RxkohSESaFMMwnL02IS2dQeUUs7gYkg47Z7IObQlRbTF8nXMvmaYJB/dh/rwKc/0PznFCFSnIg22bMLdtcgYj/wDocR5Gz37O56dFRGuQsEgjohAkIs2C4eUFbWOcX2euMwznozxiumJOvgMOJ0D2Cczck5B7EnJOwtHDmLu3OnuZSuTmwKafMDf95AxFYeHQvjNG244Y7WKgbUcIj1RvkUgDpRAkIlKKYfGCDp2dr89YZ5omHEvE3L0Fc+cW2LXFGZJKpKc6B11v/vn0JTSLBVqEQYjzywgNd15Gi+kK0W0VkEQ8qMGGoKKiIubNm8cPP/zAyZMn6dChA1OmTOG88847574//vgjCxcu5MiRI/j6+jJw4ECmTp1KcLCeYC0iNWcYhjO4RLeFkVdiOorhcDzmjl8xd26GA7uh4IyH2TockJHq/IKyd635+EKHzhjdz8MYMQYjJMyN342INNgQ9NZbb/Hzzz9z5ZVXEh0dzcqVK3nppZeYPn06PXr0qHS/pUuX8u6779K3b19uvfVW0tLSWLx4MQcOHOCFF17A27vyRwuIiFSHs9eoC0aHLjB2EqbDAanHnIOxj8RjHkmA9BTITHc+VPbMO7sK8mHPdsw92zG/+RRj0HCM0VdjtO/kke9HpLlpkCFo3759rF27lptvvpkJEyYAMGLECP74xz/y0Ucf8be//a3C/ex2Ox9//DE9e/bkqaeecg1Q7N69OzNmzOD7779n7Nixbvs+RKR5MSwWiGwNka0xLriozDrTboesDOet+gl7MRP2QsI+SEt2blBsx/xpBeZPK6BLLwgIdI5FOjUm6ai3jeKQlhhhEdAyElpGgK8/hs0bbDaweUNoS4zI1h74zkUapwYZgtatW4fFYmH06NGuZd7e3lx22WV8/PHHpKamEh5e/kmMhw4dIicnh4suuqjMHRoXXHABvr6+rF27ViFIRDzCsFqdt+SHRWD0OH1Z30xPwVy5GHPVktPji/btKLd/MUDK8XLPAys3a9B5F2KZeDNG245lt7PbYedmzPRUjEEjMPz8a/stiTR6DTIExcfHEx0djb9/2X+kXbp0ASAhIaHCEGS3Ox81XdElL29vb+Lj43E4HFgslnpotYhI9RlhERjX3op51fWYPy3HXLYIjiee3sDbBwICsRQX48jKPPcBt6zHsXWDM+hMuAnycpw9THGrnZfkAHNxLJY7/lBmCgGR5qhBhqDMzExCQ0PLLS9ZlpFR8RweUVFRGIbB7t27ufTSS13Ljx49SlZWFgA5OTkEBQVVuH9RURFFRUWu94Zh4Ofn53pdUyX7av6Q+qdau49qXbcMXz+49CrMS8Y6xxFZbRAQiGHzxjAMoqKiSDqYgJmajJl23HknWmEBFBViFhVBQR7m+jXOAdim6Zzz6OdVFZ8sLRnHq09hjL4ay7W3OC+pCaDPtTs1hFo3yBBUWFiIzWYrt7xkWWFhYbl1AMHBwQwdOpRVq1bRpk0bBg0aRHp6Ou+//z5eXl4UFxdXui/AggULiI2Ndb3v2LEjM2bMICIiopbfkVNUVFSdHEfOTbV2H9W6HrRpU+Hi6A4x0CGm0t3MwgJOfv0pWfM/wJF1ouxKmzd+g0fgyEynYNsmZ1D67guM3VsI/M3VFKenYk85RnHKcRwnT2BpEYpXSEu8QlviFRaOaTpwZJ3AcSKD4hMZUFSE74XDCLzyOiynHk7blOhz7T6erHWDDEHe3t5lemRKlCw72x1ed999N4WFhfzf//0f//d//wfA8OHDadWqFXFxcfj6+la678SJExk3bpzrfUk6TUlJcV1qq4mS/8UdO3ZMz/2pZ6q1+6jW7lOtWg8ZhdFvKMbSLzDXLIXwKCxDL8UYOIwi/0BMhwPLsoU4Pv8Q7EXYDx0g893Xyx/nyMFztqtg2yZOzP8vltETMEaNcz5jrZHT59p96rPWVqu1Sh0YDTIEhYSEkJ6eXm55yWWwii6VlfD39+fPf/4zqampJCcnExERQUREBE899RTBwcEEBFT+PxabzVZhDxRQJ39BpmnqH5WbqNbuo1q7T5Vr7euHZcKNMOHGcvtjGBiXX42lV38c770Gh+PL7+/j53xESFXkZOP4cg4sXYAxYCh42QDz9HQAUW0xOvdwzqRdyc/Xhkifa/fxZK0bZAiKiYlh+/bt5ObmlhkcvXfvXtf6cwkPD3cNns7JyeHAgQMMHjy4XtorItLYGG06YHnyFdi6ETMvFyMs3Hn3WmhLDJs3ZlGh8xlqJV8WAwJbQFALCAqGE5mYiz91jjtyOCAvF/PH7ys8lwnOMU4dOmN06u6cMbtdZ4hq43yciYiHNMgQNGTIEBYtWsSyZctc8wQVFRWxcuVKunbt6go3qampFBQU0KaS6+cl5s6dS3FxMVdddVW9t11EpLEwrDY4f0i5x4MAzsHS4a2cXxXxD8S482HMcVMwl3yGuXY5FJ9l2IC9CPbvwty/CzgVjGze0DYGI7wVtAiF4BAIDsVoGQGdezaqniNpnBpkCOratStDhgzh448/Jisri6ioKFatWkVKSgr33nuva7uZM2eyY8cO5s+f71r2xRdfcOjQIbp27YqXlxfr16/n119/ZcqUKa5b7EVEpG4YkdEYtz6Iee2tkJYChuHsNTIszjvXEvbBgVPhJzmp7M5FhRC/BzN+T5nFzkeK+GH0GQD9B2P0HYgR0PjHG0nD0yBDEMCDDz7IvHnzWL16NTk5ObRv357HHnuMXr16nXW/9u3bExcXx8aNG3E4HLRv356HH36YoUOHuqnlIiLNjxEYDIHln89oxHSFkc5Jas2sTDi4H/PQfucz1w4fKB+MShTkYW78ETb+iOnl5bxU5+3j/LJ5g6+fswcpMhojMhoioqFlpHqPpFoMUyO/ziklJaXCu9WqyjAMoqOjSUpK0kC7eqZau49q7T5NudZmQT6cSIesTOc4oxPpkLAPc+t6OJld/QP6B0Cw89KaERIGnXpg9OrnHKB96o5f01EMB3ZjbtmAeWA3BAZhtGoDka2xRLUhqv9Ajp/MaXK1bmjq83Nts9ka791hIiLSPBg+vq7nrQGu8UlmcTHs24m5+WfMbRuds10XFcBZ5noDIDfH+XXsiPOyWtxq558hYRg9+4HDgbl9U7mAVfIruBhINAzo1N15Ga7fIGjTQZMnNlEKQSIi0uAYXl7QvQ9G9z5ww29dy03TdA6yzjkJKccwk486L6klJ2FmpjnvZMvKhIL8sgfMTHc+nLYqTNM1iNv84iPnZbZBwzEuG4cR0rLuvknxOIUgERFpNAzDcI4JCglz9u50rXicqJmfB8lHMXdtwdz5K+zZ7nzMCICfP/Tqj3HehRi9+juXHz+KefwoHE/EK3439oMHTh8sLRlz8WeYS7/EGHIJxuUTMdq0x8xIw9y2EXPbJtj1K+SdMbeSzQptYpzjomK6YnTsCq3aYOj5lQ2GQpCIiDQ5hq+fc4LG9p3hNxOdz1dLcM41R8euzukBSotsjdH39DiVo1t+wfHreswtcbB7m/P2/2I75o/fO+dDioiClGNnb0Rh2bvfTHD2Kl17K8aFw3WJrQFQCBIRkSbPsNmgkl6jCrePiMIyahyMGoeZmY65fBHmyiWQl+Pc4MwAFBDkDEal5Z4sf/dbWjLmO69grvgGy5TfYXTo7FplFhTAkXjnpbv8XMjPg7xcZ09VeCuMtjHO8Uk+lT/+SapHIUhEROQsjJAwjGtvw7xyMuaa7zCXLYK0ZOjQxTl4us8AZ++Spfzs12buSefdbgl7Mbf/Anu2OVfs24HjhUcwBl/i3O7gfjiWCKaj0naY4JyHKSIao1M3jIsvh259KuxRMvPzoLhY8yudg0KQiIhIFRi+/hijr4bRV2Pa7RjWc/8KNfwDneOPevXHHHsdbN2AY957kHwUTBNz3crqNcI0nWOdko86923TAePSqzCGjIS8HMzNcZi//gy7toDdDr3PxzL+Rufz26QchSAREZFqqkoAKrePYcB5F2Lp1R9z+VeYX81zXu4C8LJCm/bOMUyRrZ2Dt/38MXz9wcsL83iic4LJIwlw9JBztm2AxIOYH83CnP/e6YHfpW3/Bcf2X6DX+VjGT8Ho0rNabTZN0zkeysvaJMcwKQSJiIi4kWG1YfxmIubQURC/23mnW+v25Qdrl96nzwDXa9NehLlxLeaKr+HUs9jKBaDQcOels/QU5/sdv+DY8Ytz5u2AQPAPBP8AjOAQ57F7D3A+L67kHEVFmHGrML/7EhIPQnQ7jEEjMAZfgnHm2KdGTCFIRETEA4ygYDjvwurvZ7U5xxINvgTz4D7M5V9jbt0ALUIx+g/G6D8Y2neG4mLMn5ZjfvMppB537pyecjoY4RxnZK5a4nwMSf/BGAMuwkxMwFzxjXO+pRJJhzG/nIP55RznRJLnXegcrB0aDmHhENKyRr1jntb4WiwiIiIAGB26YNzxh4pXWq0Yw3+DOfQyzJ9XOoNNeopzRu1ie9lt8/Mw162seIxSeKvTIQqcjxw5sBs4PdM2huF8XEmYMxQZYRHg4wsnsyA7C/NkFuRkg9XmvNTnH4DhF0BGRCSOiNYYFw6vbSlqRCFIRESkCTOsVoxho2HYaODUOJ/CAues20fiMTf8iLn559O3/wMYFowBQzEuvxqjcw/MtGTMuB8wf17pvDx2JtN0PgPuRLpzbqQqtMsETgLG4JEKQSIiIlL/DMNw9tL4+Dp7bc670DmZ5I7NmNs3gl8gxvDLMcJbnd6nZSTG2EkwdhJm0mHngOz0VMhIdf1JeqozBFXGaoXiYmdgKs3fv56+03NTCBIREWnmDJsN+l2I0e/cY5SM6HbOgdIVrDPtRZCR5rzsVlgIgcEQFAxBLcDbxxmACvIhNwcjP5eW/n6kFRbV/TdURQpBIiIiUicMq805c3Zld5AZxunb/w0Dn+hojKQk5yU6D9BT3ERERKRZUggSERGRZkkhSERERJolhSARERFplhSCREREpFlSCBIREZFmSSFIREREmiWFIBEREWmWFIJERESkWVIIEhERkWZJIUhERESaJYUgERERaZYUgkRERKRZ0lPkq8BqrZsy1dVx5NxUa/dRrd1HtXYf1dp96qPWVT2mYXrq+fUiIiIiHqTLYW6Ql5fHY489Rl5enqeb0uSp1u6jWruPau0+qrX7NIRaKwS5gWmaxMfHo063+qdau49q7T6qtfuo1u7TEGqtECQiIiLNkkKQiIiINEsKQW5gs9m47rrrsNlsnm5Kk6dau49q7T6qtfuo1u7TEGqtu8NERESkWVJPkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiIiLNkh6OUo+KioqYN28eP/zwAydPnqRDhw5MmTKF8847z9NNa7T27dvHqlWr2L59OykpKQQGBtK1a1emTJlC69aty2x75MgR/ve//7Fr1y6sVisDBgzgtttuIzg42EOtb9w+//xzPvnkE9q1a8err75aZt3u3bv56KOPiI+Px8/Pj6FDh3LTTTfh6+vrodY2TgcOHODTTz9l165dFBUV0apVK0aNGsWVV17p2ka1rr2kpCTmzZvHrl27OHnyJOHh4Vx88cWMHz8eHx8f13aqddXl5+ezcOFC9u7dy759+8jJyeH+++9n5MiR5bat6s9mh8PBokWLWLp0KZmZmURHR3PNNddw8cUX11m7FYLq0VtvvcXPP//MlVdeSXR0NCtXruSll15i+vTp9OjRw9PNa5S+/PJLdu/ezZAhQ+jQoQOZmZksWbKExx57jBdeeIH27dsDkJaWxvTp0/H39+fGG28kPz+fRYsWcejQIV566SU9HLGa0tLSWLBgQZlfECUSEhJ47rnnaNu2Lbfeeivp6eksWrSIY8eO8eSTT3qgtY3Tr7/+yowZM+jYsSOTJk3C19eX48ePk56e7tpGta691NRUnnzySfz9/bniiisIDAxkz549zJ8/nwMHDvDnP/8ZUK2rKysri9jYWMLDw4mJiWH79u0Vbledn82ffPIJX3zxBaNGjaJz585s2LCBN998E8MwGDZsWN003JR6sXfvXnPy5Mnml19+6VpWUFBgPvjgg+Zf/vIXD7ascdu1a5dZVFRUZtnRo0fNm266yXzjjTdcy9555x1z6tSpZkpKimvZr7/+ak6ePNn87rvv3NbepuL11183n332WXP69OnmI488Umbdiy++aN59991mTk6Oa9myZcvMyZMnm5s3b3Z3UxulnJwc86677jJffvlls7i4uNLtVOva++yzz8zJkyebhw4dKrP8X//6lzl58mQzOzvbNE3VuroKCwvNjIwM0zRNc9++febkyZPNFStWlNuuqj+b09LSzClTppjvvvuua5nD4TD/+te/mvfee+9Z/51Uh8YE1ZN169ZhsVgYPXq0a5m3tzeXXXYZe/bsITU11YOta7y6d+9erhcnOjqatm3bkpiY6Fr2888/M2DAAMLDw13LzjvvPKKjo/npp5/c1t6mYMeOHaxbt47bb7+93Lrc3Fy2bNnC8OHD8ff3dy2/5JJL8PX1Va2raM2aNZw4cYIpU6ZgsVjIz8/H4XCU2Ua1rhslD+ts0aJFmeWhoaEYhoHValWta8BmsxESEnLO7ar6s3n9+vUUFxczZswY1zLDMLj88stJS0tjz549ddJuhaB6Eh8fT3R0dJl/QABdunQBnF2tUjdM0+TEiROu68np6emcOHGCzp07l9u2S5cuxMfHu7uJjZbD4eCDDz7gsssuc11qLO3QoUMUFxfTqVOnMsutVisxMTGqdRVt3boVPz8/0tPT+cMf/sCtt97KbbfdxjvvvENhYSGgWteV3r17A/D222+TkJBAamoqa9euZenSpYwdOxZfX1/Vup5U52dzfHw8Pj4+tGnTptx2JevrggZG1JPMzExCQ0PLLS9ZlpGR4e4mNVk//PAD6enpXH/99cDp2lZW/5MnT1JUVKRp8atg6dKlpKSk8PTTT1e4PjMzE6i41iEhIezatas+m9dkHDt2DIfDwcsvv8yll17KTTfdxPbt21myZAk5OTk89NBDqnUd6d+/PzfccAMLFixgw4YNruXXXnstU6ZMAfS5ri/V+dmcmZlJSEgIhmGU2670sWpLIaieFBYWVvhLtmRZyf/upHYSExN577336Natm+suhJLaVjT4uXT9FYLOLjs7m/nz5zNp0qRK76grqXVFtfT29tbnvIry8/MpKCjg8ssv58477wRg8ODB2O12li1bxg033KBa16GIiAh69uzJ4MGDCQoKYtOmTSxYsICQkBCuuOIK1bqeVOdnc2Fh4Tm3qwsKQfXE29uboqKicstLlnl7e7u7SU1OZmYmf//73/H39+eRRx7BYnFe3S2prd1uL7eP6l91n3zyCYGBgYwdO7bSbUrqWNFnvbCwUHWuopI6nXnHy8UXX8yyZcvYs2eP68481bp2fvzxR2bPns0bb7xBy5YtAWfgNE2TOXPmMGzYMH2u60l1fjZ7e3u75We4xgTVk5CQkAq7687WHShVl5uby4svvkhOTg5/+ctfCAsLc607W3dpRkYGgYGB6gU6h6SkJJYtW8bYsWNJT08nOTmZ5ORkioqKsNvtJCcnc/LkSddAyIpqXdklYSmvpE5nDiwtGbybk5OjWteRpUuX0rFjR1cAKjFw4EAKCgqIj49XretJdX42h4SEkJmZiXnGM97r+neoQlA9iYmJISkpidzc3DLL9+7d61ovNVNYWMiMGTNISkri8ccfp23btmXWh4WFERwczP79+8vtu2/fPtW+CtLT0zFNkw8++IAHH3zQ9bV3716SkpJ48MEHiY2NpX379nh5eXHgwIEy+9vtdhISElTrKioZgFt6TiA4/QM/ODhYta4jmZmZ5e68g9O9Ew6HQ7WuJ9X52RwTE0NBQUGZu35LtitZXxcUgurJkCFDcDgcLFu2zLWsqKiIlStX0rVr1zK3B0rVORwO/vnPf7Jnzx4efvhhunXrVuF2gwcPZtOmTWWmIti6dStJSUkMGTLEXc1ttNq1a8ejjz5a7qtdu3aEh4fz6KOPctlll+Hv70/fvn354YcfXLceA6xevZr8/HyGDh3qwe+i8Sip0/Lly8ss//777/Hy8qJXr16qdR2Jjo4mPj6eo0ePlln+448/YhgG7du3V63rUVV/Nl944YV4eXnx7bffupaZpsl3331HWFgY3bt3r5P2aExQPenatStDhgzh448/Jisri6ioKFatWkVKSgr33nuvp5vXaH344Yds2LCBCy64gJMnT7J69eoy60eMGAHAxIkTWbduHc8++yxXXnmla0r39u3bc+mll3qi6Y1KcHAwgwYNKrf8m2++ASizbsqUKTz99NM888wzjBo1yjWzbr9+/ejfv7+7mtyodezYkUsvvZQVK1ZQXFxMr1692L59O+vWreOaa65xXe5VrWtvwoQJbN68menTpzNmzBjXwOhffvmFyy67TLWuhZK7GUt6MDds2EBaWhoAY8eOxd/fv8o/m1u2bMlVV13FwoULKS4upnPnzqxfv56dO3cybdo01xjQ2jLMMy+4SZ0pLCx0PTssJyeH9u3bc8MNN+gfUC0888wz7Nixo9L18+fPd70+fPgwH374oev5NOeffz633nprlSb0koo988wzZGdnl3t22K5du5gzZw4HDhwo84wlPz8/D7W08bHb7SxYsICVK1eSnp5OREQEY8aM4aqrriqznWpde/v27ePTTz8lPj6e7OxsIiMjueSSS7j66qvx8vJybadaV88DDzxASkpKhetmzpxJZGQkUPWfzQ6Hgy+//JJly5aRkZHhenbY8OHD66zNCkEiIiLSLGlMkIiIiDRLCkEiIiLSLCkEiYiISLOkECQiIiLNkkKQiIiINEsKQSIiItIsKQSJiIhIs6QQJCIiIs2SHpshIvXubDPJlnb//fczcuTI+m9QHbj++uuBsrOUi0jjohAkIm7TvXt3oqKiKl1/tnUiInVNIUhE3GbUqFGNpqdHRJo+jQkSERGRZkk9QSLSIJUec7Ns2TK+++47jh49ipeXF927d2fSpEl069atwn1PnjzJwoUL2bBhA8nJyVgsFqKjo7nooosYO3Ys3t7eFe6Xnp7O119/zebNm0lJScE0TcLCwujWrRujR4+me/fuFe63bt06vv76aw4dOoTD4SAmJoaJEycyYMCActtmZGTwxRdfsHnzZlJTUzEMg6CgIKKjo+nfvz8TJkyoYcVEpLoUgkSkQfvf//7H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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.style.use(\"ggplot\")\n", - "plt.title(\"Learning Curves\", fontsize=20)\n", - "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color=\"C0\", linewidth=2.0, label=\"Train\")\n", - "plt.plot(\n", - " np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),\n", - " val_epoch_losses,\n", - " color=\"C1\",\n", - " linewidth=2.0,\n", - " label=\"Validation\",\n", - ")\n", - "plt.yticks(fontsize=12)\n", - "plt.xticks(fontsize=12)\n", - "plt.xlabel(\"Epochs\", fontsize=16)\n", - "plt.ylabel(\"Loss\", fontsize=16)\n", - "plt.legend(prop={\"size\": 14})\n", - "plt.show()" - ] - }, { "cell_type": "markdown", "id": "29a35d4b", @@ -1132,7 +1264,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 48, "id": "aa3938fe", "metadata": {}, "outputs": [ @@ -1140,17 +1272,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-07 17:39:35,982 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-07 17:39:35,982 - INFO - File exists: /tmp/tmpma12lzmd/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-07 17:39:35,983 - INFO - Non-empty folder exists in /tmp/tmpma12lzmd/MedNIST, skipped extracting.\n" + "2023-03-11 08:55:12,377 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 08:55:12,377 - INFO - File exists: /tmp/tmpaurm48lm/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-11 08:55:12,378 - INFO - Non-empty folder exists in /tmp/tmpaurm48lm/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3067.09it/s]\n", - "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:02<00:00, 5.99it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3459.41it/s]\n", + "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:09<00:00, 1.75it/s]\n" ] } ], @@ -1183,12 +1315,12 @@ "id": "19541717", "metadata": {}, "source": [ - "We will use the other classes of the dataset for the out-of-distribution examples." + "We will use the \"ChestCT\" class of the dataset for the out-of-distribution examples." ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 65, "id": "f3e714ee", "metadata": {}, "outputs": [ @@ -1196,27 +1328,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "out-of-distribution data: 14%|██████▊ | 11/76 [00:02<00:12, 5.20it/s]\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[25], line 12\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step, batch \u001b[38;5;129;01min\u001b[39;00m progress_bar:\n\u001b[1;32m 10\u001b[0m images \u001b[38;5;241m=\u001b[39m batch[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimage\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[0;32m---> 12\u001b[0m log_likelihood \u001b[38;5;241m=\u001b[39m \u001b[43minferer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_likelihood\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mimages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvqvae_model\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mvqvae_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransformer_model\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtransformer_model\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mordering\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mordering\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m ood_likelihoods\u001b[38;5;241m.\u001b[39mappend(log_likelihood\u001b[38;5;241m.\u001b[39msum(dim\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m))\u001b[38;5;241m.\u001b[39mcpu()\u001b[38;5;241m.\u001b[39mnumpy())\n\u001b[1;32m 17\u001b[0m ood_likelihoods \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mconcatenate(ood_likelihoods)\n", - "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/torch/autograd/grad_mode.py:27\u001b[0m, in \u001b[0;36m_DecoratorContextManager.__call__..decorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecorate_context\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclone():\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/generative/inferers/inferer.py:609\u001b[0m, in \u001b[0;36mVQVAETransformerInferer.get_likelihood\u001b[0;34m(self, inputs, vqvae_model, transformer_model, ordering, condition, resample_latent_likelihoods, resample_interpolation_mode, verbose)\u001b[0m\n\u001b[1;32m 606\u001b[0m probs \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mlog(probs)\n\u001b[1;32m 608\u001b[0m \u001b[38;5;66;03m# reshape\u001b[39;00m\n\u001b[0;32m--> 609\u001b[0m probs \u001b[38;5;241m=\u001b[39m \u001b[43mprobs\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mordering\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_revert_sequence_ordering\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 610\u001b[0m probs_reshaped \u001b[38;5;241m=\u001b[39m probs\u001b[38;5;241m.\u001b[39mreshape((inputs\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m],) \u001b[38;5;241m+\u001b[39m latent_spatial_dim)\n\u001b[1;32m 611\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m resample_latent_likelihoods:\n", - "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/monai/data/meta_tensor.py:276\u001b[0m, in \u001b[0;36mMetaTensor.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m kwargs \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 275\u001b[0m kwargs \u001b[38;5;241m=\u001b[39m {}\n\u001b[0;32m--> 276\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__torch_function__\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfunc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtypes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 277\u001b[0m \u001b[38;5;66;03m# if `out` has been used as argument, metadata is not copied, nothing to do.\u001b[39;00m\n\u001b[1;32m 278\u001b[0m \u001b[38;5;66;03m# if \"out\" in kwargs:\u001b[39;00m\n\u001b[1;32m 279\u001b[0m \u001b[38;5;66;03m# return ret\u001b[39;00m\n\u001b[1;32m 280\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _not_requiring_metadata(ret):\n", - "File \u001b[0;32m/media/walter/Storage/Projects/GenerativeModels/venv/lib/python3.10/site-packages/torch/_tensor.py:1279\u001b[0m, in \u001b[0;36mTensor.__torch_function__\u001b[0;34m(cls, func, types, args, kwargs)\u001b[0m\n\u001b[1;32m 1276\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mNotImplemented\u001b[39m\n\u001b[1;32m 1278\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m _C\u001b[38;5;241m.\u001b[39mDisableTorchFunction():\n\u001b[0;32m-> 1279\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1280\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m func \u001b[38;5;129;01min\u001b[39;00m get_default_nowrap_functions():\n\u001b[1;32m 1281\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + "out-of-distribution data: 100%|███████████████████████████████████████████████| 16/16 [00:09<00:00, 1.71it/s]\n" ] } ], "source": [ - "ood_datalist = [{\"image\": item[\"image\"]} for item in test_data.data if item[\"class_name\"] != \"HeadCT\"]\n", + "ood_datalist = [{\"image\": item[\"image\"]} for item in test_data.data if item[\"class_name\"] == \"ChestCT\"]\n", "ood_ds = Dataset(data=ood_datalist, transform=val_transforms)\n", "ood_loader = DataLoader(ood_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True)\n", "\n", @@ -1247,7 +1364,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 66, "id": "cd456a7c", "metadata": {}, "outputs": [ @@ -1257,13 +1374,13 @@ "Text(0.5, 0, 'Log-likelihood')" ] }, - "execution_count": 30, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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LiQpKclbZsuWLRw8eJDTp0+j0+l48803W1ynvLycvLw8jh49SkhICF//+td56KGH0GrlH96ZM2eYNWsWaWlprF27lgEDBnD8+HFWrFjBv/71L/Lz84mNjeXAgQPMmzePyZMns2HDBhISEjh06BC//OUvKSgo4I9//CMGg8F73qVLlzJ//nwcDgfnzp1jy5YtzJs3j+eff54f/ehHAbxjIXqnYz14kHqTpqDqkk1+t4uO61RQ1a9fP375y1/y5ptvereiyc/PB+CWW27h8ccfx2Qytft8u3fvZsOGDSxatIiMjAz+9re/8fLLL7NmzRqio6NblD9+/Di5ubk89NBDZGVlUVBQwKpVq1i5ciUDBgwA4C9/+Qtbt27lySefxGQysWnTJl5++WVWr17t/QB3Op2MHz+ewYMH869//avFddxuN6+88goxMTGsWLGCqqoqXn/9dbRaLQ899FCH2609VFXF7Wps9ppGceFydv0vM43WiKK0fzrx8uXL0ev1bNy4kdDQUADMZjPDhw9nwoQJrFy5kldeeYWlS5eSkZHBunXrvHtEJicnk5aWxtSpU8nLy+PJJ5/0njciIsL7/JjNZsaPH4/JZCInJ4cZM2bcMNgWQviWqsLRCs/vzFviem5QlSSZKtEJnQqqAPr378/PfvYzrFYrly5dQlVV+vbtS1RUVIfP9de//pW77rqLO++8E4BFixZx8OBBtm3bxr333tui/HvvvceoUaOYNWsWAPPmzePzzz/n/fff54knnkBVVd577z3mzJnDmDFjAHjqqadYtGgR+/fvZ+LEiQA88MADANdd/uGzzz7j/Pnz/OxnPyMmJoaUlBS++93v8vvf/54HHngAna7TzdiC29XI53+f23bBLjBi6h/R6kLaVbaqqort27eTnZ3tDaiamEwm5syZQ35+PgsWLKCwsJC1a9e22HQ7MzOTyZMn8+677zYLqlrz+OOPs2bNGj744AMJqoTwo8v1WsobtGgVlaG9oPuvrF6L0w26HrbAqehaNx0NOBwOdu7cyWeffcbly5epr68nNDSUxMRERo0axaRJkzoUbDidTk6dOtUseNJoNIwYMYLCwsJW31NYWMjMmTObvTZy5Ej2798PQGlpKRaLhVtvvdV7PCwsjPT0dAoLC71BVVsKCwsZMGAAMTEx3tdGjRrFunXrOHfuHKmpqa2+z+Fw4HBc/eWjKIo38OhIJiiYFRcXo6oqGRkZrR5PT0/HYrFw8uRJ7/etycjIaNdCsbGxscTHx3Pu3Lmbr3Qv0N2er6b6drd6d1c3095HKz1ZqowYB6F6gJ75s+oTqqLXqDjcCuUNOpLCW44Z7ih5vv0rkO19U0HV2bNn+T//5/9QVlYGeAKVkJAQampqKC4u5uOPP2bLli0sW7aM5OTkdp2zpqYGt9vdLHABiImJ4cKFC62+x2KxtOgWjI6OxmKxeI83vXa9Mu1hsVha1KvpnDc6zzvvvMOf/vQn7/epqamsXLmShISEFmXr6+vR6/Xe73U6HVkz3213HX2pI91/TYGzRqNpVv8mTWPOmsrpdLpWy2k0GhRF8R5TFAWtVttqWVVVr3vM1/xxDV8zGAzNxgx2J4mJiYGuQq/SkfYuLvL8d2z/7vt8tVe/SDhTDc5QE768VXm+/SsQ7d3hoKqhoYGVK1dSU1PDgw8+yJQpU4iLi/Mer6ys5KOPPmLLli2sXLmSVatWERLSvq6knua+++5rlklrClTKyspwOpuv8WK325tltTya9+nr9fpWyvie29n+9WeSk5NRFIVjx47x7W9/u8Xx48ePExMTw8CBAwH48ssvGTp0aKvlUlNTvfenqioul6vF/VZWVlJRUUFycnKXt4W/2tvX7HY7Fy9eDHQ1OkRRFBITE71DCETXupn23ne2D2AgNdTCxYv1bZbvzuKNcZzByJFzFvprOn+v8nz7V1e0t06nazUh0qJcR0+8bds2ysvLeemll8jMzGxxPC4ujvvuu4+MjAx+9atfsX37dqZNm9bmeaOiotBoNC0yP61liZrExMRQXV3d7LXq6mpv+ab/VldXExsb26xMSkpKm3W69jpNexpee45rr9EavV5/3UxHT/mHFRcXx5QpU3jrrbdYtGhRs3FVpaWlbNmyhfvvv5/MzEzS09PJy8tj9uzZzcZVHT16lJ07d/LCCy+0eb3169ej0WhaXcFfXNVdny9VVbtt3buj9ra33XV15l9mXGOP/xl516qyaXx6r/J8+1cg2rvDQ/AOHjzIyJEjWw2orjV8+HBuvfVWDhw40K7z6nQ60tLSOHLkiPc1t9vNkSNHGDx4cKvvGTx4MJ9//nmz1w4fPuwd32MymYiJiWlWpq6ujhMnTlz3nNe7ztmzZ5sFcIcPHyY0NLTd3Zs92YoVK7Db7cyfP589e/ZQUlLCtm3bePDBB0lMTCQ7OxtFUcjJyaGwsJBFixZx6NAhSkpKyM/P59FHH2X06NEsXLiw2XmtViulpaWUlJSwZ88eli1bRm5uLtnZ2dcdxyaE8L0iix6HWyHG4CLZB2OMgp2sVSVuVoeDqrNnz3LLLbe0q+zw4cM5e/Zsu889c+ZMPvzwQ7Zv38758+dZt24djY2N3HHHHQC8/vrrbNy40Vt++vTpfPbZZ+Tn51NSUsLmzZs5efKkNzOmKArTp09ny5YtfPLJJ5w9e5bXX3+d2NhY72xA8KxBdfr0acrLy3G73Zw+fZrTp097V4sfOXIkycnJvP7665w+fZpPP/2Ut99+m6lTp3bLMTe+lpaWxtatWxkwYABLlixh4sSJLFu2jAkTJvC///u/3izhmDFjyM/PR6PRsGDBAiZOnMirr77K3LlzefvttzEajc3Om5OTw2233cakSZN45plnqKmpYdOmTW3OEBRC+NbhK0spZPZx0BvGWveVVdXFTepw95/Var1hl9e1oqOjsVqt7T73hAkTqKmpYfPmzVgsFlJSUnjxxRe91ysvL282gHrIkCE888wzvP322/zhD38gKSmJ559/3rtGFcDs2bNpbGzkjTfeoK6ujqFDh/Liiy82W2Ry06ZNfPTRR97vly1bBsDPf/5zMjMz0Wg0/OQnP2HdunX89Kc/xWg08vWvf53vfve77b63ni45OZk1a9a0WW7YsGHk5eW1WW7v3r0+qJUQwhcOlHr+4LktobGNkj1D0/5/kqkSHdXhoMrpdLZ7qQStVttiQHZbpk2bdt0xWL/4xS9avPa1r33thps6K4rCd7/73RsGQE8++WSb2Y+EhIR2jfkRQoiexOmGQ2WeP0JvN9kDXBv/SLym+09V6RXZOeEbN7WkQmlpKadOnWpXOSGEEN3XcYueOqeGSL2b9B68Pc21TFeCqjqnhhqHQrRBBpeL9rmpoGrTpk3ebWmEEEL0XAev6frT9pKMTYgWYo0uqhq1XK7TEm3oWI+L6L06HFT94Ac/6Ip6CCGECEIHSj1df1m9pOuvSWLY1aBqcIwEVaJ9OhxUNc3EE0II0bM53XC43BNUje4lg9SbJIa5+LIKLtl0QO+6d3HzZKtIIYQQrfq03EC9S0Os0UVadO/K1siyCuJmSFAlhBCiVbsueLYYm5DUiKaXjKdqIkGVuBkSVAkhhGhBVaHgoieompTUEODa+F9iuKyqLjpOgiohhBAtnKnVcd6qQ69RGdO3940pSpStasRNkKBKCCFEC7suepZSyEpoJFzf+9Zpagqqyhu02Hv+dofCRySoEj5RUlLCc889R1ZWFikpKYwdO5aXXnqJysrKZuWOHz/O4sWLGTFiBKmpqUyaNIlVq1ZRX1/frNy4ceMwm82YzWYGDRrEuHHjWLx4MQUFBf68LSF6rYIr46km9ut9XX8A0QY3Rq0bgNJ6yVaJ9pGgSnTamTNnmD59OsXFxaxdu5Zdu3bx6quvUlBQwKxZs6iqqgLgwIEDzJw5E4fDwYYNG9i5cyfZ2dls3ryZefPmYbc3Xwdn6dKlHDp0iB07dpCbm0t0dDTz5s0jNzc3ELcpRK9xqU7Lp+WeTNWUXhpUKYoMVhcdd1Mrqouup6oqOJuPY1BxoTr8sE2Ezths4+q2LF++HL1ez8aNGwkNDQXAbDYzfPhwJkyYwMqVK3nllVdYunQpGRkZrFu3Do3GE88nJyeTlpbG1KlTycvLa7YHY0REBCaTyXu+8ePHYzKZyMnJYcaMGaSnp/vwpoUQTf5x1vPvOCuhkb5h7gDXJnCSwlycrdVzwaYDetfip+LmSFAVrJyNuDbObfaSv7r1tQ/9EfQh7SpbVVXF9u3byc7O9gZUTUwmE3PmzCE/P58FCxZQWFjI2rVrvQFVk8zMTCZPnsy7777b5sbWjz/+OGvWrOGDDz6QoEqILqCq8P4Zz7/lqQPq2yjds5kjXHAZLtokUyXaR7r/RKcUFxejqioZGRmtHk9PT8disXDy5Env963JyMho1ybdsbGxxMfHc+7cuZuvtBDiuk5U6zhVo0evUbkzuXcHVUnhngVPL0hQJdpJMlXBSmf0ZIyuodfrcfip+6+jVNV/s4NUVe1Q96QQov3+ejoMgIlJDUQaet+sv2v1u7JWlaf7T4i2yZMSpBRFadEFp+j1KATXX0wpKSkoikJRURF33313i+MnTpwgJiaGQYMGAVBUVMTw4cNblCsqKiItLa3N61VWVlJRUcGAAQM6X3khRDM2h8Jfiz1B1ay0ugDXJvCagirp/hPtJd1/olPi4uKYMmUKb731VotlEUpLS9myZQv33HMPmZmZpKenk5eXh9vdfODr0aNH2blzJ/fee2+b11u/fj0ajYapU6f68jaEEHiyVHVODQMjHYzvhQt+flVT919Fg5YGp2THRdskqBKdtmLFCux2O/Pnz2fPnj2UlJSwbds2HnzwQRITE8nOzkZRFHJycigsLGTRokUcOnSIkpIS8vPzefTRRxk9ejQLFy5sdl6r1UppaSklJSXs2bOHZcuWkZubS3Z2NqmpqQG6WyF6JpcKfywKB+CBDBvSww5RepVwneePwIuyrIJoB+n+E52WlpbG1q1bycnJYcmSJVgsFhISEpg2bRrPPvsssbGxAIwZM4b8/HxWr17NggULsNlsmM1m5s6dy9NPP43R2HwsV05ODjk5ORgMBhISEsjKymLTpk1MnDgxELcpRI/2r3MhlNh0ROrd3D2wdw9Qb6Io0C/CRZFFwwWbltQoZ6CrJIKcBFXCJ5KTk1mzZk2b5YYNG0ZeXl6b5fbu3euDWgkh2sPhhjeORAEwb7CVUF3vHqB+rX7hToosepkBKNpFuv+EEKKXe/dUGCU2HXFGFw8OtgW6OkHl6mB1yUGItklQJYQQvVhlg4b1RyMBeDyzVrJUXyFrVYmOkKBKCCF6KVWFlQeiqbZrSY92MCtVllH4KlmrSnSEBFVCCNFLvXcmlB0XQtEpKi+NrUInnwgteIMqqxY/rnEsuin5JySEEL3Q/guw8pNoAB67pZaMGJnZ1pqm7j+bU0ONXdaZEDcmQZUQQvQyJ6t1LMoHu1thSr96Hh5mDXSVglaIFkyhnmzVeat0AYobk6BKCCF6kU/LDCz5Vx+qGmBYrJ1fjLOglQTMDSVHeLJVElSJtkhQJYQQvYBLhf/vWARPf9SHWoeG0UmwZkqlzPZrh6tBlcwAFDcmYbcQQvRgqgoFF42sPxrJcYsBgG8k1/Ofs0KxlKsy+LodkiOk+0+0jzwhQgjRA7lV2HEhhN99EUmRRQ9AmM7Nj0bVMCu1nlB9KJbAVrHbkO4/0V7yhAifKCkp4bXXXmP79u1UVlZiMpmYNm0aP/7xj4mLi/OWO378OKtXr2b37t1YrVbMZjOzZ8/mqaeeIjQ01Ftu3LhxnD9/HoCQkBDi4+MZNWoU3/ve95g0aZLf70+I7sKtwvaSEP7ni0hOVF8Npu5Pt/HgYBsxRjeK7JbcIdL9J9pLxlSJTjtz5gzTp0+nuLiYtWvXsmvXLl599VUKCgqYNWsWVVVVABw4cICZM2ficDjYsGEDO3fuJDs7m82bNzNv3jzsdnuz8y5dupRDhw6xY8cOcnNziY6OZt68eeTm5gbiNoUIai4V/nkuhO99kMDyj+M4Ua0nTOfm0WG1bJl+mR+MqCXG6A50Nbsl85XuP4tdS60sqyBuQDJVwUpVweH6ymuAww9ryei1nu3Z22n58uXo9Xo2btzozTaZzWaGDx/OhAkTWLlyJa+88gpLly4lIyODdevWodF44vnk5GTS0tKYOnUqeXl5PPnkk97zRkREYDKZvOcbP348JpOJnJwcZsyYQXp6ug9vWojuSVVh54UQfnskkuIaT2YqQu/mgQwb382wEmWQQVOdFaZTiTO6qGzUUmLTMdTgCHSVRJCSoCpYOVzE/cfbAbl05TPzwNC+R6Oqqort27eTnZ3drPsOwGQyMWfOHPLz81mwYAGFhYWsXbvWG1A1yczMZPLkybz77rvNgqrWPP7446xZs4YPPvhAgirR6x2t0PP64Sg+LTcCEKl3893BVh5ItxEpwZRPJUc4qWzUct6qZWisBFWidRJUiU4pLi5GVVUyMjJaPZ6eno7FYuHkyZPe71uTkZHBvn372rxebGws8fHxnDt37uYrLUQ3V2LV8l+fR/Hhec8fMgaNyoODrSwYaiVCL8FUV0iOcHG4QgarixuTpyNY6bWejNG1L+l1OPzV/ddBqh/nZauqKgNtRa9U3ajwP19G8ucT4ThVBQWV6Sn1PJFZgylMxkt1pabB6udq5WNTXJ88HcFKUVp2wen1EGSxREpKCoqiUFRUxN13393i+IkTJ4iJiWHQoEEAFBUVMXz48BblioqKSEtLa/N6lZWVVFRUMGDAgM5XXohuwumGP50I53dfRFLr8HSfj+vbwFO31pAue/b5Rf/IK0GVZKrEDcjsP9EpcXFxTJkyhbfeeov6+vpmx0pLS9myZQv33HMPmZmZpKenk5eXh9vd/C/qo0ePsnPnTu699942r7d+/Xo0Gg1Tp0715W0IEbQ+vmhk/gcJ5H4WTa1DQ3q0g9wpFayZUikBlR8NvBJUnZFMlbgBCapEp61YsQK73c78+fPZs2cPJSUlbNu2jQcffJDExESys7NRFIWcnBwKCwtZtGgRhw4doqSkhPz8fB599FFGjx7NwoULm53XarVSWlpKSUkJe/bsYdmyZeTm5pKdnU1qamqA7lYI/zhdo+O5nXE8V9CHs7V6Yo0ufjLawpvfKmNs38ZAV6/X6X9lWYUauwZLo3x0itZJyC06LS0tja1bt5KTk8OSJUuwWCwkJCQwbdo0nn32WWJjYwEYM2YM+fn5rF69mgULFmCz2TCbzcydO5enn34ao9HY7Lw5OTnk5ORgMBhISEggKyuLTZs2MXHixEDcphB+4XTD/zsWwfovInGpCjpF5YEMG9+/pVYGoQdQiE4lMczJpTodZ2p1xBjtbb9J9DoSVAmfSE5OZs2aNW2WGzZsGHl5eW2W27t3rw9qJUT3crpGxy/3xfBllWePvglJDfxoZDUDIl1tvFP4w8DIq0HVyHgJqkRLElQJIUSAqSq8cyqM3E+jsbsVIvVu/u22ar49oL4j6/CKLjYw0sney3CmRj46RevkyRBCiAByuCHnYDT/WxwOwPjEBl643YIpVJZICDYDrgxWPyuD1cV1yJMhhBABUudUeGF3LPsuh6Cg8sMRtcwfYpXsVJAaGCUzAMWNyZMhhBABYHUo/HhHH45WGgjVulnxtSomJMmsvmDWlKm6YNPicINeJgGKr5BHQggh/KzBBc8XxHG00kCUwc1vvl4hAVU3kBDiJkznxqUqlMgioKIVElQFka8uiilER/lzuyBxc5xu+OnHcXxabiRc5+Y/plSQ2Uc26O0OFOVqtuq0dAGKVkhQFSTCwsKora2VwEp0Sl1dXYv1vkTwcKuwYn8Muy6GYNCorJpUyZBYCai6k5SmoEpmAIpWyFMRJHQ6HeHh4Vit1uuWMRgM2O2yNoq/dLf2VlUVnU4nQVWQUlX4v59G8fezYWgVlV9PqOS2hO7zfAmPtGhPUHWqWj4+RUvyVAQRnU5HVFRUq8cURSEpKYmLFy9KF48fSHsLX1v3RSR/OhGBgsrPxlqYKGOouqW0aE9m8VSNPsA1EcFIuv+EEKKLvV0Yzu++iATguduqmTqgvo13iGCV1rSsQo0Op4zWEF8hQZUQQnShv50OJfezaACeyKzh/vS6ANdIdEZimIswnRunqnBOZgCKr5CgSgghusjfz4Ty6/0xAMzLsPLosOuPmRTdg6JczVadlHFV4iskqBJCiC7w/plQfrkvBjcKs1JtPD2yRlZK7yGaxlWdrJZxVaI5CaqEEMLH3j8Tyq+uCaiyR1ejkYCqx5AZgOJ65IkQQggf2nIyjNcORuNGYXaqjWUSUPU4aVEyA1C0ToIqIYTwAacb1h6O4u2iCABmp9lYliUBVU806EqmqsSqpcGpEKKTZVeEhwRVQgjRSRdtWn6+N5bPKwwALB5ewyNDrTKGqoeKNbqJNbqoatRyslon2wwJLxlTJYQQnbD9fAiP/COBzysMhOvcvPy1Sh4dJgFVT6YoeLcXOm6RLkBxlWSqhBDiJjS44DefRbPlZDgAt8TZ+dX4KvqFuwJcM+EPQ2Ic7LkUwvEqCarEVRJUCSFEB52s1vHSnljvQOX5Q6wsGV6DTnL/vcbgpkyVBFXiGhJUCSFEB7xzMow1n0ZjdyvEGV28NNbCuETZx6+3GRJzda0qhxv0ElALJKgSQoh2canwH59GsfmEZ3bfhMQGlo+xEBciG8D1Rv3CXUTo3VgdGoprdAyOcQa6SiIISGwthBBtcLrhF3tjvQHVkuE15EyqlICqF1OUq9kq6QIUTSSoEkKIG3CpsGJ/DP88F4pOUfnV+Eoekdl9gmvHVRkCXBMRLKT7TwghbuC/Po/i72fD0CoqL3+tiinmhkBXSQSJITJYXXyFZKqEEOI6/n42lN8f93T5/WysRQIq0cwtsXbAs1aVXVbSEEhQJYQQrTpdo+OVT6IBeHhoLVMH1Ae4RiLYJEe4iDG4cLgVCmURUIEEVUII0YLTDb/cF0OjS8PYvg08Mbw20FUSQUhR8G5R07RFkejdJKgSQoiveOtYBF9WGYjUu1k+xoJWBqWL6xjex9MFeESCKkGQDlR///33yc/Px2KxMHDgQB577DHS09OvW/7jjz9m06ZNlJWVkZiYyPz588nKyvIeV1WVzZs38+GHH2Kz2Rg6dCgLFy4kKSnJW8ZqtfK73/2OAwcOoCgK48aN4/vf/z4hISEAlJaW8tRTT7W49ooVKxg8eLAP714IEUjnarW89WUkAP+WVY0pVJZNENd365WgSjJVAoIwU7V79242bNjA/fffz8qVKxk4cCAvv/wy1dXVrZY/fvw4ubm5fOMb32DlypWMGTOGVatWcfbsWW+Zv/zlL2zdupVFixbx61//GqPRyMsvv4zdbveW+Y//+A/OnTvHT3/6U37yk5/w5Zdf8sYbb7S43s9+9jP++7//2/uVlpbm+0YQQgSEqsL//TQah1thXN8Gvt1fxlGJGxsW50CrqJTVa7lcF3QfqcLPgu4J+Otf/8pdd93FnXfeSXJyMosWLcJgMLBt27ZWy7/33nuMGjWKWbNmkZyczLx580hLS+P9998HPFmq9957jzlz5jBmzBgGDhzIU089RVVVFfv37wfg/PnzfPrppyxZsoSMjAyGDh3KY489xu7du6msrGx2vcjISGJiYrxfOl1QJvuEEDeh4KKRjy+FoFNUnrutWtaiEm0K1akMipZxVcIjqCICp9PJqVOnuPfee72vaTQaRowYQWFhYavvKSwsZObMmc1eGzlypDdgKi0txWKxcOutt3qPh4WFkZ6eTmFhIRMnTqSwsJDw8HAGDRrkLTNixAgUReHEiROMHTvW+/rKlStxOBwkJSUxe/Zsbr/99uvej8PhwOFweL9XFIXQ0FDv/3dEU/mOvk/cHGlv/wqG9na6Ye1hz2y/h4bYGBjlBnrmzz8Y2rsnuTXeQaHFwOFyI98a0HIfSGlv/wpkewdVUFVTU4Pb7SYmJqbZ6zExMVy4cKHV91gsFqKjo5u9Fh0djcVi8R5veu1GZaKiopod12q1REREeMuEhITw8MMPM2TIEBRFYe/evaxatYrnn3/+uoHVO++8w5/+9Cfv96mpqaxcuZKEhITrNUGbEhMTb/q9ouOkvf0rkO39hyNwphZiQ+D5OyKIMkYErC7+Is+3b3xjMPzpBByuCicpKfy65aS9/SsQ7R1UQVUwi4qKapYRS09Pp6qqiv/93/+9blB13333NXtPU9RcVlaG09mxzTcVRSExMZFLly6hqupN3IHoCGlv/wp0ezc44bXdJkDLI0OrsVXWYfN7Lfwn0O3d06TpFSCR4xVwpPgyfb6yJ6S0t391RXvrdLp2JUSCKqiKiopCo9F4s0NNLBZLi+xVk5iYmBaD2Kurq73lm/5bXV1NbGxsszIpKSneMjU1Nc3O4XK5sFqt170ueAKrw4cPX/e4Xq9Hr299Qbib/UGrqir/KP1I2tu/AtXe754Kp6xeS2KYk/vSbPSWH7k8374RbVDJiHZQVK3nYKmeb/ZvfeV9aW//CkR7B9VAdZ1OR1paGkeOHPG+5na7OXLkyHWXLRg8eDCff/55s9cOHz5MRkYGACaTiZiYmGZl6urqOHHihPecgwcPxmazcerUKW+ZI0eOoKrqDZdyOH36dLNATQjR/dhdeLeieXioFYM2wBUS3dJok2cs1SelxgDXRARSUAVVADNnzuTDDz9k+/btnD9/nnXr1tHY2Mgdd9wBwOuvv87GjRu95adPn85nn31Gfn4+JSUlbN68mZMnTzJt2jTAkwacPn06W7Zs4ZNPPuHs2bO8/vrrxMbGMmbMGACSk5MZNWoUb7zxBidOnODYsWP87ne/Y8KECcTFxQGwfft2CgoKKCkpoaSkhC1btrBt2zbvdYQQ3dPWM2GU1WuJD3ExI6Uu0NUR3VRTUHVAgqpeLai6/wAmTJhATU0NmzdvxmKxkJKSwosvvujthisvL282on/IkCE888wzvP322/zhD38gKSmJ559/ngEDBnjLzJ49m8bGRt544w3q6uoYOnQoL774IgbD1emvzzzzDOvXr+eXv/yld/HPxx57rFnd/vznP1NeXo5Go8FsNvPss88yfvz4rm0QIUSXcbrh/x3zZKkeGiJZKnHzbkuwo1VUzlt1XKrTkhgmOyz3RooqHbx+V1ZW1myphfZQFIWkpCQuXrwoffJ+IO3tX4Fq77+fCeUX+2KJMbjYMqOUUF3v+FnL8901Fv0rniMVBrJHW7g37WrWU9rbv7qivfV6fbsGqgdd958QQviDW/Xs8Qfw3cG2XhNQia4zMckzQL3gQkiAayICRYIqIUSvtONCCMU1esJ1br4zqCcvoCD8ZdKVoGr/ZSMNTlnoszeSoEoI0euoKrz1pSdLdX+6jUiDZKlE5w2KdpIY5sTuVthfKlvW9EYSVAkhep29l40cqzIQonXz3cGSpRK+oSgwMckzC3CXdAH2ShJUCSF6naYs1ey0OmKN7jZKC9F+k/pdGVd1MQSXJEB7HQmqhBC9yqEyA5+WG9FrVB4aYg10dUQPk5XQSKTeTUWDlk/LpAuwt5GgSgjRqzRlqWak1GEKlSyV8C2DFu5IrgfgH2dDA1wb4W8SVAkheo0vKvXsvRyCVlH53lDJUomu8e0BnqDqX+dDcUjc3qtIUCWE6DWaslTfGlBPv3BZ8Vp0jdsS7MSHuKh1aNhzSbat6U0kqBJC9AonLDp2XAhFQeURyVKJLqRV4K7+nmzV+2fCAlwb4U8SVAkheoXffREJwJ3JDaREOQNcG9HTNW3O/VFJCBUN8lHbW8hPWgjR452w6NhW4slSPX5LbaCrI3qBjBgnw+PsuFSF/FMyYL23kKBKCNHjrb+SpbqrfwNp0ZKlEv5x35Xtj949FYZLBqz3ChJUCSF6tCKLju1XslTfHyZZKuE/3+hfT6TezaU6HdtOB7o2wh8kqBJC9Gi/kyyVCJAQLcxO82SrfnsgwJURfiFBlRCix7o2S/WYjKUSAfBAhg29RmX/Bfi0TB/o6oguJkGVEKLH+s/PowBPlipVZvyJAEgIdXtnAv6/YxEBro3oahJUCSF6pL2XjOy5FIJOUXlieE2gqyN6sflDbGgU2HUxhKMVkq3qySSoEkL0OC4VfnPYk6X6TrqN/hGyeroInP6RLr4z1PP/az+PQlUDWx/RdSSoEkL0OH87HcbJaj2Rejffl7FUIgg8Ox4MGpVDZUbZuqYHk6BKCNGj1DkV/vuIZ8bf92+pJdogaQEReOYomJvhmQn4m8NROGXdqh5JgiohRI+y8XgEFQ1azOFOvnNl8UUhgsHDQ63EGFwU1+h5u1AGrfdEElQJIXqMCzatd4bVD2+twaANcIWEuEa0UeWpkZ5JE+u/iOBSnTygPY0EVUKIHkFV4bWD0djdCqMTGrnT3BDoKgnRwvSB9YyKb6TBpeHVT6Jl0HoPI0GVEKJH+KgkhN2XQtBrVJ4fbUFRAl0jIVpSFMgeXY1Bo7L3cgjvnAoLdJWED0lQJYTo9mwOhdWfRgMwf4iVgZGyhIIIXilRTn54q6cb8DefRXGmVroBewoJqoQQ3d66o5GU1XsGpz8imyaLbmBuuo3bTZ5uwOUfx9HglNRqTyBBlRCiWztepWdzUTgA/5ZVTYj80S+6AY0CvxhXRZzRxclqPTmHZHxVTyBBlRCi23K4YcX+GNwo3JVcz9cSGwNdJeEnmgoHxj01hG6tJPS9Coy7qtFeaKQ7RSZ9Qtz8+/gqNKj87XQYfygMD3SVRCfpAl0BIYS4WW99GcmJaj0xBhfP3VYd6OoIP9CdqCd0uwXdBXurx51JBuq/GYszNcTPNbs5t5vsPD2yhtzPonn9cBTmCBdfl5mr3ZZkqoQQ3VKhRcebX3rWpPq3rGriQmSJ6p5MqXUSsbGUyI2l6C7YURVwpIVQPymK+snR2IeEouoUdBftRP6/y4R+UAXu7pG1+m6GjTmDbKgo/HxvDMeqZNPl7koyVUKIbsfphhX7YnGpCnea67krWf6y78l0J+oJf7ccTZ0bVQONY6NomBiFGt58AJ1S5yJ0mwXjASshe2rQ1Dqx3RsP2uAeBK4o8Oyoai7YtOy5FMLSgjjyvlFOUrjMYu1uJFMlhOh23joWQVG1nmiDi6VZ1bImVQ9m3FdDxMZSNHVunIl6apb0o/7bsS0CKgA1TEvdjD5YvxOPqgHD0TrC/1TWLTJWOg2sGF9FWpSDigYtT33Uh8t18hHd3chPTAjRrRRZdPzPF54Nk//tNun267FUldB/VBH2fhUK0HhbBLWPJeGOb7trzJEZjnWeCVWnYDheT+iHli6vri+E61X+75QKzOFOLth0PP1RPGX18jHdnchPSwjRbTjd8Kv9nm6/r5vr+WZ/6fbrkVSV0K2VhHzsWSCz7q4Y6mbGga79KUlneii2WX0ACPm4BsNn1i6pqq+ZQt28fkcFSWFOzll1PP1RHyob5KO6u5CflBCi2/ifLyMpsuiJMrh5Xrr9eiZVJexvlYR8YkUFbPf0oXFiNDfzw3YMD6d+smel/bD3KtFUOnxc2a6RGObi9TsqMIW6OFOr5wfb+3DRJguwdQcSVAkhuoXD5Xre/MIz22/pbRb6SLdfz+NWCfvfCowHragK1N3bB/ttEZ06ZcMd0TgGGlEcKuHvVnSL8VUA/cJdvH5HOX1DnZyt1bN4WzynqmVuWbCToEoIEfRsDoVf7I3FjcK0gXV8a4B0+/U4bpWwv1Rg/MyGqoDtvnjst3YuoAJAUaibHY9qVNCdb8R4pUuxO+gf4eKNb5STGuWgrF7Lkm3xfFZuCHS1xA1I2CuECHo5h6K5WKejX7iTpbLIZ8/jUgl/pxzDF3WoGrDNicdxy/VXF1dVqKrSUlahpaZWS0ODgsuloNephIe7iY1x0dfkJCTEk5Vyx+iomxpH+P9WEPpRNfbh4ajR3ePjr2+Ym/+6s5znC/rweYWBZz7qw4u3W5g6sD7QVROt6B5PlRCi1/rH2RDePxOGBpWfj60iXN89um9EOzlVwv9UhqGw3hNQ3Z+AY2hYq0VrajWcPqPn7DkDdW3OilNJNDnJSLeT2NeJfWQ4hk+t6M82Evb3SmwPmHx/L10k2qDyH1Mq+NmeWAouhvCLfbEct+j54YgadNLfFFQkqBJCBK3TNTpePRADwPdvsXJrfPcYaCzayeEmYlMZ+lMNqDoF69wEnBmhLYpVVWn44lgIJRevLqeg16kkxDuJiXERFuZGqwGHQ6HWqqGsXIelWsulUj2XSvXE93Ey+rZ6NHfHEfXfFzEcq6exqL7VawWrEJ3KqxMryTsSyVvHIvlDYQQnLHp+Nb6SaKP8oREsJKgSQgQlm0Mhe3csdU4NtyU08uiw2kBXSfhSg5uITaXozzSi6hWs8xJwpjYPcmw2hU8/D+VCiUKMu4hBriMkGk8RoyvBqFbD5UYo1YIhAiUiASVmAJiGomQOxdYQyolTBk4WGyiv0PGPf0UwbIie28ZaCd9bS9j7ldSk9uvQMg2BplVgyYhaMmIcrNgfw/5SI9/7h4lfjK0iy9T6XojCvySoEkIEHbcKv9wXw9laPaZQFyvGV0k3Rw+isTiJ+EMp2jIHqlGh9kETrgFXN0B2ueDYMQ3VXxykn/0jspwfo8fmOdjY+jnVsi/x5mt0IYSaR3Nr+jcZPGg0Bz4L5+IlPUe/DOFyXDLTok8SXmUn5OMaGq4sudCd3NW/gYGR5Sz/OI6zVh1PfdSHh4daWZhZK/9OAkyCKiFE0Hnrywh2XAhFr1H59YRKWTW9B9GWNBLxdikamxt3pBbrvARcSUbv8UunKqg5+A8G1m0lRK28+kZDOIrpFohNRYk2Q0gMis6I6naiNtSA9TJUnkIt/QLqKlDP7EI9swtDRCIThn+H8+a7OfhZJOWVet5JTefuL08Rt6uaxlHhqJHd76MwPcbJ/3yrjDWfRpFfHM5bxyLZd9nIz8ZaSI1yBrp6vVb3e5KEED3a9vMh5B31bEPzfJaFzDgZR9UjqCrGfbWE/rMKxQXOvnqsD5pwR2qpbHRTUlxIyJE/k2LbRzyeILpaG8O+qIl8GjmGi+FpKLpS0J7GVXeeRtun1LlrqHPX4VRdKCiERBno02cotzm0TKiykH6pCJ31EuqetZgj/kT8LY/z0ZlvYq3T8Zf0QUwrPk2fbRbqZsUHuHFuTphO5cXbqxnXt5GVB2L4ssrAI/9I4LFbalkwxCpZqwCQoEoIETQOlBp4aW8sKgpzBtm4J1WmjfcESp2LsL9UYCiqRwVO3xLK/nFRHCmxU3/xC75V/g6j6g97yx8JuYV/RH2T/WG34NCfwK09iFuzBdQGcEKoU0NyvZGBdh197NGEujQ4NCpORaVG38jBsAb+FmVHF2lmWlUtc8stRFgvY9z3a76V+D77Y57nvMXM1pRUphadJupiY7NsWXdzV/8GRsSXsvJADLsvhvDGkSi2nQ/hp2MsZMRI1sqfFFVVZdqAn5WVleFwdOyvb0VRSEpK4uLFi8iPrOtJe/uXoihcIIkFW9zUOTV83VzPy1+rQtt9xhB3K357vlUVw2c2jP+s4oRWYYdJz84BIVxQIaOhiLlVf+bWhiMAuNDwScRodiWNp1hvo0o9hU1zCa3qJsMaxihLBMOrw0m3hWOu16Hhxg+HU3FzIcLKtj5V/COhhvG2S9xXXoVeVVH1YRTF/YgjtmloVZW76kuIWRB5U1vhtIe/2ltV4e9nQ1l9KJpahwatovLIMCuPDqtF34uyVl3R3nq9noSEhLavLUGV/0lQFfykvf3rs3ID/1YQj80BoxMaeW1yBUbZ6qzLdPnzrarojtdxfm8t23QKOxIMlIV4PtXTGk/wQNUfGVV/FAAnGj6KTufPfTK5ZLShVy8xxKplVHUEoywR3FodQZirZUTQqG2gUVePQ9eAU+NAo2pQVA1GZyhh9ki0avOOmMthFv6adJ7B9pMMafCsyF8aPpm9SjZuNYJvpFYSO1rf4jq+4O/fJxUNGnIORrO9xDObMi3KwfIxFm7pJV3pElT1MhJUBT9pb//54GwoL++Pwe5WuN3UyKqJlYTopM27UqvPt6qi1DWgtdSiqbaiNDhQHA4UhwtVo4BWi6rXooYacYeFoIaFeP4bagTNlaCn0Y3liJWC0438K0zL2XBPZKzSwCDnEeZV/Y1brUUAuFDYFpXBjoghxDkaGV7jYERNGENqwzCozYOoBq2TS5GXsYSW4dBX0WCsxqHzTAN0KRpqtSFUakKo1+hQcKNXHSTVK6TUxGOuNhNbZ0JzZVc2q6GWI3EnGOgsRKuAVRvNXuP/oV4ZzB132ojp4/tnLxC/T1QV/nU+hNcORVPVqEVB5b5BdSwZXkOkoWf/+5KgqpeRoCr4SXt3PVWF330RwbovogD4dhq8OOoiRq20d1dTFIXExETKDh1Bd+YiuvOl6C6Uo2ns+FpHKuDQ66nWGris03MhxEilXkud1kmj1kGkWslt1jMMbKxGUbXgDqVK0wcHkSQ1KIS4W2ahqnVwNrKGishTXI68hKKtJtYBTcnLesXIUf1wjhlu4bQuBbeipa9RR0IIuJV6iusqsbnsGNQGEl3nGGM7y7cvRpJekY7e7dk7ryq0nIqIQ0RRiV3RsDvsCep13+XOb9mICPftMxjI3yeWRg25n0bx/lnPKvWxRhfPjKzh2wPq0fTQ7nUJqnoZCaqCn7R316p3Krx6IJoPrvyinz/EyoqpEVy+JO3d1bSXKzF8WYzxxHk0luYLqrqByhADl0IMVOk02DQaGjQKGlVF71Yxut1EO13EOlzEOJxEO1x0tpfWrrg5E+bmRKQRS2Q1deGfUq8/jwLEOaCPXYPuyjPRGNKfsj53UhqZhcWlUNZop7TBTtVXfp+qqJhDQatp4FxDJW7c6NVGRjYc5+Fz9YwoHYJW1aHipiyyCIyHQXGzJyKLqtBf881vOAkN8d1zGAy/Tw6UGlh1MJoztZ4uzqGxdn4wopaxfa+z8Fc3JkFVLyNBVfCT9u46Jyw6fronljO1erSKyvNZ1dw7qF7au4uoqsolWz22oyfpd7SY5Moa77E6jYZPYsI5HBXG4ahQisOMODTXH9GsUUGnKrhVcGpcKNQT6awjzllHH4cbU4OD26yVjLBWEe10ejJTaKnSRnEmNJTLRisVBjuVBge1IRoSEgcxNCaM6uq9XK76FBU3qNDHpcfk0KI4PR/4xoj+JA35HtF9x6O0Mpi81uGkyGqjsNbG4eoajtfavAuBahQX8SFOSu1VuHGgUZ1Mqi1k8WmF/tX9AajXW6iL2INLV82XobEUxr3CrK+b0ftoiFWw/D5xuGHj8Qg2HIugzun5Od9uauSJ4TWM6NNzxltJUNXLSFAV/KS9fU9V4Z1TYeR+Go3drRAf4uLfx1eRlWCX9vaxSrudA1U1fFZeRXLROb5ztpS+ds/UeocCBXGRbI+P4lRiHxLCQ+kbYiTWoCdaryNarydKpyNcoyH0goPwYw1UnG3kX3EKHyXaqAypRtVUguIJeBRVZVj9Je6qOsl46ymMqud3m4MQvowcyf+a9RzQlXrrlhqSxNTIFPo0XqKkbDeNzitBngrJhv7E2Ky4Gy0A6EMTSMx4iLjkO1GU9ufEquwO9lda+Kiski9rrVdOrxKlt1PjqkJVHBjVehZePMa9p/tjdIXgVlxURxzCYTzJRaOeD/stYsHEaeh8sI1NsD3fVY0a3vwygi0nwnGqnvu7LaGR7w21Mr5vY1dNgvQbCap6GQmqgp+0t2/V2hVeORDDtvOe2UgTEhv46VgLsUbPIo/S3q1T3U4arOdpsJ7DUV+Gvb4Ue30ZjsZK3M4G3K4G3M563G4HqqLDiZZGNNS79fSrTmVkaX8iHZ50S61B4WiqiZqRmSQlxDEqNYXyy5dbtLe73o1rVx0FF+v5sE81J6IqaNBVgdLgLWN0O7jVepFJNaWMrDtFhPtqN2K1IYFPEpL4fVQjVVfGx2lUha9HJHOrosFW/Rm2hsve8qH6WFLDbsFgOYfdeg4AnSGavukP0GfA3Wi0nUsXnbbV8fdLZWwrq8DuVlFxE6JtpF6tAsXF4PoL/PJ4Hf1qEwGwhpyiLuIANi28nTyZhyY9SaS+cxsvB+vzfdGm5XdfRPD+mTBvcDU4xs73hlq5M7mh2y5pIkFVLyNBVfCT9vad41U6Xtgdx8U6HTpF5Ye31vDdDFuzQbLS3p5uOnvdRawVn2OzHKe++hQN1jOo7o4t3hhjM5Fx+TYiG2MAaNTVcbrPl1yMOYVb40ajCyM0cgAJ5ttwa/tjt2ViKUvkeI2VA9qLnA69TK2+HFVjb6oYcc460hoquNVmIbOulGR7CVqu1suhNXKkTyJ/jlA4GqoHRSHU7WCY1sgwRUHXcB6742q3o04bSnLcOBJ1fbFf3EdD7WkANLpQTGn3kZA6G60urFPt+VVVdgfvllzi75fLvMGVRqnHpVSiVe28dLqIO0r6o6ChQV+JNXIXDm0df0hK4WtfW8qQyIE3fe1gf75L6zT8oTCCv5wKo/7K8hXJEU4WDLEyPaWu261xJUFVLyNBVfCT9vaNv58J5defeJZL6Bfu5Ffjq1pdK6e3trezsZrq0v1Yyz/FWvE5jsbKFmU8QdBADKEm9KEmtCF9OOMM5VCtnSNWBw0YcKJlQKOdJ0vqGVrmWYXepVcoH6qnrF8tjfbLNFjP02gtAVruo1irhHFRG0+9GoFbNRDqUkmy12K2W0myWzCqLWcFVhvD2BcZzp5wHWdDdYTgJNrdSD/c9HE3orjqmpXXaUNJjBlF/7ixhDXUUXX2AxqsZ6/cYygJA2eSkDYbnaFrNziutDvYdO4C/7xcjgooOHAptaCxcW/ZKZ4qisbgMuLUNFAb+TEOQyl/j43BOeb7zEq8s9UxXW3pLs93daPCn06Es/lEBDV2TySVEulgaVY1o00dnxkaKBJU9TISVAU/ae/Ocbph7eEo3i6KADzdfb8YV3Xd9XF6U3s32i5gubiLmtL92KqOAVfvV9HoCIsZQkRcJqFRgwiNTsMQ2heAU7Z6tpdVsKOsAqujkRBsGLExVKcy/6KDzFP1aNygKnAhTaF4sEpjIzisKrU2N6VKPZW6KqLcl+nrqKKvvZ44h51IhwujC/Q3aHY3UGnQUBKi5WKIQlkINGjdhOLC0EqQBqCgITp8IEmxt5EUMxJjYyO1pfuwXNyN2+UJ/DS6MBJS7iEhdTY6Q6Svmrhdim11rC8+xxc1VlRUFMWOW6liUH0Zrx21EtcQg4qb2vBPaQgt4vOIUP6ZeSeLMx4mShfeoWt1t+e7zqnwv6fC2HAsgqpGz1i2BzKsPDmiBkM3WJRXgqpeRoKq4CftffOqGjX87ONYDpR59lJ7dFgtCzNrbzg+o6e3t8tRh+ViAZXn/4mt6stmx0KjBhFlup2I+JGExwxG0RhocFiwNlzisrWELytOc9F6DrezEqNqJQQrRupRVIVbytIYd34EYc4QAM5GXaRgwCEqQ2sIdUG0HWKufEXbIdLBDbd3sWtU7FqwaxTsWmi88uXQQoNG9XyvAfuVL4cCbgX0+igiQvoSGZpEbOgAIvWxhBKC3XoWW9Vx6izHcbuuGZMVbqbPwLuJS74LnT6iaxq9HVRVZUd5Jf9TfJ4apxMVNyoNGN2lrCk8Q2alCYC6kGKsEZ9w0ajlPwcN4aFhCxkROajd1+muz3etXeG3R6LYctITRA6JsfN/JlViCm09kA4WElT1MhJUBT9p75tzvErPT3bHcqlOR6jWzUtjLdyR3NDm+3pie6uqG2vF51Se/5DqS7txu5rWA9IQmTCK6L7jMcYOweaqpbruDBbbaSy2M1TXncXpuvFG0snVfZl09jbi62MAsBjq+aTvCWpCztPX0UC/BgfhrtbbsVGBCoOWCoOWcr2GcoOWcoMWq8GIxhBKqMZAtKoQ53AQ5agnrNGKzm5rY6c9hWszbq3Rh8QTnTiemMQJhMcNv6lutK5S63Dy5unzbCuruPKKEzfV/Oj8l8w5G4uChkZdBbVRBdTq7eT078eQjFk82O/baNsxK7G7P9+7Lxr51b4YLHYt8SEuXptcweAg3qhZgqpeRoKq4Cft3XHvnwnllSvjp/pHOHl1QiVp0e37xduT2rux7hKV5/9F1fkPsddfXUrAEN4PXZ+h1IWEU9lwDou1mAaHpdVzqCjUEYVNiUWnM9FPGcDgulSiL4fSt7yExEYbAPVaB6ejjxOqO0aY6mp2DhdQYjRwJiSUS/po6tzx6BwJhNv7EBPfh+Tb09HodcToI4nVRaLX6FqpiYfTYaXOUkiD9RyN1hIabZ4vp7261YH0OmMshpB4QiIHEBY7lPCYIYREpgRVINWaw5YafnvqLJcaGlE9a8VzZ9WXvFgIBpcBp6aemqhdNOor+F1SAqf6j+Tf0haQaOxzw/P2hOf7gk3L0oI4imv0ROrd/ObrFQyJDc61rSSo6mUkqAp+0t7t53TD64ej2NTO8VOt6e7t7XI2UH1pF5XnPsRa+fnVAxoDjvA4yjUNVLmqaJnuUUAXT4WaQKk7nmqlL9WKCQOJTGrox20lUZznLIfjPmeipZwZl8PQqRrcuGkIPYEt7Kh3lp5No+VYaBynQgfiNg4nyzKIWwvDiXB6tmVxh2lozIqgcUwkROl90t6qquJ2NeJ21nnWkdJo0WiNaDRdszGxPzS63Gw+f4G/lFzGjSfj2L++jP84doa4hkjcuLBGHKAhtJgPY6L4ffIAHk+dy9fjsq57zu7+fDexOhSe29mHzysMROrd/MfXKxgahIGVBFW9jARVwU/au32qGjX89ONYDl4zfmpRZm2H9xTrju2tqiq2qi+oOPcPLBcLUK9076mATQsWvUqtzjNw3EMhOqw/4WGDKCeZw/UxfNkQhUvxBD16VcNtVbFENdZzIfwMp6KOASUsORPH3RcTMbo9gUqjoQRr+GfYdbUcC+3LFyEjqdNM4lbHMG6/WEtcefNZd87+RhpHhWMfHk7T3Pju2N7+dtJax3+eOE1xnacrNsTp5LXCA2RaPHtV1oUUYY34lPMhOnL6JzEwaTxP9L+X6FbGiPWk9rY5FJ69JrDKnVLBsFZm9AaSBFW9jARVwU/au21fVOpZ/rFn/FSYzs3PxrRv/FRrulN719tKuHDqHWov7Qb71UUvGxWVaj1Y9ODUQKghjj6Rg4mLHIxqSKHQHs8nFjuF1qtbqCiqSt96cGvKsYScxWYoRkMjo6vtPHI2nlsrB6JVPcGUQ2uhOvIzPouK5Iz+a9iYRrwjgeGl5Qy2VGFwewYPqxpwmo04B4VgHxGOO7Zl1qg7tXcguVSVvx6/wB/KLmHXAm43z5z7gjklnnFUdl0ltVEfU6+z8WZiArtM/VgyYA6TYkc16+rsae1tcyg8tzOOwxVGIq50BQZTxkqCql5GgqrgJ+19fW4V/lAYzn99HoVL9YyfWjmxktSomx+4GsztXW+voqzqM8ovbMNZcQx9Y523F8+FSo0eavRaQqIHkRB9C/FRQwkLS6e4IYTPK2vZX1nNZdfVTWtV7BjcVdh1l3Fqz4GmGp3bzUhbHXeVu5hSaia6PgXNlWDKrq2mMNbKpxGjsSnfQlWiGFBbQ2ZFOf2tVhTAmajHmRKKIzUE50AjGG68WmMwt3cwKj9YyX9dOM+hKxmZO8ou88KpSxhdBtyKw9MdaDzDpxFhvNHPxADTKBb1v9c71qontrfNofBvBXF8Vm4kyuDm9a+XkxEkg9cDGVRdf2SiEEJ8RWWDhl/tj2HPJc8U/juT63lhtKVD46eCmcvtoNp2hvLa45RXf0FtxWcYbRainJ6lCAxXytXrtBAzkKjErzEg5lbCw9Iostk5XFbLkVNWTjpLcF+JvDzT9CtQNeWomouomss4FZVQl4uxtXV8zWJjYkUUMfVpGOz9UK6EbDa9ncPRqXwe8ThuTQh6l4vMyioyK48RGeHGOSQEW2o8zpQQ1LBusHhQNxafFcevL7j51xcV/FeGje0JfTkaGc1rhUcZYA0jqnY8hsZkstwHWFN3hrdrrDxVfYxZiXcyN/EuwnQhgb4FnwvXq7w2qZIf7+jDkUoDz3zUh7V3VLR7ckpPJZmqAJBMVfCT9m7OrcJfi8P4r88jsdi1GDQqz95WzezUOp9svhqI9narLmrqzlFRW0Rl7QkqrIVYak8R6nQR6YRIJ+ivDohC1YcRkjAS04CZ2MMGU2Sto7DMxvEaG6dddbgUT71VVFBqcStlqJrLqJoLoHgGkyfYHYyptTK2uoFRllDC7WZCGgagUa9+6JYZI9kfM4mzYamgKPSpr2eYrYqB8Q0oaUYcqSGo0Z37e1ie75vgUol4uxTr2TrWD6njvcQGFFXlB2dP8J0LdjSqBpdixxb+GQ0hxZwO0fP/EhM4HZvIg+apfG/4bMovl/W49q61Kzyzow/HqgzEGV2svaOClE5krX1Buv96GQmqgp+091XHqvTkHIzmaKUnTzMo2sG/j6tikA//Iu3q9na7ndTUn6fKWkyl9QSVtUVUWk/icjeiqBBxJYiKdIL2mil6ii6MkL4TqImdyElXEoVV9RQ22KhTmt+7ig1VU3YlkLoAGs+SB0a3m6G2ev7/9u48PKr6Xvz4+8yaTJLJQghbgABJiCIBKVAQLfBDEbkIdaNeaLm3KPT5sWh/t9feXlsEFKSUp177iFWfCi6lLLktgsiiFwRLCvWKQkKoElkCIQGSkEwm68yc5ffHJMcMCRBwEgJ8Xs8znO17tg8n53zmnDPf78Caer7r0ehXE43T1wOHvxsWw2nO77PY+TJmAF/G3E6lIx6rrpNCNWld6ojtb8HoHGxPL1zk+L5Gfp2Yd89jK/ZztJPGKyN8HPHV0q+mhiVff0W32mB7hQFbBdVRBwk4SjniiuSPXRPxJCTzSNJY7u007LLVV9yIKv0K8/ck8nWlnViHxm/vKWfAdXx5XZKqW4wkVR2fxBsOX7Cz5qto9hZHYKDgsuk8OaCKx1JrsIW5gdVwxdswDOr85Q0VaZ7EU3MKT81JvLVn0I2GRMiASA2iNYjSLERqRkhNB7othnJXJnnKbRxQkqm9KJcJ1l9UhW6pwFBKMCxnwVINQKSmkVZXT2ZVPUM9dlJrIogIdMYeSMSmuUOW47PYOenqx4nofhRG9sJAoavDR69kP91vM3C04RMjOb6vnVKvE72uBFuhD90Ge+938q6tglPVNcwoKuCfz1ThaPilZr2jiFrXl6j2CxyKcrG1UxwnEroxvvMI7k8cQaIj7vruTBh5fBb+bW8CX1Y4iLDqLBju4f9c4w9Xvi1Jqm4xklR1fLdqvOtVheyzTv58LIqcsm/upNzfq5Z5mV4S26h5iquNt6b7qaorpqquGG/tmWC3rghv7Rn86je/yMMItmkXqYFLt+PS7ThVH8pF7dVVWhL4hz2Drxz9KbQmYygKoGOgAtUYFi+G4gHLhWAXP3Gqxm3VKoOqrKRXW+lZF0G8LwqbGotNc6PQ/D2nCnssp1x9KHD14XxEVywKJMUE6NJLo2cvlcjI9jnWbtXjO2z8OtF/LsN+LFjdQv1gF7uHWdhYUkJpRSX/79RRvleqYCH47cNvL6E28ih+x1nOOaxs7xTP3jg36Z0yGddpGENiM3DewHV7NapVFZ7dF8+n54PfCP45vZqf3OHF2c6v/ElSdYuRpKrju5XiXacqfFHqYGdhJH8tiqBWDV4IbIrBhN61TO9fc8V3JAzDIGDo1GsqPl0jYOgEdJ2AoaPqGv6G/oCuoRq6OazqOgYGOhATE4PHW4luGGi6iq5WogfKMdQKDNUDgQoMtRwlUIaieVCaNItiMcCuBxMop6Zg0504dYVI3Y+1hQZ/a5QITtqTOWlP5oS9O+UWFwp1ROl1uLQ64tQ6kvx1JPl9dPZDF5+VLj4bCX47MQEHkaoTmx6BxXA0W3YjVVEod8RTFNGbcxHdOBfRDex24mM04pJ0unRRSeykYb0O75jfSsd3m9ENIv5aScRfK1EAPcpC7ZhYDvWFTWdLKC0+z/8tzOe75VYsRvBvSrPUUe88hc95Gr+tgi+jIvhbbAyfx8aT0ukORicMZmBMKvH29m1cOpxUHV477GZtfrC+rl4xAf5tsJfhXXzhfIJ9WZJUXWTHjh1s2bIFj8dD7969mTlzJqmpqZcsv3//fjZs2EBpaSldu3Zl+vTpDBnyTe22hmGQlZXFrl27qKmpISMjgyeffJJu3bqZZaqrq1m9ejWff/45iqLw3e9+lx//+MdERHxzD/7UqVOsWrWK48eP43a7mTBhAlOmTLnq/ZOkquO7keNtGAZqw0czDFQ92NUa9qNetXDSa+dIuZVDZRbyPQqaEkDBj2KtJz6ilv4JVaQmVKEofuo0P3W6nzrVjxbwo/gDWHwqNlXFFtCwB1Scqk6EClFa8K6QQ1ewGwp2HRw62Awl2NUhwjBw6AYWDKyGjgUdKwYWI9htHKcQrIC84f3vhmHD7McABQULhjm+8d/Gc7diBMepigUNG4ZhxWJYsRoKtoZttBoWrLoFm2Ezf3l3NQIWjVqrg2pbLB5bNzwR3ah2xaPHROGKhYhOClExBrGxGq5Io90uLJdzIx/fHY3tVD2urRewlgW/eGixVnzfiaH4djsferwcOlXMI0X/YEyZn0j1myRcs9Tid5zFbz9PwF7GuQg/udEu8qKiOBvThYT4DAbHpnJHTArJEZ1b1cZgR7K32MlvPo+jrD643YMTfTyWVsM93esb66BtM5JUNbFv3z5WrlzJrFmzSEtLY+vWrfz973/n5ZdfJjY2tln5o0ePsnDhQqZNm8aQIUPIzs5m8+bNLF++nF69egGwadMmNm3axNy5c0lKSmLDhg2cPn2al156CYcjeJC/+OKLVFRUMHv2bDRN4/e//z39+vXj6aefBqC2tpann36agQMH8tBDD3H69Glee+01/vVf/5V77733qvZRkqrW0w0DzaDJJzhsNLnQomBegCH4Pq/Z39CnKGBRwGIYwQu2oWLRAyi6Brra8AlgaAF0LYCuq8S5YygrO4+u+TE0FUMPmGUVXQWtoaurXNyYrGHo6EbwHkxjv46ObujoGOiGhmYY6IaOpkDAMAgAfgz8hoHfAB9Gk2E9ONxwR8jfMC2gGPhomFcJDgcUUBUDjWCCZceCQ1Nw6BacugWnBi7NQqRmwaUpRGkKLs1KlGrBpVlxaRaiVKs5LlKzEqVZcKnWkJe4b1YGGrrix7Co6DRtT88OeiRoMSiWeIzYruhJ8WhJkWiJdrQkO4bbGtYXytvKrXo+aTOqgfNAFRH7vFiqg8eMAWjdHARSnBzuqvCJqmI9dZgJZcdI9zqw66Evq2uWWlRrJZrNi2qtwmfzUhpRT0GkxslIJyXOBHyuROzR3UiI7kFSVBLdI+JJdnYi3hGNRWnjTOUaeP0Kq/8Rw3vHo/A31DESY9f5blcfmYk+UmNV+sUGcIe5Shapp6qJDz74gHHjxjF27FgAZs2axRdffMHu3bv5/ve/36z8tm3bGDx4MJMnTwbg8ccf5/Dhw+zYsYPZs2djGAbbtm3j4YcfZtiwYQDMmzePWbNm8dlnnzFq1CjOnDnDoUOHWLZsGf369QNg5syZLFu2jB/96EckJCSQnZ2NqqrMmTMHm81Gz549KSgo4IMPPrjqpCrc/l4WCF7AG76VGxDSj0GwDasm/RC84LZUvrEfgj+lByiqL6NWradfeU5wPkM350cPJgoYRsM4Awy9IfFpKNswPTiyoexF4wyjBgu1WA0teLeioWszNGzo5vhgv47NCHatBPttjWWNJsPmNAPF0IOfxn27TEwtgBe49MOdS8ynRWJXOzVpmySY7pl3QIyQ9K9V4xWsYFiadC0oxjfjFMMCDeOCHxuKYQ92W3iv59syMNCVALqiolsCGIoaHDb7VVB0DDRQdIKR1oLdhmHlmyPyG8rFJz+z3vEWNqKlxEUJ6VeVxjtUVlSLBRUrmtJwX0y3oxh2bHoETtVFtN+NU43Coruw6G4sWgwW3YUSaUPrbEfvbA8mTp2DHyP6xkieRDuxKfhGuPF9JxpHXi2OQ9XYC33YzvqxnfUzHBgOGPZU8rvczjt9DHT9NHdUfUlqTT2JdS6sevBD4JsnKJ2B2wFd8aNb6tEVH4blAoZyHl1RURUV1aqiWnR8io6mGKgWA00xuBBZjtdZR5UlCt1iw8BKqSMBzW7HUKzkxvdFt0UQ57Dhttt5MGkkfaPiwhoWt8Pgp4O9TEuvZuPxKLYWuCirt7KzMJKdhZFmuU4RGgkROgnOYNdlM4iwGURYDSJsOhFWA2vDF2NFAQtG8Etyk2HzizPwvR6+S29UG+tQSZWqqpw4cSIkebJYLAwcOJD8/PwW58nPz2fSpEkh4wYNGsRnn30GQElJCR6Ph8zMTHO6y+UiNTWV/Px8Ro0aRX5+PlFRUWZCBTBw4EAUReHYsWMMHz6c/Px8brvtNmw2W8h6Nm/eTHV1NdHRzdt7CgQCIXekFEUhMjIyZBmt1djkgd1ub5Z5bzvnQ23jL5uarRSLUsUzVfvDu+CmucRlC1kbPuGnKqApoCkKKkqwqyjmOM0c1zCsKGjQUCb4aQx/95pO3FnWv02289sw0DAUDRQNQ1ExFA0D9Zt+i9pQRgVFQ1capqFCYxlzPq0V/2cXszR8GrcnVECx4rfY8GMjYLUTUByoVieqNQLD5gCrE2uFgk1z4tTsRKpOIgNOogIO7LoDxXCg6HYUgl0M++UTyoZJhgMMlxXdZcWIsaK7bahuK4bbhu62YjhDv/0rdLCT5jW63PlEfAt2MIY78Q2Px1+nYS3yYyvyYS0NYKlUUTTIADI8AP1QlX6UdnLy9xidWkcFLoqJ18ro5A/g9tlxao7g42qu/uxX4zqMz3E2dKThA38w4Xg+4jxemw0v4FUVTvkz6R935Tsx16JHLMwfUs/cO+s5Xmkj74KDU1U2CqusXKi30Xh+r9Ht1NReaWlXNjalDAjv8d3a63aHOj94vV50XScuLi5kfFxcHMXFxS3O4/F4mj0WjI2NxePxmNMbx12ujNsd+nNnq9VKdHR0SJmkpKRm29U4raWk6r333uPPf/6zOTxq1Ciefvpp4uPjW9yX1khMTGw27s3xbfOHEKpPQ/cH7bAuIUR7aOl8IsKo15WLRPPN2TWcnFeY/lobrLM1uiTBXWltvZbgcX09ju+O9xD2JvLQQw/x9ttvm59Zs2Zd9btUjerq6viP//gP6urqwryVoiUS7/Yl8W5fEu/2JfFuX9cz3h3qTpXb7cZisZh3hxp5PJ5md68axcXFUVlZGTKusrLSLN/YraysDLlDVFlZSUpKilnG6/WGLEPTNKqrq0OW09J2NV3Hxex2O3Z7eOoeMQyDkydPyq36diLxbl8S7/Yl8W5fEu/2dT3j3aHuVNlsNvr27UteXp45Ttd18vLySE9Pb3Ge9PR0Dh8+HDIuNzeXtLTg/cWkpCTi4uJCytTW1nLs2DFzmenp6dTU1HDixAmzTF5eHoZhmFU5pKen8+WXX6Kqash6unfv3uKjPyGEEELcWjpUUgUwadIkdu3axZ49ezhz5gxvvvkmPp+PMWPGALBy5UrWrl1rlp84cSI5OTls2bKFoqIisrKyOH78OBMmTACCL2ROnDiRjRs3cuDAAU6fPs3KlSuJj483fw2YnJzM4MGDeeONNzh27BhfffUVq1ev5q677iIhIQGAu+++G5vNxuuvv05hYSH79u1j+/btzV6SF0IIIcStqUM9/gO466678Hq9ZGVl4fF4SElJ4dlnnzUfsZWVlZm/XAHo378/Tz31FOvXr2fdunV069aNZ555xqyjCmDKlCn4fD7eeOMNamtrycjI4NlnnzXrqAJ46qmnWLVqFc8//7xZ+efMmTPN6S6Xi1/96lesWrWKX/ziF8TExPDII4+0W3UKdrudRx99NGyPE8XlSbzbl8S7fUm825fEu31dz3h3uMo/hRBCCCFuRB3u8Z8QQgghxI1IkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECIMO9+u/W01JSQl/+ctfyMvLw+PxkJCQwD333MPDDz9stjVUUlLCvHnzms27ZMmSkPq79u/fz4YNGygtLaVr165Mnz6dIUOGmNMNwyArK4tdu3ZRU1NDRkYGTz75JN26dWu27JtRa2INcOrUKVatWsXx48dxu91MmDCBKVOmhCxLYt06Gzdu5IsvvqCgoACbzcbbb7/drMzUqVObjXv66acZNWqUOXzkyBHeffddCgsL6dSpE4888ohZzUqjHTt2sGXLFjweD71792bmzJlmPXO3itbEu6ysjD/84Q8cOXKEiIgIRo8ezbRp07Bav2ldTuJ9bebOnUtpaWnIuGnTpoW0ZxuO84u4tOt9XEpSdZ0VFxdjGAazZ8+ma9euFBYW8sYbb1BfX8+MGTNCyi5YsICePXuaw00rHT169Ci/+93vmDZtGkOGDCE7O5sVK1awfPlys3qJzZs3s337dubOnUtSUhIbNmxg6dKlvPTSSyHVS9ysWhPr2tpalixZwsCBA5k1axanT5/mtddeIyoqyqw+Q2LdeqqqMmLECNLT0/n4448vWW7OnDkMHjzYHHa5XGZ/SUkJv/71r7nvvvuYP38+eXl5vP7668TFxZnz7Nu3j3fffZdZs2aRlpbG1q1bWbp0KS+//HKzdj9vZleKt67rLFu2jLi4OJYsWUJFRQUrV67EarUybdo0QOL9bU2dOjWkqp2IiAizP1znF9GyjnBcyuO/62zw4MHMmTOHQYMG0aVLF4YOHcqDDz7I//7v/zYrGxMTQ1xcnPlpendl27ZtDB48mMmTJ5OcnMzjjz9O37592bFjBxC8c7Jt2zYefvhhhg0bRu/evZk3bx4VFRV89tln7ba/11NrYp2dnY2qqsyZM4eePXsyatQoHnjgAT744AOzjMS69aZOncqkSZOueDFwuVwhx3bTxPOjjz4iKSmJGTNmkJyczIQJExgxYgRbt241y3zwwQeMGzeOsWPHkpyczKxZs3A4HOzevbvN9q0julK8c3JyOHPmDPPnzyclJYU777yTH/zgB3z44YdmaxES728nMjIy5FhumlSF4/wiLq0jHJeSVHVAtbW1LTZ9s3z5cp588kkWLFjAgQMHQqbl5+czcODAkHGDBg3i66+/BoLfPj0eD5mZmeZ0l8tFamoq+fn5bbAXN4aLY52fn89tt90WkrAOGjSI4uJiqqurzTIS6/BatWoVTzzxBP/5n//Jxx9/HNJm19dff91ivBtjqaoqJ06cCCljsVgYOHCgxPsi+fn59OrVK6S90sGDB1NXV0dhYSEg8f62Nm3axMyZM/n5z3/O+++/j6Zp5rRwnF9EyzrKcSmP/zqYc+fOsX37dn70ox+Z4yIiIpgxYwb9+/dHURQ+/fRTVqxYwTPPPMPQoUOBYOPOF9/ejI2NNRt9buxersytpqVYezwekpKSQso1XoA8Hg/R0dES6zCbOnUqd9xxB06nk5ycHFatWkV9fT0TJ04ELn1s19XV4ff7qa6uRtf1Zg2bx8XFUVxc3F67cUNoqXH6xtg2PX4l3tfmgQceoE+fPkRHR3P06FHWrVtHRUUF//Iv/wKE5/wiWub1ejvEcSlJVRv505/+xObNmy9b5r/+67/o0aOHOVxeXs7SpUsZOXJkyDN5t9sd0sZgamoqFRUVvP/++2ZSdSsLZ6zFlV1LvC/n0UcfNfv79OmDz+djy5YtZlJ1qwt3vMXVuZr4Nz1P9+7dG5vNxh/+8AemTZsmTdTcIiSpaiMPPvhgs1/LXKxLly5mf3l5OYsXL6Z///7Mnj37istPTU0lNzfXHI6Li6OysjKkTGVlpZm1N3YrKyuJj48PKZOSknLF9XVk4Yx1XFxcs2+EjcNNY3mrxhquPt5XKy0tjb/85S8EAgHsdvsl4x0ZGYnD4cDtdmOxWFr8f7v4W+uNKJzxjouL49ixYyHjGmN7peP7Von3xb5N/NPS0tA0jdLSUrp37x6W84toWUc5LiWpaiNutxu3292qso0X+T59+jBnzhwsliu/6lZQUBBywU5PT+fw4cP80z/9kzkuNzeXtLQ0AJKSkoiLi+Pw4cPmhb22tpZjx44xfvz4q9izjiecsU5PT2fdunWoqmq+95Cbm0v37t3Nd69u5VjD1cX7WhQUFBAVFWV+s09LS+PgwYMhZXJzc83qRGw2G3379iUvL4/hw4cDwV+55eXlMWHChDbbzvYSzninp6ezceNGKisrzUdMubm5REZGkpycDEi8L/Zt4l9QUICiKOb84Ti/iJZ1lONSXlS/zsrLy1m0aBGJiYnMmDEDr9eLx+MJybb37NlDdnY2RUVFFBUVsXHjRnbv3h1yoEycOJGcnBy2bNlCUVERWVlZHD9+3CyjKAoTJ05k48aNHDhwgNOnT7Ny5Uri4+MZNmxYe+/2ddGaWN99993YbDZef/11CgsL2bdvH9u3bw+5rS+xbr2ysjIKCgooKytD13UKCgooKCigvr4egAMHDrBr1y5Onz7NuXPn+Oijj3jvvfd44IEHzGWMHz+ekpIS1qxZQ1FRER9++CH79+8PuehMmjSJXbt2sWfPHs6cOcObb76Jz+e74h2Gm82V4j1o0CCSk5NZuXIlBQUFHDp0iPXr13P//febSazE+9rk5+ezdetWCgoKOH/+PHv37uWdd97hnnvuMROmcJxfxKV1hONSMZr+zEa0uz179vD73/++xWlZWVlmmc2bN1NWVobFYqFHjx5MnjyZESNGhJTfv38/69evp7S0lG7dul2yQsqdO3dSW1tLRkYGTzzxBN27d2+7HexAWhNrCK2cLyYmhgkTJoRU3gcS69Z69dVX+eSTT5qNX7hwIQMGDODQoUOsXbuWc+fOYRgGXbt2Zfz48YwbNy7kLuKRI0d45513OHPmzGUro3z//ffxeDykpKTw4x//+Jb7dn+leAOUlpby5ptvcuTIEZxOJ6NHj2b69OnNKv+UeF+dEydOsGrVKoqKiggEAiQlJfG9732PSZMmhbxPFY7zi7i0631cSlIlhBBCCBEG8vhPCCGEECIMJKkSQgghhAgDSaqEEEIIIcJAkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECANJqoQQQgghwkCSKiGEEEKIMJCkSghxS5o7dy6vvvqqOXzkyBGmTp3KkSNHzHGLFi3iZz/7WVjW19LyX331VebOnWsOl5SUMHXqVN5///2wrDMc9uzZw9SpUykpKbnemyJEhydJlRCi3TReoI8fP369N0UIIcLOdr03QAghOoLbbruNNWvWYLO132nxJz/5CdJSmBA3D0mqhBACsFgsOByOdl1neyZwQoi2J3/RQogO5eTJk6xbt46jR4+i6zppaWk8/vjjpKenh5Q7deoUq1ev5tixY8TExHDfffeRkJDAa6+9xsqVK0lKSrqq9R45coTFixezcOFCBgwYcMlyOTk5rFixgqFDhzJ//nysVitFRUWsX7+evLw8/H4/PXv25NFHH2Xo0KGXXeerr77KP/7xj5B3uxrt3LmTzZs3c+HCBXr37s0TTzxBampqSJm8vDyysrI4efIkVquV22+/nWnTppGcnBxSrrUxLSwsZPXq1eTn55sxjY+Pv1LohBANJKkSQnQYhYWFPPfcc7hcLiZPnozVamXnzp0sXryYRYsWkZaWBkB5eTmLFy9GURQeeughnE4nH3/8cZvf+fn888956aWXGDlyJHPmzMFisVBYWMiCBQtISEjg+9//Pk6nk/3797NixQp+9rOfMXz48Ktez9/+9jfq6uq49957URSFzZs389vf/pZXXnnF3Mfc3FyWLVtGUlISjz32GH6/n+3bt7NgwQKWL19uJpWtjanH42Hx4sVommbux65du9r97p0QNzJJqoQQHcb69evRNI3nn3+eLl26ADB69Gh++tOfsmbNGhYvXgzApk2bqKmpYfny5aSkpAAwduxYnnrqqTbbtk8//ZSXX36ZMWPGMGvWLCyW4O983n77bRITE1m2bBl2ux2A+++/n+eee44//elP15RUlZWV8bvf/Y7o6GgAunfvzm9+8xtycnL4zne+A8CaNWuIjo5m6dKlZrlhw4bx85//nKysLObNmwdcXUy9Xi8vvviieUdszJgxbRpTIW428us/IUSHoOs6ubm5DBs2zLz4A8THxzNq1Ci++uoramtrgeAjuPT0dDOhAoiOjubuu+9uk23Lzs7m5Zdf5r777mP27NlmQlVdXU1eXh4jR46krq4Or9eL1+ulqqqKQYMGcfbsWcrLy696fSNHjjQTJYCMjAwAzp8/D0BFRQUFBQWMHj06pFzv3r3JzMzk4MGDwNXF9ODBg6SlpYU8YnS73W0WUyFuRnKnSgjRIXi9Xnw+H927d282LTk5GcMwuHDhAi6Xi9LSUvOxVVNdu3YNGa6trcXv95vDNpstJAlpjZKSEl555RVGjhzJzJkzQ6adO3cOwzDYsGEDGzZsaHH+yspKEhISrmqdiYmJIcON21xTUwNAaWkpQIux6tGjBzk5OdTX11NfX9/qmJaVlbUY05bmFUK0TJIqIcRN66233uKTTz4xh2+//XYWLVp0VcuIi4sjPj6egwcPcvz4cfr162dO03UdgAcffJBBgwa1OP/FiV5rNN4Ju5hUvyBExyZJlRCiQ3C73TidToqLi5tNKyoqQlEUOnXqBEDnzp3NR2FNnTt3LmR4ypQp3HPPPebw1d6lAnA4HPziF79g8eLFvPjiiyxatIiePXsCmI/UrFYrmZmZV73sa9W5c2eAFmNVXFxMTEwMEREROByOVsc0MTGRs2fPtrg8IUTryDtVQogOwWKxkJmZyYEDB0KaRPF4PGRnZ5ORkYHL5QJg0KBB5OfnU1BQYJarrq4mOzs7ZJnJyclkZmaan759+17TtrlcLn75y1/idrtZsmSJmbzFxsYyYMAAdu7cSUVFRbP5vF7vNa3vSuLj40lJSeGTTz4xHwkCnD59mpycHO68807g6mJ655138vXXX3Ps2LGQ7b84pkKIS5M7VUKIdrd7924OHTrUbPxjjz1Gbm4uzz33HOPHjzd//q+qKj/84Q/NcpMnT2bv3r288MILPPDAA2aVComJiVRXV6MoSti32e12s2DBAhYsWMALL7zACy+8QEJCAk888QQLFizg3//93xk3bhxJSUlUVlaSn59PeXk5K1asCPu2APzwhz9k2bJl/OpXv2Ls2LH4/X527NiBy+Vi6tSpZrnHH3+8VTGdMmUKe/fuZenSpUycONGsUqFz586cOnWqTfZBiJuNJFVCiHb30UcftTh+zJgxPP/886xdu5ZNmzZhGAapqanMnz8/5CXqxMREFi5cyFtvvcV7772H2+3m/vvvx+l08tZbb5lVG4RbQkICCxYsYOHChbzwwgssXryY5ORkfv3rX/Pf//3f7Nmzh6qqKmJjY0lJSeGRRx5pk+0AyMzM5NlnnyUrK4usrCyz8s/p06eHVHzas2fPVsU0Pj6ehQsXsnr1ajZt2hRS+efrr7/eZvshxM1EMeTNRyHETeLtt9/mf/7nf/jjH/94yZe9hRCirchZRwhxQ2paVQJAVVUVf/3rX8nIyJCESghxXcjjPyHEDemXv/wlAwYMoEePHlRWVvLxxx9TV1fXpo/chBDicuTxnxDihrR27Vo+/fRTLly4gKIo9OnTh0cffbRdqzYQQoimJKkSQgghhAgDefFACCGEECIMJKkSQgghhAgDSaqEEEIIIcJAkiohhBBCiDCQpEoIIYQQIgwkqRJCCCGECANJqoQQQgghwkCSKiGEEEKIMPj/lET2CDaW2DkAAAAASUVORK5CYII=\n", + "image/png": "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cl7nu1eAn376icsvv5zAwEBiY2N54YUXzjiPq9/rzp07GT58OE2bNqV27do0a9aM8ePHU1BQ4HSMJ3yu5blX8IzPFWDChAn07NmToKCgs078WtbnOmfOHKdjvvnmGy655BICAgJo3rw5s2bNqv7CV1B57jU9PZ1+/foRFBREgwYNePTRRykqcl7V3h3u9XRxcXFnfIaTJk1yOqY8P9PuYsaMGcTFxREYGEhCQgIrV660ukgX7Omnnz7jM2zdurVj/4kTJ7j//vuJiIigTp06DBgw4IxJpSvMkCo1depUIy0tzdi5c6exbNkyIzEx0UhMTHTs37FjhwEYX3/9tbF//37Ho6CgwHHMsmXLDF9fX+OFF14wNm3aZIwdO9bw8/MzNm7caMUtndX57jUnJ8eIiooy7rjjDuPnn382PvjgA6N27drGv/71L8cx7nCv//vf/4yhQ4caX375pbF9+3bjs88+Mxo0aGA8/PDDjmM85XMtz716yudqGIYxbtw4Y+rUqUZKSooRGhpa5jGA8fbbbzt9rsePH3fs//33342goCAjJSXF2LRpk/Hqq68avr6+xqJFi2roLsrnfPdaVFRktG/f3khKSjLWrVtnLFy40IiMjDTGjBnjOMZd7vV0TZo0MZ599lmnz/Do0aOO/eX5mXYXc+bMMfz9/Y233nrL+OWXX4y7777bCAsLMzIzM60u2gUZP3680a5dO6fP8ODBg4799957rxEbG2ukpqYaq1evNnr06GH07Nnzgq6pgFTNPvvsM8Nmszl+Udp/ka5bt+6s77ntttuMfv36OW1LSEgw7rnnnuos6gU7/V5fe+01o169ekZ+fr7jmMcff9xo1aqV42t3vdcXXnjBaNq0qeNrT/5cT79XT/xc33777XMGpE8//fSs733ssceMdu3aOW0bOHCgkZycXIUlrDpnu9eFCxcaPj4+RkZGhmPb66+/boSEhDg+a3e7V7smTZoYL7/88ln3l+dn2l10797duP/++x1fFxcXGw0bNjQmTpxoYaku3Pjx441OnTqVuS87O9vw8/Mz5s6d69i2efNmAzDS0tIqfU01sVWjrKws3n//fXr27Imfn5/TvhtvvJEGDRpw2WWXMX/+fKd9aWlpJCUlOW1LTk4mLS2t2stcWWXda1paGldccQX+/v6O45KTk9m6dSuHDx92HONu9wqQk5NDeHj4Gds97XOFM+/Vkz/Xs7n//vuJjIyke/fuvPXWWxinTB/nKfealpZGhw4dHJP0gnkfubm5/PLLL45j3PVeJ02aREREBJ07d+bFF190ajosz8+0OygoKGDNmjVOn5GPjw9JSUlu8Rmdz7Zt22jYsCEXX3wxd9xxB+np6QCsWbOGwsJCp/tu3bo1jRs3vqD7VkCqBo8//jjBwcFERESQnp7OZ5995thXp04dpkyZwty5c/niiy+47LLL6N+/v9Mv04yMDKf/pACioqLIyMiosXsor3Pd69nuw77vXMe44r3a/fbbb7z66qvcc889jm2e9rnalXWvnvq5ns2zzz7LRx99xOLFixkwYAD33Xcfr776qmP/2e41NzeX48eP13RxK+1CPldXv9cHHniAOXPmsHTpUu655x6ef/55HnvsMcf+8ty7Ozh06BDFxcUe82/vVAkJCcyaNYtFixbx+uuvs2PHDi6//HKOHDlCRkYG/v7+Z/Stu9D7VkAqhyeeeKLMjpqnPrZs2eI4/tFHH2XdunV89dVX+Pr6MnjwYMdfnJGRkaSkpJCQkEC3bt2YNGkSf/nLX3jxxRetuj0nVXmvrq6i9wqwd+9e+vTpw5/+9Cfuvvtux3ZP+1zh7Pfq6ipzr+fy1FNPcemll9K5c2cef/xxHnvsMbf+XD1FRe49JSWFq666io4dO3LvvfcyZcoUXn31VfLz8y2+Cymv6667jj/96U907NiR5ORkFi5cSHZ2Nh999FG1XdPytdjcwcMPP8zQoUPPeczFF1/seB0ZGUlkZCQtW7akTZs2xMbG8uOPP5KYmFjmexMSEli8eLHj6+jo6DN632dmZhIdHV35myinqrzXs90H4LgXd7rXffv20atXL3r27OlYHPlc3PlzPde9etrnWlEJCQn84x//ID8/n4CAgLPea0hICLVr1670dcqjKu81Ojr6jNFO5f1ca+JeT3ch956QkEBRURE7d+6kVatW5fqZdgeRkZH4+vpa9m+vJoWFhdGyZUt+++03rrnmGgoKCsjOznaqRbrQ+1ZAKof69etTv379Sr23pKQE4Jx/qaxfv56YmBjH14mJiaSmpvLggw86ti1evPisAasqVeW9JiYm8ve//53CwkJHv6TFixfTqlUr6tWr5zjGHe5179699OrViy5duvD22287LaB8Nu76uZ7vXj3pc62M9evXU69ePcfCmImJiWdMYeCO95qYmMiECRM4cOAADRo0AMz7CAkJoW3bto5jrLrX013Iva9fvx4fHx/HfZbnZ9od+Pv706VLF1JTU+nfvz9g/r+cmprKyJEjrS1cFTt69Cjbt2/nzjvvpEuXLvj5+ZGamsqAAQMA2Lp1K+np6Rf2s1np7t1yhh9//NF49dVXjXXr1hk7d+40UlNTjZ49exrNmjUzTpw4YRiGYcyaNcuYPXu2sXnzZmPz5s3GhAkTDB8fH+Ott95ynGfZsmVGrVq1jJdeesnYvHmzMX78eJcbIl2ee83OzjaioqKMO++80/j555+NOXPmGEFBQWcMB3f1e92zZ4/RvHlzo3fv3saePXuchpnaecrnWp579ZTP1TAMY9euXca6deuMZ555xqhTp46xbt06Y926dcaRI0cMwzCM+fPnG//+97+NjRs3Gtu2bTNee+01IygoyBg3bpzjHPah748++qixefNmY8aMGS459P1892of5n/ttdca69evNxYtWmTUr1+/zGH+rn6vp1q+fLnx8ssvG+vXrze2b99uvPfee0b9+vWNwYMHO44pz8+0u5gzZ44REBBgzJo1y9i0aZMxYsQIIywszGl0ojt6+OGHjW+++cbYsWOHsWzZMiMpKcmIjIw0Dhw4YBiGOcy/cePGxpIlS4zVq1efMe1MZSggVaGffvrJ6NWrlxEeHm4EBAQYcXFxxr333mvs2bPHccysWbOMNm3aGEFBQUZISIjRvXt3p6GJdh999JHRsmVLw9/f32jXrp3xxRdf1OStnFd57tUwDGPDhg3GZZddZgQEBBiNGjUyJk2adMa5XP1e3377bQMo82HnKZ9ree7VMDzjczUMwxgyZEiZ97p06VLDMMx5oeLj4406deoYwcHBRqdOnYyZM2caxcXFTudZunSpER8fb/j7+xsXX3yx8fbbb9f8zZzH+e7VMAxj586dxnXXXWfUrl3biIyMNB5++GGjsLDQ6TzucK+nWrNmjZGQkGCEhoYagYGBRps2bYznn3/e8YecXXl+pt3Fq6++ajRu3Njw9/c3unfvbvz4449WF+mCDRw40IiJiTH8/f2NRo0aGQMHDjR+++03x/7jx48b9913n1GvXj0jKCjIuPnmm53+sKsMm2G4SY9aERERkRqiUWwiIiIip1FAEhERETmNApKIiIjIaRSQRERERE6jgCQiIiJyGgUkERERkdMoIImIiIicRgFJRERE5DQKSCLiUWw2G/PmzQNg586d2Gw21q9fD8A333yDzWYjOzu7Uuc+3/lmzZrltFhmTRo6dKhj/S0RuXBarFZEqs3QoUPJzs52BJaaFhsby/79+4mMjKyW8/fs2ZP9+/cTGhpaLecXEesoIImIx/L19SU6Orrazu/v71+t5xcR66iJTUQs8e2339K9e3cCAgKIiYnhiSeeoKioyLH/yJEj3HHHHQQHBxMTE8PLL7/MVVddxYMPPljua5zeJHa6Y8eOcd1113HppZc6msn+85//0KZNGwIDA2ndujWvvfbaWc9/tia7L7/8kjZt2lCnTh369OnD/v37HftKSkp49tlnueiiiwgICCA+Pp5FixY5vX/jxo1cffXV1K5dm4iICEaMGMHRo0cd+4uLi0lJSSEsLIyIiAgee+wxtKymSNVSQBKRGrd371769u1Lt27d2LBhA6+//jpvvvkmzz33nOOYlJQUli1bxvz581m8eDHff/89a9eurbIyZGdnc80111BSUsLixYsJCwvj/fffZ9y4cUyYMIHNmzfz/PPP89RTT/HOO++U+7zHjh3jpZde4v/+7//47rvvSE9P55FHHnHsf+WVV5gyZQovvfQSP/30E8nJydx4441s27YNgLy8PJKTk6lXrx6rVq1i7ty5fP3114wcOdJxjilTpjBr1izeeustfvjhB7Kysvj000+r7HsjIoAhIlJNhgwZYtx0001nbH/yySeNVq1aGSUlJY5tM2bMMOrUqWMUFxcbubm5hp+fnzF37lzH/uzsbCMoKMgYPXr0Oa8JGJ9++qlhGIaxY8cOAzDWrVtnGIZhLF261ACMzZs3Gx07djQGDBhg5OfnO97brFkzY/bs2U7n+8c//mEkJiae83yHDx82DMMw3n77bQMwfvvtN6f7ioqKcnzdsGFDY8KECU7X6Natm3HfffcZhmEYb7zxhlGvXj3j6NGjjv1ffPGF4ePjY2RkZBiGYRgxMTHGCy+84NhfWFhoXHTRRWV+r0WkclSDJCI1bvPmzSQmJmKz2RzbLr30Uo4ePcqePXv4/fffKSwspHv37o79oaGhtGrVyvH1888/T506dRyP9PT0cl//mmuuoXnz5nz44Yf4+/sDZs3N9u3bGT58uNN5n3vuObZv317ucwcFBdGsWTPH1zExMRw4cACA3Nxc9u3bx6WXXur0nksvvZTNmzc7vjedOnUiODjYaX9JSQlbt24lJyeH/fv3k5CQ4Nhfq1YtunbtWu4yisj5qZO2iLile++9l9tuu83xdcOGDcv93n79+vHxxx+zadMmOnToAODo4/Pvf//bKXyA2dm7vPz8/Jy+ttls6h8k4oZUgyQiNa5NmzakpaU5BYdly5ZRt25dLrroIi6++GL8/PxYtWqVY39OTg6//vqr4+vw8HCaN2/ueNSqVf6/9yZNmsSQIUPo3bs3mzZtAiAqKoqGDRvy+++/O523efPmNG3atAruGkJCQmjYsCHLli1z2r5s2TLatm0LmN+bDRs2kJeX57Tfx8eHVq1aERoaSkxMDCtWrHDsLyoqYs2aNVVSRhExqQZJRKpVTk7OGaPIRowYwbRp0xg1ahQjR45k69atjB8/npSUFHx8fKhbty5Dhgzh0UcfJTw8nAYNGjB+/Hh8fHycmuUuxEsvvURxcTFXX30133zzDa1bt+aZZ57hgQceIDQ0lD59+pCfn8/q1as5fPgwKSkpVXLdRx99lPHjx9OsWTPi4+N5++23Wb9+Pe+//z4Ad9xxB+PHj2fIkCE8/fTTHDx4kFGjRnHnnXcSFRUFwOjRo5k0aRItWrSgdevWTJ06tdKTX4pI2RSQRKRaffPNN3Tu3Nlp2/Dhw1m4cCGPPvoonTp1Ijw8nOHDhzN27FjHMVOnTuXee+/l+uuvJyQkhMcee4zdu3cTGBhYZWV7+eWXnULSXXfdRVBQEC+++CKPPvoowcHBdOjQoUJTC5zPAw88QE5ODg8//DAHDhygbdu2zJ8/nxYtWgBmH6Yvv/yS0aNH061bN4KCghgwYABTp051nOPhhx9m//79DBkyBB8fH/76179y8803k5OTU2XlFPF2NkON4yLiBvLy8mjUqBFTpkxh+PDhVhdHRDycapBExCWtW7eOLVu20L17d3Jycnj22WcBuOmmmywumYh4AwUkEXFZL730Elu3bsXf358uXbrw/fffV9u6aiIip1ITm4iIiMhpNMxfRERE5DQKSCIiIiKnUUASEREROY0CkoiIiMhpFJBERERETqOAJCIiInIaBSQRERGR0yggiYiIiJzm/wGGw0ywrBJtdQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -1273,8 +1390,8 @@ } ], "source": [ - "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", label=\"In-distribution\")\n", - "sns.kdeplot(ood_likelihoods, color=\"deeppink\", label=\"OOD\")\n", + "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", bw_adjust=1000000, label=\"In-distribution\")\n", + "sns.kdeplot(ood_likelihoods, color=\"deeppink\", bw_adjust=1,label=\"OOD\")\n", "plt.legend()\n", "plt.xlabel(\"Log-likelihood\")" ] diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py index cd8d0d9f..428947a9 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -53,8 +53,6 @@ import numpy as np import seaborn as sns import torch -import torch.nn.functional as F -from ignite.utils import convert_tensor from monai import transforms from monai.apps import MedNISTDataset from monai.config import print_config @@ -99,9 +97,9 @@ transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), transforms.RandAffined( keys=["image"], - rotate_range=[(-np.pi / 18, np.pi / 18), (-np.pi / 18, np.pi / 18)], + rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)], translate_range=[(-1, 1), (-1, 1)], - scale_range=[(-0.05, 0.05), (-0.05, 0.05)], + scale_range=[(-0.01, 0.01), (-0.01, 0.01)], spatial_size=[image_size, image_size], padding_mode="zeros", prob=0.5, @@ -109,7 +107,7 @@ ] ) train_ds = Dataset(data=train_datalist, transform=train_transforms) -train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True) +train_loader = DataLoader(train_ds, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True) # %% [markdown] # ### Visualise some examples from the dataset @@ -136,7 +134,7 @@ ] ) val_ds = Dataset(data=val_datalist, transform=val_transforms) -val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True) +val_loader = DataLoader(val_ds, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True) # %% [markdown] # ## Vector Quantized Variational Autoencoder @@ -175,8 +173,8 @@ # We will train our VQ-VAE for 50 epochs. # %% -n_epochs = 50 -val_interval = 10 +n_epochs = 75 +val_interval = 25 epoch_losses = [] val_epoch_losses = [] @@ -221,28 +219,6 @@ total_time = time.time() - total_start print(f"train completed, total time: {total_time}.") -# %% [markdown] -# ### Learning curves - -# %% -plt.style.use("ggplot") -plt.title("Learning Curves", fontsize=20) -plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color="C0", linewidth=2.0, label="Train") -plt.plot( - np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)), - val_epoch_losses, - color="C1", - linewidth=2.0, - label="Validation", -) -plt.yticks(fontsize=12) -plt.xticks(fontsize=12) -plt.xlabel("Epochs", fontsize=16) -plt.ylabel("Loss", fontsize=16) -plt.legend(prop={"size": 14}) -plt.show() - - # %% [markdown] # ### Plot reconstructions of final trained vqvae model @@ -270,8 +246,8 @@ # We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformers we will need to reduce the batch size. # %% -train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True) -val_loader = DataLoader(val_ds, batch_size=8, shuffle=True, num_workers=4, persistent_workers=True) +train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True) +val_loader = DataLoader(val_ds, batch_size=32, shuffle=False, num_workers=4, persistent_workers=True) # %% [markdown] # ### 2D latent representation -> 1D sequence @@ -288,29 +264,26 @@ ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(1,) + spatial_shape) -sequence_ordering = ordering.get_sequence_ordering() -revert_sequence_ordering = ordering.get_revert_sequence_ordering() - # %% [markdown] -# ### Define Network, optimizer and losses +# ### Define network, inferer, optimizer and loss function # %% device = torch.device("cuda" if torch.cuda.is_available() else "cpu") transformer_model = DecoderOnlyTransformer( - num_tokens=256, # must be equal to num_embeddings input of VQVAE + num_tokens=16+1, max_seq_len=spatial_shape[0] * spatial_shape[1], - attn_layers_dim=64, - attn_layers_depth=12, - attn_layers_heads=8, + attn_layers_dim=256, + attn_layers_depth=20, + attn_layers_heads=16, ) transformer_model.to(device) inferer = VQVAETransformerInferer() # %% -optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-3) +optimizer = torch.optim.Adam(params=transformer_model.parameters(), lr=1e-4) ce_loss = CrossEntropyLoss() # %% [markdown] @@ -318,8 +291,8 @@ # We will train the Transformer for 100 epochs. # %% -n_epochs = 100 -val_interval = 10 +n_epochs = 300 +val_interval = 25 epoch_losses = [] val_epoch_losses = [] vqvae_model.eval() @@ -334,24 +307,11 @@ images = batch["image"].to(device) - - - # Encode images using vqvae and transformer to 1D sequence - quantizations = vqvae_model.index_quantize(images) - quantizations = quantizations.reshape(quantizations.shape[0], -1) - quantizations = quantizations[:, sequence_ordering] - - # Pad input to give start of sequence token - quantizations = F.pad(quantizations, (1, 0), "constant", 255) # pad with 0 i.e. vocab size of vqvae - quantizations = quantizations.long() - - quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True) - quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True) - optimizer.zero_grad(set_to_none=True) - logits = transformer_model(x=quantizations_input).transpose(1, 2) + logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True) + logits = logits.transpose(1, 2) loss = ce_loss(logits, quantizations_target) @@ -370,20 +330,9 @@ for val_step, batch in enumerate(val_loader, start=1): images = batch["image"].to(device) - # Encode images using vqvae and transformer to 1D sequence - quantizations = vqvae_model.index_quantize(images) - quantizations = quantizations.reshape(quantizations.shape[0], -1) - quantizations = quantizations[:, sequence_ordering] - - # Pad input to give start of sequence token - quantizations = F.pad(quantizations, (1, 0), "constant", 255) # pad with 255 i.e. vocab size of vqvae - quantizations = quantizations.long() - quantizations_input = convert_tensor(quantizations[:, :-1], device, non_blocking=True) - quantizations_target = convert_tensor(quantizations[:, 1:], device, non_blocking=True) - - # model outputs - logits = transformer_model(x=quantizations_input).transpose(1, 2) + logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True) + logits = logits.transpose(1, 2) loss = ce_loss(logits, quantizations_target) @@ -395,27 +344,6 @@ total_time = time.time() - total_start print(f"train completed, total time: {total_time}.") -# %% [markdown] -# ### Learning Curves - -# %% -plt.style.use("ggplot") -plt.title("Learning Curves", fontsize=20) -plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_losses, color="C0", linewidth=2.0, label="Train") -plt.plot( - np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)), - val_epoch_losses, - color="C1", - linewidth=2.0, - label="Validation", -) -plt.yticks(fontsize=12) -plt.xticks(fontsize=12) -plt.xlabel("Epochs", fontsize=16) -plt.ylabel("Loss", fontsize=16) -plt.legend(prop={"size": 14}) -plt.show() - # %% [markdown] # ## Image-wise anomaly detection # @@ -445,10 +373,10 @@ in_likelihoods = np.concatenate(in_likelihoods) # %% [markdown] -# We will use the other classes of the dataset for the out-of-distribution examples. +# We will use the "ChestCT" class of the dataset for the out-of-distribution examples. # %% -ood_datalist = [{"image": item["image"]} for item in test_data.data if item["class_name"] != "HeadCT"] +ood_datalist = [{"image": item["image"]} for item in test_data.data if item["class_name"] == "ChestCT"] ood_ds = Dataset(data=ood_datalist, transform=val_transforms) ood_loader = DataLoader(ood_ds, batch_size=64, shuffle=False, num_workers=4, persistent_workers=True) @@ -472,8 +400,8 @@ # Here, we plot the log-likelihood of the images. In this case, the lower the log-likelihood, the more unlikely the image belongs to the training set. # %% -sns.kdeplot(in_likelihoods, color="dodgerblue", label="In-distribution") -sns.kdeplot(ood_likelihoods, color="deeppink", label="OOD") +sns.kdeplot(in_likelihoods, color="dodgerblue", bw_adjust=1000000, label="In-distribution") +sns.kdeplot(ood_likelihoods, color="deeppink", bw_adjust=1,label="OOD") plt.legend() plt.xlabel("Log-likelihood") From a685584d4639a57134e76de06c72431785d6b9f4 Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Sat, 11 Mar 2023 20:40:50 +0000 Subject: [PATCH 4/6] Add tutorial Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 564 ++++-------------- .../anomaly_detection_with_transformers.py | 73 ++- 2 files changed, 162 insertions(+), 475 deletions(-) diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb index 997f10d2..73e65a6b 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -9,7 +9,7 @@ "\n", "This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in Pinaya et al.[1].\n", "\n", - "Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to \"Experiment 2 – image-wise anomaly detection on 2D synthetic data\" from [1], we will train our generative models on `HeadCT` images.\n", + "Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to \"Experiment 2 – image-wise anomaly detection on 2D synthetic data\" from [1], we will train a general-purpose VQ-VAE (using all MEDNIST classes), and then a generative models (i.e., Transformer) on `HeadCT` images.\n", "\n", "Finally, we will compute the log-likelihood of images from the same class (in-distribution class) and images from other classes (out-of-distribution).\n", "\n", @@ -61,7 +61,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-10 23:52:11,507 - A matching Triton is not available, some optimizations will not be enabled.\n", + "2023-03-11 19:44:14,507 - A matching Triton is not available, some optimizations will not be enabled.\n", "Error caught was: No module named 'triton'\n", "MONAI version: 1.2.dev2304\n", "Numpy version: 1.23.5\n", @@ -113,8 +113,6 @@ "import numpy as np\n", "import seaborn as sns\n", "import torch\n", - "import torch.nn.functional as F\n", - "from ignite.utils import convert_tensor\n", "from monai import transforms\n", "from monai.apps import MedNISTDataset\n", "from monai.config import print_config\n", @@ -163,7 +161,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "/tmp/tmpaurm48lm\n" + "/tmp/tmp8lmmizk9\n" ] } ], @@ -191,14 +189,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "MedNIST.tar.gz: 59.0MB [00:04, 13.4MB/s] " + "MedNIST.tar.gz: 59.0MB [00:03, 15.7MB/s] " ] }, { "name": "stdout", "output_type": "stream", "text": [ - "2023-03-10 23:52:16,176 - INFO - Downloaded: /tmp/tmpaurm48lm/MedNIST.tar.gz\n" + "2023-03-11 19:44:18,504 - INFO - Downloaded: /tmp/tmp8lmmizk9/MedNIST.tar.gz\n" ] }, { @@ -212,22 +210,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-10 23:52:16,270 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-10 23:52:16,271 - INFO - Writing into directory: /tmp/tmpaurm48lm.\n" + "2023-03-11 19:44:18,609 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 19:44:18,610 - INFO - Writing into directory: /tmp/tmp8lmmizk9.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|█████████████████████████████████████████████████████████████████| 47164/47164 [00:13<00:00, 3379.57it/s]\n" + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:26<00:00, 1804.98it/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", - "image_size = 64\n", "train_transforms = transforms.Compose(\n", " [\n", " transforms.LoadImaged(keys=[\"image\"]),\n", @@ -238,14 +233,14 @@ " 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.01, 0.01), (-0.01, 0.01)],\n", - " spatial_size=[image_size, image_size],\n", + " spatial_size=[64, 64],\n", " padding_mode=\"zeros\",\n", " prob=0.5,\n", " ),\n", " ]\n", ")\n", - "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n", - "train_loader = DataLoader(train_ds, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True)" + "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", download=True, seed=0, transform=train_transforms)\n", + "train_loader = DataLoader(train_data, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True)" ] }, { @@ -264,7 +259,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -300,22 +295,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-10 23:52:35,261 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-10 23:52:35,262 - INFO - File exists: /tmp/tmpaurm48lm/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-10 23:52:35,262 - INFO - Non-empty folder exists in /tmp/tmpaurm48lm/MedNIST, skipped extracting.\n" + "2023-03-11 19:44:49,498 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 19:44:49,499 - INFO - File exists: /tmp/tmp8lmmizk9/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-11 19:44:49,499 - INFO - Non-empty folder exists in /tmp/tmp8lmmizk9/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3401.03it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:03<00:00, 1786.89it/s]\n" ] } ], "source": [ - "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\"]\n", "val_transforms = transforms.Compose(\n", " [\n", " transforms.LoadImaged(keys=[\"image\"]),\n", @@ -323,8 +316,8 @@ " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n", " ]\n", ")\n", - "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n", - "val_loader = DataLoader(val_ds, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True)" + "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0, transform=val_transforms)\n", + "val_loader = DataLoader(val_data, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True)" ] }, { @@ -559,100 +552,34 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|██████████████████| 32/32 [00:29<00:00, 1.07it/s, recons_loss=0.207, quantization_loss=1.48e-6]\n", - "Epoch 1: 100%|██████████████████| 32/32 [00:29<00:00, 1.08it/s, recons_loss=0.099, quantization_loss=4.51e-6]\n", - "Epoch 2: 100%|█████████████████| 32/32 [00:29<00:00, 1.08it/s, recons_loss=0.0732, quantization_loss=7.78e-5]\n", - "Epoch 3: 100%|█████████████████| 32/32 [00:29<00:00, 1.07it/s, recons_loss=0.0587, quantization_loss=3.59e-5]\n", - "Epoch 4: 100%|█████████████████| 32/32 [00:30<00:00, 1.06it/s, recons_loss=0.0529, quantization_loss=3.12e-5]\n", - "Epoch 5: 100%|██████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.047, quantization_loss=3.68e-5]\n", - "Epoch 6: 100%|█████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0421, quantization_loss=4.53e-5]\n", - "Epoch 7: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0406, quantization_loss=4.59e-5]\n", - "Epoch 8: 100%|█████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0392, quantization_loss=3.37e-5]\n", - "Epoch 9: 100%|█████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0358, quantization_loss=4.11e-5]\n", - "Epoch 10: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0331, quantization_loss=3.34e-5]\n", - "Epoch 11: 100%|████████████████| 32/32 [00:31<00:00, 1.02it/s, recons_loss=0.0322, quantization_loss=3.38e-5]\n", - "Epoch 12: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0302, quantization_loss=3.61e-5]\n", - "Epoch 13: 100%|████████████████| 32/32 [00:31<00:00, 1.03it/s, recons_loss=0.0297, quantization_loss=3.42e-5]\n", - "Epoch 14: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0305, quantization_loss=5.24e-5]\n", - "Epoch 15: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0308, quantization_loss=4.61e-5]\n", - "Epoch 16: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0292, quantization_loss=6.12e-5]\n", - "Epoch 17: 100%|██████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.03, quantization_loss=5.07e-5]\n", - "Epoch 18: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0276, quantization_loss=7.42e-5]\n", - "Epoch 19: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0275, quantization_loss=9.32e-5]\n", - "Epoch 20: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0295, quantization_loss=0.000102]\n", - "Epoch 21: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0288, quantization_loss=0.000104]\n", - "Epoch 22: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0271, quantization_loss=8.86e-5]\n", - "Epoch 23: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0263, quantization_loss=9.44e-5]\n", - "Epoch 24: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0263, quantization_loss=0.000108]\n", - "Epoch 25: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0251, quantization_loss=0.000105]\n", - "Epoch 26: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0261, quantization_loss=0.000109]\n", - "Epoch 27: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0267, quantization_loss=0.000115]\n", - "Epoch 28: 100%|█████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.027, quantization_loss=8.48e-5]\n", - "Epoch 29: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0257, quantization_loss=0.000122]\n", - "Epoch 30: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0241, quantization_loss=0.000109]\n", - "Epoch 31: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.024, quantization_loss=0.000107]\n", - "Epoch 32: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0241, quantization_loss=0.000108]\n", - "Epoch 33: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0244, quantization_loss=0.000111]\n", - "Epoch 34: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0241, quantization_loss=0.000117]\n", - "Epoch 35: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0245, quantization_loss=0.000124]\n", - "Epoch 36: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0276, quantization_loss=0.00012]\n", - "Epoch 37: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0258, quantization_loss=0.000137]\n", - "Epoch 38: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0242, quantization_loss=0.00011]\n", - "Epoch 39: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0236, quantization_loss=0.000131]\n", - "Epoch 40: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0227, quantization_loss=0.000125]\n", - "Epoch 41: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0227, quantization_loss=0.000118]\n", - "Epoch 42: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0239, quantization_loss=0.000112]\n", - "Epoch 43: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0267, quantization_loss=0.000131]\n", - "Epoch 44: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0249, quantization_loss=0.000113]\n", - "Epoch 45: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0243, quantization_loss=0.000131]\n", - "Epoch 46: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0248, quantization_loss=0.000108]\n", - "Epoch 47: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0243, quantization_loss=0.000122]\n", - "Epoch 48: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0237, quantization_loss=0.000143]\n", - "Epoch 49: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0241, quantization_loss=0.000121]\n", - "Epoch 50: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0232, quantization_loss=0.000119]\n", - "Epoch 51: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0233, quantization_loss=0.000131]\n", - "Epoch 52: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0226, quantization_loss=0.00017]\n", - "Epoch 53: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.022, quantization_loss=0.000167]\n", - "Epoch 54: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0216, quantization_loss=0.000186]\n", - "Epoch 55: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0219, quantization_loss=0.000161]\n", - "Epoch 56: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0216, quantization_loss=0.000138]\n", - "Epoch 57: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.022, quantization_loss=0.00015]\n", - "Epoch 58: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.024, quantization_loss=0.000124]\n", - "Epoch 59: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0243, quantization_loss=0.000117]\n", - "Epoch 60: 100%|█████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.023, quantization_loss=0.00017]\n", - "Epoch 61: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0218, quantization_loss=0.000161]\n", - "Epoch 62: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0213, quantization_loss=0.000153]\n", - "Epoch 63: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0212, quantization_loss=0.000139]\n", - "Epoch 64: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.022, quantization_loss=0.000149]\n", - "Epoch 65: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0213, quantization_loss=0.000159]\n", - "Epoch 66: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0209, quantization_loss=0.000138]\n", - "Epoch 67: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0216, quantization_loss=0.000117]\n", - "Epoch 68: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0223, quantization_loss=0.000143]\n", - "Epoch 69: 100%|████████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0225, quantization_loss=0.00012]\n", - "Epoch 70: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0246, quantization_loss=0.000147]\n", - "Epoch 71: 100%|███████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.0235, quantization_loss=0.000151]\n", - "Epoch 72: 100%|████████████████| 32/32 [00:30<00:00, 1.05it/s, recons_loss=0.023, quantization_loss=0.000159]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch 73: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0217, quantization_loss=0.000164]\n", - "Epoch 74: 100%|███████████████| 32/32 [00:30<00:00, 1.04it/s, recons_loss=0.0212, quantization_loss=0.000134]\n" + "Epoch 0: 100%|████████████████| 185/185 [02:51<00:00, 1.08it/s, recons_loss=0.152, quantization_loss=1.05e-5]\n", + "Epoch 1: 100%|███████████████| 185/185 [02:57<00:00, 1.04it/s, recons_loss=0.0358, quantization_loss=7.67e-6]\n", + "Epoch 2: 100%|███████████████| 185/185 [03:01<00:00, 1.02it/s, recons_loss=0.0296, quantization_loss=1.27e-5]\n", + "Epoch 3: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0273, quantization_loss=1.68e-5]\n", + "Epoch 4: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0274, quantization_loss=2.47e-5]\n", + "Epoch 5: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0273, quantization_loss=2.43e-5]\n", + "Epoch 6: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0246, quantization_loss=2.37e-5]\n", + "Epoch 7: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0254, quantization_loss=2.47e-5]\n", + "Epoch 8: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0254, quantization_loss=3.03e-5]\n", + "Epoch 9: 100%|███████████████| 185/185 [02:58<00:00, 1.03it/s, recons_loss=0.0247, quantization_loss=3.23e-5]\n", + "Epoch 10: 100%|██████████████| 185/185 [02:58<00:00, 1.03it/s, recons_loss=0.0245, quantization_loss=2.94e-5]\n", + "Epoch 11: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0239, quantization_loss=3.89e-5]\n", + "Epoch 12: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0233, quantization_loss=2.87e-5]\n", + "Epoch 13: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0236, quantization_loss=3.18e-5]\n", + "Epoch 14: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0226, quantization_loss=3.43e-5]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "train completed, total time: 2301.2195658683777.\n" + "train completed, total time: 2699.0575420856476.\n" ] } ], "source": [ - "n_epochs = 75\n", - "val_interval = 25\n", + "n_epochs = 15\n", + "val_interval = 5\n", "epoch_losses = []\n", "val_epoch_losses = []\n", "\n", @@ -714,7 +641,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAELCAYAAABEYIWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGwElEQVR4nO2deXBWVbb2FwgJMQwGSBgSIBBAZBIMggMIioKidoPQtt7bJaBto+BYDlfbEkGpplCxsRzQ7rqKirevit2K92orqDggKioNLco8j2FKGAJ6Ief7o83+1n6Sd+Wcl0xynl+VVftknWGf/Z6zOa5nr7XqBEEQCCGEEEJiS92a7gAhhBBCahZ+DBBCCCExhx8DhBBCSMzhxwAhhBASc/gxQAghhMQcfgwQQgghMYcfA4QQQkjM4ccAIYQQEnP4MUAIIYTEHH4MxJTc3FwZM2ZMTXeDEEKSYsGCBVKnTh1ZsGBBTXflhCB2HwOzZs2SOnXqyFdffVXTXRERkeLiYpk0aVK5D/Tbb78tkyZNqvY+aerUqSM33XRTjfaBkNpE6RxS+l+9evUkOztbxowZI1u3bq3p7lUqTz/9tMyaNSv2fYgD9Wq6A3GnuLhYJk+eLCIigwYN8mxvv/22PPXUUzX+QUAIKcuDDz4o7du3lyNHjsjnn38us2bNkk8//VS+/fZbadCgQU13r1J4+umnpXnz5jXqRUzUh/POO08OHz4sKSkpNdOxEwx+DBBCSBJccskl0qdPHxER+e1vfyvNmzeXadOmydy5c+XKK6+s4d5VP4cOHZL09PRqu17dunVPmI+u2kDsZILyGDNmjDRs2FC2bt0qw4cPl4YNG0pmZqbceeedcuzYMbffhg0bpE6dOvLoo4/KH//4R2nXrp2kpaXJwIED5dtvv/XOOWjQoDL/p196rdzcXHe+zMxMERGZPHmycztOmjRJxowZI0899ZSIiOeSLKWkpERmzJgh3bp1kwYNGkiLFi1k3Lhxsm/fPu96QRDIlClTJCcnR04++WQ5//zzZfny5UmPValO9+qrr8rkyZMlOztbGjVqJKNGjZKioiL54Ycf5LbbbpOsrCxp2LChjB07Vn744QfvHM8//7xccMEFkpWVJampqdK1a1eZOXNmmWuVlJTIpEmTpHXr1q7v3333XbnrHQoLC+W2226TNm3aSGpqqnTs2FGmTZsmJSUlSd8rIVEYMGCAiIisXbvW/W3FihUyatQoadq0qTRo0ED69Okjc+fOLXNsYWGh3H777ZKbmyupqamSk5Mj11xzjezevdvtU1BQINddd520aNFCGjRoIKeffrq88MIL3nn0HPWnP/1J8vLyJDU1Vc4880xZvHixt++OHTtk7NixkpOTI6mpqdKqVSv55S9/KRs2bBCRf60rWr58uXz00Udu/imd00qlko8++kjGjx8vWVlZkpOTIyL+HKeZNGmSN4eVMnv2bOnbt6+cfPLJkpGRIeedd5689957FfYh0ZqB1157TfLz8yUtLU2aN28uv/nNb8rIN2Hn/DhBz8BPHDt2TIYOHSr9+vWTRx99VObPny/Tp0+XvLw8ufHGG719X3zxRTlw4IBMmDBBjhw5Io8//rhccMEF8s9//lNatGgR+pqZmZkyc+ZMufHGG2XEiBFyxRVXiIhIz5495dChQ7Jt2zaZN2+evPTSS2WOHTdunMyaNUvGjh0rt9xyi6xfv16efPJJWbJkiSxcuFDq168vIiITJ06UKVOmyLBhw2TYsGHyzTffyJAhQ+THH388jtESmTp1qqSlpck999wja9askSeeeELq168vdevWlX379smkSZOc67R9+/YyceJEd+zMmTOlW7du8otf/ELq1asnb731lowfP15KSkpkwoQJbr97771XHn74Ybn88stl6NChsnTpUhk6dKgcOXLE60txcbEMHDhQtm7dKuPGjZO2bdvKZ599Jvfee69s375dZsyYcVz3SkgYSv8RzcjIEBGR5cuXy7nnnivZ2dlyzz33SHp6urz66qsyfPhwef3112XEiBEiInLw4EEZMGCAfP/993LttdfKGWecIbt375a5c+fKli1bpHnz5nL48GEZNGiQrFmzRm666SZp3769vPbaazJmzBgpLCyUW2+91evLf/3Xf8mBAwdk3LhxUqdOHXn44YfliiuukHXr1rm5YeTIkbJ8+XK5+eabJTc3VwoKCmTevHmyadMmyc3NlRkzZsjNN98sDRs2lPvuu09EpMz8Nn78eMnMzJSJEyfKoUOHIo/Z5MmTZdKkSXLOOefIgw8+KCkpKfLFF1/IBx98IEOGDAnVB03pnHjmmWfK1KlTZefOnfL444/LwoULZcmSJXLKKae4faPM+bEgiBnPP/98ICLB4sWL3d9Gjx4diEjw4IMP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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAELCAYAAABEYIWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHnUlEQVR4nO2debxX49rGr1K7UumUJg0adpKKZKcMpRR1JEQZz3uoOKJwTMfLcSTD+/YaIkMynEOHcFTHkGOeMoTMIVEkhCa0DYW39nr/OPZ6r+faez/t326nYV3fz8fn86zu35qe9axnL/d13/dTJUmSBMYYY4zJLFU39gUYY4wxZuPijwFjjDEm4/hjwBhjjMk4/hgwxhhjMo4/BowxxpiM448BY4wxJuP4Y8AYY4zJOP4YMMYYYzKOPwaMMcaYjOOPgYzSunVrDBs2bGNfhjHGVIiZM2eiSpUqmDlz5sa+lC2CzH0MTJ48GVWqVMFrr722sS8FALBq1SqMHTu21AH98MMPY+zYsb/6NTFVqlTBKaecslGvwZhNieI5pPi/atWqoXnz5hg2bBg+//zzjX15lcoNN9yAyZMnZ/4askC1jX0BWWfVqlW46KKLAAB9+vQJbA8//DAmTpy40T8IjDElufjii9GmTRv8+OOPePnllzF58mS88MILePfdd1GzZs2NfXmVwg033ICGDRtuVC9iWdewzz77YPXq1cjLy9s4F7aF4Y8BY4ypAAcccAC6desGADjhhBPQsGFDXHbZZZgxYwaOOOKIjXx1vz4//PADateu/audr2rVqlvMR9emQOZkgtIYNmwY6tSpg88//xyDBw9GnTp10KhRI5x99tlYu3Zt+rtFixahSpUquPLKK3H11VejVatWqFWrFnr37o133303OGafPn1K/J9+8blat26dHq9Ro0YAgIsuuih1O44dOxbDhg3DxIkTASBwSRZTVFSECRMmoFOnTqhZsyaaNGmCkSNH4ptvvgnOlyQJLr30UrRo0QJbb7019t13X8ydO7fCfVWs002dOhUXXXQRmjdvjrp162Lo0KEoLCzETz/9hNNPPx2NGzdGnTp1MHz4cPz000/BMW677Tb07dsXjRs3Ro0aNdCxY0dMmjSpxLmKioowduxYNGvWLL329957r9R4h5UrV+L0009Hy5YtUaNGDbRr1w6XXXYZioqKKnyvxuRCr169AAAfffRR+m/vv/8+hg4digYNGqBmzZro1q0bZsyYUWLflStX4owzzkDr1q1Ro0YNtGjRAsceeyxWrFiR/mbZsmU4/vjj0aRJE9SsWRNdunTB3//+9+A4PEfdfPPNyM/PR40aNbD77rvj1VdfDX67ZMkSDB8+HC1atECNGjWw3Xbb4ZBDDsGiRYsA/DuuaO7cuXj22WfT+ad4TiuWSp599lmMGjUKjRs3RosWLQCEcxwzduzYYA4rZsqUKejevTu23npr1K9fH/vssw8ef/zxdV5DWTED06ZNQ0FBAWrVqoWGDRviP/7jP0rIN+Wd87OEPQO/sHbtWgwYMAA9evTAlVdeiSeffBLjx49Hfn4+Tj755OC3t99+O7777juMHj0aP/74I6655hr07dsX77zzDpo0aVLuczZq1AiTJk3CySefjEMPPRSHHXYYAGCXXXbBDz/8gC+++AJPPPEE7rjjjhL7jhw5EpMnT8bw4cNx2mmn4eOPP8b111+PN998E7NmzUL16tUBAGPGjMGll16KgQMHYuDAgXjjjTfQv39//Pzzz+vRW8C4ceNQq1YtnHvuufjwww9x3XXXoXr16qhatSq++eYbjB07NnWdtmnTBmPGjEn3nTRpEjp16oSDDz4Y1apVw4MPPohRo0ahqKgIo0ePTn933nnn4fLLL8dBBx2EAQMGYM6cORgwYAB+/PHH4FpWrVqF3r174/PPP8fIkSOx/fbb48UXX8R5552HL7/8EhMmTFivezWmPBT/Ea1fvz4AYO7cudh7773RvHlznHvuuahduzamTp2KwYMH45///CcOPfRQAMD333+PXr16Yd68eRgxYgR22203rFixAjNmzMDixYvRsGFDrF69Gn369MGHH36IU045BW3atMG0adMwbNgwrFy5En/84x+Da7nrrrvw3XffYeTIkahSpQouv/xyHHbYYVi4cGE6NwwZMgRz587FqaeeitatW2PZsmV44okn8Omnn6J169aYMGECTj31VNSpUwfnn38+AJSY30aNGoVGjRphzJgx+OGHH3Lus4suughjx47FXnvthYsvvhh5eXmYPXs2nn76afTv379c18AUz4m77747xo0bh6VLl+Kaa67BrFmz8Oabb+I3v/lN+ttc5vxMkGSM2267LQGQvPrqq+m/HXfccQmA5OKLLw5+27Vr16SgoCDd/vjjjxMASa1atZLFixen/z579uwEQHLGGWek/9a7d++kd+/eJc5/3HHHJa1atUq3ly9fngBILrzwwhK/HT16dFLaI3r++ecTAMmdd94Z/Pujjz4a/PuyZcuSvLy85MADD0yKiorS3/35z39OACTHHXdciWMrAJLRo0en288880wCIOncuXPy888/p/9+9NFHJ1WqVEkOOOCAYP8999wzuN8kSZJVq1aVOM+AAQOStm3bpttLlixJqlWrlgwePDj43dixY0tc+yWXXJLUrl07mT9/fvDbc889N9lqq62STz/9dJ33aUx5KZ5DnnzyyWT58uXJZ599lkyfPj1p1KhRUqNGjeSzzz5LkiRJ+vXrl+y8887Jjz/+mO5bVFSU7LXXXskOO+yQ/tuYMWMSAMm9995b4lzF7+2ECRMSAMmUKVNS288//5zsueeeSZ06dZJvv/02SZL/n6O23Xbb5Ouvv05/+8ADDyQAkgcffDBJkiT55ptvEgDJFVdcEb3XTp06lTqPFfdBz549kzVr1gQ2neOKufDCC4P5bMGCBUnVqlWTQw89NFm7dm2p9x27huK56Jlnnkn7o3Hjxknnzp2T1atXp7/717/+lQBIxowZE1xjeeb8LGGZgDjppJOC7V69emHhwoUlfjd48GA0b9483e7evTt69OiBhx9+eINfI/BvN1i9evWw//77Y8WKFel/BQUFqFOnDp555hkAwJNPPomff/4Zp556auCeO/3009f7Go499tj0/zAAoEePHkiSBCNGjAh+16NHD3z22WdYs2ZN+m+1atVK24WFhVixYgV69+6NhQsXorCwEADw1FNPYc2aNRg1alRwvFNPPbXEtUybNg29evVC/fr1g/7Yb7/9sHbtWjz33HPrfb/GKPvttx8aNWqEli1bYujQoahduzZmzJiBFi1a4Ouvv8bTTz+NI444At999106Jr/66isMGDAACxYsSF3X//znP9GlS5fUU8AUv7cPP/wwmjZtiqOPPjq1Va9eHaeddhq+//57PPvss8F+Rx55ZOqhAP5fwiiez2rVqoW8vDzMnDmzhLSYC3/4wx+w1VZbVWjf+++/H0VFRRgzZgyqVg3/FJUmJ6yL1157DcuWLcOoUaOCWIIDDzwQHTp0wEMPPVRin/LO+VnAMsEv1KxZM9Xvi6lfv36pL8oOO+xQ4t/at2+PqVOnbrDrYxYsWIDCwkI0bty4VPuyZcsAAJ988gmAktfbqFGjYKKoCNtvv32wXa9ePQBAy5YtS/x7UVERCgsLse222wIAZs2ahQsvvBAvvfQSVq1aFfy+sLAQ9erVS6+9Xbt2gb1BgwYlrn3BggV4++23Szy/Yor7w5jKZOLEiWjfvj0KCwtx66234rnnnkONGjUAAB9++CGSJMEFF1yACy64oNT9ly1bhubNm+Ojjz7CkCFDouf65JNPsMMOO5T4o7nTTjuldkbfz+J3png+q1GjBi677DKcddZZaNKkCfbYYw8MGjQIxx57LJo2bVrOHgDatGlT7t8qH330EapWrYqOHTtW+BhMcR/suOOOJWwdOnTACy+8EPxbLnN+FvDHwC9U9Ou2LKpUqYIkSUr8e2UEpxQVFaFx48a48847S7WX9UexMimrv8r69+K++Oijj9CvXz906NABV111FVq2bIm8vDw8/PDDuPrqqysU8FdUVIT9998f55xzTqn29u3b53xMY9ZF9+7d02yCwYMHo2fPnjjmmGPwwQcfpOP47LPPxoABA0rdXz90K5N1vYfAvz2EBx10EO6//3489thjuOCCCzBu3Dg8/fTT6Nq1a7nOw16+Ysr6v/pNLTCvsuf8zR1/DFSABQsWlPi3+fPnBxG09evXL9XdpF/wMXdYWbb8/Hw8+eST2HvvvUt9GYtp1apVer1t27ZN/3358uUb7ev3wQcfxE8//YQZM2YE//dSLG0UU3ztH374YfB/H1999VWJa8/Pz8f333+P/fbbbwNeuTFls9VWW2HcuHHYd999cf3116dyWfXq1dc5LvPz80tkIymtWrXC22+/jaKiosA78P7776f2ipCfn4+zzjoLZ511FhYsWIBdd90V48ePx5QpUwBUzF1fv359rFy5ssS/69yXn5+PoqIivPfee9h1113LPF55r6G4Dz744AP07ds3sH3wwQcV7qOs4JiBCnD//fcHqSqvvPIKZs+ejQMOOCD9t/z8fLz//vtYvnx5+m9z5szBrFmzgmNtvfXWAFDqy1Ocs6u2I444AmvXrsUll1xSYp81a9akv99vv/1QvXp1XHfddcH/EWzM6Prir3G+nsLCQtx2223B7/r164dq1aqVSDm8/vrrSxzziCOOwEsvvYTHHnushG3lypVBvIIxG4o+ffqge/fumDBhArbZZhv06dMHN910E7788ssSv+V5YciQIZgzZw7uu+++Er8rfk8GDhyIJUuW4J577klta9aswXXXXYc6deqgd+/eOV3rqlWrSmTl5Ofno27dukEqcO3atUudm2Lk5+ejsLAQb7/9dvpvX375ZYn7Gzx4MKpWrYqLL764hEeQ54fyXkO3bt3QuHFj3HjjjcE9PPLII5g3bx4OPPDAnO4ja9gzUAHatWuHnj174uSTT8ZPP/2ECRMmYNtttw3c1CNGjMBVV12FAQMG4Pjjj8eyZctw4403olOnTvj222/T39WqVQsdO3bEPffcg/bt26NBgwbo3LkzOnfujIKCAgDAaaedhgEDBmCrrbbCUUcdhd69e2PkyJEYN24c3nrrLfTv3x/Vq1fHggULMG3aNFxzzTUYOnRomjc7btw4DBo0CAMHDsSbb76JRx55BA0bNvzV+w0A+vfvj7y8PBx00EEYOXIkvv/+e9xyyy1o3LhxMGk2adIEf/zjHzF+/HgcfPDB+O1vf4s5c+ak187/t/CnP/0JM2bMwKBBgzBs2DAUFBTghx9+wDvvvIPp06dj0aJFG+1+Tbb405/+hMMPPxyTJ0/GxIkT0bNnT+y88874wx/+gLZt22Lp0qV46aWXsHjxYsyZMyfdZ/r06Tj88MMxYsQIFBQU4Ouvv8aMGTNw4403okuXLjjxxBNx0003YdiwYXj99dfRunVrTJ8+HbNmzcKECRNQt27dnK5z/vz56NevH4444gh07NgR1apVw3333YelS5fiqKOOSn9XUFCASZMm4dJLL0W7du3QuHHjEv/XrRx11FH4z//8Txx66KE47bTTsGrVKkyaNAnt27fHG2+8kf6uXbt2OP/883HJJZegV69eOOyww1CjRg28+uqraNasGcaNG5fTNVSvXh2XXXYZhg8fjt69e+Poo49OUwtbt26NM844I6c+yhwbLY9hI1FWamHt2rVL/FZTYYrTdq644opk/PjxScuWLZMaNWokvXr1SubMmVNi/ylTpiRt27ZN8vLykl133TV57LHHSk27efHFF5OCgoIkLy8vSDNcs2ZNcuqppyaNGjVKqlSpUiLN8Oabb04KCgqSWrVqJXXr1k123nnn5Jxzzkm++OKL9Ddr165NLrroomS77bZLatWqlfTp0yd59913k1atWq1XauG0adPW2a/ch8uXL0//bcaMGckuu+yS1KxZM2ndunVy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\n", "text/plain": [ "
" ] @@ -754,7 +681,7 @@ "metadata": {}, "source": [ "### Datasets\n", - "We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformers we will need to reduce the batch size." + "To train the transformer, we only use the `HeadCT` class." ] }, { @@ -762,9 +689,48 @@ "execution_count": 12, "id": "2b3c3a82", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3342.69it/s]\n", + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3488.83it/s]\n" + ] + } + ], "source": [ + "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", seed=0)\n", + "train_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"HeadCT\"]\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.01, 0.01), (-0.01, 0.01)],\n", + " spatial_size=[64, 64],\n", + " padding_mode=\"zeros\",\n", + " prob=0.5,\n", + " ),\n", + " ]\n", + ")\n", + "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n", "train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True)\n", + "\n", + "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", seed=0)\n", + "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"HeadCT\"]\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", + " ]\n", + ")\n", + "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n", "val_loader = DataLoader(val_ds, batch_size=32, shuffle=False, num_workers=4, persistent_workers=True)" ] }, @@ -822,10 +788,10 @@ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "\n", "transformer_model = DecoderOnlyTransformer(\n", - " num_tokens=16+1,\n", + " num_tokens=16 + 1,\n", " max_seq_len=spatial_shape[0] * spatial_shape[1],\n", " attn_layers_dim=256,\n", - " attn_layers_depth=20,\n", + " attn_layers_depth=16,\n", " attn_layers_heads=16,\n", ")\n", "transformer_model.to(device)\n", @@ -863,343 +829,31 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|███████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.302]\n", - "Epoch 1: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.00183]\n", - "Epoch 2: 100%|█████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.00124]\n", - "Epoch 3: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000942]\n", - "Epoch 4: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000746]\n", - "Epoch 5: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000604]\n", - "Epoch 6: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.54it/s, ce_loss=0.000495]\n", - "Epoch 7: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000411]\n", - "Epoch 8: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000343]\n", - "Epoch 9: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000289]\n", - "Epoch 10: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000244]\n", - "Epoch 11: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000208]\n", - "Epoch 12: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000177]\n", - "Epoch 13: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=0.000152]\n", - "Epoch 14: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.00013]\n", - "Epoch 15: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=0.000112]\n", - "Epoch 16: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=9.7e-5]\n", - "Epoch 17: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=8.37e-5]\n", - "Epoch 18: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.26e-5]\n", - "Epoch 19: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.3e-5]\n", - "Epoch 20: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.48e-5]\n", - "Epoch 21: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.75e-5]\n", - "Epoch 22: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.14e-5]\n", - "Epoch 23: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.6e-5]\n", - "Epoch 24: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.13e-5]\n", - "Epoch 25: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.73e-5]\n", - "Epoch 26: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.38e-5]\n", - "Epoch 27: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.08e-5]\n", - "Epoch 28: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.82e-5]\n", - "Epoch 29: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-5]\n", - "Epoch 30: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.39e-5]\n", - "Epoch 31: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.21e-5]\n", - "Epoch 32: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.05e-5]\n", - "Epoch 33: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.23e-6]\n", - "Epoch 34: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.08e-6]\n", - "Epoch 35: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=7.06e-6]\n", - "Epoch 36: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.16e-6]\n", - "Epoch 37: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.4e-6]\n", - "Epoch 38: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.72e-6]\n", - "Epoch 39: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.12e-6]\n", - "Epoch 40: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.59e-6]\n", - "Epoch 41: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.15e-6]\n", - "Epoch 42: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.74e-6]\n", - "Epoch 43: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.41e-6]\n", - "Epoch 44: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.12e-6]\n", - "Epoch 45: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.88e-6]\n", - "Epoch 46: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.64e-6]\n", - "Epoch 47: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-6]\n", - "Epoch 48: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.2e-6]\n", - "Epoch 49: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.04e-6]\n", - "Epoch 50: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.71e-7]\n", - "Epoch 51: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.31e-7]\n", - "Epoch 52: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.26e-7]\n", - "Epoch 53: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=5.24e-7]\n", - "Epoch 54: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=4.41e-7]\n", - "Epoch 55: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.99e-7]\n", - "Epoch 56: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.29e-7]\n", - "Epoch 57: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.98e-7]\n", - "Epoch 58: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.71e-7]\n", - "Epoch 59: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.43e-7]\n", - "Epoch 60: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.92e-7]\n", - "Epoch 61: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.75e-7]\n", - "Epoch 62: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.6e-7]\n", - "Epoch 63: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.44e-7]\n", - "Epoch 64: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.36e-7]\n", - "Epoch 65: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.29e-7]\n", - "Epoch 66: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.22e-7]\n", - "Epoch 67: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.06e-7]\n", - "Epoch 68: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.62e-8]\n", - "Epoch 69: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.11e-8]\n", - "Epoch 70: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.39e-8]\n", - "Epoch 71: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0325]\n", - "Epoch 72: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000163]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch 73: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.92e-5]\n", - "Epoch 74: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.41e-5]\n", - "Epoch 75: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.12e-5]\n", - "Epoch 76: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.45e-5]\n", - "Epoch 77: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-5]\n", - "Epoch 78: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.9e-5]\n", - "Epoch 79: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.45e-5]\n", - "Epoch 80: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.18e-5]\n", - "Epoch 81: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.05e-5]\n", - "Epoch 82: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.27e-5]\n", - "Epoch 83: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.93e-6]\n", - "Epoch 84: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.8e-6]\n", - "Epoch 85: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.05e-6]\n", - "Epoch 86: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.39e-6]\n", - "Epoch 87: 100%|█████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.7e-6]\n", - "Epoch 88: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.16e-6]\n", - "Epoch 89: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.73e-6]\n", - "Epoch 90: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.33e-6]\n", - "Epoch 91: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.99e-6]\n", - "Epoch 92: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.69e-6]\n", - "Epoch 93: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.41e-6]\n", - "Epoch 94: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.16e-6]\n", - "Epoch 95: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.94e-6]\n", - "Epoch 96: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.74e-6]\n", - "Epoch 97: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-6]\n", - "Epoch 98: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-6]\n", - "Epoch 99: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.74e-6]\n", - "Epoch 100: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.32e-6]\n", - "Epoch 101: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.09e-6]\n", - "Epoch 102: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.19e-6]\n", - "Epoch 103: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1e-6]\n", - "Epoch 104: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=7.68e-7]\n", - "Epoch 105: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.78e-7]\n", - "Epoch 106: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6e-7]\n", - "Epoch 107: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.34e-7]\n", - "Epoch 108: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.76e-7]\n", - "Epoch 109: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.3e-7]\n", - "Epoch 110: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.83e-7]\n", - "Epoch 111: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.44e-7]\n", - "Epoch 112: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.14e-7]\n", - "Epoch 113: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.78e-7]\n", - "Epoch 114: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.49e-7]\n", - "Epoch 115: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.23e-7]\n", - "Epoch 116: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.01e-7]\n", - "Epoch 117: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.8e-7]\n", - "Epoch 118: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.62e-7]\n", - "Epoch 119: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.46e-7]\n", - "Epoch 120: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.35e-7]\n", - "Epoch 121: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.24e-7]\n", - "Epoch 122: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.14e-7]\n", - "Epoch 123: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.07e-7]\n", - "Epoch 124: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1e-7]\n", - "Epoch 125: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.35e-8]\n", - "Epoch 126: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.56e-8]\n", - "Epoch 127: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0083]\n", - "Epoch 128: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000353]\n", - "Epoch 129: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.18e-5]\n", - "Epoch 130: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.54e-5]\n", - "Epoch 131: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.47e-5]\n", - "Epoch 132: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.09e-5]\n", - "Epoch 133: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.32e-5]\n", - "Epoch 134: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.9e-6]\n", - "Epoch 135: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.32e-6]\n", - "Epoch 136: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.7e-6]\n", - "Epoch 137: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.35e-5]\n", - "Epoch 138: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.42e-6]\n", - "Epoch 139: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=4.55e-6]\n", - "Epoch 140: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.28e-6]\n", - "Epoch 141: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.5e-6]\n", - "Epoch 142: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.64e-6]\n", - "Epoch 143: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.6e-6]\n", - "Epoch 144: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-6]\n", - "Epoch 145: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.95e-5]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch 146: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.9e-6]\n", - "Epoch 147: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.39e-5]\n", - "Epoch 148: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.07e-6]\n", - "Epoch 149: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.000189]\n", - "Epoch 150: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.1e-5]\n", - "Epoch 151: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.3e-5]\n", - "Epoch 152: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.91e-6]\n", - "Epoch 153: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.3e-6]\n", - "Epoch 154: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.61e-6]\n", - "Epoch 155: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.13e-6]\n", - "Epoch 156: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-6]\n", - "Epoch 157: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.42e-7]\n", - "Epoch 158: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.69e-7]\n", - "Epoch 159: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.35e-7]\n", - "Epoch 160: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.19e-7]\n", - "Epoch 161: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.03e-6]\n", - "Epoch 162: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.85e-7]\n", - "Epoch 163: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.23e-7]\n", - "Epoch 164: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.63e-7]\n", - "Epoch 165: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.69e-6]\n", - "Epoch 166: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.42e-7]\n", - "Epoch 167: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.55e-7]\n", - "Epoch 168: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.19e-7]\n", - "Epoch 169: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-7]\n", - "Epoch 170: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.1e-7]\n", - "Epoch 171: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.58e-7]\n", - "Epoch 172: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.26e-7]\n", - "Epoch 173: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.00232]\n", - "Epoch 174: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.13e-5]\n", - "Epoch 175: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-5]\n", - "Epoch 176: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.28e-6]\n", - "Epoch 177: 100%|██████████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3e-6]\n", - "Epoch 178: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.33e-6]\n", - "Epoch 179: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.86e-6]\n", - "Epoch 180: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-6]\n", - "Epoch 181: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.48e-6]\n", - "Epoch 182: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.23e-6]\n", - "Epoch 183: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.37e-6]\n", - "Epoch 184: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.81e-7]\n", - "Epoch 185: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.09e-7]\n", - "Epoch 186: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.77e-7]\n", - "Epoch 187: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.73e-7]\n", - "Epoch 188: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.81e-6]\n", - "Epoch 189: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.31e-7]\n", - "Epoch 190: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.42e-5]\n", - "Epoch 191: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.51e-7]\n", - "Epoch 192: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.29e-7]\n", - "Epoch 193: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.96e-6]\n", - "Epoch 194: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.33e-7]\n", - "Epoch 195: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.09e-6]\n", - "Epoch 196: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.4e-7]\n", - "Epoch 197: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.4e-7]\n", - "Epoch 198: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.74e-7]\n", - "Epoch 199: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.71e-7]\n", - "Epoch 200: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.94e-7]\n", - "Epoch 201: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.47e-7]\n", - "Epoch 202: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.06e-7]\n", - "Epoch 203: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.03e-6]\n", - "Epoch 204: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.25e-7]\n", - "Epoch 205: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-7]\n", - "Epoch 206: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=9.46e-8]\n", - "Epoch 207: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.28e-8]\n", - "Epoch 208: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.98e-8]\n", - "Epoch 209: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.03e-7]\n", - "Epoch 210: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.3e-8]\n", - "Epoch 211: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.83e-8]\n", - "Epoch 212: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.85e-8]\n", - "Epoch 213: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.27e-8]\n", - "Epoch 214: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.97e-8]\n", - "Epoch 215: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.94e-8]\n", - "Epoch 216: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.34e-8]\n", - "Epoch 217: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.91e-8]\n", - "Epoch 218: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.68e-8]\n" + "Epoch 0: 100%|███████████████████████████████████████████████| 250/250 [01:20<00:00, 3.10it/s, ce_loss=0.255]\n", + "Epoch 1: 100%|██████████████████████████████████████████████| 250/250 [01:21<00:00, 3.07it/s, ce_loss=0.0016]\n", + "Epoch 2: 100%|█████████████████████████████████████████████| 250/250 [01:21<00:00, 3.07it/s, ce_loss=0.00109]\n", + "Epoch 3: 100%|████████████████████████████████████████████| 250/250 [01:20<00:00, 3.10it/s, ce_loss=0.000835]\n", + "Epoch 4: 100%|████████████████████████████████████████████| 250/250 [01:20<00:00, 3.11it/s, ce_loss=0.000668]" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "Epoch 219: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.04e-8]\n", - "Epoch 220: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-8]\n", - "Epoch 221: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.27e-8]\n", - "Epoch 222: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=1.05e-8]\n", - "Epoch 223: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.68e-9]\n", - "Epoch 224: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.98e-9]\n", - "Epoch 225: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=8.61e-9]\n", - "Epoch 226: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.17e-8]\n", - "Epoch 227: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=3.35e-8]\n", - "Epoch 228: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.03e-8]\n", - "Epoch 229: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.77e-9]\n", - "Epoch 230: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.44e-9]\n", - "Epoch 231: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=5.66e-9]\n", - "Epoch 232: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.95e-9]\n", - "Epoch 233: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.88e-9]\n", - "Epoch 234: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.18e-9]\n", - "Epoch 235: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.52e-9]\n", - "Epoch 236: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.62e-9]\n", - "Epoch 237: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.34e-9]\n", - "Epoch 238: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.96e-9]\n", - "Epoch 239: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.36e-9]\n", - "Epoch 240: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.43e-9]\n", - "Epoch 241: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-9]\n", - "Epoch 242: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.43e-9]\n", - "Epoch 243: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.21e-9]\n", - "Epoch 244: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.19e-9]\n", - "Epoch 245: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.18e-9]\n", - "Epoch 246: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.51e-9]\n", - "Epoch 247: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.51e-9]\n", - "Epoch 248: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.29e-9]\n", - "Epoch 249: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.08e-9]\n", - "Epoch 250: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=9.61e-10]\n", - "Epoch 251: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.65e-10]\n", - "Epoch 252: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.03e-9]\n", - "Epoch 253: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.44e-10]\n", - "Epoch 254: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.61e-10]\n", - "Epoch 255: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.74e-10]\n", - "Epoch 256: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=6.83e-10]\n", - "Epoch 257: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=6.71e-10]\n", - "Epoch 258: 100%|██████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=6.69e-10]\n", - "Epoch 259: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.14e-10]\n", - "Epoch 260: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=7.64e-10]\n", - "Epoch 261: 100%|██████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=8.68e-10]\n", - "Epoch 262: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.07e-9]\n", - "Epoch 263: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.42e-9]\n", - "Epoch 264: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.27e-9]\n", - "Epoch 265: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=3.99e-9]\n", - "Epoch 266: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=6.51e-9]\n", - "Epoch 267: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=9.69e-9]\n", - "Epoch 268: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=1.31e-8]\n", - "Epoch 269: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.61e-8]\n", - "Epoch 270: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.02e-8]\n", - "Epoch 271: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.28e-8]\n", - "Epoch 272: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.5e-8]\n", - "Epoch 273: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.69e-8]\n", - "Epoch 274: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.75e-8]\n", - "Epoch 275: 100%|████████████████████████████████████████████| 250/250 [01:38<00:00, 2.54it/s, ce_loss=2.8e-8]\n", - "Epoch 276: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", - "Epoch 277: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", - "Epoch 278: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.78e-8]\n", - "Epoch 279: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.55it/s, ce_loss=2.77e-8]\n", - "Epoch 280: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=2.82e-8]\n", - "Epoch 281: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=2.85e-8]\n", - "Epoch 282: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.86e-8]\n", - "Epoch 283: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.9e-8]\n", - "Epoch 284: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.94e-8]\n", - "Epoch 285: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.99e-8]\n", - "Epoch 286: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=0.0103]\n", - "Epoch 287: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.14e-5]\n", - "Epoch 288: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=4.6e-6]\n", - "Epoch 289: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=2.86e-6]\n", - "Epoch 290: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=2.13e-6]\n", - "Epoch 291: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.82e-6]\n" + "train completed, total time: 412.81983852386475.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Epoch 292: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.2e-6]\n", - "Epoch 293: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=1.1e-6]\n", - "Epoch 294: 100%|███████████████████████████████████████████| 250/250 [01:38<00:00, 2.55it/s, ce_loss=8.52e-7]\n", - "Epoch 295: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=8.27e-7]\n", - "Epoch 296: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=7.67e-6]\n", - "Epoch 297: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.57it/s, ce_loss=5.5e-7]\n", - "Epoch 298: 100%|████████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.6e-7]\n", - "Epoch 299: 100%|███████████████████████████████████████████| 250/250 [01:37<00:00, 2.56it/s, ce_loss=4.09e-7]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "train completed, total time: 29378.323362588882.\n" + "\n" ] } ], "source": [ - "n_epochs = 300\n", - "val_interval = 25\n", + "n_epochs = 5\n", + "val_interval = 2\n", "epoch_losses = []\n", "val_epoch_losses = []\n", "vqvae_model.eval()\n", @@ -1216,10 +870,9 @@ "\n", " optimizer.zero_grad(set_to_none=True)\n", "\n", - "\n", " logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True)\n", " logits = logits.transpose(1, 2)\n", - " \n", + "\n", " loss = ce_loss(logits, quantizations_target)\n", "\n", " loss.backward()\n", @@ -1238,9 +891,11 @@ "\n", " images = batch[\"image\"].to(device)\n", "\n", - " logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True)\n", + " logits, quantizations_target, _ = inferer(\n", + " images, vqvae_model, transformer_model, ordering, return_latent=True\n", + " )\n", " logits = logits.transpose(1, 2)\n", - " \n", + "\n", " loss = ce_loss(logits, quantizations_target)\n", "\n", " val_loss += loss.item()\n", @@ -1264,7 +919,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 18, "id": "aa3938fe", "metadata": {}, "outputs": [ @@ -1272,21 +927,24 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 08:55:12,377 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-11 08:55:12,377 - INFO - File exists: /tmp/tmpaurm48lm/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-11 08:55:12,378 - INFO - Non-empty folder exists in /tmp/tmpaurm48lm/MedNIST, skipped extracting.\n" + "2023-03-11 20:37:02,553 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 20:37:02,553 - INFO - File exists: /tmp/tmp8lmmizk9/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-11 20:37:02,553 - INFO - Non-empty folder exists in /tmp/tmp8lmmizk9/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3459.41it/s]\n", - "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:09<00:00, 1.75it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3328.84it/s]\n", + "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:07<00:00, 2.14it/s]\n" ] } ], "source": [ + "vqvae_model.eval()\n", + "transformer_model.eval()\n", + "\n", "test_data = MedNISTDataset(root_dir=root_dir, section=\"test\", download=True, seed=0)\n", "\n", "in_distribution_datalist = [{\"image\": item[\"image\"]} for item in test_data.data if item[\"class_name\"] == \"HeadCT\"]\n", @@ -1320,7 +978,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 24, "id": "f3e714ee", "metadata": {}, "outputs": [ @@ -1328,7 +986,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "out-of-distribution data: 100%|███████████████████████████████████████████████| 16/16 [00:09<00:00, 1.71it/s]\n" + "out-of-distribution data: 100%|███████████████████████████████████████████████| 16/16 [00:07<00:00, 2.06it/s]\n" ] } ], @@ -1364,7 +1022,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 25, "id": "cd456a7c", "metadata": {}, "outputs": [ @@ -1374,13 +1032,13 @@ "Text(0.5, 0, 'Log-likelihood')" ] }, - "execution_count": 66, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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cl7nu1eAn376icsvv5zAwEBiY2N54YUXzjiPq9/rzp07GT58OE2bNqV27do0a9aM8ePHU1BQ4HSMJ3yu5blX8IzPFWDChAn07NmToKCgs078WtbnOmfOHKdjvvnmGy655BICAgJo3rw5s2bNqv7CV1B57jU9PZ1+/foRFBREgwYNePTRRykqcl7V3h3u9XRxcXFnfIaTJk1yOqY8P9PuYsaMGcTFxREYGEhCQgIrV660ukgX7Omnnz7jM2zdurVj/4kTJ7j//vuJiIigTp06DBgw4IxJpSvMkCo1depUIy0tzdi5c6exbNkyIzEx0UhMTHTs37FjhwEYX3/9tbF//37Ho6CgwHHMsmXLDF9fX+OFF14wNm3aZIwdO9bw8/MzNm7caMUtndX57jUnJ8eIiooy7rjjDuPnn382PvjgA6N27drGv/71L8cx7nCv//vf/4yhQ4caX375pbF9+3bjs88+Mxo0aGA8/PDDjmM85XMtz716yudqGIYxbtw4Y+rUqUZKSooRGhpa5jGA8fbbbzt9rsePH3fs//33342goCAjJSXF2LRpk/Hqq68avr6+xqJFi2roLsrnfPdaVFRktG/f3khKSjLWrVtnLFy40IiMjDTGjBnjOMZd7vV0TZo0MZ599lmnz/Do0aOO/eX5mXYXc+bMMfz9/Y233nrL+OWXX4y7777bCAsLMzIzM60u2gUZP3680a5dO6fP8ODBg4799957rxEbG2ukpqYaq1evNnr06GH07Nnzgq6pgFTNPvvsM8Nmszl+Udp/ka5bt+6s77ntttuMfv36OW1LSEgw7rnnnuos6gU7/V5fe+01o169ekZ+fr7jmMcff9xo1aqV42t3vdcXXnjBaNq0qeNrT/5cT79XT/xc33777XMGpE8//fSs733ssceMdu3aOW0bOHCgkZycXIUlrDpnu9eFCxcaPj4+RkZGhmPb66+/boSEhDg+a3e7V7smTZoYL7/88ln3l+dn2l10797duP/++x1fFxcXGw0bNjQmTpxoYaku3Pjx441OnTqVuS87O9vw8/Mz5s6d69i2efNmAzDS0tIqfU01sVWjrKws3n//fXr27Imfn5/TvhtvvJEGDRpw2WWXMX/+fKd9aWlpJCUlOW1LTk4mLS2t2stcWWXda1paGldccQX+/v6O45KTk9m6dSuHDx92HONu9wqQk5NDeHj4Gds97XOFM+/Vkz/Xs7n//vuJjIyke/fuvPXWWxinTB/nKfealpZGhw4dHJP0gnkfubm5/PLLL45j3PVeJ02aREREBJ07d+bFF190ajosz8+0OygoKGDNmjVOn5GPjw9JSUlu8Rmdz7Zt22jYsCEXX3wxd9xxB+np6QCsWbOGwsJCp/tu3bo1jRs3vqD7VkCqBo8//jjBwcFERESQnp7OZ5995thXp04dpkyZwty5c/niiy+47LLL6N+/v9Mv04yMDKf/pACioqLIyMiosXsor3Pd69nuw77vXMe44r3a/fbbb7z66qvcc889jm2e9rnalXWvnvq5ns2zzz7LRx99xOLFixkwYAD33Xcfr776qmP/2e41NzeX48eP13RxK+1CPldXv9cHHniAOXPmsHTpUu655x6ef/55HnvsMcf+8ty7Ozh06BDFxcUe82/vVAkJCcyaNYtFixbx+uuvs2PHDi6//HKOHDlCRkYG/v7+Z/Stu9D7VkAqhyeeeKLMjpqnPrZs2eI4/tFHH2XdunV89dVX+Pr6MnjwYMdfnJGRkaSkpJCQkEC3bt2YNGkSf/nLX3jxxRetuj0nVXmvrq6i9wqwd+9e+vTpw5/+9Cfuvvtux3ZP+1zh7Pfq6ipzr+fy1FNPcemll9K5c2cef/xxHnvsMbf+XD1FRe49JSWFq666io4dO3LvvfcyZcoUXn31VfLz8y2+Cymv6667jj/96U907NiR5ORkFi5cSHZ2Nh999FG1XdPytdjcwcMPP8zQoUPPeczFF1/seB0ZGUlkZCQtW7akTZs2xMbG8uOPP5KYmFjmexMSEli8eLHj6+jo6DN632dmZhIdHV35myinqrzXs90H4LgXd7rXffv20atXL3r27OlYHPlc3PlzPde9etrnWlEJCQn84x//ID8/n4CAgLPea0hICLVr1670dcqjKu81Ojr6jNFO5f1ca+JeT3ch956QkEBRURE7d+6kVatW5fqZdgeRkZH4+vpa9m+vJoWFhdGyZUt+++03rrnmGgoKCsjOznaqRbrQ+1ZAKof69etTv379Sr23pKQE4Jx/qaxfv56YmBjH14mJiaSmpvLggw86ti1evPisAasqVeW9JiYm8ve//53CwkJHv6TFixfTqlUr6tWr5zjGHe5179699OrViy5duvD22287LaB8Nu76uZ7vXj3pc62M9evXU69ePcfCmImJiWdMYeCO95qYmMiECRM4cOAADRo0AMz7CAkJoW3bto5jrLrX013Iva9fvx4fHx/HfZbnZ9od+Pv706VLF1JTU+nfvz9g/r+cmprKyJEjrS1cFTt69Cjbt2/nzjvvpEuXLvj5+ZGamsqAAQMA2Lp1K+np6Rf2s1np7t1yhh9//NF49dVXjXXr1hk7d+40UlNTjZ49exrNmjUzTpw4YRiGYcyaNcuYPXu2sXnzZmPz5s3GhAkTDB8fH+Ott95ynGfZsmVGrVq1jJdeesnYvHmzMX78eJcbIl2ee83OzjaioqKMO++80/j555+NOXPmGEFBQWcMB3f1e92zZ4/RvHlzo3fv3saePXuchpnaecrnWp579ZTP1TAMY9euXca6deuMZ555xqhTp46xbt06Y926dcaRI0cMwzCM+fPnG//+97+NjRs3Gtu2bTNee+01IygoyBg3bpzjHPah748++qixefNmY8aMGS459P1892of5n/ttdca69evNxYtWmTUr1+/zGH+rn6vp1q+fLnx8ssvG+vXrze2b99uvPfee0b9+vWNwYMHO44pz8+0u5gzZ44REBBgzJo1y9i0aZMxYsQIIywszGl0ojt6+OGHjW+++cbYsWOHsWzZMiMpKcmIjIw0Dhw4YBiGOcy/cePGxpIlS4zVq1efMe1MZSggVaGffvrJ6NWrlxEeHm4EBAQYcXFxxr333mvs2bPHccysWbOMNm3aGEFBQUZISIjRvXt3p6GJdh999JHRsmVLw9/f32jXrp3xxRdf1OStnFd57tUwDGPDhg3GZZddZgQEBBiNGjUyJk2adMa5XP1e3377bQMo82HnKZ9ree7VMDzjczUMwxgyZEiZ97p06VLDMMx5oeLj4406deoYwcHBRqdOnYyZM2caxcXFTudZunSpER8fb/j7+xsXX3yx8fbbb9f8zZzH+e7VMAxj586dxnXXXWfUrl3biIyMNB5++GGjsLDQ6TzucK+nWrNmjZGQkGCEhoYagYGBRps2bYznn3/e8YecXXl+pt3Fq6++ajRu3Njw9/c3unfvbvz4449WF+mCDRw40IiJiTH8/f2NRo0aGQMHDjR+++03x/7jx48b9913n1GvXj0jKCjIuPnmm53+sKsMm2G4SY9aERERkRqiUWwiIiIip1FAEhERETmNApKIiIjIaRSQRERERE6jgCQiIiJyGgUkERERkdMoIImIiIicRgFJRERE5DQKSCLiUWw2G/PmzQNg586d2Gw21q9fD8A333yDzWYjOzu7Uuc+3/lmzZrltFhmTRo6dKhj/S0RuXBarFZEqs3QoUPJzs52BJaaFhsby/79+4mMjKyW8/fs2ZP9+/cTGhpaLecXEesoIImIx/L19SU6Orrazu/v71+t5xcR66iJTUQs8e2339K9e3cCAgKIiYnhiSeeoKioyLH/yJEj3HHHHQQHBxMTE8PLL7/MVVddxYMPPljua5zeJHa6Y8eOcd1113HppZc6msn+85//0KZNGwIDA2ndujWvvfbaWc9/tia7L7/8kjZt2lCnTh369OnD/v37HftKSkp49tlnueiiiwgICCA+Pp5FixY5vX/jxo1cffXV1K5dm4iICEaMGMHRo0cd+4uLi0lJSSEsLIyIiAgee+wxtKymSNVSQBKRGrd371769u1Lt27d2LBhA6+//jpvvvkmzz33nOOYlJQUli1bxvz581m8eDHff/89a9eurbIyZGdnc80111BSUsLixYsJCwvj/fffZ9y4cUyYMIHNmzfz/PPP89RTT/HOO++U+7zHjh3jpZde4v/+7//47rvvSE9P55FHHnHsf+WVV5gyZQovvfQSP/30E8nJydx4441s27YNgLy8PJKTk6lXrx6rVq1i7ty5fP3114wcOdJxjilTpjBr1izeeustfvjhB7Kysvj000+r7HsjIoAhIlJNhgwZYtx0001nbH/yySeNVq1aGSUlJY5tM2bMMOrUqWMUFxcbubm5hp+fnzF37lzH/uzsbCMoKMgYPXr0Oa8JGJ9++qlhGIaxY8cOAzDWrVtnGIZhLF261ACMzZs3Gx07djQGDBhg5OfnO97brFkzY/bs2U7n+8c//mEkJiae83yHDx82DMMw3n77bQMwfvvtN6f7ioqKcnzdsGFDY8KECU7X6Natm3HfffcZhmEYb7zxhlGvXj3j6NGjjv1ffPGF4ePjY2RkZBiGYRgxMTHGCy+84NhfWFhoXHTRRWV+r0WkclSDJCI1bvPmzSQmJmKz2RzbLr30Uo4ePcqePXv4/fffKSwspHv37o79oaGhtGrVyvH1888/T506dRyP9PT0cl//mmuuoXnz5nz44Yf4+/sDZs3N9u3bGT58uNN5n3vuObZv317ucwcFBdGsWTPH1zExMRw4cACA3Nxc9u3bx6WXXur0nksvvZTNmzc7vjedOnUiODjYaX9JSQlbt24lJyeH/fv3k5CQ4Nhfq1YtunbtWu4yisj5qZO2iLile++9l9tuu83xdcOGDcv93n79+vHxxx+zadMmOnToAODo4/Pvf//bKXyA2dm7vPz8/Jy+ttls6h8k4oZUgyQiNa5NmzakpaU5BYdly5ZRt25dLrroIi6++GL8/PxYtWqVY39OTg6//vqr4+vw8HCaN2/ueNSqVf6/9yZNmsSQIUPo3bs3mzZtAiAqKoqGDRvy+++/O523efPmNG3atAruGkJCQmjYsCHLli1z2r5s2TLatm0LmN+bDRs2kJeX57Tfx8eHVq1aERoaSkxMDCtWrHDsLyoqYs2aNVVSRhExqQZJRKpVTk7OGaPIRowYwbRp0xg1ahQjR45k69atjB8/npSUFHx8fKhbty5Dhgzh0UcfJTw8nAYNGjB+/Hh8fHycmuUuxEsvvURxcTFXX30133zzDa1bt+aZZ57hgQceIDQ0lD59+pCfn8/q1as5fPgwKSkpVXLdRx99lPHjx9OsWTPi4+N5++23Wb9+Pe+//z4Ad9xxB+PHj2fIkCE8/fTTHDx4kFGjRnHnnXcSFRUFwOjRo5k0aRItWrSgdevWTJ06tdKTX4pI2RSQRKRaffPNN3Tu3Nlp2/Dhw1m4cCGPPvoonTp1Ijw8nOHDhzN27FjHMVOnTuXee+/l+uuvJyQkhMcee4zdu3cTGBhYZWV7+eWXnULSXXfdRVBQEC+++CKPPvoowcHBdOjQoUJTC5zPAw88QE5ODg8//DAHDhygbdu2zJ8/nxYtWgBmH6Yvv/yS0aNH061bN4KCghgwYABTp051nOPhhx9m//79DBkyBB8fH/76179y8803k5OTU2XlFPF2NkON4yLiBvLy8mjUqBFTpkxh+PDhVhdHRDycapBExCWtW7eOLVu20L17d3Jycnj22WcBuOmmmywumYh4AwUkEXFZL730Elu3bsXf358uXbrw/fffV9u6aiIip1ITm4iIiMhpNMxfRERE5DQKSCIiIiKnUUASEREROY0CkoiIiMhpFJBERERETqOAJCIiInIaBSQRERGR0yggiYiIiJzm/wGGw0ywrBJtdQAAAABJRU5ErkJggg==\n", + "image/png": "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M2aosrKy3nH+dE8kaebMmRo6dKjCwsLOOqmrv33HStKCBQuUlJSkkJAQDRkyROvWrXN3k1rOgMf5y1/+YkRFRRkLFy40cnJyjO3btxvLli1z7K+urjYuueQSIyMjw9i4caOxfPlyIyYmxpg2bZobW922unXrZjz99NNGfn6+41FSUuLYX1RUZMTFxRm33XabsW3bNuO9994zQkNDjf/+7/92Y6td4/777zdGjRplSDI2btzo2O6P92Tu3LlGdna2kZuba6xdu9ZIT0830tPTHfv97Z784x//MCZMmGCsXLnS2LNnj/HJJ58YsbGxxoMPPug4xt/uiWEYxvTp0425c+camZmZRkRERIP9/vgd+/777xtBQUHG4sWLje3btxuTJ082IiMjjcOHD7u7aS1CcONhqqqqjK5duxqvv/76WY9Zvny5YbVajYKCAse2hQsXGuHh4UZFRYUrmuly3bp1M1566aWz7n/11VeNqKioej//o48+avTu3dsFrXOf5cuXG3369DG2b9/eILjx13tS1yeffGJYLBajsrLSMAzuiWEYxvPPP290797d8d6f78mSJUsaDW788Ts2LS3NuPfeex3va2pqjC5duhizZs1yY6tajm4pD7NhwwYdPHhQVqtVgwYNUkJCgkaNGqVt27Y5jsnOzlb//v3rrY4+cuRIFRcXa/v27e5otkvMnj1bnTp10qBBg/TCCy/USxFnZ2friiuuUFBQkGPbyJEjlZOTo+PHj7ujuW3u8OHDmjx5st566y2FhYU12O+P96SuwsJCvfPOOxo6dKgCAwMlcU8kqaioSNHR0Y733JOG/O07trKyUuvXr1dGRoZjm9VqVUZGhrKzs93YspYjuPEwe/fulSQ9+eST+v3vf6+///3vioqK0pVXXqnCwkJJUkFBQb3/6SQ53hcUFLi2wS5y//336/3339fq1at111136dlnn9Ujjzzi2O9v98QwDE2YMEF33323UlNTGz3G3+6J3aOPPqr27durU6dOysvL0yeffOLY56/3xG737t2aP3++7rrrLsc2f78njfG3e3Ls2DHV1NQ0+jN7689LcOMijz32WIOC2DMfu3btks1mkyQ98cQTGj16tAYPHqwlS5bIYrHogw8+cPNP4VxNvSeSuQbZlVdeqQEDBujuu+/Wiy++qPnz56uiosLNP4VzNfWezJ8/XydPntS0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\n", "text/plain": [ "
" ] @@ -1390,8 +1048,8 @@ } ], "source": [ - "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", bw_adjust=1000000, label=\"In-distribution\")\n", - "sns.kdeplot(ood_likelihoods, color=\"deeppink\", bw_adjust=1,label=\"OOD\")\n", + "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", bw_adjust=500, label=\"In-distribution\")\n", + "sns.kdeplot(ood_likelihoods, color=\"deeppink\", bw_adjust=1, label=\"OOD\")\n", "plt.legend()\n", "plt.xlabel(\"Log-likelihood\")" ] diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py index 428947a9..f05a3261 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -18,7 +18,7 @@ # # This tutorial illustrates how to use MONAI to perform image-wise anomaly detection with transformers based on the method proposed in Pinaya et al.[1]. # -# Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to "Experiment 2 – image-wise anomaly detection on 2D synthetic data" from [1], we will train our generative models on `HeadCT` images. +# Here, we will work with the [MedNIST dataset](https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset) available on MONAI, and similar to "Experiment 2 – image-wise anomaly detection on 2D synthetic data" from [1], we will train a general-purpose VQ-VAE (using all MEDNIST classes), and then a generative models (i.e., Transformer) on `HeadCT` images. # # Finally, we will compute the log-likelihood of images from the same class (in-distribution class) and images from other classes (out-of-distribution). # @@ -87,9 +87,6 @@ # ### Download training data # %% -train_data = MedNISTDataset(root_dir=root_dir, section="training", download=True, seed=0) -train_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "HeadCT"] -image_size = 64 train_transforms = transforms.Compose( [ transforms.LoadImaged(keys=["image"]), @@ -100,14 +97,14 @@ rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)], translate_range=[(-1, 1), (-1, 1)], scale_range=[(-0.01, 0.01), (-0.01, 0.01)], - spatial_size=[image_size, image_size], + spatial_size=[64, 64], padding_mode="zeros", prob=0.5, ), ] ) -train_ds = Dataset(data=train_datalist, transform=train_transforms) -train_loader = DataLoader(train_ds, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True) +train_data = MedNISTDataset(root_dir=root_dir, section="training", download=True, seed=0, transform=train_transforms) +train_loader = DataLoader(train_data, batch_size=256, shuffle=True, num_workers=4, persistent_workers=True) # %% [markdown] # ### Visualise some examples from the dataset @@ -124,8 +121,6 @@ # ### Download Validation Data # %% -val_data = MedNISTDataset(root_dir=root_dir, section="validation", download=True, seed=0) -val_datalist = [{"image": item["image"]} for item in val_data.data if item["class_name"] == "HeadCT"] val_transforms = transforms.Compose( [ transforms.LoadImaged(keys=["image"]), @@ -133,8 +128,8 @@ transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), ] ) -val_ds = Dataset(data=val_datalist, transform=val_transforms) -val_loader = DataLoader(val_ds, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True) +val_data = MedNISTDataset(root_dir=root_dir, section="validation", download=True, seed=0, transform=val_transforms) +val_loader = DataLoader(val_data, batch_size=256, shuffle=False, num_workers=4, persistent_workers=True) # %% [markdown] # ## Vector Quantized Variational Autoencoder @@ -173,8 +168,8 @@ # We will train our VQ-VAE for 50 epochs. # %% -n_epochs = 75 -val_interval = 25 +n_epochs = 15 +val_interval = 5 epoch_losses = [] val_epoch_losses = [] @@ -243,10 +238,40 @@ # %% [markdown] # ### Datasets -# We can use the same dataloader with augmentations as used for training the VQVAE model. However given the memory intensive nature of Transformers we will need to reduce the batch size. +# To train the transformer, we only use the `HeadCT` class. # %% +train_data = MedNISTDataset(root_dir=root_dir, section="training", seed=0) +train_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "HeadCT"] +train_transforms = transforms.Compose( + [ + transforms.LoadImaged(keys=["image"]), + transforms.EnsureChannelFirstd(keys=["image"]), + transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), + transforms.RandAffined( + keys=["image"], + rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)], + translate_range=[(-1, 1), (-1, 1)], + scale_range=[(-0.01, 0.01), (-0.01, 0.01)], + spatial_size=[64, 64], + padding_mode="zeros", + prob=0.5, + ), + ] +) +train_ds = Dataset(data=train_datalist, transform=train_transforms) train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, persistent_workers=True) + +val_data = MedNISTDataset(root_dir=root_dir, section="validation", seed=0) +val_datalist = [{"image": item["image"]} for item in val_data.data if item["class_name"] == "HeadCT"] +val_transforms = transforms.Compose( + [ + transforms.LoadImaged(keys=["image"]), + transforms.EnsureChannelFirstd(keys=["image"]), + transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True), + ] +) +val_ds = Dataset(data=val_datalist, transform=val_transforms) val_loader = DataLoader(val_ds, batch_size=32, shuffle=False, num_workers=4, persistent_workers=True) # %% [markdown] @@ -272,10 +297,10 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu") transformer_model = DecoderOnlyTransformer( - num_tokens=16+1, + num_tokens=16 + 1, max_seq_len=spatial_shape[0] * spatial_shape[1], attn_layers_dim=256, - attn_layers_depth=20, + attn_layers_depth=16, attn_layers_heads=16, ) transformer_model.to(device) @@ -291,8 +316,8 @@ # We will train the Transformer for 100 epochs. # %% -n_epochs = 300 -val_interval = 25 +n_epochs = 5 +val_interval = 2 epoch_losses = [] val_epoch_losses = [] vqvae_model.eval() @@ -309,7 +334,6 @@ optimizer.zero_grad(set_to_none=True) - logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True) logits = logits.transpose(1, 2) @@ -331,7 +355,9 @@ images = batch["image"].to(device) - logits, quantizations_target, _ = inferer(images, vqvae_model, transformer_model, ordering, return_latent=True) + logits, quantizations_target, _ = inferer( + images, vqvae_model, transformer_model, ordering, return_latent=True + ) logits = logits.transpose(1, 2) loss = ce_loss(logits, quantizations_target) @@ -350,6 +376,9 @@ # To verify the performance of the VQ-VAE + Transformerperforming unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images. # %% +vqvae_model.eval() +transformer_model.eval() + test_data = MedNISTDataset(root_dir=root_dir, section="test", download=True, seed=0) in_distribution_datalist = [{"image": item["image"]} for item in test_data.data if item["class_name"] == "HeadCT"] @@ -400,8 +429,8 @@ # Here, we plot the log-likelihood of the images. In this case, the lower the log-likelihood, the more unlikely the image belongs to the training set. # %% -sns.kdeplot(in_likelihoods, color="dodgerblue", bw_adjust=1000000, label="In-distribution") -sns.kdeplot(ood_likelihoods, color="deeppink", bw_adjust=1,label="OOD") +sns.kdeplot(in_likelihoods, color="dodgerblue", bw_adjust=500, label="In-distribution") +sns.kdeplot(ood_likelihoods, color="deeppink", bw_adjust=1, label="OOD") plt.legend() plt.xlabel("Log-likelihood") From bcdffde5a7ad49801fa2b9cf057ef1839e64fcfd Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Sun, 12 Mar 2023 07:51:08 +0000 Subject: [PATCH 5/6] Add tutorial Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 115 ++++++++++-------- .../anomaly_detection_with_transformers.py | 10 +- 2 files changed, 70 insertions(+), 55 deletions(-) diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb index 73e65a6b..fbee0c50 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -61,7 +61,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 19:44:14,507 - A matching Triton is not available, some optimizations will not be enabled.\n", + "2023-03-11 22:41:26,292 - A matching Triton is not available, some optimizations will not be enabled.\n", "Error caught was: No module named 'triton'\n", "MONAI version: 1.2.dev2304\n", "Numpy version: 1.23.5\n", @@ -161,7 +161,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "/tmp/tmp8lmmizk9\n" + "/tmp/tmp83zh5r1m\n" ] } ], @@ -189,14 +189,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "MedNIST.tar.gz: 59.0MB [00:03, 15.7MB/s] " + "MedNIST.tar.gz: 59.0MB [00:04, 13.2MB/s] " ] }, { "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 19:44:18,504 - INFO - Downloaded: /tmp/tmp8lmmizk9/MedNIST.tar.gz\n" + "2023-03-11 22:41:31,031 - INFO - Downloaded: /tmp/tmp83zh5r1m/MedNIST.tar.gz\n" ] }, { @@ -210,15 +210,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 19:44:18,609 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-11 19:44:18,610 - INFO - Writing into directory: /tmp/tmp8lmmizk9.\n" + "2023-03-11 22:41:31,104 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 22:41:31,105 - INFO - Writing into directory: /tmp/tmp83zh5r1m.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:26<00:00, 1804.98it/s]\n" + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:25<00:00, 1816.60it/s]\n" ] } ], @@ -295,16 +295,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 19:44:49,498 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-11 19:44:49,499 - INFO - File exists: /tmp/tmp8lmmizk9/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-11 19:44:49,499 - INFO - Non-empty folder exists in /tmp/tmp8lmmizk9/MedNIST, skipped extracting.\n" + "2023-03-11 22:42:02,011 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-11 22:42:02,012 - INFO - File exists: /tmp/tmp83zh5r1m/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-11 22:42:02,012 - INFO - Non-empty folder exists in /tmp/tmp83zh5r1m/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:03<00:00, 1786.89it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:03<00:00, 1812.52it/s]\n" ] } ], @@ -552,34 +552,49 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|████████████████| 185/185 [02:51<00:00, 1.08it/s, recons_loss=0.152, quantization_loss=1.05e-5]\n", - "Epoch 1: 100%|███████████████| 185/185 [02:57<00:00, 1.04it/s, recons_loss=0.0358, quantization_loss=7.67e-6]\n", - "Epoch 2: 100%|███████████████| 185/185 [03:01<00:00, 1.02it/s, recons_loss=0.0296, quantization_loss=1.27e-5]\n", + "Epoch 0: 100%|████████████████| 185/185 [02:50<00:00, 1.09it/s, recons_loss=0.152, quantization_loss=1.05e-5]\n", + "Epoch 1: 100%|███████████████| 185/185 [02:56<00:00, 1.05it/s, recons_loss=0.0358, quantization_loss=7.67e-6]\n", + "Epoch 2: 100%|███████████████| 185/185 [03:02<00:00, 1.01it/s, recons_loss=0.0296, quantization_loss=1.27e-5]\n", "Epoch 3: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0273, quantization_loss=1.68e-5]\n", - "Epoch 4: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0274, quantization_loss=2.47e-5]\n", - "Epoch 5: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0273, quantization_loss=2.43e-5]\n", - "Epoch 6: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0246, quantization_loss=2.37e-5]\n", - "Epoch 7: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0254, quantization_loss=2.47e-5]\n", - "Epoch 8: 100%|███████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0254, quantization_loss=3.03e-5]\n", - "Epoch 9: 100%|███████████████| 185/185 [02:58<00:00, 1.03it/s, recons_loss=0.0247, quantization_loss=3.23e-5]\n", - "Epoch 10: 100%|██████████████| 185/185 [02:58<00:00, 1.03it/s, recons_loss=0.0245, quantization_loss=2.94e-5]\n", - "Epoch 11: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0239, quantization_loss=3.89e-5]\n", - "Epoch 12: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0233, quantization_loss=2.87e-5]\n", - "Epoch 13: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0236, quantization_loss=3.18e-5]\n", - "Epoch 14: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0226, quantization_loss=3.43e-5]\n" + "Epoch 4: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0274, quantization_loss=2.47e-5]\n", + "Epoch 5: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0269, quantization_loss=3.15e-5]\n", + "Epoch 6: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0261, quantization_loss=2.88e-5]\n", + "Epoch 7: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0247, quantization_loss=2.52e-5]\n", + "Epoch 8: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0246, quantization_loss=2.67e-5]\n", + "Epoch 9: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0248, quantization_loss=2.96e-5]\n", + "Epoch 10: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0247, quantization_loss=2.78e-5]\n", + "Epoch 11: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0245, quantization_loss=3.64e-5]\n", + "Epoch 12: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0234, quantization_loss=2.43e-5]\n", + "Epoch 13: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0231, quantization_loss=3.42e-5]\n", + "Epoch 14: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0229, quantization_loss=3.24e-5]\n", + "Epoch 15: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.023, quantization_loss=3.77e-5]\n", + "Epoch 16: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0227, quantization_loss=3.07e-5]\n", + "Epoch 17: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.022, quantization_loss=3.66e-5]\n", + "Epoch 18: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0223, quantization_loss=3.17e-5]\n", + "Epoch 19: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0218, quantization_loss=3.32e-5]\n", + "Epoch 20: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0218, quantization_loss=3.49e-5]\n", + "Epoch 21: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0218, quantization_loss=2.99e-5]\n", + "Epoch 22: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0217, quantization_loss=3.81e-5]\n", + "Epoch 23: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0212, quantization_loss=2.88e-5]\n", + "Epoch 24: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0216, quantization_loss=2.93e-5]\n", + "Epoch 25: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0216, quantization_loss=3.35e-5]\n", + "Epoch 26: 100%|██████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0212, quantization_loss=3.28e-5]\n", + "Epoch 27: 100%|███████████████| 185/185 [02:59<00:00, 1.03it/s, recons_loss=0.0213, quantization_loss=3.2e-5]\n", + "Epoch 28: 100%|██████████████| 185/185 [02:58<00:00, 1.04it/s, recons_loss=0.0209, quantization_loss=3.05e-5]\n", + "Epoch 29: 100%|██████████████| 185/185 [02:58<00:00, 1.03it/s, recons_loss=0.0205, quantization_loss=2.83e-5]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "train completed, total time: 2699.0575420856476.\n" + "train completed, total time: 5397.495220899582.\n" ] } ], "source": [ - "n_epochs = 15\n", - "val_interval = 5\n", + "n_epochs = 30\n", + "val_interval = 10\n", "epoch_losses = []\n", "val_epoch_losses = []\n", "\n", @@ -641,7 +656,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAELCAYAAABEYIWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHnUlEQVR4nO2debxX49rGr1K7UumUJg0adpKKZKcMpRR1JEQZz3uoOKJwTMfLcSTD+/YaIkMynEOHcFTHkGOeMoTMIVEkhCa0DYW39nr/OPZ6r+faez/t326nYV3fz8fn86zu35qe9axnL/d13/dTJUmSBMYYY4zJLFU39gUYY4wxZuPijwFjjDEm4/hjwBhjjMk4/hgwxhhjMo4/BowxxpiM448BY4wxJuP4Y8AYY4zJOP4YMMYYYzKOPwaMMcaYjOOPgYzSunVrDBs2bGNfhjHGVIiZM2eiSpUqmDlz5sa+lC2CzH0MTJ48GVWqVMFrr722sS8FALBq1SqMHTu21AH98MMPY+zYsb/6NTFVqlTBKaecslGvwZhNieI5pPi/atWqoXnz5hg2bBg+//zzjX15lcoNN9yAyZMnZ/4askC1jX0BWWfVqlW46KKLAAB9+vQJbA8//DAmTpy40T8IjDElufjii9GmTRv8+OOPePnllzF58mS88MILePfdd1GzZs2NfXmVwg033ICGDRtuVC9iWdewzz77YPXq1cjLy9s4F7aF4Y8BY4ypAAcccAC6desGADjhhBPQsGFDXHbZZZgxYwaOOOKIjXx1vz4//PADateu/audr2rVqlvMR9emQOZkgtIYNmwY6tSpg88//xyDBw9GnTp10KhRI5x99tlYu3Zt+rtFixahSpUquPLKK3H11VejVatWqFWrFnr37o133303OGafPn1K/J9+8blat26dHq9Ro0YAgIsuuih1O44dOxbDhg3DxIkTASBwSRZTVFSECRMmoFOnTqhZsyaaNGmCkSNH4ptvvgnOlyQJLr30UrRo0QJbb7019t13X8ydO7fCfVWs002dOhUXXXQRmjdvjrp162Lo0KEoLCzETz/9hNNPPx2NGzdGnTp1MHz4cPz000/BMW677Tb07dsXjRs3Ro0aNdCxY0dMmjSpxLmKioowduxYNGvWLL329957r9R4h5UrV+L0009Hy5YtUaNGDbRr1w6XXXYZioqKKnyvxuRCr169AAAfffRR+m/vv/8+hg4digYNGqBmzZro1q0bZsyYUWLflStX4owzzkDr1q1Ro0YNtGjRAsceeyxWrFiR/mbZsmU4/vjj0aRJE9SsWRNdunTB3//+9+A4PEfdfPPNyM/PR40aNbD77rvj1VdfDX67ZMkSDB8+HC1atECNGjWw3Xbb4ZBDDsGiRYsA/DuuaO7cuXj22WfT+ad4TiuWSp599lmMGjUKjRs3RosWLQCEcxwzduzYYA4rZsqUKejevTu23npr1K9fH/vssw8ef/zxdV5DWTED06ZNQ0FBAWrVqoWGDRviP/7jP0rIN+Wd87OEPQO/sHbtWgwYMAA9evTAlVdeiSeffBLjx49Hfn4+Tj755OC3t99+O7777juMHj0aP/74I6655hr07dsX77zzDpo0aVLuczZq1AiTJk3CySefjEMPPRSHHXYYAGCXXXbBDz/8gC+++AJPPPEE7rjjjhL7jhw5EpMnT8bw4cNx2mmn4eOPP8b111+PN998E7NmzUL16tUBAGPGjMGll16KgQMHYuDAgXjjjTfQv39//Pzzz+vRW8C4ceNQq1YtnHvuufjwww9x3XXXoXr16qhatSq++eYbjB07NnWdtmnTBmPGjEn3nTRpEjp16oSDDz4Y1apVw4MPPohRo0ahqKgIo0ePTn933nnn4fLLL8dBBx2EAQMGYM6cORgwYAB+/PHH4FpWrVqF3r174/PPP8fIkSOx/fbb48UXX8R5552HL7/8EhMmTFivezWmPBT/Ea1fvz4AYO7cudh7773RvHlznHvuuahduzamTp2KwYMH45///CcOPfRQAMD333+PXr16Yd68eRgxYgR22203rFixAjNmzMDixYvRsGFDrF69Gn369MGHH36IU045BW3atMG0adMwbNgwrFy5En/84x+Da7nrrrvw3XffYeTIkahSpQouv/xyHHbYYVi4cGE6NwwZMgRz587FqaeeitatW2PZsmV44okn8Omnn6J169aYMGECTj31VNSpUwfnn38+AJSY30aNGoVGjRphzJgx+OGHH3Lus4suughjx47FXnvthYsvvhh5eXmYPXs2nn76afTv379c18AUz4m77747xo0bh6VLl+Kaa67BrFmz8Oabb+I3v/lN+ttc5vxMkGSM2267LQGQvPrqq+m/HXfccQmA5OKLLw5+27Vr16SgoCDd/vjjjxMASa1atZLFixen/z579uwEQHLGGWek/9a7d++kd+/eJc5/3HHHJa1atUq3ly9fngBILrzwwhK/HT16dFLaI3r++ecTAMmdd94Z/Pujjz4a/PuyZcuSvLy85MADD0yKiorS3/35z39OACTHHXdciWMrAJLRo0en288880wCIOncuXPy888/p/9+9NFHJ1WqVEkOOOCAYP8999wzuN8kSZJVq1aVOM+AAQOStm3bpttLlixJqlWrlgwePDj43dixY0tc+yWXXJLUrl07mT9/fvDbc889N9lqq62STz/9dJ33aUx5KZ5DnnzyyWT58uXJZ599lkyfPj1p1KhRUqNGjeSzzz5LkiRJ+vXrl+y8887Jjz/+mO5bVFSU7LXXXskOO+yQ/tuYMWMSAMm9995b4lzF7+2ECRMSAMmUKVNS288//5zsueeeSZ06dZJvv/02SZL/n6O23Xbb5Ouvv05/+8ADDyQAkgcffDBJkiT55ptvEgDJFVdcEb3XTp06lTqPFfdBz549kzVr1gQ2neOKufDCC4P5bMGCBUnVqlWTQw89NFm7dm2p9x27huK56Jlnnkn7o3Hjxknnzp2T1atXp7/717/+lQBIxowZE1xjeeb8LGGZgDjppJOC7V69emHhwoUlfjd48GA0b9483e7evTt69OiBhx9+eINfI/BvN1i9evWw//77Y8WKFel/BQUFqFOnDp555hkAwJNPPomff/4Zp556auCeO/3009f7Go499tj0/zAAoEePHkiSBCNGjAh+16NHD3z22WdYs2ZN+m+1atVK24WFhVixYgV69+6NhQsXorCwEADw1FNPYc2aNRg1alRwvFNPPbXEtUybNg29evVC/fr1g/7Yb7/9sHbtWjz33HPrfb/GKPvttx8aNWqEli1bYujQoahduzZmzJiBFi1a4Ouvv8bTTz+NI444At999106Jr/66isMGDAACxYsSF3X//znP9GlS5fUU8AUv7cPP/wwmjZtiqOPPjq1Va9eHaeddhq+//57PPvss8F+Rx55ZOqhAP5fwiiez2rVqoW8vDzMnDmzhLSYC3/4wx+w1VZbVWjf+++/H0VFRRgzZgyqVg3/FJUmJ6yL1157DcuWLcOoUaOCWIIDDzwQHTp0wEMPPVRin/LO+VnAMsEv1KxZM9Xvi6lfv36pL8oOO+xQ4t/at2+PqVOnbrDrYxYsWIDCwkI0bty4VPuyZcsAAJ988gmAktfbqFGjYKKoCNtvv32wXa9ePQBAy5YtS/x7UVERCgsLse222wIAZs2ahQsvvBAvvfQSVq1aFfy+sLAQ9erVS6+9Xbt2gb1BgwYlrn3BggV4++23Szy/Yor7w5jKZOLEiWjfvj0KCwtx66234rnnnkONGjUAAB9++CGSJMEFF1yACy64oNT9ly1bhubNm+Ojjz7CkCFDouf65JNPsMMOO5T4o7nTTjuldkbfz+J3png+q1GjBi677DKcddZZaNKkCfbYYw8MGjQIxx57LJo2bVrOHgDatGlT7t8qH330EapWrYqOHTtW+BhMcR/suOOOJWwdOnTACy+8EPxbLnN+FvDHwC9U9Ou2LKpUqYIkSUr8e2UEpxQVFaFx48a48847S7WX9UexMimrv8r69+K++Oijj9CvXz906NABV111FVq2bIm8vDw8/PDDuPrqqysU8FdUVIT9998f55xzTqn29u3b53xMY9ZF9+7d02yCwYMHo2fPnjjmmGPwwQcfpOP47LPPxoABA0rdXz90K5N1vYfAvz2EBx10EO6//3489thjuOCCCzBu3Dg8/fTT6Nq1a7nOw16+Ysr6v/pNLTCvsuf8zR1/DFSABQsWlPi3+fPnBxG09evXL9XdpF/wMXdYWbb8/Hw8+eST2HvvvUt9GYtp1apVer1t27ZN/3358uUb7ev3wQcfxE8//YQZM2YE//dSLG0UU3ztH374YfB/H1999VWJa8/Pz8f333+P/fbbbwNeuTFls9VWW2HcuHHYd999cf3116dyWfXq1dc5LvPz80tkIymtWrXC22+/jaKiosA78P7776f2ipCfn4+zzjoLZ511FhYsWIBdd90V48ePx5QpUwBUzF1fv359rFy5ssS/69yXn5+PoqIivPfee9h1113LPF55r6G4Dz744AP07ds3sH3wwQcV7qOs4JiBCnD//fcHqSqvvPIKZs+ejQMOOCD9t/z8fLz//vtYvnx5+m9z5szBrFmzgmNtvfXWAFDqy1Ocs6u2I444AmvXrsUll1xSYp81a9akv99vv/1QvXp1XHfddcH/EWzM6Prir3G+nsLCQtx2223B7/r164dq1aqVSDm8/vrrSxzziCOOwEsvvYTHHnushG3lypVBvIIxG4o+ffqge/fumDBhArbZZhv06dMHN910E7788ssSv+V5YciQIZgzZw7uu+++Er8rfk8GDhyIJUuW4J577klta9aswXXXXYc6deqgd+/eOV3rqlWrSmTl5Ofno27dukEqcO3atUudm2Lk5+ejsLAQb7/9dvpvX375ZYn7Gzx4MKpWrYqLL764hEeQ54fyXkO3bt3QuHFj3HjjjcE9PPLII5g3bx4OPPDAnO4ja9gzUAHatWuHnj174uSTT8ZPP/2ECRMmYNtttw3c1CNGjMBVV12FAQMG4Pjjj8eyZctw4403olOnTvj222/T39WqVQsdO3bEPffcg/bt26NBgwbo3LkzOnfujIKCAgDAaaedhgEDBmCrrbbCUUcdhd69e2PkyJEYN24c3nrrLfTv3x/Vq1fHggULMG3aNFxzzTUYOnRomjc7btw4DBo0CAMHDsSbb76JRx55BA0bNvzV+w0A+vfvj7y8PBx00EEYOXIkvv/+e9xyyy1o3LhxMGk2adIEf/zjHzF+/HgcfPDB+O1vf4s5c+ak187/t/CnP/0JM2bMwKBBgzBs2DAUFBTghx9+wDvvvIPp06dj0aJFG+1+Tbb405/+hMMPPxyTJ0/GxIkT0bNnT+y88874wx/+gLZt22Lp0qV46aWXsHjxYsyZMyfdZ/r06Tj88MMxYsQIFBQU4Ouvv8aMGTNw4403okuXLjjxxBNx0003YdiwYXj99dfRunVrTJ8+HbNmzcKECRNQt27dnK5z/vz56NevH4444gh07NgR1apVw3333YelS5fiqKOOSn9XUFCASZMm4dJLL0W7du3QuHHjEv/XrRx11FH4z//8Txx66KE47bTTsGrVKkyaNAnt27fHG2+8kf6uXbt2OP/883HJJZegV69eOOyww1CjRg28+uqraNasGcaNG5fTNVSvXh2XXXYZhg8fjt69e+Poo49OUwtbt26NM844I6c+yhwbLY9hI1FWamHt2rVL/FZTYYrTdq644opk/PjxScuWLZMaNWokvXr1SubMmVNi/ylTpiRt27ZN8vLykl133TV57LHHSk27efHFF5OCgoIkLy8vSDNcs2ZNcuqppyaNGjVKqlSpUiLN8Oabb04KCgqSWrVqJXXr1k123nnn5Jxzzkm++OKL9Ddr165NLrroomS77bZLatWqlfTp0yd59913k1atWq1XauG0adPW2a/ch8uXL0//bcaMGckuu+yS1KxZM2ndunVy2WWXJbfeemsCIPn444/T361Zsya54IILkqZNmya1atVK+vbtm8ybNy/Zdtttk5NOOik4z3fffZecd955Sbt27ZK8vLykYcOGyV577ZVceeWVQQqkMetLWWM9Sf79vuXn5yf5+fnJmjVrko8++ig59thjk6ZNmybVq1dPmjdvngwaNCiZPn16sN9XX32VnHLKKUnz5s2TvLy8pEWLFslxxx2XrFixIv3N0qVLk+HDhycNGzZM8vLykp133jm57bbbguPwHKXw3LJixYpk9OjRSYcOHZLatWsn9erVS3r06JFMnTo12GfJkiXJgQcemNStWzcBkKb4xfogSZLk8ccfTzp37pzk5eUlO+64YzJlypQS82kxt956a9K1a9ekRo0aSf369ZPevXsnTzzxxDqvQVMLi7nnnnvS4zVo0CD53e9+F6SCJ0n55/wsUSVJSolyM6WyaNEitGnTBldccQXOPvvsjX05mWTlypWoX78+Lr300rQIiTHGmPXDMQNmk2X16tUl/q043qG0Us/GGGMqhmMGzCbLPffcg8mTJ2PgwIGoU6cOXnjhBdx9993o378/9t577419ecYYs8XgjwGzybLLLrugWrVquPzyy/Htt9+mQYWXXnrpxr40Y4zZonDMgDHGGJNxHDNgjDHGZBx/DBhjjDEZxx8DxhhjTMYpdwBhs2bNNuR1GGPKwRdffLGxLyFntttuuzJtGrJUkVr4xph/w++PvktcQr807BkwxhhjMo4/BowxxpiM4zoDxpiNhmUBYyoPlt1yrRpgz4AxxhiTcfwxYIwxxmQcywTGGGPMFkauEpw9A8YYY0zG8ceAMcYYk3H8MWCMMcZkHMcMGGOMMVsYTi00xhhjTE74Y8AYY4zJOP4YMMYYYzKOPwaMMcaYjOOPAWOMMSbj+GPAGGOMyTj+GDDGGGMyjj8GjDHGmIzjjwFjjDEm4/hjwBhjjMk4/hgwxhhjMo4/BowxxpiM448BY4wxJuN41UJjjDGbFFWqVAm2c12Bz+SOPQPGGGNMxvHHgDHGGJNxLBP8wpo1a4LtatXCrmE3lbqw8vLy0vbatWsD208//VTmOevWrZu2f/jhh8BWVFRUrmupWjX8nttqq61K/R0A/O///m+wzffM++m+W2+9dek3AODbb78NtuvVq1fmb1euXFnmMfn82ofMjz/+GGzXqFGjzN8aY4wpH/YMGGOMMRnHHwPGGGNMxvHHgDHGGJNxHDPwC6rLqxbPGr5q2qxjq07P8QXVq1cPbKtXry7zejgOQa+FtX6+Lt1Wm+r0HM+g18Y2vU6+Nr3fwsLCtF2zZs3AxvehcRccM6H9y7EVsViDn3/+GcZkAX5/spZ257TDDYM9A8YYY0zG8ceAMcYYk3EsE5SBuqI09Y5ht7a6rHg/PSan+rHrHQhd6uruj7nFYq54TS1kt3osfVHTLtn9X6dOncDG59Tz1apVq8z9uA/V3c99qKma33//fanHN6YyibmmN4bbOnaOzVVC4GvV+ZbnQMsEGwZ7BowxxpiM448BY4wxJuP4Y8AYY4zJOI4Z+AXVnWLliTUNj3V6PQ5vq97Nx1GNLKah8/n0Wvg4mpKo18bav56f99XjrFq1Km1rrEHr1q3T9g477BDYli9fnrZZ6wfCvtG+15gJRtMXjdmciMUelJcNoaHncky16XxRGfs5LmDDY8+AMcYYk3H8MWCMMcZkHMsEv6AuKnXpx1YRZJseh7e1sp6mEzKxKoMsDaiN0/lUQojJGypFsFtOU/a4WqD2xY477pi2586dG9gWL15c6vGB0C0ZW4lQJQS9J2M2BLm4yXMhJjGWl1z2K29K4rpssTmvvNJHzKbzGv82ZjMVx54BY4wxJuP4Y8AYY4zJOP4YMMYYYzKOYwZ+QbXvWMyAav+s06vezXEBsRUGYymJGlvA26zf63VruuD2228fbK9YsSJtf/fdd2Vem2pysXKnvIJjy5YtA9u3335b5vn4ONq/sWupXbt22ta+MGZDkYtOzeNZ5xm25XLM2DtYGZr9ulILY+dnW+wcucQvVEYKpoljz4AxxhiTcfwxYIwxxmQcywS/oK5pdefVrVs3bavbnqvpaZoNV8hT2+rVq8t1bXotMRfd1ltvnbZbtWoV2Hbeeedg+/XXX0/bmlrI/cEVB4Ew1VBddq+++mqpvwOAb775Jm3HKifG3IeaWshyQ3krnxlTmejcEVvxtKJSgO7H54yNe7Xp+1PWb1Vi1BVI2a7HjK24WhkSQkyWMBXHs6cxxhiTcfwxYIwxxmQcfwwYY4wxGccxA7+gqYSqdzds2DBt16lTJ7Bxip5qa6z3q9bFv42tzBfTz1QT5OvcaaedAtvXX38dbC9cuDBt6/2zJqj6IZcc5hgFAJg3b16Z5+N71JiB2KqF/Cx0lcJY/IQx60MsnS2mfcfSi2Nlv2Opx7Ey53pMnnPUxu+Svtf821hJcCAesxCLkYjFJfD5K5oSqTglsfzYM2CMMcZkHH8MGGOMMRlnk5UJ6tevH2x//PHHabtx48aBjV3OWoWOXUOaIscubnVZjRo1Kthm19vEiRMDW2FhYdpu0qRJYPv0009LvU4glAmaNWsW2Liy3nbbbRfYYml4XAGwdevWgU3vn93xe+yxR2DjVMrevXsHNpZJ/vrXvwY2vieVENj1qFIA96+681hC0LRO7gu9v9iqkCrnsPtS9+Nr1XRQlS3Muvm1pZ3yni+XKns8z/C7AgAdO3YMttndP3/+/DJtsZUBFXbTxyqUqtzZokWLtN28efPAxu81S59AmBYMhBIgzzkAUK9evTLPz3OgViH98ssv07a+y0xMssn6iobrI4vYM2CMMcZkHH8MGGOMMRnHHwPGGGNMxtlkYwZYaweARo0apW3V3hctWpS2VcNlLV51Yta6TjvttMC2//77B9vnn39+2lZdis/BqXUAsOuuu6Zt1XB+85vfpG2NWeCYgQ4dOgS2tm3bpm3VC1977bW0rSk/mhJ53HHHpW3V/WbPnp22u3XrFth49cGrr746sM2YMSNtv/LKK4HtjTfeKPN8DGuOQKjJqpa5zTbbpG0dFxqXwNvabxyzoFomo/Eq3Bdm06S8cQKxNDidO3hM9u3bN7AdeeSRwfbcuXPLPM4XX3xR5vlZN9d3mecOfV94ddJOnToFNo4/0mPyPKqa/eeffx5sczxQu3btAhvHTXXt2jWwccyCxhPwnP/SSy8FNp5LOCUaCJ+hzqOxVMZYaebNNU15feJx7BkwxhhjMo4/BowxxpiM448BY4wxJuNssjEDrIkBoRaimi7XJGjQoEFg++qrr9K26mCcP3/uuecGtlmzZgXbrNPvtttugW2fffZJ2ytXrgxs77//ftpWnZx1as1NLigoSNuqM7777rtpW/OW33zzzbTNZYOBkpo650p/8skngY1jKIYMGRLYOPZA72n33XdP21rieM6cOaW2AeCqq65K29xnQBgz0bRp08DGGqjq+bycMhAuNa36IdeK4DgEIBxTy5YtC2xZy2OuCJtyH8WW/+XyuKq/cqlvfT90qXCer3Rei5Xo5vgn3Y+XJ9eYIv6t3t8HH3yQtvUd5LgAjc3R8sQcM6Haf5s2bUq9TiDsG60lw7FJAwcODGxcZ+a+++4LbA8++GDa1lgzRuuexJZa3hJwnQFjjDHG5IQ/BowxxpiMs8nKBOrGZVebrsTFK/Up7MbWsrrXX3992lY3mJYAPvHEE8s8H6fMvf3224EttmrhIYcckrbVpc9pL//4xz8C24cffpi2Na2HXYtPPfVUYNNVBHfZZZe0/be//S2w7bDDDmlb3U0shaj7ktE+ZQmhe/fugY3drnfeeWdgmzlzZtr+7LPPAlts9bihQ4cG20uXLk3bzzzzTPRamcWLF6dtLgMLlHQ9mnVT3pQnfZ6Vke6lx2BXsT5bdh1zuh4AHHvssWmbxzVQUh5jmYlTjYFQdtJ0V5YmtVw4H1OlAJa8FixYENiWL1+etlXiYxlNU7R1PmzZsmXa1vmQ3yV1v7M0qf3N969pfzwfnXPOOYHt97//fdq+++67A9v06dPTNqdxAvES6LGxt7mkHTq10BhjjDE54Y8BY4wxJuP4Y8AYY4zJOJtszACnBALAtttum7ZVz+F4Ai2byaktgwYNCmysySmsiQFhet9HH30U2J588sm0remLHGugOjlrdAqnGR1zzDGBLabTczyBptbtueeewTanD2o63b333pu2Dz300MDGeuKSJUsC21133ZW2udwxEJZNVb2yZ8+eaVs12GeffbbU6wKAO+64I21rWufrr78ebPPz1vgRHm8cAwKE403HhY5TU5KKaqy57BcrwxqzsW6tOjWX0uX3GAD69OmTtjUlUGOaOA1PY3x4TOp73b59+7St446vW1OtOY5F9Xwuna7vIKcIarqgLofO23rdui/D86Mui8z9pMfkeAJNtea+OfPMMwMbz7nXXnttYOP5keMHgJIxazxuNA4itgz15hJfANgzYIwxxmQefwwYY4wxGWeTlQm0ctWXX36ZtjV1p3PnzmlbU3DYndevX78yz7d69epg+7nnngu2H3jggbStLqQePXqkbU0R5PtQCYEr+WmaDa+Gp25ITg/SVfP4/GeddVZg45UQgXAFMa3sN2nSpLSt/X300UenbXU1Pv/882Ve9ymnnJK2dQVFRt2ALBtwCiIQpjxxFUMgdDsCYWVDlZPYJazyEVd81NRGpxaum1gltMpyo8aOo+8Ww+7nvfbaK7CNGDEibavEx8fUd1Cls7feeitt6xzA74i6n3lOUimA0/d0PorJElz1T8c5X5uOa60WyG58TYnk+UJTdvkcKsuwvBJz0+u8wjZ19/fv3z9tq2Tyl7/8JW3rKol6T9wfOh9uKdgzYIwxxmQcfwwYY4wxGccfA8YYY0zGqZKUU7TjlJRfg1jai2r/F1xwQdrmspVAmL6n+hVrdGrTtDQuHawaKJcG1dW+WMc+/PDDAxuXEVVNkMsDv/baa4GNdTeOVwDi6ZK6GuB7772XtgcMGBDYuNyqrgTG5U45DgAArrzyyjKvjdHSyKzJaSlURnVGLv88YcKEwPbiiy+WeU7VHblPdeXLRo0apW2+dyAsr/proCVVNwdic0dlpR3GVh9kjVfjZvi9Hj58eGBjvV3feY4L4PcICFNhgbAksKbT8XjWfuJYqC5dugQ2nq90ruR5TeMQuLS2xjbw+6ExPZrayPFGmnbIcVJ6HH4WGj/Bz7BJkyaBjeMJVM/nZ6PjQGMPGJ4f/vznPwc2nf953Ojcwc9wY6cWxs6nz1uxZ8AYY4zJOP4YMMYYYzLOJptaqG57TjdbuHBhYGP3t7rJ2eWsaSecHsSV7ADg5ptvDrbZvaWuL0710yp4//rXv9L2kUceGdjYZTd+/PjAxi7vfffdN7BxGuDtt98e2NjVp+lBo0ePDrY//vjjtP3KK68EtmHDhqXtxo0bBzZ2C06bNq3Ma1OXPve/uuIZTS2MrS7GKy+edNJJgU0lG644pn3D7jVNHeL70HH5a8sEWwKV4TpVdzCPCx0/7FZm1zsQvpNt2rQp85gqD7G7nyuQAsDLL78cbHMaq7qteQ7SdFfe1qqYPK9pJVN+X9QVH1v9lce5SnWxVEOtbMoyrvY3y71aZZD7RuUNnnP1utVtX144lfSEE04IbDw3AmH6qP4dqSixypgb45j2DBhjjDEZxx8DxhhjTMbxx4AxxhiTccotfuSiP6jew7DWF1spSvVmTp+ZP39+YGN9R/WkWJoalzi+8847A9sHH3wQbKtWzPD9aglc1g81ZoDvQ1dC5FUaVcOeNWtW2lZ9lOMXNJWRYxSAUAeMad+q07POqfEErF9q/ARrt7qyGfdbTAPUccHH7NatW2AbM2ZMsD106NC0reOC+1j7m/tU40U4RoXHExD2aawPY++Bpo1tCXBf6FwRK11cXj1U4wn4HPxeAWE5ay1JzsdRG5eo5nLDALB06dJgW8csEyvdy+NJU3H5mHp8vm7tJ97Wscz9pLEGGpfAaWoaT8GxANrfnHYY0951Hue5RJ8vv8u5lAfnfuMS6wDwwgsvBNtTpkxJ27G/b7n8ndzQaYexd6k07BkwxhhjMo4/BowxxpiMs0FSCysjZaJDhw7B9jvvvJO2NSVl4MCBaVvdz5wCpO5nrvKnKYmzZ88OttlNWK9evcDG7qaY7fHHHw9s7BbUfuLV+bT6F8siej52t6sssPPOOwfbLDFoytPkyZPT9u9+97vAFpNznnrqqbSt0gePC5VTuHKkVlvj5x2rIqluR13hkFOJNJUyJgPxs9fxxVKA2tjVqdJDTArh31Y0bWpThsd6rq7MisDnWLRoUWDj+UHHAI8nldHmzZuXtrWym0oKsTmQ3do6fnls63vGtopWvdPf8TG1yp/+lseopkS++eabaVvTolkeU3mB5xWdO7766qsyr42rFapsyfOj9i9v6/0df/zxwTbLvZrazudQ2fbXGN9l4dRCY4wxxuSEPwaMMcaYjOOPAWOMMSbjVDhmoLxxATHNJJb2omlpfBxd4Y9Tv3ilMSAsm6npMayF33TTTYFtm222CbZ5X9VxWRtWbZF1KdUkeVvjIPieNK2I99MUOe43TQ+65ZZbgm3W3rQU67hx40q9ByBMWVQtfO7cuWlbnxPrntqH/Oz5mQGhJqfjibfVpvEUBx98cNrm0sRA+Aw1dYmvVfuUNVAtsczPRvuJ9VE+hm7HYhnM/xOLQ2CbxtFwWuAee+xR5n4ffvhhYOO4HdWJNXaEYwg0NofPEZsPdYwwsdTFWJqljmUe55rSqjo9zwk6d22//fZpW+dRLuur98SrO+pKrTyv6nvNz1Tjjfj+dV6JpXV26tQp2O7atWva1lVc+flvzBgBYP3SFe0ZMMYYYzKOPwaMMcaYjFMpqYW5SAExW8wtx5Wsli1bFthGjBiRtg866KDA1qdPn7Q9adKkwMbunZkzZwY2dRuxu0vd5rVr107bnAIDhK4wrnYGhKvqqYuZU440dYnTodS9zyl6nI4JAAMGDAi22b2mqZSMVtbjvtEUID6mVhFjN5267Nilzq5EIJRJYq4+dc9qpbBevXqlbXVtfvLJJ2lbXaKcBqmSDY9ZvV9+hupK1t8yfP5YtbPNhYqmvuUC95O6xvl8mvbH416fO7+7+i7xO6HjVd32/L7otfE40H4qb/pgbD91xbNMoffLx+E5DSj5bvEcuPvuuwc2TuHVKoe8n6bo8ZyvMjFLGNrfsb8bPG+rRMPPRZ+ZVjJk2eCxxx4LbLxvbDXNX4NYdc91Yc+AMcYYk3H8MWCMMcZkHH8MGGOMMRlng5cjzgXWfjR9hDUktXEMwbXXXhvYuATwnDlzAhvHIagm1rx58zLP/9lnnwW2hg0bpm3V8DlFh7V+INR0VCP74osv0rZqXaxh6+qKu+66a9o+88wzA5uW52UdTnUw1jI1RZB1SNXI2Jafnx/YWIdUTY77SfuXn7c+e35usZKtQPi8NSaEj6vHiZUH5jGrqat8Pi2/zM9XY1BYZ9W+3xyprBiB8qYw6+94LOu79OKLL6Zt1Zs5zkPfT36eWspcz8HxBfo8eTzFVnDMJfYqpmFznADPW0AY06SxORyLBACNGjVK27paKPeHxiXwO6LvC8dz6HUzGgfBz1ePyTFcuoIin0P/ZmmMD/82tnKqPsMNvTJhZR7fngFjjDEm4/hjwBhjjMk4GyS1sDJWzdLqWOw6jbmQ1Mau+YKCgsDGVcROPvnkwDZ8+PBgm93KV199dWC79dZb07bKDZzOpulk7MLSilvsauRVuYAw1ZCrfQHAKaeckrbVfamwu61fv36BjVNy9DmxC61FixaBjdOM1KXO+6kbjl3xsRXSYhKUuujURcmrq6nbt3Xr1mlbXbm8Qp2uisbyhqatlbeSoN4vj+EtIbUwht57rKJkeav1KZy2qv3J40BdzGxTWYvfc06lA8JqdUD4nr///vuBjVMbVUbk+ULfJR5bsb7QPuSxpSvDHnjggWlbK/BpKi7fv85rPNa1kiGj1VPZ/R4b92rj+UHPx7/VPuRtrRCqxMZlbPXXiq7gWxkVfmOVKUvDngFjjDEm4/hjwBhjjMk4/hgwxhhjMs4GTy2saOqDpmIxqlHxilZNmzYNbJx6pzrYPvvsk7aPOuqo6Pn5uBozwLbzzz8/sLHuuP/++we20aNHp+133303sD3wwANpW/V1PQ7Derdq2JrCxrqjri7GfazxG6wXxlLtNO0xljoaK1XMGqTeE2ugqkEqvKIil4IGgPbt26dt1Ud5NTVNa4qNb+5DjV/ga1VtL5YKtyXAzyymd1dUY1VNmZ9ZLA5BdePYynycanfYYYcFts6dOwfbPH61lPqMGTPS9kMPPRTYeNzpHMDE4gJ0vPJcNXTo0MDGMVX6furcwWNUywPziqs67hktVcypyLGU5djKsHpMfm46LgoLC8vcT/ub0531OPx8c4llif2drOjfzYq+P4A9A8YYY0zm8ceAMcYYk3E2eGphLulBMdhN07Fjx8DG1dw0DY+ramlVQU4XUje5yg3sQtQ0MU5LVBu7AV999dXA9sQTT6TtQw89FGWhqW677bZb2m7Xrl1g69KlS9pWd1YuK2rxKm1aEZBXglT3Ka+MqOmSnDoVS3vRFC92C6rbXFM5Ge03XmFR5QbebtWqVWDjamu6aiG7KNUlGluZkK9b3Z58LSrDbI7EUoiVWApXeVfjy0VaiVXTjL0f7NJu1qxZYFO5iq9b5weW/HQc8Eqa2mc8RvR+2cWt7wfPF1ytFAjHufavygR8fpU+WCZQuZXfLZUiWHrRd4ld+jH5U+d/PQcTkx819ZglRh0XMRmK+TVW7/SqhcYYY4ypMP4YMMYYYzKOPwaMMcaYjFPumAHVulg7Vd2Yf6vpOqyjqqbKur1qVGzT/VhXVa2pe/fuaZt1JyDUCHllMQCYP39+sN2zZ8+0vXDhwsDGOs2JJ54Y2DjN6KyzzgpsrLU9+OCDgY3L/Oq1cVzAHnvsgbJY1+qRnBKk9/vSSy+l7TfeeCOwcR9zjAAAtGzZMm1rqWQu/6z6KJcK5tUNgbAPYzqyoqVfJ0+enLZVZ+X4Ao0L4G29Nj5/rGxzbCVEhft3Q6969muQS/ogP5dYmebYfjFiKwOqTs7PQctu8+qkGuOydOnSYDs2H/I5NFaF45Y0bie2Wif3habp7rjjjqX+To8TswHAp59+mrbfe++9wMbXGivjzCXAgXBVwVj5ZZ3H+ZlqjEDsXeJ71L9vM2fODLZ5RUv9GxMbQxuaWDnvXLFnwBhjjMk4/hgwxhhjMo4/BowxxpiMU+6YAdXFuHyj6r+ssWrOLeedqo1zO2M5v2pjbY2XCwWASy+9NG3fdtttgY31Xy1VzDUAgFAzevbZZwMbn7Nbt26B7bzzzkvbXA8BCGsgaMlf1h01V5e1NY2tYBYtWhRsqxbOdQ/uvPPOwMbxDKwz6jlVA1WNkFFNlOG8bR0XMU0ulpd+3333Bdv8DLU+Ax+XYxuAcLzlkitc3iV3Y7YtYQnjWB/puxwrxczjQvPnWdPWMRmLNeD+1WthHZlz4IFQm9acdD3O4sWLSz2mnl9rncTKa/OcG6u1oeMnFmvAYzsW6wWEMT5adpz7Q+PJ2KbLDfN8zHOcosfkZxor26w27huN83j00UeDbY4pisUM6JiNxRRVBrH5yHUGjDHGGJMT/hgwxhhjMk65ZQJ1fbFLR13VsXQOTtHh9BwAmD17dtpWtw27mHk1L702dZl16NAhbTdu3DiwPf/882lbXeht27YNtm+//fa0/frrrwe2v/zlL2mbS97qtWk/sbygaTa8n6bL8G9j5Wq1NCen/QFhn+oqfnxtek+cati/f//Axq5Hffaxa+W+iaXnxGQRXfnxmWeeCbZ5XGpK5pIlS9L2vHnzAhu74mJuyFxWHou58NZn5bHNgVj6ID9f7SN+D7gkNxDOF/r81B3N8LNV9+9OO+2UtvX95HHAZYOBku8Ln1+lAHZ563XyXKmSH1+r9hPb9J5YptB3KTZXaXozpxOqNMt/G/RdZne72nju0FUEWabQPuRSwpr6y/KrSjT8DDWVkFOrgVCy0THL91HRlTZz2S9W7n99sGfAGGOMyTj+GDDGGGMyjj8GjDHGmIxT7pgB1Xu5lK2mnbDeo3oSp8kNHz48sPFynmPGjAlsrANqrAGj8QSs7x922GGBbcqUKWlbtRdebld/q9o762C77LJLYLv33nvT9lFHHRXYuGynlhtlrU/L+qpmxrD237Bhw8Cm6UKc5qPLkA4ZMiRta+oQpxXF0DHD40RTKTVdiOHyo6olct+feeaZgU21Y9b9eJlVIOwbHQusn+o9se6Yy/Kl5dULK1MT3FjENFaNReJ4gthz4PLgQDjPcCofEI4RTf1iHVk15VgJdJ5ndPlbnTtYC+d0YiBcNpjbQBinoPEwPP9qrAG/IzoH8LbGBfDY1mPG5g59vtxXDRo0CGzcx7FSutrfvJ/aYsv28n4aP8FxGE899VRg09ggHjca6xDT8DdEanB555lc5w57BowxxpiM448BY4wxJuOUWyZQ1wy7XNQdwS5frU7IaTeagsPpfL/97W8DG6e2PPDAA4GtR48eaVslhL/+9a9pe/r06YGNU+vUZaWpjXyPnK4IhJXuTj/99MDG7j11cXPqn7pL27dvn7a1D1955ZW0zasyAvGqZeoG5Yp8nGYJhK5VTdfha1PYJRpLeYpJCLGUMrXdcMMNafvll18ObLEV0ziNFYivLMfPRt2H+twqYoutzrclVCDU+SG2wiDfr+7H0o7Kan369Enb6g7myqP6XvPYVqmK3cGaPsjjV6uzsgtfURczu+p1ZUSuiqpVDufMmZO2VXJjKbZr166BjedHTcPma4tVeATCPtZxHqtQGqvWx++WzlV8bbHKiSpv8Bygqx3ef//9aVtTCXUM8fy0pb6v9gwYY4wxGccfA8YYY0zG8ceAMcYYk3HKHTOgWhfr36rDcZqaasOsvT388MOB7fe//33aPuiggwIb62Ca2scpildccUVg49Wn/vGPfwQ21s9UE3z88ceDbdbBNH2QNUJNiWRdXuMJeLVF1UD32WeftD1r1qzAxrEWGjOgcQkxJk6cmLa1HDGnD6pGx6V8Y6tZqi0WZ8K6m+qMHAehY2b8+PFpW2MbYqk1GofB1xZLP9N+0nOWRS5pPuuTHrQpkstKgbFYCh6HDz74YGDjVSg1hZffV40b4vQyHeecrqjzGI8RHeeqW/M9adohzysas8Dzg5ZH53eES2nrcZo3b17m+fR+eVvne30neFVBLZXM++rqgxz/o33K16bpmhpDUNa16fvI7/ndd98d2Dj2TPsidg7tC37eOp4rGkMQS1csb+lipxYaY4wxJif8MWCMMcZknHLLBJpqwi6IWPU4rXLFbpvnnnsusLFr6JprrglsnE538cUXBzZOH3nttdcCG7ul/ud//iewcWohywlAySp7BQUFafuRRx4JbJx2snDhwsB2zDHHpG1NS2P32l133RXYWF7o0qVLYGOZRFOOuL9VMtCUJ32mzDvvvJO2O3fuHNj69u1b5jm4L9TGqWEs+wChFMBpjQAwadKktK39FEv7020es5qCmZ+fn7Z1hTYel7pfzGVXXltstcMtcdXCmPuS7zeWgqjv5+TJk9O2utT5/VGJj1e2VOnhiy++SNvq+ufqhFrlT13OPJ50TLI8qenbzZo1K/V8QDjnqmuaV2fVqobcp7Eqf0r9+vWDbZ47dI6Ppenyu619wb+NrU6q7yDLNPzMAOCJJ55I21OnTg1svFJtLvKqwveh8kosVba8qw9WdEXDXLFnwBhjjMk4/hgwxhhjMo4/BowxxpiMU+6YAdXvPv7447TNurz+VtNuWF9TbY3jAi6//PLAxmWFNV2Dr2XAgAGBjVOJVPc6+OCD07bq6awhA+E93XPPPYGN9SbV71iz0jSbN954I21rKVLWKHWFPdbwY/EaMZ0TAK699tq0PWLEiMDGmuwZZ5wR2FjLjKUWKqxfairl3//+97StK4i99957aVtT+/baa6+0rWlFmrrE8Sq6mibrzLFUWY11iKUOVTQugI+5pccMxHTUXFISeWXNv/3tb4Ft1KhRaVtjBvr375+2P/3008Cm7w/D44DLipd2bTx3aIwPl8jV8uw87nRs87sUK+ur7wtvq/bOOr2Oa30WPJfESqBrX3CfsmYPhPOKno/jdjQuYO7cuWlbU8Lff//9tK2xSDxXafxEbC7Rv1t8bbGVGJVYufKKvvd8zFjMTan7VuiMxhhjjNli8MeAMcYYk3GqJOX0R7AL59dA3VRcLe+QQw4JbOwaUdcLr043YcKEwMZVDjkFEIi7v2fOnBnYeLU8TTvk6+nWrVtgY3eerrbIrmq9J662tt9++wU2lhs0rSeWOqRuex4W22+/fWBjtz2vygiEKxrqM2RX3IsvvhjYePVBrdLG162riZ1wwgkoC63MxqmcXN0NCFOlNH2xQYMGaVtdm+w+VLccH1P7kFNgNcWTj6lSB0timwux9DYd2xWtrhZzx3JaMFcrBULJjVcCBML3WlcG5HdQ3129X5b5OGUYCFcLVamSJQSV39hVrWOLx7ZeC8u0KoWyVBaTOoAwJVLTudltru721q1bp21d/ZSlFz0fp2fqCqssK2paMKPHZFlEUwJVDmQ5Vp/TvHnzyjwOz3mxaps6fitauZCPqdKHys0l9q3QGY0xxhizxeCPAWOMMSbj+GPAGGOMyTjlTi3c2Pz3f/932tbUM9a6tEwp636q1/Hqe0os7aNPnz7BNqcrsb4MALfcckva1hQc1sY5NQoAhgwZkra1NCenB2lp5n79+qXtI488MrBpHASncqp+xyWPFy9eHNhYI3z99dcDWyzNhu9Dj8k6nOpn3Keqr3MMgZ6P+wII404eeuihwMa66+677x7YYvp+LG2MdWWN3+A0U9UHOf1KV1fcEuDnq/de0VUaYxorj3NNH+SS5Jp6zGOSS/wC4TPq1KlTYFMNn7VbjRtiTV/nNX6XNC2Ox51q2GyLpQjq+8L3xP0ClExLZrueg8e6xvhwPAOXkQfCsa7PiWO/tIw9xzvpHMuxFXo+jsPQOVbTwPk+9Ld8HI0p4hgCjVmIxQzwtv4t4liz2N+pmK3U3+f0a2OMMcZscfhjwBhjjMk4m6xMoO4eThN7+umnAxun82llOa6OqKuLccqapguqFMCuL03RYze2ugEvu+yytM1uaiBMX9E0H3ZZaioNuyw1fY4rLi5YsCCwqYub+0r7bbfddiv1WgDggAMOSNvsCgdCl53ux+5ETTmKrXTG7jUdF+yG03QglYX4/Lvuumtg6969e9rWlJxZs2albU3x4vOrS3S77bZL25p+xS5adbOye09dm1sC5V3NsaLVCWMpZDrOWXJTtyqPUU3L4nHIKYB6LUA4LnTc9+7dG2XBspO6zdn9relsLC9otTyW51SC4v10jtNtljd22GGHwMb9re8S97GmAfKz0NTjt956K23HKgnq/bJNpQ626XutVXVZNtDKlDznqWQTG5exSpxlHUOPU1kyG2DPgDHGGJN5/DFgjDHGZBx/DBhjjDEZZ5ONGVA9i7UQXYmL9R1N8+F0Ok07ZL1Fy/GqDldeVDdmTXDGjBmBjfUzXbGMtf+XXnopsJ144olpm7V9IEyjWrhwYWDTvhk0aFDa5lK9QJjqqOmS3P+qtbGe9+qrrwY2vkdesREIy73qypOsSeqKZazlqq556623Btv7779/2u7bt29g4xXipk6dGtg4jUr7idN89FnwWFCdkbVUTVXisb4lxgwwuWic/NtY2qrC73Is3UrfeZ6DYmnBGofA2jsQxgno/XIcj8axzJ8/v8z9OE4h1hc67ni8chsI9fZYfwLhPeqcx2NWVwBlTV1La/McrO8ZE0vv1bLRPD9xDA8QxhBoLIfGO/E5tL95bGhcQCy1MFYeXmMfyjpmLK4m1/gBewaMMcaYjOOPAWOMMSbjbLIygbqp2I2jqSXsclVXDKPuLK6yp256dc337NmzzPOza4pXQQOAK664Im1rZTteRVGrA3Iqka48xi7C5s2bBzZ2w82dOzewabVArpzYpEmTwMbXwy50IHTvaSXBRx99NG1rWhFfa//+/cu0aQoQyx1a5Y9df1r9a9SoUcE2rzzGK40BoYuSq50BoetN3Yd8PZyeCIRjSt3M7KLVccnjScfa5kguKwxW9JixdEWWA2Orw8VSPNX9zKjEqNXreFtd3JwOq1UOOYVX5Q2W2WKV7dTdzPeoMgG/P3o+nZ/4HVV3N8srKuvxOfW6eV5TyYavW1fy5GPqtfDfDU0X5HlV/97oeGJZRNO5WYrR8cXXqu85X6verz6bsq4tNu4tExhjjDEmJ/wxYIwxxmQcfwwYY4wxGWeTjRlQDSVWdpZ11bfffjuwsaaiOhhrfarNnnzyycE2p/rtuOOOgY11QNV6OLVFj9mrV6+0zasyAqGmXVBQENg4nY51fyBMb1M9XzX8M888M21z/AQQ6lmcRgXEy29yWWW+PyDU7FUfZS1e05E++eSTtK2pUvx89ZiqSXIMhaau8iqGWraaU6W0Lzh1VGM7Hn/88TLPxyWXNZ6AdUa93y2B9Ul/qgj83sfiAnS8xNI/+bloaqGuQMr3q6uDtmnTJm1rPAqnGqqNtfBYuqveL8+jWvab71djc3Tu5BgK7TfeNza2NTaIz6Hjnq9b/zbwfvqceFtjDbgPtZ80TopLJ+u8yvcb0/r1HHw9GusQSwFlYqmysXiCUo+V06+NMcYYs8XhjwFjjDEm42yyMoGmgbCrWF0q7B5WVxCn1mj6HK8weOONNwa2d999N9h+4IEH0vbpp58e2NhNFnMnKpyGeM011wQ2XolRXdNz5sxJ29tvv31gO/jgg9O2uuhuv/32YJvdglqdi9OMNO2SXVOxFRzV1fjmm2+mbV0Fjt2nHTp0CGxt27ZN21opjKsDqstM00N55TPtG3bhqZzCbtgWLVoENq7qqBIVyx2xlcdUQuCxr/ttjmyI1MKKEkstjLlc1aXOKXOaSqipZ5xSpullzZo1S9tabZIlRh7nAHDUUUel7Zdffjmw8bul1Vp5W8c5u/7VptIdv9tahZTTEPV+Y+l8McmGiUk9et0xmYDTBXWF09iKippmytuayhmTxLgvVKbmOSFWoVSPWd5qm6Vhz4AxxhiTcfwxYIwxxmQcfwwYY4wxGWeTjRlQnVw1M4Y1MtWFOE2M4w4A4IYbbkjbqjVpetldd92VtocMGRLYOGZBNTLWpjUNjzUdTUtjDV31Sk5luvPOOwMb65eaAqOpJnytuooga1GaAsTbqt9xWlWPHj3KPL+mB3EsgMZB8HVqmg1ra5rS9eSTTwbbrG3qb7nfVBPkVNKRI0cGNl5ZjuM8gHAsclolEKaj6mqaTEVXzzS5E4vrUPjd0tgYjUfhWAAtz8twDBMQ19d5bGlaMO+ncw5r01z+FwhThrkcup4PCGOF9H3R+2dimjbfo8YG8fys18LPSc/dtGnTMo/JZdU1LkpjJDi+IFYOWctN89ylqc8cC6UrzFa0vHaucQLBvhXe0xhjjDFbBP4YMMYYYzLOJisTqLtd068YTclh2BWmv+MKceqO1ZQ5din913/9V2DjFffU9bbXXnulbU3zYfe/3u99992XtrVqGacjqa1r165pm13YQMl0GXYZqhuS04PatWsX2HjFQXWZsZtMpRZ1vTHs3lJZhF3s6rrlSo1PPPFEYFP3JT9jdeexLKWrS3Kq4/PPPx/YOK1LK2MyKkPxtqZmsUtSn8vmyMZMJcwFdbFympg+B3YN63ut7zLfv67+x8dR6YrTWNXFze+SSg+x6pY8B+rcERtrmvrG70ssRVHfV5bjVDrjlFo9Js8zOj+wbKmueE51Vlc8z4/ah5oiyM9QXfg8l+iz52fI1wKEEo5KhXy/MbkqhlMLjTHGGJMT/hgwxhhjMo4/BowxxpiMs/kLkpWEasix1b7eeeedwMZldlX74ZK4mi7JOpzqSVzmVjVJXlErpssfcsghga1Lly7BNq/EqCVNWfvSvuFr5XgJIIztUN2P4zBUd+Nt1ci437gUMxCuNqhph1rSmuM5VK/kOAjVTmfOnJm2Ne5CNUJTkk05ZiCmBfM4zKUstI5DPoe+y5yWOHv27MDG74vGNMX0dY5BUe2bVz/UErwcG6PzEafoAeHcpamVHDOg8TCxMrscC6VjhuNxdD7S95zhuXLBggWBTVOvY8Q0fL6e2OqDurok/63QOAjW+/XZx96n2HheF/YMGGOMMRnHHwPGGGNMxvHHgDHGGJNxHDPwC6q7qUbI2ldMI9Mli1nDVy2Ry4ZyvjwQatqaK8y5uqoJ3nHHHWmbl+wFgBNOOCHY5pgCvadXXnklbWtJUy5bqrn1vK3aGuulqvtxSVXtiylTpqRtzRXmPF59ZrwMMwAceOCBaZtLDAPAjBkz0rZqe7z09fqU+8wqql1uyjEEZZHL0sf6nvN7oH3Bv1W9md9J3Y81Zr02PqbauIYF6+lAWOdAaxDo0t18rXq/rIVrXYWyjgGENRB0fmCb6us8/2rM1nvvvZe2de6IjUOdu3gO1jmX71/vl+dK/dvA96jXUtF4FY4vyLU+gWc2Y4wxJuP4Y8AYY4zJOFWScuYfcNrHloi6YtQVxO5vTfWIrWjFLkRNpeHVBzXVjWUJLQXKLvX8/PzANnfu3LT99ttvBzZeJQsAOnbsmLY17ZBTBl9//fXAxu7+AQMGBLbtttsubav0wK4+Peb999+ftjV9j/teU/n4uemqb7qaG6cWaSolu+nU7cvPV8vC/trEVr3bVOExsaXA06a6eHORFGKpYPzbmC0mXcVSX3XO42vRcd6mTZtgm2U2nfN4xUMtQc7H1bLfPOfodbNUqfIGz3OaPshzrLrNeT7WuVm3eV+dj3l+0L8b/Nz0mLFnX14pLfbnW4+xrrnDngFjjDEm4/hjwBhjjMk4/hgwxhhjMo5jBn5B9TNNNWTdWtNHOIYgl+VoWetTjY71dtXPOCVHNSo+v96DpuRwCV49Du+rKUBcUlRTgHg4xfR9Xa6V0340XZFTMLX0KMdafPLJJ4GNtUsgvoQx942+ErG0Io0f2dA4ZmDzo7zacMwW0/dVC4+lovEcpPvx+TVdUNOb+b3TJc75uFqCnc/BpZGBcPlhfa943HO6HhCmEMfK+mq/8D2pvq5zNb/3ujQ631PsGWpsB19PrqWDy4NjBowxxhiTE/4YMMYYYzKOZYIyUDcVu7zV/c4upZj7Wd1yMQmBz6+pLOzeUlcbo24idfWxe03Tg3g1RE7PAUKZgF17QOheVHc/35NW4+K0Q674p8fUtEO+Fu1ftun5FXbZxVKA+Jnpdf8aWCbY/IiliVXUPRyTF8qb9hizxWSJdZ0/VlmP5051m7MrPnZPSux+Y9UfYxX6Yqnm6+qbilBZYyR2HMsExhhjjInijwFjjDEm4/hjwBhjjMk4jhn4BdWvVDfWOAGGdRr9XUzPYg0/pqFrih7rV6rn83G4vCdQMvaAj6t6OqfP8CqJQKgJ6vm5HwsLCwMbpwiq1s76vl4nX5vGPfBxYvcHhFqfpnJySuaSJUsCG6eSap9qmtGGxjEDWxax+YFRW2y/2JQeK3Fc3vPpcVRDZy1ejxPT3nnOVVvsfsu7Xwyd/3U+5ONW9FnoOSojnTCXMsYab6XYM2CMMcZkHH8MGGOMMRnHMsEvaMqYupHZ/a7pg+z+0eqE/Ft1E3HaoaYIsqtaJQu+Nn18XC1QVwxTdz+nFmqKIMsdWtWL0xB5NTEgrBCoLis+jto0tZHhe1T3HV+nHlOfIe+rKyryvtpP7PbU/WKrwm0ILBOYdRFL+yvrd8r6uLBj6Yuxc1Q0fbCsc6+L8vaT/jZW4bGyqOgzjP3WMoExxhhjovhjwBhjjMk4/hgwxhhjMo5jBozZjHDMgNnUyEW3zkWnLy/ljSeIpeGt6x7Ke45NGccMGGOMMSaKPwaMMcaYjFNt3T8xxhiTJXJx/Vc0ffHXWKmvss63uUoDuWDPgDHGGJNx/DFgjDHGZBx/DBhjjDEZxzEDxhhjAiqrHHEsna+itoqyIY65sckltmNd2DNgjDHGZBx/DBhjjDEZxzKBMcaYSqOiaYgbusrfliALKJVVxRGwZ8AYY4zJPP4YMMYYYzKOPwaMMcaYjOOPAWOMMSbj+GPAGGOMyTj+GDDGGGMyjlMLjTGbJLHqapVZeW19j7k+1xKrurcp7VdRcumb8qb+5XKMX+MZbkxcgdAYY4wxlYY/BowxxpiM448BY4wxJuM4ZsAYs9HIZeW62H6Vcb6ioqJyX0tlae8VLc9bWfdf3vPlcsyK9k1l3O+G6JeNQXmfhcsRG2OMMabS8MeAMcYYk3EsExhjNii5pAiW9zgVdY9WrRr+/0/sWn7tVe429qp6FT3/hrjuiqYPro+8sSlRGc8i1/uzZ8AYY4zJOP4YMMYYYzKOPwaMMcaYjFMl2ZSFE2OMMcZscOwZMMYYYzKOPwaMMcaYjOOPAWOMMSbj+GPAGGOMyTj+GDDGGGMyjj8GjDHGmIzjjwFjjDEm4/hjwBhjjMk4/hgwxhhjMs7/ATbVhVhjmi63AAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAELCAYAAABEYIWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJZUlEQVR4nO2de7hW47r/71KzUq1WdNJBs2YlHVRmipRSKjpQSmLtTbUWUeS8FsuW0N7tEFkkh7USykYhExHpgBCFkFLpJIcOqFD41Ry/P7b57O/znXM+833f5qnG93NdrusZ837HGM94xhhPw/297/spE0VRZEIIIYSILWVLugNCCCGEKFn0MSCEEELEHH0MCCGEEDFHHwNCCCFEzNHHgBBCCBFz9DEghBBCxBx9DAghhBAxRx8DQgghRMzRx4AQQggRc/QxEFPS09Nt2LBhJd0NIYRIiUWLFlmZMmVs0aJFJd2VQ4LYfQxMnz7dypQpY8uWLSvprpiZ2Z49e2zcuHF5PtBz5861cePGFXufkDJlythll11Won0QojSRM4fk/FeuXDmrV6+eDRs2zL766quS7l6hcv/999v06dNj34c4UK6kOxB39uzZY7fccouZmXXr1s2zzZ0716ZMmVLiHwRCiNzceuut1qhRI/vll1/s3XfftenTp9tbb71ln376qVWsWLGku1co3H///VajRo0S9SLm14dTTjnF9u7da2lpaSXTsUMMfQwIIUQKnHHGGda+fXszM/vLX/5iNWrUsIkTJ1pWVpYNGTKkhHtX/Pz8889WuXLlYjtf2bJlD5mPrtJA7GSCvBg2bJhVqVLFvvrqKxswYIBVqVLFatasaddee63t37/f/W7jxo1WpkwZu/POO+3uu++2hg0bWqVKlaxr16726aefesfs1q1brv/TzzlXenq6O17NmjXNzOyWW25xbsdx48bZsGHDbMqUKWZmnksyh+zsbJs8ebK1bNnSKlasaLVr17aRI0faDz/84J0viiIbP3681a9f3w4//HA79dRTbeXKlSmPVY5O9/TTT9stt9xi9erVs6pVq9rgwYNt165d9uuvv9qVV15ptWrVsipVqtjw4cPt119/9Y7xyCOPWPfu3a1WrVpWoUIFa9GihU2dOjXXubKzs23cuHFWt25d1/fPPvssz3iHnTt32pVXXmkNGjSwChUqWJMmTWzixImWnZ2d8rUKkQxdunQxM7MvvvjC/W316tU2ePBgO+KII6xixYrWvn17y8rKyrXvzp077aqrrrL09HSrUKGC1a9f3y644ALbsWOH+822bdvsz3/+s9WuXdsqVqxobdq0sUcffdQ7Ds5RDz30kGVkZFiFChXshBNOsPfff9/77bfffmvDhw+3+vXrW4UKFeyoo46ys846yzZu3Ghm/xtXtHLlSlu8eLGbf3LmtBypZPHixTZq1CirVauW1a9f38z8OQ4ZN26cN4flMGPGDOvQoYMdfvjhVr16dTvllFPs1VdfLbAP+cUMzJo1yzIzM61SpUpWo0YN+7d/+7dc8k2ic36ckGfgd/bv32+9e/e2jh072p133mnz58+3SZMmWUZGhl166aXebx977DH78ccfbfTo0fbLL7/YPffcY927d7dPPvnEateunfA5a9asaVOnTrVLL73UBg4caGeffbaZmR133HH2888/29dff22vvfaaPf7447n2HTlypE2fPt2GDx9uY8aMsQ0bNth9991nH374oS1ZssTKly9vZmZjx4618ePHW58+faxPnz72wQcfWK9evey33347gNEymzBhglWqVMmuv/56W7dund17771Wvnx5K1u2rP3www82btw45zpt1KiRjR071u07depUa9mypZ155plWrlw5e+GFF2zUqFGWnZ1to0ePdr+74YYb7Pbbb7f+/ftb7969bcWKFda7d2/75ZdfvL7s2bPHunbtal999ZWNHDnSjj76aHv77bfthhtusG+++cYmT558QNcqRCLk/CNavXp1MzNbuXKlnXzyyVavXj27/vrrrXLlyvb000/bgAED7JlnnrGBAweamdlPP/1kXbp0sVWrVtmIESPs+OOPtx07dlhWVpZt2bLFatSoYXv37rVu3brZunXr7LLLLrNGjRrZrFmzbNiwYbZz50674oorvL488cQT9uOPP9rIkSOtTJkydvvtt9vZZ59t69evd3PDoEGDbOXKlXb55Zdbenq6bdu2zV577TXbvHmzpaen2+TJk+3yyy+3KlWq2I033mhmlmt+GzVqlNWsWdPGjh1rP//8c9Jjdsstt9i4ceOsU6dOduutt1paWpotXbrUFixYYL169UqoD0jOnHjCCSfYhAkTbOvWrXbPPffYkiVL7MMPP7Q//vGP7rfJzPmxIIoZjzzySGRm0fvvv+/+duGFF0ZmFt16663eb9u1axdlZma67Q0bNkRmFlWqVCnasmWL+/vSpUsjM4uuuuoq97euXbtGXbt2zXX+Cy+8MGrYsKHb3r59e2Rm0c0335zrt6NHj47yukVvvvlmZGbRzJkzvb+/8sor3t+3bdsWpaWlRX379o2ys7Pd7/7+979HZhZdeOGFuY7NmFk0evRot71w4cLIzKJWrVpFv/32m/v7eeedF5UpUyY644wzvP1POukk73qjKIr27NmT6zy9e/eOGjdu7La//fbbqFy5ctGAAQO8340bNy5X32+77baocuXK0Zo1a7zfXn/99dFhhx0Wbd68ucDrFCJRcuaQ+fPnR9u3b4++/PLLaPbs2VHNmjWjChUqRF9++WUURVHUo0ePqHXr1tEvv/zi9s3Ozo46deoUNW3a1P1t7NixkZlFzz77bK5z5by3kydPjswsmjFjhrP99ttv0UknnRRVqVIl2r17dxRF/zdHHXnkkdH333/vfvv8889HZha98MILURRF0Q8//BCZWXTHHXcEr7Vly5Z5zmM5Y9C5c+do3759no3nuBxuvvlmbz5bu3ZtVLZs2WjgwIHR/v3787zuUB9y5qKFCxe68ahVq1bUqlWraO/eve53L774YmRm0dixY70+JjLnxwnJBMAll1zibXfp0sXWr1+f63cDBgywevXque0OHTpYx44dbe7cuUXeR7P/dYNVq1bNevbsaTt27HD/ZWZmWpUqVWzhwoVmZjZ//nz77bff7PLLL/fcc1deeeUB9+GCCy5w/4dhZtaxY0eLoshGjBjh/a5jx4725Zdf2r59+9zfKlWq5Nq7du2yHTt2WNeuXW39+vW2a9cuMzN7/fXXbd++fTZq1CjveJdffnmuvsyaNcu6dOli1atX98bjtNNOs/3799sbb7xxwNcrBHPaaadZzZo1rUGDBjZ48GCrXLmyZWVlWf369e3777+3BQsW2JAhQ+zHH390z+R3331nvXv3trVr1zrX9TPPPGNt2rRxngIk572dO3eu1alTx8477zxnK1++vI0ZM8Z++uknW7x4sbffueee6zwUZv8nYeTMZ5UqVbK0tDRbtGhRLmkxGS666CI77LDDUtp3zpw5lp2dbWPHjrWyZf1/ivKSEwpi2bJltm3bNhs1apQXS9C3b19r3ry5vfTSS7n2SXTOjwOSCX6nYsWKTr/PoXr16nm+KE2bNs31t2bNmtnTTz9dZP1D1q5da7t27bJatWrlad+2bZuZmW3atMnMcve3Zs2a3kSRCkcffbS3Xa1aNTMza9CgQa6/Z2dn265du+zII480M7MlS5bYzTffbO+8847t2bPH+/2uXbusWrVqru9NmjTx7EcccUSuvq9du9Y+/vjjXPcvh5zxEKIwmTJlijVr1sx27dpl06ZNszfeeMMqVKhgZmbr1q2zKIrspptusptuuinP/bdt22b16tWzL774wgYNGhQ816ZNm6xp06a5/tE89thjnR3h9zPnncmZzypUqGATJ060a665xmrXrm0nnnii9evXzy644AKrU6dOgiNg1qhRo4R/y3zxxRdWtmxZa9GiRcrHQHLG4Jhjjslla968ub311lve35KZ8+OAPgZ+J9Wv2/woU6aMRVGU6++FEZySnZ1ttWrVspkzZ+Zpz+8fxcIkv/HK7+85Y/HFF19Yjx49rHnz5nbXXXdZgwYNLC0tzebOnWt33313SgF/2dnZ1rNnT/vrX/+ap71Zs2ZJH1OIgujQoYPLJhgwYIB17tzZzj//fPv888/dc3zttdda796989yfP3QLk4LeQ7P/9RD279/f5syZY/PmzbObbrrJJkyYYAsWLLB27doldB708uWQ3//Vl7bAvMKe8w929DGQAmvXrs31tzVr1ngRtNWrV8/T3cRf8CF3WH62jIwMmz9/vp188sl5vow5NGzY0PW3cePG7u/bt28vsa/fF154wX799VfLysry/u8lR9rIIafv69at8/7v47vvvsvV94yMDPvpp5/stNNOK8KeC5E/hx12mE2YMMFOPfVUu++++5xcVr58+QKfy4yMjFzZSEzDhg3t448/tuzsbM87sHr1amdPhYyMDLvmmmvsmmuusbVr11rbtm1t0qRJNmPGDDNLzV1fvXp127lzZ66/89yXkZFh2dnZ9tlnn1nbtm3zPV6ifcgZg88//9y6d+/u2T7//POUxyguKGYgBebMmeOlqrz33nu2dOlSO+OMM9zfMjIybPXq1bZ9+3b3txUrVtiSJUu8Yx1++OFmZnm+PDk5u2wbMmSI7d+/32677bZc++zbt8/9/rTTTrPy5cvbvffe6/0fQUlG1+d8jWN/du3aZY888oj3ux49eli5cuVypRzed999uY45ZMgQe+edd2zevHm5bDt37vTiFYQoKrp162YdOnSwyZMn2x/+8Afr1q2bPfjgg/bNN9/k+i3OC4MGDbIVK1bYc889l+t3Oe9Jnz597Ntvv7WnnnrK2fbt22f33nuvValSxbp27ZpUX/fs2ZMrKycjI8OqVq3qpQJXrlw5z7kpREZGhu3atcs+/vhj97dvvvkm1/UNGDDAypYta7feemsujyDOD4n2oX379larVi174IEHvGt4+eWXbdWqVda3b9+kriNuyDOQAk2aNLHOnTvbpZdear/++qtNnjzZjjzySM9NPWLECLvrrrusd+/e9uc//9m2bdtmDzzwgLVs2dJ2797tflepUiVr0aKFPfXUU9asWTM74ogjrFWrVtaqVSvLzMw0M7MxY8ZY79697bDDDrOhQ4da165dbeTIkTZhwgT76KOPrFevXla+fHlbu3atzZo1y+655x4bPHiwy5udMGGC9evXz/r06WMffvihvfzyy1ajRo1iHzczs169ellaWpr179/fRo4caT/99JM9/PDDVqtWLW/SrF27tl1xxRU2adIkO/PMM+3000+3FStWuL7j/y1cd911lpWVZf369bNhw4ZZZmam/fzzz/bJJ5/Y7NmzbePGjSV2vSJeXHfddXbOOefY9OnTbcqUKda5c2dr3bq1XXTRRda4cWPbunWrvfPOO7ZlyxZbsWKF22f27Nl2zjnn2IgRIywzM9O+//57y8rKsgceeMDatGljF198sT344IM2bNgwW758uaWnp9vs2bNtyZIlNnnyZKtatWpS/VyzZo316NHDhgwZYi1atLBy5crZc889Z1u3brWhQ4e632VmZtrUqVNt/Pjx1qRJE6tVq1au/+tmhg4dan/7299s4MCBNmbMGNuzZ49NnTrVmjVrZh988IH7XZMmTezGG2+02267zbp06WJnn322VahQwd5//32rW7euTZgwIak+lC9f3iZOnGjDhw+3rl272nnnnedSC9PT0+2qq65KaoxiR4nlMZQQ+aUWVq5cOddvORUmJ23njjvuiCZNmhQ1aNAgqlChQtSlS5doxYoVufafMWNG1Lhx4ygtLS1q27ZtNG/evDzTbt5+++0oMzMzSktL89IM9+3bF11++eVRzZo1ozJlyuRKM3zooYeizMzMqFKlSlHVqlWj1q1bR3/961+jr7/+2v1m//790S233BIdddRRUaVKlaJu3bpFn376adSwYcMDSi2cNWtWgeOKY7h9+3b3t6ysrOi4446LKlasGKWnp0cTJ06Mpk2bFplZtGHDBve7ffv2RTfddFNUp06dqFKlSlH37t2jVatWRUceeWR0ySWXeOf58ccfoxtuuCFq0qRJlJaWFtWoUSPq1KlTdOedd3opkEIcKPk961H0v+9bRkZGlJGREe3bty/64osvogsuuCCqU6dOVL58+ahevXpRv379otmzZ3v7fffdd9Fll10W1atXL0pLS4vq168fXXjhhdGOHTvcb7Zu3RoNHz48qlGjRpSWlha1bt06euSRR7zj4BzF4NyyY8eOaPTo0VHz5s2jypUrR9WqVYs6duwYPf30094+3377bdS3b9+oatWqkZm5FL/QGERRFL366qtRq1atorS0tOiYY46JZsyYkWs+zWHatGlRu3btogoVKkTVq1ePunbtGr322msF9oFTC3N46qmn3PGOOOKI6E9/+pOXCh5Fic/5caJMFOUR5SbyZOPGjdaoUSO744477Nprry3p7sSSnTt3WvXq1W38+PGuCIkQQogDQzEDotSyd+/eXH/LiXfIq9SzEEKI1FDMgCi1PPXUUzZ9+nTr06ePValSxd566y37n//5H+vVq5edfPLJJd09IYQ4ZNDHgCi1HHfccVauXDm7/fbbbffu3S6ocPz48SXdNSGEOKRQzIAQQggRcxQzIIQQQsQcfQwIIYQQMUcfA0IIIUTMSTiAsG7dukXZDyFEAnz99dcl3YWkOeqooxL+LYYwpVIXX8SPQ/2Z4bA+vMaQjcmrLDYiz4AQQggRc/QxIIQQQsQc1RkQQhQrIbduKkt6i3jBrnFc0vlQIVHpozCv/dAbRSGEEEIkhT4GhBBCiJgjmUAIUawkKgWEiqOmGmFd3Da2Hwo2tpfEmObHoXIPE+0LcyCZFfIMCCGEEDFHHwNCCCFEzNHHgBBCCBFzFDMghCiVpJpmWJpspa0/siVvK239KYyYm7yQZ0AIIYSIOfoYEEIIIWKOZAIhRLFyqKUPlra0tEM9tVD3MH9bdna2aydbnVCeASGEECLm6GNACCGEiDn6GBBCCCFijmIGhBAlRmlNyyosW2nrj2zJ20pbf4pqFUN5BoQQQoiYo48BIYQQIuZIJhBClBoOpIKaKBlKUxpgqqsdljaKeiXEvJBnQAghhIg5+hgQQgghYo4+BoQQQoiYo5gBIUSRkox2majmmUw8geIQipaSSPUr7P2Kg4JKPId+Wxi2gpBnQAghhIg5+hgQQgghYo5kgt/Zt2+ft12unD80IfdlWlqaa+/fv9+z/frrr/mes2rVqq79888/ezZcfSrUF644ddhhh+X5OzOz//f//p+3jdeM+/G+hx9+eN4XYGa7d+/2tqtVq5bvb3fu3JnvMfH8PIbIL7/84m1XqFAh39+K0kEy6V6pponFWQpIxv1cFBRWql+q6YNFQVGt9ljUKLVQCCGEECmjjwEhhBAi5uhjQAghhIg5ihn4HdblWYtHDZ81bdSxQ1pX+fLlPdvevXvz7Q/GIXBfUOvHfvE221inx3gG7hvauJ/YN77eXbt2uXbFihU9G14H61kYM8Hji7EVoViD3377zcTBTaoaa2i/Qz2GoDiuLzSvJZPqVlSldAubVJ+nkn4OlVoohBBCiJTRx4AQQggRcyQT5AO7Wzj1DkG3NruCcD8+Jqb6oevdzHeps7s/5G4KueI5tRDd6qH0RU67RPd/lSpVPBuek89XqVKlfPfDMWR3P44hp2r+9NNPeR5fHJykmkJ2sKSllWZSddMXRWphUVXZS5SiSC0sjudCqYVCCCGESBl9DAghhBAxRx8DQgghRMxRzMDvsH4TKk/MaXio0/NxcJv1bjwOxySENHQ8H/cFj8Mpidw31P75/LgvH2fPnj2uzbEG6enprt20aVPPtn37dtdGrd/MHxsee46ZQDh9UZQ+DkR/Lur9igJ+Xgtj9cXCWvkxZEs1RTAZQucIzTl4vtAcWxwotVAIIYQQhyT6GBBCCCFijmSC32G3FLv0Q6sIoo2Pg9tcWY/TCZFQlUGUBtiG6XwsIYTkDZYi0KXFKXtYLZDH4phjjnHtlStXerYtW7bkeXwz370VWomQJQS+JlH6KOnVB4vbjVxYrvmQazx0jFRdxTiXFHSM0H1KNZ0ObZyWjDJmSIYprDTHEKU57fBAnnV5BoQQQoiYo48BIYQQIuboY0AIIYSIOYoZ+B3WvkMxA6z9o77FejfGBYRWGAzpbhxbgNuo33O/OV3w6KOP9rZ37Njh2j/++GO+fQtpktxvXMGxQYMGnm337t35ng+Pw+Mb6kvlypVdm8dCHHyUdGpWfoQ03YL6hXZ+J0Nps6Hz53d8s8RTnZPR+jkWCt/R0DWxLXT+UDliPF+q96KwyhiX5hUNlVoohBBCiJTRx4AQQggRcyQT/A67plk2qFq1qmuz2x6r6bE7DSvksW3v3r0J9Y37EnLTH3744a7dsGFDz9a6dWtve/ny5a7NqYU4Hlhx0MxPNWS31Pvvv5/n78zMfvjhB9cOVU4Mucw4tRDlBh5fcfBRkqsPhs6XTDobE1pJNL9jFnRctPFzn6ibnq8JJU5+P7lvOCeF5jGeV0PXFJJMUr0XhfU8HchqgAdKqs9Fsmj2FEIIIWKOPgaEEEKImKOPASGEECLmKGbgdziVkPXuGjVquHaVKlU8G6bocRlN1NZYz8HfhvSykA7EeiH289hjj/Vs33//vbe9fv161+brR62RdUcsOYwxCmZmq1atyvd8eI2sSYZWLcR7wasUFrWOLA6cwlq1sKjvbzLlYvP7nZnZH/7wB28b5wt+JxDW1xM9J88dOCewDd+fatWqebYjjjjCtf/4xz96NkwZNvPjiLjfGMcTmld4ruSVTBEci9CKhqnq6wXtV9xxAkhxpEuayTMghBBCxB59DAghhBAxp9TKBNWrV/e2N2zY4Nq1atXybOhy5ip06EbhFDl0cbMrfNSoUd42uvunTJni2Xbt2uXatWvX9mybN2/Os59mvpusbt26ng0r6x111FGeLZSGh+689PR0z8bXj+74E0880bNhKmXXrl09G7o9//nPf3o2vCaWEDB1iaUAHF92faGrkdM6cSz4+kKrQrKLEl2PvB/2ldOoWLYQuSmsVQuLI4UMCbnbEa602bZtW28bZcSQu53nIHxGeczwt/wM4nuH77GZP3fWrFnTs+E5cE4zyy0FoIzA7znOXTzn4RywdetWz/bFF1+49rfffuvZcCx4nEL9DFVjDKUrMkWxMmF+fUnmmKEqkskiz4AQQggRc/QxIIQQQsQcfQwIIYQQMafUxgyg1m7m61usQ23cuNG1WT9DLZ51YtTvxowZ49l69uzpbd94442uzfoSngNT68x8/ZC1H9TdWAdD3a158+aerXHjxq7N+vayZctcm1NwOCXywgsvdG3WMpcuXera7du392y4+uDdd9/t2bKyslz7vffe82wffPBBvudDOOUJdU/UX838NC5+LjguAbd53DBmgVdURDheBcdCHDjFvSJcotosv0v43J166qmejeNvPvroI9dmLR7T6Xh+QrhvmELMMUX4jPI7j9fEaX/fffeda/O7wxo+piHi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\n", "text/plain": [ "
" ] @@ -694,8 +709,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3342.69it/s]\n", - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3488.83it/s]\n" + "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3317.48it/s]\n", + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3413.76it/s]\n" ] } ], @@ -790,9 +805,9 @@ "transformer_model = DecoderOnlyTransformer(\n", " num_tokens=16 + 1,\n", " max_seq_len=spatial_shape[0] * spatial_shape[1],\n", - " attn_layers_dim=256,\n", + " attn_layers_dim=128,\n", " attn_layers_depth=16,\n", - " attn_layers_heads=16,\n", + " attn_layers_heads=12,\n", ")\n", "transformer_model.to(device)\n", "\n", @@ -829,18 +844,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch 0: 100%|███████████████████████████████████████████████| 250/250 [01:20<00:00, 3.10it/s, ce_loss=0.255]\n", - "Epoch 1: 100%|██████████████████████████████████████████████| 250/250 [01:21<00:00, 3.07it/s, ce_loss=0.0016]\n", - "Epoch 2: 100%|█████████████████████████████████████████████| 250/250 [01:21<00:00, 3.07it/s, ce_loss=0.00109]\n", - "Epoch 3: 100%|████████████████████████████████████████████| 250/250 [01:20<00:00, 3.10it/s, ce_loss=0.000835]\n", - "Epoch 4: 100%|████████████████████████████████████████████| 250/250 [01:20<00:00, 3.11it/s, ce_loss=0.000668]" + "Epoch 0: 100%|███████████████████████████████████████████████| 250/250 [00:52<00:00, 4.78it/s, ce_loss=0.222]\n", + "Epoch 1: 100%|█████████████████████████████████████████████| 250/250 [00:52<00:00, 4.72it/s, ce_loss=0.00988]\n", + "Epoch 2: 100%|█████████████████████████████████████████████| 250/250 [00:53<00:00, 4.70it/s, ce_loss=0.00582]\n", + "Epoch 3: 100%|█████████████████████████████████████████████| 250/250 [00:53<00:00, 4.71it/s, ce_loss=0.00385]\n", + "Epoch 4: 100%|█████████████████████████████████████████████| 250/250 [00:53<00:00, 4.70it/s, ce_loss=0.00271]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "train completed, total time: 412.81983852386475.\n" + "train completed, total time: 270.7773208618164.\n" ] }, { @@ -927,17 +942,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "2023-03-11 20:37:02,553 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", - "2023-03-11 20:37:02,553 - INFO - File exists: /tmp/tmp8lmmizk9/MedNIST.tar.gz, skipped downloading.\n", - "2023-03-11 20:37:02,553 - INFO - Non-empty folder exists in /tmp/tmp8lmmizk9/MedNIST, skipped extracting.\n" + "2023-03-12 00:16:51,478 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n", + "2023-03-12 00:16:51,479 - INFO - File exists: /tmp/tmp83zh5r1m/MedNIST.tar.gz, skipped downloading.\n", + "2023-03-12 00:16:51,480 - INFO - Non-empty folder exists in /tmp/tmp83zh5r1m/MedNIST, skipped extracting.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3328.84it/s]\n", - "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:07<00:00, 2.14it/s]\n" + "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3258.71it/s]\n", + "In-distribution data: 100%|███████████████████████████████████████████████████| 17/17 [00:05<00:00, 3.22it/s]\n" ] } ], @@ -978,7 +993,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 19, "id": "f3e714ee", "metadata": {}, "outputs": [ @@ -986,7 +1001,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "out-of-distribution data: 100%|███████████████████████████████████████████████| 16/16 [00:07<00:00, 2.06it/s]\n" + "out-of-distribution data: 100%|███████████████████████████████████████████████| 16/16 [00:05<00:00, 3.15it/s]\n" ] } ], @@ -1022,7 +1037,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 23, "id": "cd456a7c", "metadata": {}, "outputs": [ @@ -1032,13 +1047,13 @@ "Text(0.5, 0, 'Log-likelihood')" ] }, - "execution_count": 25, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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M2aosrKy3nH+dE8kaebMmRo6dKjCwsLOOqmrv33HStKCBQuUlJSkkJAQDRkyROvWrXN3k1rOgMf5y1/+YkRFRRkLFy40cnJyjO3btxvLli1z7K+urjYuueQSIyMjw9i4caOxfPlyIyYmxpg2bZobW922unXrZjz99NNGfn6+41FSUuLYX1RUZMTFxRm33XabsW3bNuO9994zQkNDjf/+7/92Y6td4/777zdGjRplSDI2btzo2O6P92Tu3LlGdna2kZuba6xdu9ZIT0830tPTHfv97Z784x//MCZMmGCsXLnS2LNnj/HJJ58YsbGxxoMPPug4xt/uiWEYxvTp0425c+camZmZRkRERIP9/vgd+/777xtBQUHG4sWLje3btxuTJ082IiMjjcOHD7u7aS1CcONhqqqqjK5duxqvv/76WY9Zvny5YbVajYKCAse2hQsXGuHh4UZFRYUrmuly3bp1M1566aWz7n/11VeNqKioej//o48+avTu3dsFrXOf5cuXG3369DG2b9/eILjx13tS1yeffGJYLBajsrLSMAzuiWEYxvPPP290797d8d6f78mSJUsaDW788Ts2LS3NuPfeex3va2pqjC5duhizZs1yY6tajm4pD7NhwwYdPHhQVqtVgwYNUkJCgkaNGqVt27Y5jsnOzlb//v3rrY4+cuRIFRcXa/v27e5otkvMnj1bnTp10qBBg/TCCy/USxFnZ2friiuuUFBQkGPbyJEjlZOTo+PHj7ujuW3u8OHDmjx5st566y2FhYU12O+P96SuwsJCvfPOOxo6dKgCAwMlcU8kqaioSNHR0Y733JOG/O07trKyUuvXr1dGRoZjm9VqVUZGhrKzs93YspYjuPEwe/fulSQ9+eST+v3vf6+///3vioqK0pVXXqnCwkJJUkFBQb3/6SQ53hcUFLi2wS5y//336/3339fq1at111136dlnn9Ujjzzi2O9v98QwDE2YMEF33323UlNTGz3G3+6J3aOPPqr27durU6dOysvL0yeffOLY56/3xG737t2aP3++7rrrLsc2f78njfG3e3Ls2DHV1NQ0+jN7689LcOMijz32WIOC2DMfu3btks1mkyQ98cQTGj16tAYPHqwlS5bIYrHogw8+cPNP4VxNvSeSuQbZlVdeqQEDBujuu+/Wiy++qPnz56uiosLNP4VzNfWezJ8/XydPntS0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\n", + "image/png": "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/95771FeXs4bb7zBWWedxeWXX84DDzxQ6zkyMzMZPHgwvXr1omPHjlx++eWcf/75+Pv7Ex0dDUBsbCzx8fHVgkWXLl147rnn6Nq1K127dj3l60+cOJHrrruO7t2788orrxAREcEbb7xRp++/WbNmNG/enICAAOLj44mPj68WsKp+38eOHeOtt96iZ8+eXHjhhbz00ku8/fbb1fY8i4qK4qWXXqJbt25cfvnlXHbZZbX+e4qInGjTPli8DWzAf/8AvWOhqBReX2N1Zd5HLTen0SzAbEGx6tzO6t27d7WvExISHPsd3XHHHbzzzjuO+woLC9m4cSO9e/eutuBc1d3Xa3L33Xfz5z//mS+//JLU1FSuu+66k85bk379+tXpe6h6/oCAAPr378/GjRvr9Ny62rhxI3369CEsLMxx2+DBgykvL2fz5s2OlbLPOuusaisNJyQksH79epfWIiLebeGv5vWIztCjFUxMhtv/A//cCPelQKAWM3cZtdychs1mdg1ZcWnIuN3AwOr9WTabjfLycsDcn2vt2rWOi7Nuu+02tm/fzi233ML69evp378/c+bMOe3zqgYJZ/n5+XHi4tqNOQamtn9PEZHTMQz4T8X4mhsqdgu6sD1EN4O8I/BjlmWleSWFGx8UGxtL586dHReA7t278/PPP3Ps2DHH47777rvTvlZiYiJ33HEHH330Effddx+vvfYaYM6sAnMzUmdVPf/x48dZvXo13bt3B6BVq1YcPnyYoqIix2NODGpBQUGnPX/37t1Zt25dtddZuXIlfn5+tXaZiYjUx2/7zcHEIQFwbqJ5W6A/nN/WPF6+y7ravJHCjQDwhz/8AZvNxvjx49mwYQNffPEFM2bMqPU59957L4sXL2bHjh2sWbOGpUuXOsJHu3btsNls/Oc//yEvL6/a7KO6mjt3Lh9//DGbNm1iwoQJHDx4kFtvvRWAgQMHEhoayl//+le2bdvGe++9V20AMED79u3ZsWMHa9euZd++fRQXF590jptvvpmQkBBGjx7NL7/8wtKlS7nrrru45ZZbHF1SIiINtTzTvB7YBoKrDDm4oJ15/bXCjUsp3AgAzZs359///jfr16+nb9++PPLIIzz77LO1PqesrIwJEybQvXt3RowYwZlnnsnLL5tTy9q0acMTTzzBww8/TFxcHBMnTqx3TdOnT2f69On06dOHFStW8NlnnxETEwNAdHQ077zzDl988QW9evXi/fffP2m6+3XXXceIESMYOnQorVq14v333z/pHKGhoSxevJgDBw4wYMAArr/+ei666CJeeumletcrInIq31SEG3tLjd15FV//mgd5RYiLaFfwKrSTs7iK/i+JiN3xcuj5irm0yOKboVtM9ftHvAsb98Erl8KlXayp0RNoV3ARERE3sfWAGWyaB8GZNSzTlRRvXv+cc/J94hyFGxERkUZkDy09Y8GvhlmwfSqG9/2c23Q1eTuFGxERkUZkDy29Y2u+v3dFuFmfA+U+NVCk8SjciIiINKL1FS03vU8xAfPMaAj2h4IS2HWoycryago3IiIijaS0zBwsDKduuQn0N1csBlivrimXULgRERFpJDsOQXEZhAVC25P37nXoXjGD6rcDTVKW11O4ERERaSRbK8JK5+jat9TpYu41zJb9jV+TL1C4ERERaSRbKsKNPbyciiPcqOXGJRRuREREGsnWuoabivVvdh6C4uONWpJPULjxIrt37+bWW2+ldevWBAUF0a5dO+655x7276/ezvnrr79y44030qpVK4KDgznzzDOZPHkyR44cqfa49u3bY7PZsNlsNGvWjPbt23PjjTfyv//9rym/LRERj1XXlpu4MGgRBGWGGXCkYRRuvMT27dvp378/W7Zs4f3332fr1q3MmzeP9PR0UlJSOHDA/An77rvvGDhwICUlJXz++ef89ttvTJ06lQULFjBs2DBKSkqqve6TTz5JVlYWmzdv5q233iIyMpLU1FSmTp1qxbcpIuIxysph+0HzuEsNKxNXZbNVPkZdUw0XcPqHiCeYMGECQUFBfPnllzRr1gyAtm3b0rdvXzp16sQjjzzCyy+/zLhx4+jevTsfffQRfn5mtm3Xrh1nnnkmffv25YUXXuChhx5yvG6LFi2Ij493vN75559PQkICkydP5vrrr6dr165N/82KiHiA3wvMmVLB/tCmxekf3ykK1mTBtoONX5u3U8vN6RgGFJVac6njnqYHDhxg8eLF3HnnnY5gYxcfH8/NN9/MwoULWbt2LRs2bCAtLc0RbOz69OlDampqjTtnn+iee+7BMAw+/fTTuv87ioj4mF355nW7SPCvw6dth8jqzxPnqeXmdI4ch/avWnPunX8yF0c4jS1btmAYBt27d6/x/u7du3Pw4EF+++03x9enetyK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GlnachMUFES/fv1IT0933FZeXk56ejopKSl1fp3y8nKKizVkXEREGpd9vE1kCARY+AmqhfxqZ2nLDUBaWhqjR4+mf//+JCcnM3v2bIqKihg7diwAo0aNok2bNkybNg0wx9D079+fTp06UVxczBdffMHbb7/NK6+8YuW3ISIiPsAxmNjCLimobDXSmJuaWR5uRo4cSV5eHpMnTyY7O5ukpCQWLVrkGGScmZmJn19lPC4qKuLOO+/k999/p1mzZnTr1o133nmHkSNHWvUtiIiIj7B6dWI7bZ5ZO5thGD61vmFBQQERERHk5+cTHh5udTkiIuJB3v4ZHl0KwzvB3y63ro70HXDrZ9AzFj6/ybo6mlJ9Pr89craUiIiIFaxendiupda5qZXCjYiISB1Zva+UXXSVMTe+1f9SNwo3IiIideRouXGTcFNcBkdKra3FHSnciIiI1JG7tNyEBUKwv3l8QIOKT+JUuNm+fbur6xAREXF79iBhdcuNzVbZeqNxNydzKtx07tyZoUOH8s4773DsmCKjiIj4BndpuQGtdVMbp8LNmjVr6N27N2lpacTHx/OnP/2JVatWubo2ERERt2EY7rEjuJ1WKT41p8JNUlISL774Inv37mX+/PlkZWVx7rnn0rNnT2bNmkVeXp6r6xQREbFUUSmUlJnH7hBuHN1S6kA5SYMGFAcEBHDttdfy4Ycf8uyzz7J161buv/9+EhMTGTVqFFlZWa6qU0RExFL2FpKQAAgNtLYW0Fo3tWlQuPnxxx+58847SUhIYNasWdx///1s27aNJUuWsHfvXq666ipX1SkiImIpd9lXyi5aY25Oyam9pWbNmsWbb77J5s2bufTSS3nrrbe49NJLHXtAdejQgQULFtC+fXtX1ioiImIZx75SodbWYRetMTen5FS4eeWVV7j11lsZM2YMCQkJNT4mNjaWN954o0HFiYiIuAu13HgOp8LNkiVLaNu2bbXdugEMw2D37t20bduWoKAgRo8e7ZIiRURErOZOM6Wgys7gCjcncWrMTadOndi3b99Jtx84cIAOHTo0uCgRERF3405r3IC6pWrjVLgxTrFLV2FhISEhbtJeJyIi4kLusq+UnT3cFJRUTlEXU726pdLS0gCw2WxMnjyZ0NDKUVVlZWV8//33JCUlubRAERERd+BuLTeRIeBng3LD7JqKa251Re6jXuHmp59+AsyWm/Xr1xMUFOS4LygoiD59+nD//fe7tkIRERE34C77Stn52SAqxBxQfEDhppp6hZulS5cCMHbsWF588UXCw8MbpSgRERF3Y18sz11absDsmtp/VDOmTuTUbKk333zT1XWIiIi4NXebLQUaVHwqdQ431157LQsWLCA8PJxrr7221sd+9NFHDS5MRETEXZSWmQN3wT3DjVpuqqtzuImIiMBmszmORUREfIV9vI2fDSKCra2lKq11U7M6h5uqXVHqlhIREV9iDw+RIeDfoF0ZXUstNzVz6i06evQoR45UbkO6a9cuZs+ezZdffumywkRERNzFfjccbwMac3MqToWbq666irfeeguAQ4cOkZyczMyZM7nqqqt45ZVXXFqgiIiI1Q662b5Sdgo3NXMq3KxZs4bzzjsPgH/+85/Ex8eza9cu3nrrLf7v//7PpQWKiIhYzV1bblqqW6pGToWbI0eO0KJFCwC+/PJLrr32Wvz8/DjnnHPYtWuXSwsUERGxmrutTmwXrQHFNXIq3HTu3JlPPvmE3bt3s3jxYi6++GIAcnNztbCfiIh4HXfbV8rOMVvqmLkNg5icCjeTJ0/m/vvvp3379gwcOJCUlBTAbMXp27evSwsUERGxmru23ERWjAEqMyD/mLW1uBOnVii+/vrrOffcc8nKyqJPnz6O2y+66CKuueYalxUnIiLiDty15SY4AFoEweESc9yNu9VnFafCDUB8fDzx8fHVbktOTm5wQSIiIu7GXVtuwBx3c7hE426qcircFBUVMX36dNLT08nNzaW8vLza/du3b3dJcSIiIu5gv5u23IAZbnbla8ZUVU6Fm9tuu42vv/6aW265hYSEBMe2DCIiIt7GMMwBu+CeLTcttdbNSZwKN//973/5/PPPGTx4sKvrERERcSsFJXC8ooPC3da5gcrWJLXcVHJqtlRUVBTR0dGurkVERMTt2MeyhAZCiNMjVRuPWm5O5lS4eeqpp5g8eXK1/aVERES8kbuuTmynLRhO5lQGnTlzJtu2bSMuLo727dsTGBhY7f41a9a4pDgRERGrueu+UnZquTmZU+Hm6quvdnEZIiIi7sndW2405uZkToWbKVOmuLoOERERt+RY4ybU2jpORS03J3NqzA3AoUOHeP3115k0aRIHDhwAzO6oPXv2uKw4ERERqzlWJ3bTbqmqY24M7S8FONly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\n", "text/plain": [ "
" ] @@ -1048,7 +1063,7 @@ } ], "source": [ - "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", bw_adjust=500, label=\"In-distribution\")\n", + "sns.kdeplot(in_likelihoods, color=\"dodgerblue\", bw_adjust=50, label=\"In-distribution\")\n", "sns.kdeplot(ood_likelihoods, color=\"deeppink\", bw_adjust=1, label=\"OOD\")\n", "plt.legend()\n", "plt.xlabel(\"Log-likelihood\")" diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py index f05a3261..128b84e0 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -168,8 +168,8 @@ # We will train our VQ-VAE for 50 epochs. # %% -n_epochs = 15 -val_interval = 5 +n_epochs = 30 +val_interval = 10 epoch_losses = [] val_epoch_losses = [] @@ -299,9 +299,9 @@ transformer_model = DecoderOnlyTransformer( num_tokens=16 + 1, max_seq_len=spatial_shape[0] * spatial_shape[1], - attn_layers_dim=256, + attn_layers_dim=128, attn_layers_depth=16, - attn_layers_heads=16, + attn_layers_heads=12, ) transformer_model.to(device) @@ -429,7 +429,7 @@ # Here, we plot the log-likelihood of the images. In this case, the lower the log-likelihood, the more unlikely the image belongs to the training set. # %% -sns.kdeplot(in_likelihoods, color="dodgerblue", bw_adjust=500, label="In-distribution") +sns.kdeplot(in_likelihoods, color="dodgerblue", bw_adjust=50, label="In-distribution") sns.kdeplot(ood_likelihoods, color="deeppink", bw_adjust=1, label="OOD") plt.legend() plt.xlabel("Log-likelihood") From 79247a3b59b5aa6f821472827e3e6cead88fa5e0 Mon Sep 17 00:00:00 2001 From: Walter Hugo Lopez Pinaya Date: Mon, 13 Mar 2023 17:34:44 +0000 Subject: [PATCH 6/6] Address comments Signed-off-by: Walter Hugo Lopez Pinaya --- .../anomaly_detection_with_transformers.ipynb | 4 ++-- .../anomaly_detection/anomaly_detection_with_transformers.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb index fbee0c50..4aacdd09 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.ipynb @@ -831,7 +831,7 @@ "metadata": {}, "source": [ "### Transformer Training\n", - "We will train the Transformer for 100 epochs." + "We will train the Transformer for 5 epochs." ] }, { @@ -929,7 +929,7 @@ "source": [ "## Image-wise anomaly detection\n", "\n", - "To verify the performance of the VQ-VAE + Transformerperforming unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images." + "To verify the performance of the VQ-VAE + Transformer performing unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images." ] }, { diff --git a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py index 128b84e0..a436cab9 100644 --- a/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py +++ b/tutorials/generative/anomaly_detection/anomaly_detection_with_transformers.py @@ -313,7 +313,7 @@ # %% [markdown] # ### Transformer Training -# We will train the Transformer for 100 epochs. +# We will train the Transformer for 5 epochs. # %% n_epochs = 5 @@ -373,7 +373,7 @@ # %% [markdown] # ## Image-wise anomaly detection # -# To verify the performance of the VQ-VAE + Transformerperforming unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images. +# To verify the performance of the VQ-VAE + Transformer performing unsupervised anomaly detection, we will use the images from the test set of the MedNIST dataset. We will consider images from the `HeadCT` class as in-distribution images. # %% vqvae_model.eval()