Skip to content

Instantly share code, notes, and snippets.

@ducha-aiki
Created July 16, 2019 12:53
Show Gist options
  • Save ducha-aiki/c83e6d4550934386e83a9f4ee11ab2c4 to your computer and use it in GitHub Desktop.
Save ducha-aiki/c83e6d4550934386e83a9f4ee11ab2c4 to your computer and use it in GitHub Desktop.
Pyrdown bugreport
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import kornia\n",
"import torch\n",
"import math\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from skimage.transform import pyramid_gaussian"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f4ea5c4af28>"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"timg = torch.zeros(1,1,64,32)\n",
"timg[0,0,32-10:32+10,16-10:16+10] = 1.0\n",
"img = kornia.utils.tensor_to_image(timg)[0,:,:,0]\n",
"plt.imshow(img)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAI4AAAD5CAYAAADx2g1xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAJo0lEQVR4nO3dX4hU9xnG8e/jrsbUpCQStcE/NYglkUK2sBghpdjYFiuFNVBDclG8CJiLCi30RnKTFFpIoWmaixAwrWQLbVRsU5cibY2k2N6kamqNiSk1YjarsluJoXqTdPXtxZyF7XZmd3xnZufM7POBZXfOzHF+Ll9m5szOvKOIwOxmzWv3AqwzORxLcTiW4nAsxeFYisOxlN5Gdpa0GXge6AF+FhHPTHf5BbolFrKokau0WXaVK5cjYsnU7elwJPUALwBfBUaAY5KGIuKdWvssZBEPaFP2Kq0NXosD71fb3shd1XrgbESci4hPgL3AQAP/nnWQRsJZDnww6fRIsc3mgEYe46jKtv/7+4WkHcAOgIV8qoGrszJp5BZnBFg56fQK4OLUC0XE7ojoj4j++dzSwNVZmTQSzjFgraR7JC0AHgWGmrMsK7v0XVVEjEvaCfyByuH4noh4u2krs1Jr6HmciDgEHGrSWqyD+JljS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS2l0Itd54CpwHRiPiP5mLMrKr6FwCl+OiMtN+Hesg/iuylIaDSeAP0o6UQxQsjmi0buqByPioqSlwGFJ70bE0ckX8ESu7tTQLU5EXCy+jwGvUhkoOfUynsjVhdLhSFok6faJn4GvAaebtTArt0buqpYBr0qa+Hd+FRG/b8qqrPQaGeV2Dri/iWuxDuLDcUtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEuZ8Z2ckvYA3wDGIuLzxbbFwD5gNXAeeCQirrRslfN6qm7uXbW85i7RW32fbqDx6zXPGx++UP2MG7X3yajnFudlYPOUbbuAIxGxFjhSnLY5ZMZwink3H07ZPAAMFj8PAlubvC4ruexjnGURcQmg+L60eUuyTtCM4ZHT8kSu7pS9xRmVdDdA8X2s1gU9kas7ZcMZArYXP28HDjZnOdYp6jkcfwXYCNwlaQR4CngG2C/pcWAY2NbSRdY47O4/+F7Nfb5027utWk7bHb12b83zjg+sqbp9/PxwU9cwYzgR8ViNszY1dSXWUfzMsaU4HEtxOJbicCzF4VhKy585boZaf+me7pB7063N/WtwudT+fx/r/dysrMC3OJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWMqM4UjaI2lM0ulJ256WdEHSyeJrS2uXaWWTncgF8FxE9BVfh5q7LCu77EQum+MaeYyzU9Kp4q7szqatyDpCNpwXgTVAH3AJeLbWBSXtkHRc0vH/8HHy6qxsUuFExGhEXI+IG8BLwPppLuuJXF0oFc7EGLfCw8DpWpe17pSdyLVRUh8QVAZkP9HCNVoJZSdy/bwFa7EO4meOLcXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLKWetwCvBH4BfAa4AeyOiOclLQb2AaupvA34kYi40opFarz6J/oevXbvNHvV/qTcTjfd/7vW76rZ6rnFGQe+FxH3ARuAb0taB+wCjkTEWuBIcdrmiHomcl2KiDeLn68CZ4DlwAAwWFxsENjaqkVa+dzUYxxJq4EvAG8AyyLiElTiApY2e3FWXnWHI+k24NfAdyPi3zexnydydaG6wpE0n0o0v4yI3xSbRycGLBXfx6rt64lc3ameOceiMg/nTET8ZNJZQ8D24uftwMHmL8/KShEx/QWkLwJ/Bt6icjgO8CSVxzn7gVXAMLAtIqYda/tpLY4HtOnmVzmvp+rm3lXLa+4SvdX36QbTHXKPD1+ofsaN3GH6a3HgRET0T91ez0SuvwCqcXaiAusGfubYUhyOpTgcS3E4luJwLGXGo6pSqHEoOX5+eJYXYhN8i2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqXU897xlZJel3RG0tuSvlNsf1rSBUkni68trV+ulUU9L1afmMj1pqTbgROSDhfnPRcRP27d8qys6nnv+CVgYoDSVUkTE7lsDmtkIhfATkmnJO2RdGeT12Yl1shErheBNUAflVukZ2vs54lcXSg9kSsiRiPiekTcAF4C1lfb1xO5ulN6ItfEGLfCw8Dp5i/Pyqqeo6oHgW8Bb0k6WWx7EnhMUh8QVAZkP9GSFVopNTKR61Dzl2Odws8cW4rDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWEo97x1fKOmvkv5eTOT6frH9HklvSPqnpH2SFrR+uVYW9dzifAw8FBH3UxlpslnSBuBHVCZyrQWuAI+3bplWNjOGExXXipPzi68AHgIOFNsHga0tWaGVUr3zcXqKSRVjwGHgPeCjiBgvLjKCx7vNKXWFUwxQ6gNWUBmgdF+1i1Xb1xO5utNNHVVFxEfAn4ANwB2SJsakrAAu1tjHE7m6UD1HVUsk3VH8fCvwFeAM8DrwzeJi24GDrVqklU89E7nuBgYl9VAJbX9E/E7SO8BeST8A/kZl3JvNEfVM5DpFZUTt1O3nqDEw0rqfnzm2FIdjKQ7HUhyOpTgcS1FE1Sd8W3Nl0r+A94uTdwGXZ+3Ky6+sv4/PRsSSqRtnNZz/uWLpeET0t+XKS6jTfh++q7IUh2Mp7Qxndxuvu4w66vfRtsc41tl8V2UpbQlH0mZJ/5B0VtKudqyhnYrPMB2TdHrStsWSDhcv/j9c9s84nfVwipdnvAB8HVhH5QPT1s32OtrsZWDzlG27gCPFi/+PFKdLqx23OOuBsxFxLiI+AfYCA21YR9tExFHgwymbB6i86B864MX/7QhnOfDBpNN+oXvFsuIz3ic+631pm9czrXaEU+1jGn1o12HaEc4IsHLS6ZovdJ9jRic+Wbn4Ptbm9UyrHeEcA9YWbyFeADwKDLVhHWUzROVF/9ABL/5vyxOAkrYAPwV6gD0R8cNZX0QbSXoF2EjlL+KjwFPAb4H9wCpgGNgWEVMfQJeGnzm2FD9zbCkOx1IcjqU4HEtxOJbicCzF4ViKw7GU/wI6GpHmDN9lXQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pyramid = tuple(pyramid_gaussian(img, downscale=2, max_layer=4, multichannel=False))\n",
"plt.close('all')\n",
"for i in range(len(pyramid)):\n",
" plt.figure()\n",
" plt.imshow(pyramid[i])"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAI4AAAD5CAYAAADx2g1xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAJlklEQVR4nO3dX4xUdxnG8e/jyj+xkWIBW0AhDRdFk2IkSNIbLGqQmEATado0hgsSeiGJJvaCeNOaaIKJtfaibUKVFBMtkGqFGCIiqWn0okIrIi3VImkphbCSQgSb8Gd5vZizybrOLMM7Z/acmX0+yWZ3zszs/LL5ZmbO2Zl3FBGY3awPVb0A600Ox1IcjqU4HEtxOJbicCzlw51cWdIq4ElgAPhJRGwZ6/KTNSWmMr2Tm7RxdpHz5yJi1ujt6XAkDQBPAV8CTgEHJe2JiDdaXWcq0/m8VmZv0irw+3jhnWbbO3moWgYcj4gTEXEF2AGs6eD3WQ/pJJy5wLsjTp8qttkE0MlzHDXZ9n//v5C0EdgIMJWPdHBzVied3OOcAuaPOD0POD36QhGxNSKWRsTSSUzp4OasTjoJ5yCwSNJCSZOBB4A95SzL6i79UBUR1yRtAvbR2B3fFhGvl7Yyq7WOjuNExF5gb0lrsR7iI8eW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW0ulErreBi8AQcC0ilpaxKKu/jsIpfCEizpXwe6yH+KHKUjoNJ4DfSXq1GKBkE0SnD1X3RMRpSbOB/ZLejIiXR17AE7n6U0f3OBFxuvg+CLxIY6Dk6Mt4IlcfSocjabqkW4Z/Br4MHC1rYVZvnTxUzQFelDT8e34REb8tZVVWe52McjsB3F3iWqyHeHfcUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUm74Tk5J24CvAoMR8Zli20xgJ7AAeBu4PyLOd2+ZzQ3M+FjrM6f08YCDoaGWZ12/eKnp9rh8udQltHOP8xywatS2zcCBiFgEHChO2wRyw3CKeTfvj9q8Bthe/LwdWFvyuqzmss9x5kTEGYDi++zylmS9oIzhkWPyRK7+lL3HOSvpdoDi+2CrC3oiV3/KhrMHWF/8vB7YXc5yrFe0szv+PLACuE3SKeBRYAuwS9IG4CSwrpuLbLXb/dbmxS2vM+9zp7u1nMpd+GBay/NmPL2w6fbJ+w6VuoYbhhMRD7Y4a2WpK7Ge4iPHluJwLMXhWIrDsRSHYyldP3Jcihb/6R5rl/ulT/fvoaV/XP1Py/MeuuORpttnlrwG3+NYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpNwxH0jZJg5KOjtj2mKT3JB0uvlZ3d5lWN9mJXABPRMSS4mtvucuyustO5LIJrpPnOJskHSkeym4tbUXWE7LhPAPcCSwBzgCPt7qgpI2SDkk6dJVyJ19adVLhRMTZiBiKiOvAs8CyMS7riVx9KBXO8Bi3wn3A0VaXtf6Unci1QtISIGgMyH64i2u0GspO5PppF9ZiPcRHji3F4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCylnbcAzwd+BnwCuA5sjYgnJc0EdgILaLwN+P6ION+VVQ4NNd184YNpLa8y1ifl9ro3r8xqed7A1RiXNbRzj3MN+HZE3AUsB74haTGwGTgQEYuAA8VpmyDamch1JiJeK36+CBwD5gJrgO3FxbYDa7u1SKufm3qOI2kB8FngFWBORJyBRlzA7LIXZ/XVdjiSPgr8EvhWRPz7Jq7niVx9qK1wJE2iEc3PI+JXxeazwwOWiu+Dza7riVz9qZ05x6IxD+dYRPxoxFl7gPXFz+uB3eUvz+rqhrvjwD3A14G/STpcbPsOsAXYJWkDcBJY150lwvWLl5pun/H0wpbXeeiOR7q1nMqNtcv98T+dabr9WslraGci1x8BtTh7ZbnLsV7hI8eW4nAsxeFYisOxFIdjKe3sjlcuLjc/4jx536GW15nZrcXUXNm73a34HsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtp573j8yW9JOmYpNclfbPY/pik9yQdLr5Wd3+5VhftvFh9eCLXa5JuAV6VtL8474mI+GH3lmd11c57x88AwwOULkoanshlE1gnE7kANkk6ImmbpFtLXpvVWCcTuZ4B7gSW0LhHerzF9TyRqw+lJ3JFxNmIGIqI68CzwLJm1/VErv6Unsg1PMatcB9wtPzlWV11MpHrQUlLgKAxIPvhrqzQaqmTiVx7y1+O9QofObYUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7GUdt47PlXSnyX9tZjI9d1i+0JJr0h6S9JOSZO7v1yri3bucS4D90bE3TRGmqyStBz4AY2JXIuA88CG7i3T6uaG4UTDpeLkpOIrgHuBF4rt24G1XVmh1VK783EGikkVg8B+4J/AhYgY/nz0U3i824TSVjjFAKUlwDwaA5TuanaxZtf1RK7+dFN7VRFxAfgDsByYIWl4TMo84HSL63giVx9qZ69qlqQZxc/TgC8Cx4CXgK8VF1sP7O7WIq1+2pnIdTuwXdIAjdB2RcRvJL0B7JD0PeAvNMa92QTRzkSuIzRG1I7efoIWAyOt//nIsaU4HEtxOJbicCzF4ViKIpoe8O3OjUn/At4pTt4GnBu3G6+/uv49PhURs0ZvHNdw/ueGpUMRsbSSG6+hXvt7+KHKUhyOpVQZztYKb7uOeurvUdlzHOttfqiylErCkbRK0t8lHZe0uYo1VKn4DNNBSUdHbJspaX/x4v/9df+M03EPp3h5xlPAV4DFND4wbfF4r6NizwGrRm3bDBwoXvx/oDhdW1Xc4ywDjkfEiYi4AuwA1lSwjspExMvA+6M2r6Hxon/ogRf/VxHOXODdEaf9QveGOcVnvA9/1vvsitczpirCafYxjd616zFVhHMKmD/idMsXuk8wZ4c/Wbn4PljxesZURTgHgUXFW4gnAw8AeypYR93sofGif+iBF/9XcgBQ0mrgx8AAsC0ivj/ui6iQpOeBFTT+I34WeBT4NbAL+CRwElgXEaOfQNeGjxxbio8cW4rDsRSHYykOx1IcjqU4HEtxOJbicCzlv3dVhh9wQoh8AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plain_pyr = [timg]\n",
"for i in range(4):\n",
" plain_pyr.append(kornia.pyrdown(plain_pyr[-1]))\n",
"\n",
"plt.close('all')\n",
"for i in range(len(plain_pyr)):\n",
" plt.figure()\n",
" plt.imshow(plain_pyr[i].data.cpu().numpy()[0,0])"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAI4AAAD5CAYAAADx2g1xAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAJtUlEQVR4nO3dT4iU9x3H8ffHrcZ2m5KIfxrUVAkelJJYECNNDza2xUpBAzUkh+IhYA4VWuhFvJhACyk0TXMIAdNKttBGxTYqRdoasaS9JGpqjYkNtcaoUXYrGmo9JP759jDPwnY7s85+55mdZ2Y/L1h25tkZ55flnZl5np35jiICs/Ga0ukFWHdyOJbicCzF4ViKw7EUh2Mpn2rlypJWA88DfcDPI+KZsS4/TXfEdPpbuUmbYFe5cikiZo3eng5HUh/wAvB14DxwWNK+iHi30XWm08+DWpW9SeuA12L3B/W2t/JQtRw4FRGnI+ITYAewtoV/z7pIK+HMBc6NOH++2GaTQCvPcVRn2//9/ULSRmAjwHQ+08LNWZW0co9zHpg/4vw84MLoC0XEtohYFhHLpnJHCzdnVdJKOIeBRZIWSpoGPAbsK2dZVnXph6qIuCFpE/AHarvj2yPindJWZpXW0nGciNgP7C9pLdZFfOTYUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUlqdyHUGuArcBG5ExLIyFmXV11I4ha9GxKUS/h3rIn6ospRWwwngj5KOFgOUbJJo9aHqoYi4IGk2cEDS3yPi9ZEX8ESu3tTSPU5EXCi+DwGvUhsoOfoynsjVg9LhSOqXdOfwaeAbwImyFmbV1spD1RzgVUnD/86vI+L3pazKKq+VUW6ngQdKXIt1Ee+OW4rDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWMpt38kpaTvwLWAoIr5YbJsB7AQWAGeARyPiSrsWOaW/v+72WLyw4XVu9k9t13I6ru/a9YY/08n3626/de1aqWto5h7nZWD1qG2bgYMRsQg4WJy3SeS24RTzbi6P2rwWGChODwDrSl6XVVz2Oc6ciLgIUHyfXd6SrBuUMTxyTJ7I1Zuy9ziDku4BKL4PNbqgJ3L1pmw4+4ANxekNwN5ylmPdopnd8VeAlcBMSeeBrcAzwC5JTwBngfXtXGSj3e7LT3/c8Drr5h9u13I6bs+5+xv+bMbWBocojpQ7Ze+24UTE4w1+tKrUlVhX8ZFjS3E4luJwLMXhWIrDsZS2HzkuQ6O/dI+1y71l5nvtWk6lHer/ct3tZd9D+B7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLuW04krZLGpJ0YsS2pyR9KOlY8bWmvcu0qslO5AJ4LiKWFl/7y12WVV12IpdNcq08x9kk6XjxUHZ3aSuyrpAN50XgPmApcBF4ttEFJW2UdETSkes0Hkti3SUVTkQMRsTNiLgFvAQsH+OynsjVg1LhDI9xKzwClDu1xyovO5FrpaSlQFAbkP1kG9doFZSdyPWLNqzFuoiPHFuKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtxOJbicCzF4VhKM28Bng/8Evg8cAvYFhHPS5oB7AQWUHsb8KMRcaUdi+y7dr3u9j3n7m/HzVXeWP/dMxr8rqLkNTRzj3MD+EFELAZWAN+VtATYDByMiEXAweK8TRLNTOS6GBFvFaevAieBucBaYKC42ACwrl2LtOoZ13McSQuALwFvAHMi4iLU4gJml704q66mw5H0WeA3wPcj4t/juJ4ncvWgpsKRNJVaNL+KiN8WmweHBywV34fqXdcTuXpTM3OORW0ezsmI+OmIH+0DNhSnNwB7y1+eVZUixt5Rk/QV4M/A29R2xwG2UHueswu4FzgLrI+IMcfafk4z4kGtGvcip/T3190eixc2vM7N/qnjvp1u0ejwBIBOvl93+61r11K39VrsPhoRy0Zvb2Yi118ANfjx+CuwnuAjx5bicCzF4ViKw7EUh2Mpt92rqoKGu5JHGg907+X/I8Y6gFL2X8Eb6eXfr7WRw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYynNvHd8vqRDkk5KekfS94rtT0n6UNKx4mtN+5drVdHMi9WHJ3K9JelO4KikA8XPnouIn7RveVZVzbx3/CIwPEDpqqThiVw2ibUykQtgk6TjkrZLurvktVmFtTKR60XgPmAptXukZxtczxO5elB6IldEDEbEzYi4BbwELK93XU/k6k3piVzDY9wKjwCN31ZpPaeZvaqHgO8Ab0s6VmzbAjwuaSm1d52eAZ5sywqtklqZyLW//OVYt/CRY0txOJbicCzF4ViKw7EUh2MpDsdSHI6lOBxLcTiW4nAsxeFYisOxFIdjKQ7HUhyOpTgcS3E4luJwLMXhWIrDsRSHYykOx1IcjqU4HEtp5r3j0yW9KelvxUSup4vtCyW9IekfknZKmtb+5VpVNHOP8zHwcEQ8QG2kyWpJK4AfU5vItQi4AjzRvmVa1dw2nKj5T3F2avEVwMPA7mL7ALCuLSu0Smp2Pk5fMaliCDgA/BP4KCJuFBc5j8e7TSpNhVMMUFoKzKM2QGlxvYvVu64ncvWmce1VRcRHwJ+AFcBdkobHpMwDLjS4jidy9aBm9qpmSbqrOP1p4GvASeAQ8O3iYhuAve1apFVPMxO57gEGJPVRC21XRPxO0rvADkk/BP5KbdybTRLNTOQ6Tm1E7ejtp2kwMNJ6n48cW4rDsRSHYykOx1IcjqUoou4B3/bcmPQv4IPi7Ezg0oTdePVV9ffxhYiYNXrjhIbzPzcsHYmIZR258Qrqtt+HH6osxeFYSifD2dbB266irvp9dOw5jnU3P1RZSkfCkbRa0nuSTkna3Ik1dFLxGaZDkk6M2DZD0oHixf8Hqv4ZpxMeTvHyjBeAbwJLqH1g2pKJXkeHvQysHrVtM3CwePH/weJ8ZXXiHmc5cCoiTkfEJ8AOYG0H1tExEfE6cHnU5rXUXvQPXfDi/06EMxc4N+K8X+heM6f4jPfhz3qf3eH1jKkT4dT7mEbv2nWZToRzHpg/4nzDF7pPMoPDn6xcfB/q8HrG1IlwDgOLircQTwMeA/Z1YB1Vs4/ai/6hC17835EDgJLWAD8D+oDtEfGjCV9EB0l6BVhJ7S/ig8BWYA+wC7gXOAusj4jRT6Arw0eOLcVHji3F4ViKw7EUh2MpDsdSHI6lOBxLcTiW8l8ZlpUYgXQcawAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def _get_pyramid_gaussian_kernel() -> torch.Tensor:\n",
" \"\"\"Utility function that return a pre-computed gaussian kernel.\"\"\"\n",
" return torch.tensor([[\n",
" [1., 4., 6., 4., 1.],\n",
" [4., 16., 24., 16., 4.],\n",
" [6., 24., 36., 24., 6.],\n",
" [4., 16., 24., 16., 4.],\n",
" [1., 4., 6., 4., 1.]\n",
" ]]) / 256.\n",
"\n",
"class PyrDownFix(nn.Module):\n",
" r\"\"\"Blurs a tensor and downsamples it.\n",
"\n",
" Args:\n",
" borde_type (str): the padding mode to be applied before convolving.\n",
" The expected modes are: ``'constant'``, ``'reflect'``,\n",
" ``'replicate'`` or ``'circular'``. Default: ``'reflect'``.\n",
"\n",
" Return:\n",
" torch.Tensor: the downsampled tensor.\n",
"\n",
" Shape:\n",
" - Input: :math:`(B, C, H, W)`\n",
" - Output: :math:`(B, C, H / 2, W / 2)`\n",
"\n",
" Examples:\n",
" >>> input = torch.rand(1, 2, 4, 4)\n",
" >>> output = kornia.transform.PyrDown()(input) # 1x2x2x2\n",
" \"\"\"\n",
"\n",
" def __init__(self, border_type: str = 'reflect') -> None:\n",
" super(PyrDownFix, self).__init__()\n",
" self.border_type: str = border_type\n",
" self.kernel: torch.Tensor = _get_pyramid_gaussian_kernel()\n",
"\n",
" def forward(self, input: torch.Tensor) -> torch.Tensor: # type: ignore\n",
" if not torch.is_tensor(input):\n",
" raise TypeError(\"Input type is not a torch.Tensor. Got {}\"\n",
" .format(type(input)))\n",
" if not len(input.shape) == 4:\n",
" raise ValueError(\"Invalid input shape, we expect BxCxHxW. Got: {}\"\n",
" .format(input.shape))\n",
" # blur image\n",
" x_blur: torch.Tensor = kornia.filter2D(\n",
" input, self.kernel, self.border_type)\n",
"\n",
" return F.avg_pool2d(x_blur, 2,2)\n",
"plain_pyr_fix = [timg]\n",
"for i in range(4):\n",
" plain_pyr_fix.append(PyrDownFix()(plain_pyr_fix[-1]))\n",
"\n",
"plt.close('all')\n",
"for i in range(len(plain_pyr_fix)):\n",
" plt.figure()\n",
" plt.imshow(plain_pyr_fix[i].data.cpu().numpy()[0,0])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment