diff --git a/README.md b/README.md index e459fa982d..3f5b8991ac 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,8 @@ Tutorial that demonstrates how monai `SlidingWindowInferer` can be used when a 3 This tutorial uses the MedNIST hand CT scan dataset to demonstrate MONAI's autoencoder class. The autoencoder is used with an identity encode/decode (i.e., what you put in is what you should get back), as well as demonstrating its usage for de-blurring and de-noising. ##### [batch_output_transform](./modules/batch_output_transform.ipynb) Tutorial to explain and show how to set `batch_transform` and `output_transform` of handlers to work with MONAI engines. +##### [bending_energy_diffusion_loss_notes](./modules/bending_energy_diffusion_loss_notes.ipynb) +This notebook demonstrates when and how to compute normalized bending energy and diffusion loss. ##### [compute_metric](./modules/compute_metric.py) Example shows how to compute metrics from saved predictions and labels with PyTorch multi-processing support. ##### [csv_datasets](./modules/csv_datasets.ipynb) diff --git a/modules/bending_energy_diffusion_loss_notes.ipynb b/modules/bending_energy_diffusion_loss_notes.ipynb new file mode 100644 index 0000000000..5fd34e3c17 --- /dev/null +++ b/modules/bending_energy_diffusion_loss_notes.ipynb @@ -0,0 +1,649 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6459ddb8", + "metadata": {}, + "source": [ + "Copyright (c) MONAI Consortium \n", + "Licensed under the Apache License, Version 2.0 (the \"License\"); \n", + "you may not use this file except in compliance with the License. \n", + "You may obtain a copy of the License at \n", + "    http://www.apache.org/licenses/LICENSE-2.0 \n", + "Unless required by applicable law or agreed to in writing, software \n", + "distributed under the License is distributed on an \"AS IS\" BASIS, \n", + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \n", + "See the License for the specific language governing permissions and \n", + "limitations under the License." + ] + }, + { + "cell_type": "markdown", + "id": "0c5bf94b-4f1d-4e94-a6e6-94644095e910", + "metadata": {}, + "source": [ + "# MONAI Registration Regularizers Overview\n", + "\n", + "This notebook discusses details regarding `BendingEnergyLoss` and `DiffusionLoss`." + ] + }, + { + "cell_type": "markdown", + "id": "952771b9", + "metadata": {}, + "source": [ + "## Setup environment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7b7eb650", + "metadata": {}, + "outputs": [], + "source": [ + "!python -c \"import monai\" || pip install -q \"monai-weekly\"\n", + "!python -c \"import matplotlib\" || pip install -q matplotlib" + ] + }, + { + "cell_type": "markdown", + "id": "55f81921", + "metadata": {}, + "source": [ + "## Setup imports" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "16dc1913-abd6-48f4-a698-1f728aad742c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MONAI version: 1.4.dev2350\n", + "Numpy version: 1.24.4\n", + "Pytorch version: 2.1.0\n", + "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n", + "MONAI rev id: e54c05d7a659e4d402f5194412889779e6856cbd\n", + "MONAI __file__: /home//miniforge3/envs/tutorial/lib/python3.8/site-packages/monai/__init__.py\n", + "\n", + "Optional dependencies:\n", + "Pytorch Ignite version: NOT INSTALLED or UNKNOWN VERSION.\n", + "ITK version: 5.3.0\n", + "Nibabel version: 5.1.0\n", + "scikit-image version: 0.20.0\n", + "scipy version: 1.9.1\n", + "Pillow version: 10.1.0\n", + "Tensorboard version: 2.15.1\n", + "gdown version: 4.7.1\n", + "TorchVision version: 0.16.0\n", + "tqdm version: 4.66.1\n", + "lmdb version: NOT INSTALLED or UNKNOWN VERSION.\n", + "psutil version: 5.9.5\n", + "pandas version: 2.0.3\n", + "einops version: 0.7.0\n", + "transformers version: 4.35.0\n", + "mlflow version: 2.8.0\n", + "pynrrd version: 0.4.2\n", + "clearml version: 1.13.2\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" + ] + } + ], + "source": [ + "# python imports\n", + "import math\n", + "\n", + "# data science imports\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# PyTorch imports\n", + "import torch\n", + "\n", + "# MONAI imports\n", + "from monai.config import print_config\n", + "from monai.losses.deform import BendingEnergyLoss, DiffusionLoss\n", + "from monai.networks.layers.factories import Pool\n", + "\n", + "print_config()" + ] + }, + { + "cell_type": "markdown", + "id": "627afa81-a70d-4146-a8b1-9d48b8e3b9fc", + "metadata": {}, + "source": [ + "## Definitions" + ] + }, + { + "cell_type": "markdown", + "id": "b4065320-f4f7-4741-9ed8-ddf9d30bf3c3", + "metadata": {}, + "source": [ + "In this section, we provide the definitions of diffusion loss and bending energy loss in the 3D case. \n", + "\n", + "Let $\\Omega \\subseteq \\mathbb{R}^3$ be the image domain on which moving and fixed images are defined.\n", + "\n", + "The diffusion loss is given by $$\\begin{align*} R_\\mathrm{diffusion} & = \\frac{1}{|\\Omega|} \\sum_{\\mathbf{p} \\in \\Omega} ||\\nabla \\mathbf{u} (\\mathbf{p})||^2 \\\\ & = \\frac{1}{|\\Omega|} \\sum_{\\mathbf{p} \\in \\Omega} \\left [ \\left( \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial x} \\right)^2 + \\left( \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial y} \\right)^2 + \\left( \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial z} \\right)^2 \\right ], \\end{align*}$$\n", + "\n", + "where $$\\nabla \\mathbf{u} (\\mathbf{p}) = \\begin{bmatrix} \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial x} & \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial y} & \\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial z} \\end{bmatrix}$$ denotes the spatial gradient of the dense displacement field (DDF) $\\mathbf{u}$ at voxel $\\mathbf{p}$.\n", + "\n", + "The bending energy loss is given by $$\\begin{align*} R_\\mathrm{bending} & = \\frac{1}{|\\Omega|} \\sum_{\\mathbf{p} \\in \\Omega} ||\\nabla^2 \\mathbf{u} (\\mathbf{p})||^2 \\\\ & = \\frac{1}{|\\Omega|} \\sum_{\\mathbf{p} \\in \\Omega} \\left [ \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial x^2} \\right)^2 + \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial y^2} \\right)^2 + \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial z^2} \\right)^2 + 2 \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial x \\partial y} \\right)^2 + 2 \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial y \\partial z} \\right)^2 + 2 \\left( \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial z \\partial x} \\right)^2 \\right ], \\end{align*}$$\n", + "\n", + "where $$\\nabla^2 \\mathbf{u} (\\mathbf{p}) = \\begin{bmatrix} \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial x^2} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial x \\partial y} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial x \\partial z} \\\\ \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial y \\partial x} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial y^2} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial y \\partial z} \\\\ \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial z \\partial x} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial z \\partial y} & \\frac{\\partial^2 \\mathbf{u} (\\mathbf{p})}{\\partial z^2} \\end{bmatrix}$$ denotes the Hessian matrix of the dense displacement field (DDF) $\\mathbf{u}$ at voxel $\\mathbf{p}$.\n", + "\n", + "Central finite difference is used to estimate the spatial gradients, i.e.,\n", + "\n", + "$$\\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial x} \\approx \\frac{1}{2} [\\mathbf{u} ((p_x + 1, p_y, p_z)) - \\mathbf{u} ((p_x - 1, p_y, p_z)) ],$$\n", + "\n", + "$$\\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial y} \\approx \\frac{1}{2} [\\mathbf{u} ((p_x, p_y + 1, p_z)) - \\mathbf{u} ((p_x, p_y - 1, p_z)) ], \\tag{1}$$\n", + "\n", + "$$\\frac{\\partial \\mathbf{u} (\\mathbf{p})}{\\partial z} \\approx \\frac{1}{2} [\\mathbf{u} ((p_x, p_y, p_z + 1)) - \\mathbf{u} ((p_x, p_y, p_z - 1)) ].$$\n", + "\n", + "The second order spatial gradients are estimated similarly.\n", + "\n", + "For more details on the formulation of diffusion loss, see [VoxelMorph](https://arxiv.org/abs/1809.05231). Also see [this old article](https://doi.org/10.1109/42.796284) on the formulation of bending energy loss, and [TransMorph](https://doi.org/10.1016/j.media.2022.102615) for a side-by-side comparison of diffusion loss to bending energy loss." + ] + }, + { + "cell_type": "markdown", + "id": "4ecdcd38-cd6d-479f-9782-f1eb58dacf54", + "metadata": {}, + "source": [ + "## Demo" + ] + }, + { + "cell_type": "markdown", + "id": "3dc9edc5-0cf8-4769-aca3-2109e64d2ef1", + "metadata": {}, + "source": [ + "In Issue [#3485](https://github.com/Project-MONAI/MONAI/issues/3485), an observation was made that bending energy loss is not invariant to spatial resolution, i.e., the same DDF with different resolutions will have different bending energy loss. A similar observation can also be made about diffusion loss. In this section, we explore the effect of changing spatial resolution on bending energy loss and diffusion loss. For the ease of visualization, all the examples are in 2D.\n", + "\n", + "Before starting, we first set up a function for visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "67bba7fb-9efa-4dab-b2f0-94c73616762b", + "metadata": {}, + "outputs": [], + "source": [ + "def plot_2d_vector_field(vector_field, downsampling):\n", + " \"\"\"\n", + " Plot a 2D vector field given as a tensor of shape (2, H, W).\n", + "\n", + " The plot origin will be in the lower left.\n", + " Using `x` and `y` for the rightward and upward directions respectively,\n", + " the vector at location (x, y) in the plot image will have\n", + " vector_field[1, y, x] as its x-component and\n", + " vector_field[0, y, x] as its y-component.\n", + "\n", + " Adapted from:\n", + " DeepAtlas (https://github.com/ebrahimebrahim/deep-atlas/blob/main/bending_loss_scale_test.ipynb)\n", + " \"\"\"\n", + "\n", + " downsample2d = Pool[\"AVG\", 2](kernel_size=downsampling)\n", + "\n", + " vf_downsampled = downsample2d(vector_field.unsqueeze(0))[0]\n", + "\n", + " plt.quiver(\n", + " vf_downsampled[1, :, :],\n", + " vf_downsampled[0, :, :],\n", + " angles=\"xy\",\n", + " scale_units=\"xy\",\n", + " scale=downsampling,\n", + " headwidth=4.0,\n", + " )\n", + "\n", + "\n", + "def plot_loss_by_scale(loss_by_scale, loss_by_scale_normed, bending=True):\n", + " loss_name = \"Bending energy\" if bending else \"Diffusion\"\n", + "\n", + " loss_by_scale = np.array(loss_by_scale)\n", + " loss_by_scale_normed = np.array(loss_by_scale_normed)\n", + " scales = loss_by_scale[:, 0]\n", + "\n", + " plt.plot(scales, loss_by_scale[:, 1], label=\"not normalized\")\n", + " plt.plot(scales, loss_by_scale_normed[:, 1], label=\"normalized\")\n", + " plt.title(f\"{loss_name} loss by scale\")\n", + " plt.xlabel(\"Scale\")\n", + " plt.ylabel(f\"{loss_name} loss (log scale)\")\n", + " plt.yscale(\"log\")\n", + " plt.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "777b35b7-e059-4e14-84fe-cb3e3943cf32", + "metadata": {}, + "source": [ + "The follow block of code defines the function that we will use in the rest of this notebook to get losses at different spatial resolutions." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "095d529f-b270-45de-9c14-4e23144c98ae", + "metadata": { + "ExecuteTime": { + "end_time": "2023-12-10T16:49:56.352388476Z", + "start_time": "2023-12-10T16:49:56.347785190Z" + } + }, + "outputs": [], + "source": [ + "def get_example_loss_at_scale(s, bending=True, fix_x=False, fix_y=False, normalize=False):\n", + " \"\"\"\n", + " Getting the specified loss at a specified scale (spatial resolution).\n", + "\n", + " Adapted from:\n", + " DeepAtlas (https://github.com/ebrahimebrahim/deep-atlas/blob/main/bending_loss_scale_test.ipynb)\n", + "\n", + " Args:\n", + " s: spatial resolution. When both `fix_x` and `fix_y` are set to False (default),\n", + " the generated DDF will have shape (2, s, s).\n", + " bending: returns bending energy loss if True else diffusion energy.\n", + " fix_x: if True, `x_scale` is set to 32. The generated DDF will be of shape (2, s, 32).\n", + " fix_y: if True, `y_scale` is set to 32. The generated DDF will be of shape (2, 32, s).\n", + " If both `fix_x` and `fix_y` are True, `s` is disregarded, the generated DDF will\n", + " be of shape (2, 32, 32).\n", + " normalize: whether to perform normalization.\n", + " \"\"\"\n", + "\n", + " # initialize scales\n", + " x_scale = s if not fix_x else 32\n", + " y_scale = s if not fix_y else 32\n", + "\n", + " # create ddf\n", + " ddf = torch.tensor(\n", + " [\n", + " [\n", + " [\n", + " (y_scale / 32) * 2 * math.cos(2 * math.pi * (x / x_scale) * 3),\n", + " (x_scale / 32) * math.sin(2 * math.pi * (y / y_scale) * 5),\n", + " ]\n", + " for x in range(x_scale)\n", + " ]\n", + " for y in range(y_scale)\n", + " ]\n", + " ).permute((2, 0, 1))\n", + "\n", + " # initialize loss function\n", + " if bending:\n", + " loss_fn = BendingEnergyLoss(normalize=normalize)\n", + " else:\n", + " loss_fn = DiffusionLoss(normalize=normalize)\n", + "\n", + " # compute loss\n", + " loss = loss_fn(ddf.unsqueeze(0))\n", + "\n", + " if s < 80:\n", + " plot_2d_vector_field(ddf, 1)\n", + " loss_name = \"Bending energy\" if bending else \"Diffusion\"\n", + " plt.suptitle(f\"{loss_name} loss at scale {s}: {loss:.2f}\")\n", + " plt.title(f\"DDF shape: {ddf.numpy().shape}\")\n", + " plt.show()\n", + " return loss.item()" + ] + }, + { + "cell_type": "markdown", + "id": "c9255ec0-4089-4fb5-aaa7-062a3e1f62ec", + "metadata": {}, + "source": [ + "### Diffusion loss" + ] + }, + { + "cell_type": "markdown", + "id": "d39d0f0d-4098-4bb1-a200-cda13c6a7d03", + "metadata": {}, + "source": [ + "#### Equally scaling both axes" + ] + }, + { + "cell_type": "markdown", + "id": "bd2cfd9e-5d5d-483a-bc62-ef20bdeb49b2", + "metadata": {}, + "source": [ + "We first investigate the case where the resolutions along $x$- and $y$-axes are scaled by the same factor by letting `fix_x` and `fix_y` be `False` by default." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c37b5718-c9e8-4682-86ef-70582eff1b9d", + "metadata": {}, + "outputs": [], + "source": [ + "diffusion_loss_by_scale = [\n", + " (s, get_example_loss_at_scale(s, bending=False, normalize=False)) for s in range(32, 512, 32)\n", + "]\n", + "diffusion_loss_by_scale_normed = [\n", + " (s, get_example_loss_at_scale(s, bending=False, normalize=True)) for s in range(32, 512, 32)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "231da8de-dc18-4321-96e8-f5290107947d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAHFCAYAAAB2CRTFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqc0lEQVR4nO3dd3wUdf7H8dfspickpIcQAqGolIAKiIAIAZUmTfQQVLAiiiJw6OnPU5FDUA4RFQUrRe8EC3CeokiXqlRBQUGKoQRCAiQkIW13fn+E7BETIAtJNpu8n4/HPrI7+52Zz2S5y9vv7HzGME3TRERERETcjsXVBYiIiIjIpVGQExEREXFTCnIiIiIibkpBTkRERMRNKciJiIiIuCkFORERERE3pSAnIiIi4qYU5ERERETclIKciIiIiJtSkBORi5o1axaGYTgePj4+REVFkZCQwMSJE0lOTi62ztixYzEMo8iy3Nxchg0bRq1atbBarVx99dUAnDhxgjvvvJOIiAgMw6Bv375lfgydOnWiU6dOZb7dizlw4ACGYTBr1qwK3/eF3HvvvQQEBLi6jDJ37733Uq9ePVeXIVJhPFxdgIi4j5kzZ3LVVVeRl5dHcnIya9as4ZVXXmHy5MnMmzePm266yTH2wQcfpFu3bkXWnz59Ou+88w5vvvkmLVu2dASJf/zjHyxYsIAPP/yQBg0aEBISUua1v/3222W+TRERV1OQE5FSa9asGa1atXK87t+/P6NGjeKGG27gtttuY8+ePURGRgIQExNDTExMkfV//vlnfH19eeyxx4otb9CgAXfddVe51d6kSZNy27aIiKvo1KqIXJbY2FheffVVTp8+zTvvvONY/udTq4Zh8P7773PmzBnHKdrCU7ZLly5l165djuUrV65k5cqVjufnKulU5b59+7jzzjuJjo7G29ubyMhIunTpwrZt2xxjSjq1euLECR599FFq166Nl5cX9evX59lnnyUnJ6fIOMMweOyxx/joo49o3Lgxfn5+tGjRgq+++uqSf29r1qyhS5cu1KhRAz8/P9q1a8fXX39dZExWVhZjxowhLi4OHx8fQkJCaNWqFZ988olTx34hv/zyC126dMHf35/w8HAee+wxsrKyHO936dKFq666CtM0i6xnmiYNGzakZ8+eF9z+8uXL6dSpE6Ghofj6+hIbG0v//v2L7CMnJ4dx48bRuHFjfHx8CA0NJSEhgXXr1jnGvPXWW9x4441ERETg7+9PfHw8kyZNIi8v76LHaJomb7/9NldffTW+vr4EBwdz++23s2/fvlL9jkQqM83Iichl69GjB1arle+///68Y9avX88//vEPVqxYwfLlywGIi4tj/fr1PProo6SlpfGvf/0LKJg927Jli1P7t9lsTJo0idjYWFJSUli3bh2nTp067zrZ2dkkJCSwd+9eXnzxRZo3b87q1auZOHEi27ZtKxaqvv76azZu3Mi4ceMICAhg0qRJ9OvXj99++4369euXulaAVatWcfPNN9O8eXM++OADvL29efvtt+nVqxeffPIJAwYMAGD06NF89NFHjB8/nmuuuYbMzEx+/vlnUlNTL+vYC+Xl5dGjRw8efvhhnn76adatW8f48eP5448/+O9//wvAE088QZ8+fVi2bFmRU+fffPMNe/fu5Y033jjv9g8cOEDPnj3p0KEDH374ITVr1uTw4cN8++235Obm4ufnR35+Pt27d2f16tWMHDmSzp07k5+fz4YNG0hMTKRdu3YA7N27l0GDBhEXF4eXlxc//fQTL730Er/++isffvjhBY/z4YcfZtasWYwYMYJXXnmFEydOMG7cONq1a8dPP/3kmEUWcUumiMhFzJw50wTMjRs3nndMZGSk2bhxY8frF154wfzz/8UMGTLE9Pf3L7Zux44dzaZNmxZZtmLFChMwV6xYUWT5/v37TcCcOXOmaZqmmZKSYgLm1KlTL3gMHTt2NDt27Oh4PWPGDBMwP/300yLjXnnlFRMwv/vuO8cywIyMjDTT09Mdy44ePWpaLBZz4sSJF9zvn+s1TdO8/vrrzYiICPP06dOOZfn5+WazZs3MmJgY0263m6Zpms2aNTP79u173m2X9thLMmTIEBMwX3/99SLLX3rpJRMw16xZY5qmadpsNrN+/fpmnz59iozr3r272aBBA0etJfn8889NwNy2bdt5x8yZM8cEzPfee6/UtdtsNjMvL8+cM2eOabVazRMnThQ5rrp16zper1+/3gTMV199tcg2Dh48aPr6+ppPPfVUqfcrUhnp1KqIlAnzT6feKkpISAgNGjTgn//8J1OmTGHr1q3Y7faLrrd8+XL8/f25/fbbiyy/9957AVi2bFmR5QkJCdSoUcPxOjIykoiICP744w+n6s3MzOSHH37g9ttvL3LVqNVq5Z577uHQoUP89ttvAFx33XV88803PP3006xcuZIzZ86UybGf68/fSxw0aBAAK1asAMBisfDYY4/x1VdfkZiYCBTMjn377bc8+uijxa5MPtfVV1+Nl5cXQ4cOZfbs2SWeyvzmm2/w8fHh/vvvv2CdW7dupXfv3oSGhmK1WvH09GTw4MHYbDZ279593vW++uorDMPg7rvvJj8/3/GIioqiRYsWxU7di7gbBTkRuWyZmZmkpqYSHR1d4fs2DINly5bRtWtXJk2axLXXXkt4eDgjRozg9OnT510vNTWVqKioYkEkIiICDw+PIqcvAUJDQ4ttw9vbu1i4upiTJ09imia1atUq9l7h769w32+88QZ/+9vfWLhwIQkJCYSEhNC3b1/27NlzWcdeyMPDo9hxRUVFFakB4P7778fX15cZM2YABd9X8/X1vWj4atCgAUuXLiUiIoLhw4fToEEDGjRowOuvv+4Yc/z4caKjo7FYzv/nKDExkQ4dOnD48GFef/11Vq9ezcaNG3nrrbcALvgZHDt2DNM0iYyMxNPTs8hjw4YNpKSkXPAYRCo7fUdORC7b119/jc1mK9M+bT4+PgDFLjwo6Q9v3bp1+eCDDwDYvXs3n376KWPHjiU3N9cRPv4sNDSUH374AdM0i4S55ORk8vPzCQsLK6tDKSI4OBiLxUJSUlKx944cOQLg2Le/vz8vvvgiL774IseOHXPMzvXq1Ytff/0VuLRjL5Sfn09qamqRMHf06FGgaHANCgpiyJAhvP/++4wZM4aZM2cyaNAgatasedHj7dChAx06dMBms7Fp0ybefPNNRo4cSWRkJHfeeSfh4eGsWbMGu91+3jC3cOFCMjMzmT9/PnXr1nUsL80FHWFhYRiGwerVq/H29i72fknLRNyJZuRE5LIkJiYyZswYgoKCePjhh8tsu4VNXbdv315k+ZdffnnB9a644gr+/ve/Ex8ff8ELJrp06UJGRgYLFy4ssnzOnDmO98uDv78/bdq0Yf78+UVmkux2Ox9//DExMTFcccUVxdaLjIzk3nvvZeDAgfz2229FrvosVNpjP1fhBSaF/v3vfwMUC+UjRowgJSWF22+/nVOnThVrIXMxVquVNm3aOGbRCuvr3r072dnZF2yYXBi0zw1dpmny3nvvXXS/t956K6ZpcvjwYVq1alXsER8f79RxiFQ2mpETkVL7+eefHd8xSk5OZvXq1cycOROr1cqCBQsIDw8vs31FRUVx0003MXHiRIKDg6lbty7Lli1j/vz5RcZt376dxx57jDvuuINGjRrh5eXF8uXL2b59O08//fR5tz948GDeeusthgwZwoEDB4iPj2fNmjVMmDCBHj16FLlCs6xNnDiRm2++mYSEBMaMGYOXlxdvv/02P//8M5988okjuLRp04Zbb72V5s2bExwczK5du/joo49o27Ytfn5+l3zshby8vHj11VfJyMigdevWjqtWu3fvzg033FBk7BVXXEG3bt345ptvuOGGG2jRosVFtz9jxgyWL19Oz549iY2NJTs723GFaeHvd+DAgcycOZNhw4bx22+/kZCQgN1u54cffqBx48bceeed3HzzzXh5eTFw4ECeeuopsrOzmT59OidPnrxoDe3bt2fo0KHcd999bNq0iRtvvBF/f3+SkpJYs2YN8fHxPPLIIxfdjkil5corLUTEPRRetVr48PLyMiMiIsyOHTuaEyZMMJOTk4utc7lXrZqmaSYlJZm33367GRISYgYFBZl33323uWnTpiJXgR47dsy89957zauuusr09/c3AwICzObNm5uvvfaamZ+fX2Qf5161apqmmZqaag4bNsysVauW6eHhYdatW9d85plnzOzs7CLjAHP48OHF6qtbt645ZMiQ8/3aTNMs+apV0zTN1atXm507dzb9/f1NX19f8/rrrzf/+9//Fhnz9NNPm61atTKDg4NNb29vs379+uaoUaPMlJQUp469JIWfxfbt281OnTqZvr6+ZkhIiPnII4+YGRkZJa4za9YsEzDnzp17wW0XWr9+vdmvXz+zbt26pre3txkaGmp27NjR/PLLL4uMO3PmjPn888+bjRo1Mr28vMzQ0FCzc+fO5rp16xxj/vvf/5otWrQwfXx8zNq1a5tPPvmk+c033xS7svnPV60W+vDDD802bdo4ft8NGjQwBw8ebG7atKlUxyJSWRmm6aJLzURExK3079+fDRs2cODAATw9PV1djoigU6siInIBOTk5bNmyhR9//JEFCxYwZcoUhTiRSkQzciIicl4HDhwgLi6OwMBABg0axLRp07Bara4uS0TOUpATERERcVNqPyIiIiLiphTkRERERNyUgpyIiIiIm9JVq27Gbrdz5MgRatSoccGbVYuIiEjlYZomp0+fvui9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8fPzo0aNGnTs2JGXXnqJI0eOlFedVVq/fv0IDg7m9ttvd3UpLhOYXfBvxyc8zsWViIiIuI9SBbmFCxdy5ZVXMmTIECwWC08++STz589n8eLFfPDBB3Ts2JGlS5dSv359hg0bxvHjx8u77iplxIgRzJkzx9VluFSY7RgAQdENXVyJiIiI+/AozaAJEyYwefJkevbsicVSPPv95S9/AeDw4cO8/vrrzJkzh7/+9a9lW2kVlpCQwMqVK11dhsucTjtBTTIACI9RkBMRESmtUs3I/fjjj/Tq1avEEHeu2rVrM2nSJKdC3NixYzEMo8gjKirqousdPnyYu+++m9DQUPz8/Lj66qvZvHlzqfdbGt9//z29evUiOjoawzBYuHBhsTFvv/02cXFx+Pj40LJlS1avXl2mNVQHxw/uAeAkNQgIDHZxNSIiIu7jki92yM3N5bfffiM/P/+yi2jatClJSUmOx44dOy44/uTJk7Rv3x5PT0+++eYbdu7cyauvvkrNmjVLHL927Vry8vKKLf/11185evToefeTmZlJixYtmDZtWonvz5s3j5EjR/Lss8+ydetWOnToQPfu3UlMTHSMadmyJc2aNSv20PcJ/yc9aS+gHnIiIiLOKtWp1XNlZWXx+OOPM3v2bAB2795N/fr1GTFiBNHR0Tz99NPOF+HhUapZuEKvvPIKderUYebMmY5l9erVK3Gs3W5n+PDhNGrUiLlz52I9eyP23bt3k5CQwKhRo3jqqadKXLd79+507979vHVMmTKFBx54gAcffBCAqVOnsnjxYqZPn87EiRMBynyWsCrKTinoIXdaPeRERESc4vSM3DPPPMNPP/3EypUr8fHxcSy/6aabmDdv3iUVsWfPHqKjo4mLi+POO+9k3759Fxz/5Zdf0qpVK+644w4iIiK45ppreO+990oca7FYWLRoEVu3bmXw4MHY7Xb27t1L586d6d2793lD3MXk5uayefNmbrnlliLLb7nlFtatW3dJ27yQt956iyZNmtC6desy37bLOXrI1XZxISIiIu7F6SC3cOFCpk2bxg033IBhGI7lTZo0Ye/evU4X0KZNG+bMmcPixYt57733OHr0KO3atSM1NfW86+zbt4/p06fTqFEjFi9ezLBhwy545Wd0dDTLly9n7dq1DBo0iM6dO9OlSxdmzJjhdL2FUlJSsNlsREYWPR0YGRl5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vTt79uxxvD9r1ixq1qzJV199RZMmTfD29uaPP/6gXr16jB8/nsGDBxMQEEDdunX5z3/+w/Hjxx21x8fHs2nTJse2UlNTGThwIDExMfj5+REfH88nn3xywd/XuadWZ82aVezCSMMwivz+Zs6cSePGjfHx8eGqq67i7bffLrK9H3/8kWuuuQYfHx9atWrF1q1bL7h/V3DLIPdn/v7+xMfHF/nH9GfHjh1j6NCh9OrVi6ysLEaNGnVZ+wwLC8NqtRabfUtOTi42S+eOamQnAeAdHufiSkREyp5pmmTl5rvkYZqmU7XOnj0bf39/fvjhByZNmsS4ceNYsmSJ4zj69u3LiRMnWLVqFUuWLGHv3r0MGDAAgAEDBvDXv/61yAWChe+VZMWKFezdu5cVK1Ywe/ZsZs2aVST43XvvvWzatIkvv/yS9evXY5omPXr0KBL2srKymDhxIu+//z6//PILERERALz22mu0b9+erVu30rNnT+655x4GDx7M3XffzZYtW2jYsCGDBw92/H6ys7Np2bIlX331FT///DNDhw7lnnvu4YcffijV723AgAFFLor85JNP8PDwoH379gC89957PPvss7z00kvs2rWLCRMm8NxzzzkmhTIzM7n11lu58sor2bx5M2PHjmXMmDGl/NQqTpXoI5eTk8OuXbvo0KFDie+npKTQpUsXGjduzGeffcaePXvo1KkT3t7eTJ48+ZL26eXlRcuWLVmyZAn9+vVzLF+yZAl9+vS5pG1WJuG2goAaVKuBiysRESl7Z/JsNHl+sUv2vXNcV/y8Sv/nt3nz5rzwwgsANGrUiGnTprFs2TJuvvlmli5dyvbt29m/fz916tQB4KOPPqJp06Zs3LiR1q1bExAQ4LhA8GKCg4OZNm0aVquVq666ip49e7Js2TIeeugh9uzZw5dffsnatWtp164dAP/617+oU6cOCxcu5I477gAKWr28/fbbtGjRosi2e/TowcMPPwzA888/z/Tp02ndurVjvb/97W+0bduWY8eOERUVRe3atYsEp8cff5xvv/2Wzz77jDZt2lz0WHx9ffH19QVg7969PPbYY0yYMIGbb74ZgH/84x+8+uqrjosa4+Li2LlzJ++88w5DhgzhX//6FzabjQ8//BA/Pz+aNm3KoUOHeOSRRy6674rklkFuzJgx9OrVi9jYWJKTkxk/fjzp6ekMGTKk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_loss_by_scale(diffusion_loss_by_scale, diffusion_loss_by_scale_normed, bending=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9cb5752b-b233-4ef2-9683-67a2072ca63f", + "metadata": {}, + "source": [ + "From the figure above, we have the following observations:\n", + "1. The two curves eventually become flat at larger scales, indicating that **diffusion loss is invariant to scale when resolutions are scaled equally along all axes**.\n", + "2. The curves fail to be flat for smaller scales. This is due to the approximation used in (1). Using central finite difference to approximate spatial gradient works well for larger spatial resolutions but fails for smaller resolutions. \n", + "3. The curves overlap, suggesting that **enabling normalization has no effect on diffusion loss when resolutions are scaled equally along all axes**. However, this is not the case when axes are scaled by different factors. For example, we now investigate the case where we set `fix_x` to `True` to fix the resolution along the $x$-axis and only scale the $y$-axis." + ] + }, + { + "cell_type": "markdown", + "id": "201f97d6-2764-481c-b4d6-0ebeb5ec2714", + "metadata": {}, + "source": [ + "#### Unequal scaling" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b4af614-5de5-4b96-af0f-64da5a81e9e0", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "diffusion_loss_by_scale_fix_x = [\n", + " (s, get_example_loss_at_scale(s, bending=False, fix_x=True, normalize=False)) for s in range(32, 512, 32)\n", + "]\n", + "diffusion_loss_by_scale_fix_x_normed = [\n", + " (s, get_example_loss_at_scale(s, bending=False, fix_x=True, normalize=True)) for s in range(32, 512, 32)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "873235a5-5178-4420-bf17-a38e077efcc1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAHFCAYAAAD8Jo2EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABj/0lEQVR4nO3deVwV9f7H8ddh3wRBBURcQHBBcd81FVNzSy3rWlZqu6WZmWV1M225WlZaXdF2tc3sl0tezXLJNfd931EQUVxBQLbD/P5ATuIKChzgvJ+PBw85M3NmPsOo5813vvP9mgzDMBARERGxcXbWLkBERESkOFAoEhEREUGhSERERARQKBIREREBFIpEREREAIUiEREREUChSERERARQKBIREREBFIpEREREAIUikSI3bdo0TCaT5cvFxQV/f38iIiIYN24c8fHx17xnzJgxmEymXMvS09MZNGgQFStWxN7engYNGgBw7tw5HnroIXx9fTGZTPTu3bvAz6F9+/a0b9++wPd7K0ePHsVkMjFt2rQiP/bNDBw4EA8PD2uXUeAGDhxItWrVrF2GSJFxsHYBIrZq6tSp1KpVi4yMDOLj41m9ejUffPABH330ETNnzqRjx46WbZ966im6dOmS6/1Tpkzhiy++4L///S+NGze2fCi/++67zJkzh2+//Zbq1avj4+NT4LVPnjy5wPcpImJtCkUiVlK3bl2aNGlied2nTx9eeukl2rRpw/3338/Bgwfx8/MDIDAwkMDAwFzv37VrF66urgwZMuSa5dWrV+eRRx4ptNrDwsIKbd8iItai22cixUiVKlX4+OOPuXjxIl988YVl+dW3z0wmE19//TWXLl2y3IbLuS23ZMkS9u7da1m+fPlyli9fbvn+Ste7HXXkyBEeeughAgICcHZ2xs/Pj7vvvptt27ZZtrne7bNz587x/PPPU6lSJZycnAgODubf//43aWlpubYzmUwMGTKE77//ntq1a+Pm5kb9+vWZP3/+bf/cVq9ezd13302ZMmVwc3OjVatWLFiwINc2KSkpjBgxgqCgIFxcXPDx8aFJkybMmDEjX+d+M7t37+buu+/G3d2dChUqMGTIEFJSUizr7777bmrVqsXV83AbhkFISAjdu3e/6f7/+usv2rdvT7ly5XB1daVKlSr06dMn1zHS0tJ45513qF27Ni4uLpQrV46IiAjWrFlj2SYyMpK2bdvi6+uLu7s74eHhjB8/noyMjFueo2EYTJ48mQYNGuDq6oq3tzcPPPAAR44cydPPSKQ4U0uRSDHTrVs37O3tWbly5Q23Wbt2Le+++y7Lli3jr7/+AiAoKIi1a9fy/PPPk5CQwI8//ghkt+ps2bIlX8c3m82MHz+eKlWqcObMGdasWcOFCxdu+J7U1FQiIiI4fPgwb7/9NvXq1WPVqlWMGzeObdu2XRNQFixYwMaNG3nnnXfw8PBg/Pjx3Hfffezfv5/g4OA81wqwYsUKOnXqRL169fjmm29wdnZm8uTJ3HvvvcyYMYO+ffsCMHz4cL7//nvee+89GjZsSHJyMrt27eLs2bN3dO45MjIy6NatG88++yyvvfYaa9as4b333uPYsWP873//A+DFF1+kV69eLF26NNft0YULF3L48GE+++yzG+7/6NGjdO/enbvuuotvv/2WsmXLEhsbyx9//EF6ejpubm5kZmbStWtXVq1axbBhw+jQoQOZmZmsW7eO6OhoWrVqBcDhw4fp168fQUFBODk5sX37dv7zn/+wb98+vv3225ue57PPPsu0adMYOnQoH3zwAefOneOdd96hVatWbN++3dK6KVIiGSJSpKZOnWoAxsaNG2+4jZ+fn1G7dm3L69GjRxtX/3MdMGCA4e7ufs1727VrZ9SpUyfXsmXLlhmAsWzZslzLo6KiDMCYOnWqYRiGcebMGQMwPvnkk5ueQ7t27Yx27dpZXn/++ecGYPzyyy+5tvvggw8MwFi0aJFlGWD4+fkZiYmJlmUnT5407OzsjHHjxt30uFfXaxiG0aJFC8PX19e4ePGiZVlmZqZRt25dIzAw0MjKyjIMwzDq1q1r9O7d+4b7zuu5X8+AAQMMwPj0009zLf/Pf/5jAMbq1asNwzAMs9lsBAcHG7169cq1XdeuXY3q1atbar2eX3/91QCMbdu23XCb7777zgCMr776Ks+1m81mIyMjw/juu+8Me3t749y5c7nOq2rVqpbXa9euNQDj448/zrWPmJgYw9XV1Xj11VfzfFyR4ki3z0SKIeOq2ytFxcfHh+rVq/Phhx8yYcIEtm7dSlZW1i3f99dff+Hu7s4DDzyQa/nAgQMBWLp0aa7lERERlClTxvLaz88PX19fjh07lq96k5OTWb9+PQ888ECup7/s7e157LHHOH78OPv37wegWbNmLFy4kNdee43ly5dz6dKlAjn3K13dj6tfv34ALFu2DAA7OzuGDBnC/PnziY6OBrJbbf744w+ef/75a54wvFKDBg1wcnLimWeeYfr06de9XbVw4UJcXFx44oknblrn1q1b6dmzJ+XKlcPe3h5HR0f69++P2WzmwIEDN3zf/PnzMZlMPProo2RmZlq+/P39qV+//jW3Z0VKGoUikWImOTmZs2fPEhAQUOTHNplMLF26lHvuuYfx48fTqFEjKlSowNChQ7l48eIN33f27Fn8/f2v+VD39fXFwcEh1y0qgHLlyl2zD2dn52uCyq2cP38ewzCoWLHiNetyfn45x/7ss88YOXIkc+fOJSIiAh8fH3r37s3Bgwfv6NxzODg4XHNe/v7+uWoAeOKJJ3B1deXzzz8Hsvv3uLq63jLIVK9enSVLluDr68vgwYOpXr061atX59NPP7Vsc/r0aQICArCzu/F/7dHR0dx1113Exsby6aefsmrVKjZu3EhkZCTATa/BqVOnMAwDPz8/HB0dc32tW7eOM2fO3PQcRIo79SkSKWYWLFiA2Wwu0HGAXFxcAK7p9Hy9D7GqVavyzTffAHDgwAF++eUXxowZQ3p6uuWD/GrlypVj/fr1GIaRKxjFx8eTmZlJ+fLlC+pUcvH29sbOzo64uLhr1p04cQLAcmx3d3fefvtt3n77bU6dOmVpNbr33nvZt28fcHvnniMzM5OzZ8/mCkYnT54EcodALy8vBgwYwNdff82IESOYOnUq/fr1o2zZsrc837vuuou77roLs9nMpk2b+O9//8uwYcPw8/PjoYceokKFCqxevZqsrKwbBqO5c+eSnJzM7NmzqVq1qmV5XjqTly9fHpPJxKpVq3B2dr5m/fWWiZQkaikSKUaio6MZMWIEXl5ePPvsswW235wB+Hbs2JFr+bx58276vho1avDmm28SHh5+087ad999N0lJScydOzfX8u+++86yvjC4u7vTvHlzZs+enauFIysrix9++IHAwEBq1Khxzfv8/PwYOHAgDz/8MPv378/19FaOvJ77lXI6t+f46aefAK4JuEOHDuXMmTM88MADXLhw4ZphFW7F3t6e5s2bW1p3curr2rUrqampNx3cMie0XhlgDMPgq6++uuVxe/TogWEYxMbG0qRJk2u+wsPD83UeIsWNWopErGTXrl2WPhnx8fGsWrWK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WVSvXt2yLCQkhI8++og+ffpw5MgRxo8ff91bYfl15swZzGYzfn5+uZb7+flx8uRJy+t77rmHLVu2kJycTGBgIHPmzKFp06bX3efrr7/O8OHDLa8TExMVjKTYycoy+GLlET5atB9zlkGorwdTHm1EiK8eKBARKSz5DkVxcXFkZmZeszwzM9MSVAICArh48eKdV3fZ1bN5G4aRa9mff/6Z5305OztbJrQVKY4upKTz8i/bWbovHoD7GlbiP/fV1dxlIiKFLN+3zyIiInj22WfZunWrZdnWrVt57rnn6NChAwA7d+4kKCjojosrX7489vb2uVqFAOLj469pPRIpDbbFXKD7Z6tZui8eJwc7xt0fzoR/1VcgEhEpAvkORd988w0+Pj40btzY0urSpEkTfHx8+OabbwDw8PDg448/vuPinJycaNy4MYsXL861fPHixbRq1eqO9y9SXBiGwbS/o3jw8zXEXrhE1XJuzHm+FQ83q3JNS6mIiBSOfP/66e/vz+LFi9m3bx8HDhzAMAxq1apFzZo1LdtERETkeX9JSUkcOnTI8joqKopt27bh4+NDlSpVGD58OI899hhNmjShZcuWfPnll0RHRzNo0KD8li5SLF1MzeC1WTtZsDMOgC51/Bn/YD08XRytXJmIiG0xGYZh3O6bc956J7/JLl++/LohasCAAUybNg3IHrxx/PjxxMXFUbduXSZOnEjbtm1v+5hXKoxZdkXyas+JRAb/tIWoM8k42Jl4o1ttHm9dTa1DIiK3UBif37cVir777js+/PBDDh48CECNGjV45ZVXeOyxxwqkqKIQGRlJZGQkZrOZAwcOKBRJkftlYwyjfttFWmYWAV4uTHqkEY2qeFu7LBGREqFYhKIJEyYwatQohgwZQuvWrTEMg7///pvIyEjee++9AhmfqCippUiK2qV0M6N+28Wvm48D0L5mBSb+qwHe7k5WrkxEpOQoFqEoKCiIt99+m/79++daPn36dMaMGUNUVFSBFFZUFIqkKB2KT2Lwj1vYf+oidiZ4uXNNnmtXHTs73S4TEcmPwvj8vq1xiq735FerVq2Ii4srkKJESqN520/w+qwdJKebKe/hzGcPN6BV9fLWLktERC7L9yP5ISEh/PLLL9csnzlzJqGhoQVSlEhpkpZpZtTcXQydsZXkdDMtgn34/cU2CkQiIsVMvluK3n77bfr2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_loss_by_scale(diffusion_loss_by_scale_fix_x, diffusion_loss_by_scale_fix_x_normed, bending=False)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "188eaec8-d372-4970-806f-c8cf46e7a8b4", + "metadata": {}, + "source": [ + "Observe that **unnormalized diffusion loss (blue) is NOT invariant to scale when resolutions are scaled unequally along different axes**. However, setting `normalize=True` (orange) makes the loss invariant to scale. Therefore, in this case, one shall consider performing normalization." + ] + }, + { + "cell_type": "markdown", + "id": "cc3254ec-11bb-4aa3-8701-adb6662568f3", + "metadata": {}, + "source": [ + "### Bending energy loss" + ] + }, + { + "cell_type": "markdown", + "id": "c95bcb7f-783c-4348-808e-339084451078", + "metadata": {}, + "source": [ + "#### Equally scaling both axes" + ] + }, + { + "cell_type": "markdown", + "id": "9b06369e-60cc-4214-8203-3f8f972a578b", + "metadata": {}, + "source": [ + "We first investigate the case where the resolutions along $x$- and $y$-axes are scaled by the same factor by letting `fix_x` and `fix_y` be `False` by default." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50bc8098-6553-40df-90af-1e073bb47a48", + "metadata": {}, + "outputs": [], + "source": [ + "bending_loss_by_scale = [(s, get_example_loss_at_scale(s, bending=True, normalize=False)) for s in range(32, 512, 32)]\n", + "bending_loss_by_scale_normed = [\n", + " (s, get_example_loss_at_scale(s, bending=True, normalize=True)) for s in range(32, 512, 32)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a69862d2-bb6c-413a-9a43-77f89f3e9eb7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_loss_by_scale(bending_loss_by_scale, bending_loss_by_scale_normed, bending=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a9d36dc2-6d76-4173-b5bb-d3d69cf4d77e", + "metadata": {}, + "source": [ + "Observe that **unnormalized bending energy loss (blue) is NOT invariant to scale when resolutions are scaled equally along different axes**. However, when `normalize` is set to `True` (orange), the loss becomes invariant to scale. In this case, one shall consider normalization. \n", + "\n", + "In the following example, we demonstrate that this is still the case when resolution are scaled unequally along different axes by setting `fix_x` to `True`." + ] + }, + { + "cell_type": "markdown", + "id": "4bd7b1a0-a769-4763-af13-f02ce4c67d5e", + "metadata": {}, + "source": [ + "#### Unequal scaling" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19485960-7e19-4290-aabd-9d3e46152bfb", + "metadata": {}, + "outputs": [], + "source": [ + "bending_loss_by_scale_fix_x = [\n", + " (s, get_example_loss_at_scale(s, bending=True, fix_x=True, normalize=False)) for s in range(32, 512, 32)\n", + "]\n", + "bending_loss_by_scale_fix_x_normed = [\n", + " (s, get_example_loss_at_scale(s, bending=True, fix_x=True, normalize=True)) for s in range(32, 512, 32)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "14a32fdc-0456-4fc2-8d49-5f7b69d549f0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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//79MXfuXJSWlgIon8E+MTERH330EQYNGqT2AjUlLCwMvr6+aNWqlbZLISIiohpA5afPcnJy0Lt3b1y6dAm5ublwdnZGWloaQkJCsHv3bpiYmGiqVo3g02dERES1T414+szc3BxHjx7FP//8gzNnzkAul6NFixbo2rWrWgoiIiIi0oZ6O3jjA7xSREREVPto7UrR999/X+UNTpky5ZmLISIiItKWKl0p8vDwqNrGJBLcuHHjuYuqTrxSREREVPto7UpRfHy8WnZGREREVFOp/Eh+XcFH8omIiOhhz9TROjk5GTt37kRiYiJKSkqUli1atEhtxVUH3j4jIiKqfWrEI/n79+/HSy+9BA8PD1y5cgV+fn5ISEiAEAItWrRQS1FERERE1U3l22czZ87EjBkzcPHiRRgaGmLr1q1ISkpCx44dMWTIEE3USERERKRxKoei2NhYjBo1CgCgp6eHwsJCmJqaYu7cufjmm2/UXiARERFRdVA5FJmYmKC4uBgA4OzsjLi4OMWyO3fuqK8yIiIiomqkcp+iF154AceOHYOvry/69OmDGTNm4MKFC9i2bRteeOEFTdRIREREpHEqh6JFixYhLy8PADBnzhzk5eVh06ZN8PLywuLFi9VeIBEREVF1qLdzn4WFhSEsLAwymQxXr17lI/lERES1iCYeyVc5FEVGRkIul6NNmzZK7SdPnoSuri6Cg4PVUlh14ThFREREtY8mPr9V7mg9adIkJCUlVWi/desWJk2apJaiiIiIiKqbyqEoJiam0kEag4KCEBMTo5aiiIiIiKqbyqFIKpUiPT29Qntqair09FTut01ERERUI6gcirp164aZM2ciOztb0ZaVlYWPP/4Y3bp1U2txRERERNVF5Us73333HTp06AB3d3cEBQUBAKKjo+Hg4ICff/5Z7QUSERERVQeVQ5GLiwvOnz+PX3/9FefOnYORkRHGjBmDYcOGQV9fXxM1EhEREWncM3UCMjExwfjx49VdCxEREZHWqNynaN26dfjzzz8Vrz/44ANYWlqibdu2uHnzplqLIyIiIqouKoeir776CkZGRgCAf//9F8uWLcOCBQtga2uLd999V+0FEhEREVUHlW+fJSUlwcvLCwCwY8cODB48GOPHj0e7du3QqVMnddenMQ9P80FERESk8pUiU1NTZGZmAgD+/vtvdO3aFQBgaGiIwsJC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KwtHjx7FN998g9DQULi7u6N169aYOXMm+vTpo1hn/PjxcHBwgKGhIfz8/LBr1y4AQGZmJoYNGwZXV1cYGxujefPm2LBhwxP3WVJSgg8++AAuLi4wMTFBmzZtcPDgQU0fKhHVELxSREQ1kqmpKUxNTbFjxw688MILkEqlSsvlcjl69eqF3Nxc/PLLL2jUqBFiYmKgq6sLACgqKkLLli3x4YcfwtzcHH/++SdGjBgBT09PtGnTptJ9jhkzBgkJCdi4cSOcnZ2xfft29OzZExcuXIC3t7fGj5mItIsTwhJRjbV161aMGzcOhYWFaNGiBTp27IhXX30V/v7++Pvvv9GrVy/ExsaicePGVdpenz594OPjg4ULFwIo72gdGBiIJUuWIC4uDt7e3khOToazs7PiPV27dkXr1q3x1VdfaeQYiajm4JUiIqqxBg0ahD59+uDIkSP4999/sWfPHixYsABr1qxBRkYGXF1dHxuIZDIZvv76a2zatAm3bt1CcXExiouLYWJiUun6Z86cgRCiwvaKi4thY2Oj9mMjopqHoYiIajRDQ0N069YN3bp1w2effYY333wTs2fPxnvvvffE93333XdYvHgxlixZgubNm8PExATTpk1DSUlJpevL5XLo6uoiKipKcQvuAVNTU7UdDxHVXAxFRFSr+Pr6YseOHfD390dycjKuXr1a6dWiI0eOoH///nj99dcBlIeea9euwcfHp9LtBgUFQSaTISMjA+3bt9foMRBRzcSnz4ioRsrMzETnzp3xyy+/4Pz584iPj8fmzZuxYMEC9O/fHx07dkSHDh0waNAgREREID4+Hn/99Rf27NkDAPDy8kJERASOHz+O2NhYTJgwAWlpaY/dX+PGjfHaa69h5MiR2LZtG+Lj4xEZGYlvvvkGu3fvrq7DJiIt4pUiIqqRTE1N0aZNGyxevBhxcXEoLS2Fm5sbxo0bh48//hhAeUfs9957D8OGDUN+fj68vLzw9ddfAwA+/fRTxMfHo0ePHjA2Nsb48eMxYMAAZGdnP3afa9euxbx58zBjxgzcunULNjY2CAkJQe/evavlmIlIu/j0GRERERF4+4yIiIgIAEMREREREQCGIiIiIiIADEVEREREABiKiIiIiAAwFBEREREBYCgiIiIiAsBQRERERASAoYiIiIgIAEMREREREQCGIiIiIiIADEVEREREAID/ByhLBZ86TNt9AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_loss_by_scale(bending_loss_by_scale_fix_x, bending_loss_by_scale_fix_x_normed, bending=True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6f84f84f-9f82-40a8-aa29-62abd17cb73e", + "metadata": {}, + "source": [ + "Observe that **unnormalized bending energy loss (blue) is NOT invariant to scale when resolutions are scaled unequally along different axes**. However, when `normalize` is set to `True` (orange), the loss becomes invariant to scale. In this case, one should consider normalization." + ] + }, + { + "cell_type": "markdown", + "id": "5d04a5fb-4488-4c0f-95d1-7c17178ca47d", + "metadata": {}, + "source": [ + "### Brief summary" + ] + }, + { + "cell_type": "markdown", + "id": "dc0897c2-5ecb-455a-a549-e1fc885e09e4", + "metadata": {}, + "source": [ + "In this section, we saw that unnormalized diffusion loss is sensitive to the aspect ratio of the DDF but not overall scale of the DDF. We also see that unnormalized bending energy loss is sensitive to overall scale of the DDF, making normalization even more important for bending energy loss.\n", + "\n", + "| | Overall image scale | Image aspect ratio |\n", + "| :-------------------------------: | :-----------------: | :----------------: |\n", + "| **(unnormalized) Bending energy** | Variant | Variant |\n", + "| **(unnormalized) Diffusion** | Invariant | Variant |\n" + ] + }, + { + "cell_type": "markdown", + "id": "c94c7c97-9c12-4869-8da1-1cbd2ab5e72b", + "metadata": {}, + "source": [ + "## Usage" + ] + }, + { + "cell_type": "markdown", + "id": "24ccf202-258f-4d0a-b961-75e253409d32", + "metadata": {}, + "source": [ + "Finally, we provide snippets of example code for reference. For both bending energy and diffusion loss, we require the input DDF to be of shape BCH[WD] where C corresponds to the number of spatial dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "9488bc53-e34c-48a4-ba94-1de39f48e5d9", + "metadata": {}, + "outputs": [], + "source": [ + "bending_loss_fn = BendingEnergyLoss(normalize=True)\n", + "diffusion_loss_fn = DiffusionLoss(normalize=True)\n", + "\n", + "# 1D\n", + "ddf_1d = torch.randn(1, 1, 16)\n", + "l_bending_1d = bending_loss_fn(ddf_1d)\n", + "l_diffusion_1d = diffusion_loss_fn(ddf_1d)\n", + "\n", + "# 2D\n", + "ddf_2d = torch.randn(1, 2, 16, 16)\n", + "l_bending_2d = bending_loss_fn(ddf_2d)\n", + "l_diffusion_2d = diffusion_loss_fn(ddf_2d)\n", + "\n", + "# 3D\n", + "ddf_3d = torch.randn(1, 3, 16, 16, 16)\n", + "l_bending_3d = bending_loss_fn(ddf_3d)\n", + "l_diffusion_3d = diffusion_loss_fn(ddf_3d)" + ] + }, + { + "cell_type": "markdown", + "id": "acd7819d-1d26-4a3e-a13f-6b31aa225db9", + "metadata": {}, + "source": [ + "## Additional readings" + ] + }, + { + "cell_type": "markdown", + "id": "ced502d7-cfd8-4f10-b2de-76e1120e4220", + "metadata": {}, + "source": [ + "For additional discussions, see [#3485](https://github.com/Project-MONAI/MONAI/issues/3485) and [#7272](https://github.com/Project-MONAI/MONAI/pull/7272)." + ] + } + ], + "metadata": { + "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.8.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/runner.sh b/runner.sh index 16fbba7581..553e112d61 100755 --- a/runner.sh +++ b/runner.sh @@ -76,6 +76,7 @@ doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" 01_bundle_intro.ipy doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" 02_mednist_classification.ipynb) doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" 03_mednist_classification_v2.ipynb) doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" 04_integrating_code.ipynb) +doesnt_contain_max_epochs=("${doesnt_contain_max_epochs[@]}" bending_energy_diffusion_loss_notes.ipynb) # Execution of the notebook in these folders / with the filename cannot be automated skip_run_papermill=()