stylegan3/Stylegan3.ipynb

3760 lines
16 MiB
Plaintext
Raw Permalink Normal View History

{
"cells": [
{
"cell_type": "markdown",
"id": "7b2af5f0-e633-450d-86de-4ce7e6e4c7c2",
"metadata": {},
"source": [
"# Introduction\n",
"\n",
"This notebook contains some experiments for _This Place Does Exist_. It provides a preview of generating images using StyleGAN3, projecting images into the latent space of the network, and using these projections to find directions of various arrondissements, or to find other clusters. These points were visualised using PCA and t-SNE. Both not very successfully.\n",
"\n",
"In the end, the conclusion is that images projected back into the network seem to yield rather fuzzy images. To bypass this, we used an image detector (in [ImageDetector.ipynb](ImageDetector.ipynb)) to classify images, instead of using the projector.\n",
"\n",
"## To do\n",
"\n",
"* ~~Interpolate images using their w~~\n",
"* ~~Generate images with different w~~\n",
2023-01-12 16:52:32 +01:00
"* ~~find directions for particular categories (see [Learn Directions](https://towardsdatascience.com/stylegan-v2-notes-on-training-and-latent-space-exploration-e51cf96584b3) )~~\n",
" * do this for rue/avenue/boulevard, and arrondisement\n",
2023-01-12 16:52:32 +01:00
" * ~~run PCA on the points and colour them by category (arrondisement/street type)~~\n",
" * ~~try t-SNE instead of PCA~~\n",
"* Examine more hyperparams in `train.py`"
]
},
{
"cell_type": "markdown",
"id": "51f5fba8-3371-420c-8aff-16044aa12789",
"metadata": {
"tags": []
},
"source": [
"# Select the network"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "cb59de49-aa65-4a3f-8f0c-412ff8580a27",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from tqdm.notebook import trange, tqdm\n",
"import json\n",
"import os\n",
"import tabulate\n",
"from PIL import Image, ImageDraw\n",
"import gen_images\n",
"import numpy as np\n",
"import io\n",
"import ipywidgets as widgets\n",
"import datetime\n",
"import matplotlib.pyplot as plt\n",
"# %matplotlib widget\n",
"from pathlib import Path"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "075abcd1-e8c8-47f6-b2e3-22e4817b0e38",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"you are here: /scratch\n"
]
}
],
"source": [
"print(\"you are here:\", os.getcwd())"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d92def3d-3004-4f9a-a0ef-f18447712b38",
"metadata": {},
"outputs": [],
"source": [
"out_dir = Path(os.getcwd()) / 'out'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "281457c9-e969-495f-9d50-4f1c31e82035",
"metadata": {},
"outputs": [],
"source": [
"%run ThisPlaceDoesExist.ipynb"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "668602ea-6712-4f4f-bbc9-4a9a37f9da70",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"<table>\n",
"<thead>\n",
"<tr><th>idx </th><th>nr </th><th>dataset </th><th>conditional </th><th style=\"text-align: right;\"> resolution</th><th style=\"text-align: right;\"> gamma</th><th>duration </th><th style=\"text-align: right;\"> iterations</th><th style=\"text-align: right;\"> last_fid</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"<tr><td>0 </td><td>00001</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8.2</td><td>3 days, 10:34:26 </td><td style=\"text-align: right;\"> 2600</td><td style=\"text-align: right;\"> 502.277 </td></tr>\n",
"<tr><td>1 </td><td>00002</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>5 days, 3:43:08 </td><td style=\"text-align: right;\"> 6560</td><td style=\"text-align: right;\"> 190.346 </td></tr>\n",
"<tr><td>2 </td><td>00003</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>18 days, 13:01:50</td><td style=\"text-align: right;\"> 25000</td><td style=\"text-align: right;\"> 42.9661</td></tr>\n",
"<tr><td>3 </td><td>00004</td><td>paris3 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>15 days, 16:13:20</td><td style=\"text-align: right;\"> 22800</td><td style=\"text-align: right;\"> 15.6691</td></tr>\n",
"<tr><td>4 </td><td>00009</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>0:00:00 </td><td style=\"text-align: right;\"> 0</td><td style=\"text-align: right;\"> 549.99 </td></tr>\n",
"<tr><td>5 </td><td>00010</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>50 days, 3:15:24 </td><td style=\"text-align: right;\"> 15200</td><td style=\"text-align: right;\"> 33.2466</td></tr>\n",
"<tr><td>6 </td><td>00011</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 10 </td><td>5 days, 18:48:04 </td><td style=\"text-align: right;\"> 1760</td><td style=\"text-align: right;\"> 200.356 </td></tr>\n",
"<tr><td>7 </td><td>00014</td><td>paris3-cropped-256 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8 </td><td>2 days, 20:08:22 </td><td style=\"text-align: right;\"> 4160</td><td style=\"text-align: right;\"> 20.1699</td></tr>\n",
"<tr><td>8 </td><td>00016</td><td>paris3-cropped-256 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8 </td><td>12 days, 16:48:33</td><td style=\"text-align: right;\"> 18560</td><td style=\"text-align: right;\"> 18.1838</td></tr>\n",
"<tr><td>9 </td><td>00022</td><td>VLoD-cropped2048-scaled1024</td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>0:00:00 </td><td style=\"text-align: right;\"> 0</td><td style=\"text-align: right;\"> 539.38 </td></tr>\n",
"<tr><td>10 </td><td>00023</td><td>VLoD-cropped2048-scaled1024</td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>1 day, 13:17:19 </td><td style=\"text-align: right;\"> 480</td><td style=\"text-align: right;\"> 201.189 </td></tr>\n",
"</tbody>\n",
"</table>"
],
"text/plain": [
"'<table>\\n<thead>\\n<tr><th>idx </th><th>nr </th><th>dataset </th><th>conditional </th><th style=\"text-align: right;\"> resolution</th><th style=\"text-align: right;\"> gamma</th><th>duration </th><th style=\"text-align: right;\"> iterations</th><th style=\"text-align: right;\"> last_fid</th></tr>\\n</thead>\\n<tbody>\\n<tr><td>0 </td><td>00001</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8.2</td><td>3 days, 10:34:26 </td><td style=\"text-align: right;\"> 2600</td><td style=\"text-align: right;\"> 502.277 </td></tr>\\n<tr><td>1 </td><td>00002</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>5 days, 3:43:08 </td><td style=\"text-align: right;\"> 6560</td><td style=\"text-align: right;\"> 190.346 </td></tr>\\n<tr><td>2 </td><td>00003</td><td>paris3 </td><td>True </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>18 days, 13:01:50</td><td style=\"text-align: right;\"> 25000</td><td style=\"text-align: right;\"> 42.9661</td></tr>\\n<tr><td>3 </td><td>00004</td><td>paris3 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 2 </td><td>15 days, 16:13:20</td><td style=\"text-align: right;\"> 22800</td><td style=\"text-align: right;\"> 15.6691</td></tr>\\n<tr><td>4 </td><td>00009</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>0:00:00 </td><td style=\"text-align: right;\"> 0</td><td style=\"text-align: right;\"> 549.99 </td></tr>\\n<tr><td>5 </td><td>00010</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>50 days, 3:15:24 </td><td style=\"text-align: right;\"> 15200</td><td style=\"text-align: right;\"> 33.2466</td></tr>\\n<tr><td>6 </td><td>00011</td><td>paris3-1024.zip </td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 10 </td><td>5 days, 18:48:04 </td><td style=\"text-align: right;\"> 1760</td><td style=\"text-align: right;\"> 200.356 </td></tr>\\n<tr><td>7 </td><td>00014</td><td>paris3-cropped-256 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8 </td><td>2 days, 20:08:22 </td><td style=\"text-align: right;\"> 4160</td><td style=\"text-align: right;\"> 20.1699</td></tr>\\n<tr><td>8 </td><td>00016</td><td>paris3-cropped-256 </td><td>False </td><td style=\"text-align: right;\"> 256</td><td style=\"text-align: right;\"> 8 </td><td>12 days, 16:48:33</td><td style=\"text-align: right;\"> 18560</td><td style=\"text-align: right;\"> 18.1838</td></tr>\\n<tr><td>9 </td><td>00022</td><td>VLoD-cropped2048-scaled1024</td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>0:00:00 </td><td style=\"text-align: right;\"> 0</td><td style=\"text-align: right;\"> 539.38 </td></tr>\\n<tr><td>10 </td><td>00023</td><td>VLoD-cropped2048-scaled1024</td><td>False </td><td style=\"text-align: right;\"> 1024</td><td style=\"text-align: right;\"> 32 </td><td>1 day, 13:17:19 </td><td style=\"text-align: right;\"> 480</td><td style=\"text-align: right;\"> 201.189 </td></tr>\\n</tbody>\\n</table>'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"tabulate.tabulate([{\"idx\": i, **run.get_summary()} for i, run in enumerate(runs)], tablefmt='html', headers=\"keys\", colalign=(\"left\",\"left\"))"
]
},
{
"cell_type": "markdown",
"id": "d6c1da91-882b-4963-b908-50edef54265e",
"metadata": {},
"source": [
"Pick a run from above, and assign it to `run`."
]
},
{
"cell_type": "markdown",
"id": "1bcf6ea7-4548-42e2-8c43-f0c41d9fbb81",
"metadata": {},
"source": [
"## pick a snapshot"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "135353a2-f621-4634-b3b5-d768688c8513",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Picked snapshot 18560 from 00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8\n"
]
}
],
"source": [
"snapshot = runs[3].snapshots[-1]\n",
"snapshot = runs[8].snapshots[-1]\n",
"\n",
"print(f\"Picked snapshot {snapshot.iteration} from {snapshot.run.id}\")"
]
},
{
"cell_type": "markdown",
"id": "09d6bc27-4dae-40f9-9862-983f75ea848f",
"metadata": {},
"source": [
"# Generate some quick random images using network (deprecated)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e23af7b5-567c-4748-a65a-96235eb2a59b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<module 'gen_images' from '/scratch/gen_images.py'>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# rerun this cell after changes to gen_images.py file\n",
"import importlib\n",
"importlib.reload(gen_images)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "21b82834-a866-4058-9631-bd691b8c215f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading networks from \"training-runs/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/network-snapshot-018560.pkl\"...\n",
"warn: --class=lbl ignored when running on an unconditional network\n",
"Generating image for seed 0 (0/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0000-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 1 (1/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0001-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 2 (2/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0002-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 3 (3/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0003-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 4 (4/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0004-trunc1.png\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nIz9ebB1SXIfhmVmVZ1z7r3vvu1771u7++tl9pmeGQwwAwxA7BhsBMEFIAmLIi2KFinJEXYEHZYdpsgAlzAZpsxgWJZFhi2RlKmgKFKiaIJYCRAYDDjAAJh9pnt63/vbv7fd5Zxa0n9kbee+1yBv9/feffeeU6cqK5dfZmVl4etvvIGIAAgIwAAIwAwAiAjpg3OveDEDIyDLJyCX5++RgbF8NXoxAwDLI+Rn+pTlJT2Sy1KTDAwMgAjBh8BMiIgAzIi47teXr1z5n/7Z//JX/upf++S3fevnP/+F977nPSGwCvjWvVvz7e07t29vb+8YrZ0Px8dHbWPWw/DI5Rtni7O7R/caY6xzBweHhLharU7PTieTyfHxsXNuGIbdnZ29vT3vPANu7+wAh7t37wLzzs72yclx3/dN0/TDELyfbW21bXfnzh3nLBE1TXPj+o0HDx/+5b/0F77j23/fyclJ23YMiEg8pseIDjXJcHSVDJ+DXA+F8gyAjACBQYgK8doLCC9TIzczM8Tr01zId+yttW3XOu+JlDZ6tTz7J//kf/qt3/ocKVqt1s89940PvP+DxycnjIiADx8+4OARcRiG/b09rfTxyQkqcs4Rqe35nDkww2K5Wq+XiDjf2jaNWS2X8/n2w6MH1trtne0WzfWr14Dg+RdfYISDS5deff31X/qlX2i06tc9IQUARGQGlI5m6owGKl8yMxMSICIgIAbmwp+F7KjPkSj/qK4aS0LkfHl3nsZQCMxYJGMsIhe/mKtn8ujyd7qRE+sQkWkaZ50dLBG++NJLIQRtzPb2dt/3Z4vFpYPDO3duTyfTk5OTrmu7rnvpjVcUEQKu1+t+GE6Oj7Q21tqz01OtFQJqbRrTdJPJvXv3mqbZ2trp+94765xbLM6Wq4UiQooUR0QOwVkbQgghAGRORWY+z43voFzO0VxGfqEuKU2MyIMA1fMSUculfME99TM4qZ6kGYkwcGi71hgDiMaYYbB9369Wy5OzxUc/8hFF+OUvf+ny5UMAeHh0BIjOuStXrrz11luTyWTd9w8f3J9MZ23bOueMaQDh3r17y+UiMLdtt1wud3f3Ht67/+xLzznn5N7B2r4fiAiRcmdHHBJ5DbCQF8dD/re/KBOC+fdiMvm5IURjFq0uqv5ksSebzTFA/Iqr3p5XWaPHp36Ov5AbkZknXYeIxpjJZOqs7fvh+OERAB4eHgLD0dGRd361WvngFREinp6cLhZLYzQRIYDzfhiGYRi01sBgjCHCrusUKWvtcrFsu7ZpmpPTk7PTU+/9pJsQESEprZMiZgaxYCj0JEXSt6yszo2ML5yuPCmRqJzoz2N6cKEPp6/PzReOnsuFhhfMYHlhUl+AiN4HDoyERIiIiIAIhOSdWy5Xi+Wyacx8e1trvVyulsulHWwIYT6fE5IdBiLSSkVdAIyIRuuu7bz3Q9/LjXfv3zs9OV0tV4vFQmvdmEaIw4nRAbiI9TliVlQZf/5O9hQAAChTOH3/7y48jJA6dk4u6sdHtoiTM/p2cxjnH55R2aaq23gKMnPbdaJ6EdFaC8whcAihaZrSCCKRYgBjDCIwB0QiRZBRH7NSSilljBmGARGJiEPBZwgo80dEzIyESqlMvBGSQRADMeZxrN8U7bNJm9jCv8Vmnrvj97w8XoK/5zSfYxgERGuHYeiFAkoRAPgQ4qA5KKVCCEopUgqAG2Occ3KzD8F7H0Kwznrv5UNrrbXWe8/MgmaV0kQkT2vaVikFCMGHiGQSZ2+ov/PMFz+4mB8vGLSuTetFiOZiKcOEcM5dPX52BZsQa/uVP88YFLJyP2foMyy7sOnYRmCedB0DrPveWttNpogwmU235vPFchlC2Nvfx4cPSdFqtWJmBrh8eBkQrLOKVAhMRG3Taq3v379nrW27zjnHwMMweA6Xdnblkds729ZaO6ytHbz32mgEYA4AIOJBhN5z9KEwCmfd3xoPFrSO74iJan7F81RIH43tZ27t3yYS2YkYE31jmlbL1XK5ttYSkTGGQ1itlsBsjN7d2Tk7PWWGB/cfTGezra150xgk6iaTu3fvtk0729oahh6RtNJKKaW0MUZpHZi3t3f6fr1YnCHRpUsHIXhnrTbGOZ+FH2u1P7Zk5e/xVxWz5SvHo0usSDWFMitWpuACoRlN5TtdWbF+5n58pxnhzPx84RPfuQfyBxORHexkMum6rmmayWRyenrywfd/4LEbj9y9cyd4v7+3hwzT6XQ+355MJs651Wp1sH+wv7O3XvfOu65r51tzRGzbdntnxzoLgEpp78N8e37l8uX5fPuVV199/vkXvPNbW7Omm3aTqWkaZg4cOLC8aZrGGIMJJigiYAghjJwgHA0DI83HrlzmX4zf4Zijx22Mpz+RNd+F56i+8eEFcyJgDgAAQgjL5fL4+Gi9Xi+XS0RCQmMabZpLlw5eefU17/0TTzxxePny6ckpIhweHlrrloulMLtS6sqVq/Otrd4ODOi9Z4aDg4Mrly83jSGiyWRycny8XC6/6emPPvXkU6+99rrWej6ft23jnGMY9/JcXzeRy5iD3gHasyhwKp706GYe/xzxZfo7wdECOrnoeObyMyvxiySFUwPnwNHG1RcLGMYoFFprjdaCO40xk9n00avXru0dIMLW9vbTTzx5OJl4QLvuDy9dunHjBilqlJ42E1R0eHA4394+Pjk5Pj45Wyymk8nNm4+HELRSy+Xy9PT06tVrfd/ffOzmN330I6t+WD588F0ffu/WbDrpuknXhRAY2EsYxA5N0zRNo7VWWmutETGE8HvO0EWfwqa2P6fENslTGcqLm8R6shE25vTcs+OngRmY79y5+9bbtxAx+ECEs9lstVzuzmdf/vJXfvO3Pnf/wYOmaabT6WKx2NnZvXp4FQGJ6OqVK0+/+323b93+8le+slqt3/Pku64eHr77yaeuXL784gsvHh0d371z9zs/8k2P3LixXC535zvN4B7ZP3j85qPDMGzPt+fT6cnJiXOugIB3em1q5QtInIKKXI+QxM0Y8bgIfnK7eDRDGcdz+osLyRkSTt7oAG/8X15Vv873uJKJTUyH5y5hANM21jlrXdM0w7r/+ovP31+dLZcrTfRvvvTFt09Pt2dT07ZnZ4v1eqWU6rr28uXDxpj5fOv46Hh7vv30h5+edJOzxWJra2sY+n4YiIhInZ6dPnx4NJ1NF8vFbNIF0x6fnn3w3U/2g93a2ppMJkQkU75arRBxMumISLgfEbwPhQzj8YxFny+4qJq8sTd1kQxUH+dpOUfWSuuk1zmtGi2VzKX37vj4xA6D0XoynRwcHFhrv/mbP7K3t9u27Z/89//EwaWDu3fvAXPTNAxwfHa6v793+/btu3fvfvFrX7l27dp3fPLbF4uFJvXuJ5+6cnj5/v37h5cvv+c97zk4OPyNL3z+zTffXK2WN25c770DrS5duqQUAcL9o+OmMUGoBxcAtfOMEZki83qlkgs3F8KxrtqtOap61PjtOUpy5MWRQ8BQB2o5Q92NrkdgxJycimpK061JXrN1KUBqM3DVmIaZT8/Otra2ptPp88+/YK2db29fu3Zte3f30qVLX3/2mUv7l+bz+dHxw53tnWdeel4rZZRerdZd2+5sb7/66qv7e3sc/Gq1unLl6nQ6u3Tp0tnZ6cOHD4dheOP1N5RWZ6cn169f+/SXnjFffW5vd7sfhslkopXmEBCwMSYwI+phsAAQODCD966m5nn9LM4DwAVU31QPef7SYkxaiok03OBr+Wiz6ZG1yF9yuaEyx4potV6GEHZ2tu/dv98oxcyTyeQXfvGXu2764ac/ZLSeTCZ379174okntre3X3vttWGwb7z51nve827n7L2799/3vvc9eHD/W775mz/zbz774MF9APjExz/+5JNPfOWrX/32T37Hv/iZf/GRjzztnH/2hec/8fGPP/fGa7/927/7Iz/yw4vlSrSJUsoOacgjdM85QoLV28w4XEweI29QJw5RJ0LVRAOu8WFpJb5lLE1V0LTwJ+KI4P8Ozlj
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 5 (5/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0005-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 6 (6/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0006-trunc1.png\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nIz9WawtWXoeiP3/GmLc85nvfG/mvXkzK7NmJmsgq0iJalJUU4Jalt3dhmEYaDdsA20DfjHgB8Pyg98MGIb7pSG0IKshuNWSujWQEqtYZJFVZM1DZuV85/FMe589xriG3w8rInbsc2+VO/LmOfvsHTtixVr/8P3jwn/wD/4BIjLGhOBcCGM1ACIya4lx/vTB3b/7t/7G7duvPXj4KM+y/+qf/LMbN2/2OiEAIIKQstPpZFk2my08z+MMjDFAVivFGa5WK70YXz7Y++F79/Z2tuNOhzM+nU6n0zOttRBCSuFJKT1PCCG4EFIwZFEcdaIYGQrOPc8LfH8wHF64cNDt9/RyMUCbC68jcl/yf/Bf/rM/+c73/v7f/QOlzW4c/se/97uF0sskFdIvCYgx4AyQEQIiA4CyVGBxvloJYCJPvvXTn56lsMzyRZL1hsPlann/zt0iT40xAMAYJ2SXLl958823CBAAgYgAGCIiAri/yFoyxhhrAIAhAlmltDZGa53l2XyxUKo0Za7ybNTvjgJ54/KFT924enl/b393JwwDDaCtyctSWY0MAewqSYqinMyWz04mSZYVZamtYQiEgGAFQ1/KgHHPCxhikmWT2fx4PH745MnRyelsNsvy3Pf9ne3tV27ceOO1V3d3drQq/U7nbHL245+/K6WnjTbWIsJ4PN7Z2SmK4vjo2Pd9QtDanE3OhoPh5cuXFosFYyi4GE/G1tJyuWScDQdDzrmxZrVcWmuNMdYaRMYQGWdbo+3j4+MgCABBKdXv9bUqV8lyOBwK4a2StNOJtTbz2bzfjUulLFljLBEhIiJDBM5FHIWIaK0hImttlmbAWBRFy+WyVIoIrDHWWksERIgohAiCwA+C3Z0dzxOhwP/jf/G/Y4jGGME5Y265EAAAABGJiIAePHgEANevXQEiwRhjiIwhY4whWEBARASGSNYSURRF2hjOeVEqbawUwl0REYIgQIQkSdw7jvrJWrImjuL79+/99u3LF/f3Pnx8vLe7q7Sezeez+UwpLQQXggshhBCcc84Y4xwA/MAPg5CIENCN3g8CP/ABIPB9kFu6KDp2IQD/L//v//Z7P/rpf/L3/k5Wqtu723/nd/7a5Oys0FZIXxEAZ8gYIUPGOWeqVMTY1s5OOp0fJanw5Q9+/vOffHjXj0eGsN/vh2EwHo+zLNNKIQABkAVDRkrJuSiVruauXi43owRERADAGINqjrnncw8AiLrd7v7unjGmVGWpdJKsns3mjz58/Ec/eDfwxG43euXyhbduvXL10oWDvf1ur2eRabLC72hjt3bM9WvX8jyfzZfH48l4Oi1UqY0xRGmhEzSU5pIxKcTW1uhgf+/tz35mmWXzxfL49PTew4fHJ6d/9b3vffs7343jeDQY9AeDq5cvDgejZZoaQ9LziWwUdcqizLIs7sSeH5ycnBBRt9ftdDtZliJDIQQBWTKe51+4eLBarhhjQeAfnxznZcEZ00YjADIAxCzLsjyN4oghEsJiueCCIUEYRbPpvCjVxYsXjbFFUYRhoLQuikJI6XnSWmuMBSBjyZpiZTWRRQTOGOe804kAGeO82+msksRai56EaoGsJTLGZHm+XK2KvCAyr924gghKKUc8bk3cGiGArZaQjDHNCY4BgLlf9doiIDAwyjDETqejteGc50VhrOWcuyX3fM/3vflsrpVmnJO1CNb3PY6IVj569Ljr8//g07c+OBpfuXK5G8dPnz2fTWdlWTakL4XgQjDGGBcA4Ht+FERABIicMQAQQnq+T5aMsdYYYiywK270//Uf/sufvfPe3/n9350tV7/+yo3f//rXjk4PrQUUgSIAzoExQMaFIABjbG8w6HTjhw8f3Ln74OLVq/v7O7/4+MM8L0RogzBijAnpRVGktQIAzpglQgSrjdGGgCraBqTqBYDjkuZYvybbettYCwx9P/A8iqN4b3dfa1WWZZqm48n4Ox89+caP3gt9udOLbly59JnbN69evniwvz/q9YkxZUxe5L3h1sVLF4uimM9np5Oz07PpKk2tMRpRE2hlFWmT5gjEOY/j+HMH+1/4zKezvJjP56eTyZ379w9PTu7du/vBhx9IKTudruf5URz7YSCFsJYQRRgGYRjEV6/5vpdl+XK5QMYkAgF5UoZhuFqtgsjf3t1azBaLxWJra+v09ERr7YSmENKJ2jRNB4NhHEee729tjebzmVYlAAkpLNFyuVwlCWc8ikKy1lhCSwK5EMLa0hjj+x7nDKw1VhdFkWsDCJwxISQyRgSMISJ32oYxzjkDqKSSUjqKoiRZxXHs6JusBQAnW5u1cwLLWgsA1lprLQIIhogITuQjVBoAEBmgtaUQPIojh1iyLGeM+b7HGfi+5/leskpWq4Qxbo0Vkvmer8riZDJOlvMw9P/T3/pKxwONuLu9c3Z6Op1OsywTvCX7hXCPAgCe50VRBAhu3ADIOJdSGm1KVSpVLpKsI0qp8v/bf/2vfv7uB7/7139rtlx9/Y3XfvvtXz8+PUYiZMICIueEjDGBnGlrwzDs93pHJ8ff/Pa3j04nr99+bTAYADAiMha2t3f9IDBEgnOGaIz1hGCcgbUICGCACMHNR0X67s/qD0L3ccUSTs0SNQCJANwKNUKLcR5FURzHe3t7Wus8L5I0GY9Pv//xk2//5H3fEzuD7s2rl77w5hs3rl092N8LOoFF1Eb1BsP9/YO8yPIsm82Xk+nsbL5MsxwYcl8aa4QQSqunR8ecoSdl3Im3toaffvNTRVnO5/Oz+fyjT+6OJ+Px5Gw2PWOcS8+Lo8gPQ8/z8ixHRN/3gCgIgk4cI+JkMp5PZ/v7+524e3J6LD3pe/7h4fM9tn/xwqU0TdIsy/PMaA3EAchYK6TI0ixJ0zgKd7e3tVLDrSEycXJ8WhTl7u5OURZHx0dAYC3lRbFcLhERGeOMeb5fFCXn6AkZRZHRWmltjLHuH4G1ljFmgUAjIjDGGWecCyEEgAgDXzDcGg6sMZxzawxnzMkyhsyCk2NkLTkCsw4MAQmGWKEep9sRmp/GGN/zfM/P8wXnPMtzz/elFKostDHlcpUkKQBYawAgCPw8TR4+fOAx8xufufXVN1/r6myVL4NeH9Ps+PgkyzPGsKZ+LtbUj1LKOIqc+hGCAwIylEJqo4uyQIarNBtuDSDP/u//+F/9/L0Pf++vf32RZr/3uTe/8tnPnoxPpeClBssQGAfGuRCWiAB3d3byPPvmt//83tPDTm/Lj7bK0gCCELzf68Vx3Ol0sjy3BLamWqcYHZWzGgoiAkMgAEZOOdYHAhIhANXs4Vig+RiRiJCAgAjchFuyiO4DxlgcR3Ec7e3uGq2zosiybDqd/uDjJ9/+8ftR6O/1OzeuXX7r1iuXL1082N/txr1up2eM3touL5dlURR5lo/PZuPpbL5cFapkTApJRFZZUmk6W644QylEEASvbo3eeO01ZGw2X0zOzh49efrk6dPJ2dnx8+fIEAB934/jOIqibrc3ny2t0f3+II7i5XLZ6XRHwy0iyrJMCHl0dKiVvnjp4oggTZMsy8qyLMpya9C3xviBNxgOizyzxnDOQt83FjwpOeOdbmc33Io7oZPBeVHkeZnneZEXZVmuVkvOcG935/mzZ0qpXq8npRScW2ROhFgiow0RIBIRWKutAY2qZMwYCnyvyDIia5ywLoqzyZnn+2EYEpCU0vM8qIQVCiGMsU4jCEQABGcGACBz4g4ZIlprfd8TUiqtOWNJmqdJmmeZUkVZFg3RGGM6cZwsl0dHz29c3P+7X3792ihOk7QoUkRUzEtWp/P5DJFJyTivxD9jjDPuRhNHMWMMgLgQTuAKIZXW2hjG+Ol4MtreHp+O/6v/+p8+e374O1//6iLNfvet21/9zKcOxyee9JUhi4yYQC4458raTqfX7UTvfvDBD995j2TkxaNPHjxZzBefeesPet2O0ToMfQAyxlAF+NYioJIGLRDZgJ8W7behDwGd/wgRHPJEJASkyrBoGKelGgAJCBCDIAj8YDQcEVBZqjRNJpO
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 7 (7/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0007-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 8 (8/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0008-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 9 (9/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0009-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 10 (10/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0010-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 11 (11/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0011-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 12 (12/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0012-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 13 (13/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0013-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 14 (14/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0014-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generating image for seed 15 (15/16) ...\n",
"/scratch/out/00016-stylegan3-r-paris3-cropped-256-gpus1-batch32-gamma8/018560--seed0015-trunc1.png\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for z, img, filename in gen_images.generate_images(\n",
" snapshot.pkl_path,\n",
" gen_images.parse_range(\"0-15\"),\n",
" out_dir,\n",
" truncation_psi=1, # Note the change in psi\n",
" class_idx=0\n",
"):\n",
" print(filename)\n",
" display(img)\n",
" img.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "fa108dfd-5f91-4c7e-a489-96adba41744a",
"metadata": {},
"source": [
"# Load generation network"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "5c222012-4309-428c-ae55-ec1b6fecfbbf",
"metadata": {},
"outputs": [],
"source": [
"device = torch.device('cuda')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "dfd92a04-cfe3-4124-b08d-d353551ed397",
"metadata": {},
"outputs": [],
"source": [
"psi=2.0\n",
"# all_seeds = gen_images.parse_range(\"0-2\")\n",
"all_seeds = list(range(0, 3))\n",
"class_idx = 0"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "9e5ba0a7-a909-4726-b90f-74d429ab9e8f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 2]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_seeds"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "6f6ac121-a70b-4a00-a65b-012fcad41562",
"metadata": {},
"outputs": [],
"source": [
"G = snapshot.load_generator(device)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "7bde610e-7ee9-4bfa-96ef-e480e2bb7d4a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"warn: --class=lbl ignored when running on an unconditional network\n"
]
}
],
"source": [
"# Labels.\n",
"label = torch.zeros([1, G.c_dim], device=device)\n",
"if G.c_dim != 0:\n",
" if class_idx is None:\n",
" raise click.ClickException('Must specify class label with --class when using a conditional network')\n",
" label[:, class_idx] = 1\n",
"else:\n",
" if class_idx is not None:\n",
" print ('warn: --class=lbl ignored when running on an unconditional network')"
]
},
{
"cell_type": "markdown",
"id": "669c4366-cd3d-41e1-a25b-58040fdb4429",
"metadata": {},
"source": [
"## Interpolation tests"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fe5e2c95-572f-42e6-bdb0-7b0d8c4087ff",
"metadata": {},
"outputs": [],
"source": [
"print(\"interpolating images\")\n",
"fn = out_dir / snapshot.run.id / f'{snapshot.iteration_str}-interpolation_test_seeds0-1-8-0_psi{psi}.mp4'\n",
"def interpolation_test_gen():\n",
" for idx, img in interpolate(G,device, None, [0,1,8,0],None,'w',psi,label,100,'const', out_dir / 'test','slerp',None, None):\n",
" yield img\n",
"generator_to_video(\n",
" tqdm(interpolation_test_gen()), \n",
" out_filename=fn,\n",
" fps=10, frame_size=(256,256), quality=8)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6d6fb9d6-215c-43e4-b199-90f6cca2411f",
"metadata": {},
"outputs": [],
"source": [
"video_to_widget(fn)"
]
},
{
"cell_type": "markdown",
"id": "247194de-37cd-4c11-a3ad-c270a52e8f23",
"metadata": {},
"source": [
"### random seeds to zs to ws"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "fe33e5cd-659e-4e2a-92e8-22bc4a8677ac",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size of w torch.Size([1, 16, 512])\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# modify a value on a single axis in w\n",
"\n",
"axis = 10\n",
"zs = seeds_to_zs(G, [8])\n",
"ws = zs_to_ws(G, device, label, psi, zs)\n",
"print(\"Size of w\", ws[0].size())\n",
"orig = ws[0][0][0][axis]\n",
"for i in range(-5,5,2):\n",
" ws[0][0][0][0] = orig + i\n",
" img = w_to_img(G, device, \"const\", ws[0])\n",
" # img.save(out_dir / snapshot.run.id / f\"{snapshot.iteration_str}-\" )\n",
" display(img)"
]
},
{
"cell_type": "markdown",
"id": "fbe72b14-109e-4bb6-8dae-33c8e21bda18",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "f67309c9-fab0-48bc-b65c-28975a214be6",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "20568609-453f-40f3-9470-25e9e3b7eb51",
"metadata": {},
"source": [
"# Project an image to the latent space"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "9efa5fe5-afbb-4713-bf42-9fc50a5a14af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000000/proj.png', 'src_img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000000/target.png', 'src': '/scratch/datasets/paris3-cropped-256/00000/img00000000.png', 'npz': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000000/projected_w.npz', 'loss': None, 'dist': None}\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"pbaylies_projector.py:339: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.\n",
" target_pil = target_pil.resize((G.img_resolution, G.img_resolution), PIL.Image.LANCZOS)\n",
"\n",
"{'img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000001/proj.png', 'src_img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000001/target.png', 'src': '/scratch/datasets/paris3-cropped-256/00000/img00000001.png', 'npz': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000001/projected_w.npz', 'loss': '54.57', 'dist': '54.57'}\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"pbaylies_projector.py:339: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.\n",
" target_pil = target_pil.resize((G.img_resolution, G.img_resolution), PIL.Image.LANCZOS)\n",
"\n",
"{'img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000002/proj.png', 'src_img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000002/target.png', 'src': '/scratch/datasets/paris3-cropped-256/00000/img00000002.png', 'npz': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000002/projected_w.npz', 'loss': '29.50', 'dist': '29.50'}\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"pbaylies_projector.py:339: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.\n",
" target_pil = target_pil.resize((G.img_resolution, G.img_resolution), PIL.Image.LANCZOS)\n",
"\n",
"{'img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000003/proj.png', 'src_img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000003/target.png', 'src': '/scratch/datasets/paris3-cropped-256/00000/img00000003.png', 'npz': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000003/projected_w.npz', 'loss': '18.03', 'dist': '18.03'}\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"pbaylies_projector.py:339: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.\n",
" target_pil = target_pil.resize((G.img_resolution, G.img_resolution), PIL.Image.LANCZOS)\n",
"\n",
"{'img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000004/proj.png', 'src_img': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000004/target.png', 'src': '/scratch/datasets/paris3-cropped-256/00000/img00000004.png', 'npz': 'out/projections/00016_018560//scratch/datasets/paris3-cropped-256/00000/img00000004/projected_w.npz', 'loss': '17.63', 'dist': '17.63'}\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for img in snapshot.run.dataset_iterator(max_images=5):\n",
" '''img is dict(img, label, filename)'''\n",
" projection = project_img_to_z(snapshot, image_filename=img['filename'], steps=1000, replace_if_exists=False)\n",
" print(projection)\n",
" img1 = Image.open(projection['img'])\n",
" img2 = Image.open(projection['src_img'])\n",
" ## Create image widgets. You can use layout of ipywidgets only with widgets.\n",
" ## Set image variable, image format and dimension.\n",
" preview = image_grid([img1, img2])\n",
" display(preview)\n",
" #"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "758f679a-479e-442c-ab83-ae0c83c662c8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"pbaylies_projector.py:339: DeprecationWarning: LANCZOS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.\n",
" target_pil = target_pil.resize((G.img_resolution, G.img_resolution), PIL.Image.LANCZOS)\n",
"\n"
]
},
{
"data": {
"text/plain": [
"{'img': 'out/projections/00016_018560/datasets/paris3-cropped-256/00000/img00000107/proj.png',\n",
" 'src_img': 'out/projections/00016_018560/datasets/paris3-cropped-256/00000/img00000107/target.png',\n",
" 'src': 'datasets/paris3-cropped-256/00000/img00000107.png',\n",
" 'npz': 'out/projections/00016_018560/datasets/paris3-cropped-256/00000/img00000107/projected_w.npz',\n",
" 'loss': '59.96',\n",
" 'dist': '59.96'}"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# project_img_to_z(runs[5].snapshots[-1], 'downloads/paris3-1024/01-AvenuedeL_Opera5022.JPG')\n",
"project_img_to_z(runs[-1].snapshots[-1], 'datasets/paris3-cropped-256/00000/img00000107.png')"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "5c1e4221-d46c-4528-8e5f-3441ed75e68a",
"metadata": {},
"outputs": [],
"source": [
"image_filename = \"datasets/paris3/00002/img00002019.png\"\n",
"#project_img(snapshot_pkl, image_filename)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "804e1b23-eece-4b50-91d9-f2063df70826",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'run_data' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_1/1907269631.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m images_to_project = [\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;34mf\"datasets/{run_data['dataset']}/00000/img00000004.png\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34mf\"datasets/{run_data['dataset']}/00000/img00000044.png\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34mf\"datasets/{run_data['dataset']}/00000/img00000773.png\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34mf\"datasets/{run_data['dataset']}/00001/img00001000.png\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'run_data' is not defined"
]
}
],
"source": [
"images_to_project = [\n",
" f\"datasets/{run_data['dataset']}/00000/img00000004.png\",\n",
" f\"datasets/{run_data['dataset']}/00000/img00000044.png\",\n",
" f\"datasets/{run_data['dataset']}/00000/img00000773.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001000.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001020.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001070.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001054.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001141.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001198.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001300.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001415.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001469.png\",\n",
" f\"datasets/{run_data['dataset']}/00001/img00001477.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002070.png\",\n",
" f\"datasets/{run_data['dataset']}/00003/img00003001.png\",\n",
" f\"datasets/{run_data['dataset']}/00003/img00003139.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002006.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002016.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002192.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002203.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002209.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002211.png\",\n",
" f\"datasets/{run_data['dataset']}/00002/img00002225.png\",\n",
"]\n",
"\n",
"#[a for a in tqdm.tqdm(images_to_project)]\n",
"\n",
"projections = [project_img_to_z(snapshot_pkl, img) for img in tqdm(images_to_project, miniters=1)]"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "4d761cae-c8b3-4c98-8fba-aab120bed73c",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "f752643e-d592-4964-918a-7eb3ce4533aa",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 63,
"id": "3a792e00-3f3a-4d68-b037-213b8855190c",
"metadata": {},
"outputs": [],
"source": [
"# alternatively, we can load earlier projections from disk\n",
"projection_folder = \"out/projections/00004/downloads/paris3-256/paris3/\"\n",
"projections = get_projections_in_dir(projection_folder)"
]
},
{
"cell_type": "code",
"execution_count": 157,
"id": "ef581025-9998-486b-b91d-06893788c305",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"random set of projected images\n",
"09-RuedeMaubeuge42609\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"12-RuedesPyrénées5908\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"19-AvenuedeFlandre2264\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"07-AvenueBosquet3311\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"19-AvenueJeanJaures2345\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10-RueLouisBlanc4335\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"07-RueSaintDominique4376\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"20-RuedeMénilmontant6037\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"13-RuedePatay4866\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"07-RuedeGrenelle3254\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=522x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"random set of projected images\")\n",
"for projection in np.random.choice(projections, 10, replace=False):\n",
" img1 = Image.open(projection.img_path)\n",
" img2 = Image.open(projection.target_img_path)\n",
" ## Create image widgets. You can use layout of ipywidgets only with widgets.\n",
" ## Set image variable, image format and dimension.\n",
" \n",
" print(projection.id)\n",
" img = image_grid([img1, img2])\n",
" display(img)\n",
" \n",
" \n",
" # wi1 = widgets.Image(value=img1, format='png', width=run_data['resolution'], height=run_data['resolution'])\n",
" # wi2 = widgets.Image(value=img2, format='png', width=run_data['resolution'], height=run_data['resolution'])\n",
" # wi3 = widgets.Label(projection['src'])\n",
" ## Side by side thanks to HBox widgets\n",
" # sidebyside = widgets.HBox([wi0, wi1, wi2, wi3])\n",
" ## Finally, show.\n",
" # display(sidebyside)"
]
},
{
"cell_type": "markdown",
"id": "a91c2352-ad7d-4a64-b8a0-4321371b48c1",
"metadata": {},
"source": [
"## load projected ws of projected images"
]
},
{
"cell_type": "markdown",
"id": "4180ca54-995e-4dfe-8271-c4f2d7da4e9d",
"metadata": {},
"source": [
"Load `z` from saved npz files, and map them to the `w` space for (potentially) less entangled interpolation"
]
},
{
"cell_type": "code",
"execution_count": 216,
"id": "053ef3fa-d66b-42ba-9735-fbbea3b89adc",
"metadata": {},
"outputs": [],
"source": [
"ws = []\n",
"for projection in projections:\n",
" ws.append(projection.load_w())"
]
},
{
"cell_type": "markdown",
"id": "27336821-6de4-49f7-93c5-0d0b1446c542",
"metadata": {},
"source": [
"## interpolate the projected images in `w`"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a4421742-0784-410a-8e72-3d83d47e8e6a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "82a5038f-c8d3-4a3f-b7b6-06e6b9a31555",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 162,
"id": "2d648f2a-295a-4496-876d-3f518fe8ee02",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "71046582c0f24a988db72f567c9fa2f3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/420 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"/scratch/out/00004-stylegan3-r--gpus1-batch32-gamma2/022800-interpolate-projections-test.mp4\n"
]
}
],
"source": [
"steps = 30\n",
"\n",
"interpolated_ws = slerp_interpolate(ws[0:15], steps)\n",
"\n",
"def ws_to_img_generator(G, device, ws):\n",
" for w in ws:\n",
" img = w_to_img(G, device, 'const', w)\n",
" yield img\n",
"\n",
"generator_to_video(\n",
" tqdm(ws_to_img_generator(G, device, interpolated_ws),\n",
" total=len(interpolated_ws)),\n",
" out_filename=out_dir / snapshot.run.id / f'{snapshot.iteration_str}-interpolate-projections-test.mp4',\n",
" fps=20, frame_size=(256,256), quality=8)"
]
},
{
"cell_type": "code",
"execution_count": 163,
"id": "e2d85ac0-4882-49fd-9827-549da67b1c3e",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f6005fc3e0ae47bd9c84ca9e8cb9520f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00b\\xf0cmdat\\x00\\x00\\…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"video_to_widget(out_dir / snapshot.run.id / f'{snapshot.iteration_str}-interpolate-projections-test.mp4')"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "11c64c2a-9869-4298-b9f3-d7d174c38239",
"metadata": {},
"outputs": [],
"source": [
"# steps = 30\n",
"\n",
"# interpolated_ws = slerp_interpolate(ws, steps)\n",
"\n",
"\n",
"\n",
"# for idx in range(0, len(interpolated_ws), steps):\n",
"# imgs = []\n",
"# for i in range(steps):\n",
"# w = interpolated_ws[idx+i]\n",
"# img = w_to_img(G, device, 'const', w)\n",
"# # wi = img_to_widget(img)\n",
"# imgs.append(img)\n",
"# display(image_grid(imgs))\n",
" # wi1 = widgets.Image(value=img1, format='png', width=run_data['resolution'], height=run_data['resolution'])\n",
"# zs = torch.from_numpy(np.stack([np.load(projection['npz']) for projection in projections])).to(device)\n",
"\n",
"# ws = G.mapping(z=zs, c=label, truncation_psi=psi)\n",
"# _ = G.synthesis(ws[:1]) # warm up\n",
"# ws = ws.reshape(grid_h, grid_w, num_keyframes, *ws.shape[1:])\n"
]
},
{
"cell_type": "markdown",
"id": "ab4e9749-ac11-4555-811b-a715053a9047",
"metadata": {},
"source": [
"# modify Ws on a particular axis"
]
},
{
"cell_type": "markdown",
"id": "4298e078-1df5-4822-b2ad-dced6b7bf982",
"metadata": {},
"source": [
"The shape of `w` is determined as such:\n",
" \n",
"> StyleGAN uses a mapping network (eight fully connected layers) to convert the input noise (z) to an intermediate latent vector (w). Both are of size 512, but the intermediate vector is replicated for each style layer. For a network trained on 1024 size images, this intermediate vector will then be of shape (512, 18), for 512 size it will be (512, 16). (from [here](https://towardsdatascience.com/stylegan-v2-notes-on-training-and-latent-space-exploration-e51cf96584b3))\n",
"\n",
"This quote is about StyleGAN v2. For StyleGAN3 it is actually 16,512 for a 256px image dataset."
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "bfd1c789-f5b9-45d7-b8cd-fe3ebde9bfb3",
"metadata": {},
"outputs": [],
"source": [
"def modified_on_axis_generator(G, device, w, axis, layer):\n",
" w = w.copy()\n",
" orig = w[0][layer][axis]\n",
" offsets = list(reversed(range(-300,0,10)))\n",
" offsets.extend(range(-300,300,10))\n",
" offsets.extend(reversed(range(0,300,10)))\n",
" for i in offsets:\n",
" w[0][layer][axis] = orig + i\n",
" img = w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\"))\n",
" draw = ImageDraw.Draw(img)\n",
" txt = f\"w layer {layer} axis {axis} {i:+4d}\"\n",
" draw.text((10, img.size[0]-20), txt, fill=\"white\")\n",
" yield img\n",
" # reset orig\n",
" w[0][layer][axis] = orig\n",
"\n",
"def modified_on_axes_generator(G, device, w, axes, layer):\n",
" for axis in axes:\n",
" yield from modified_on_axis_generator(G, device, w, axis, layer)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "73de1d60-3101-418a-922f-2237aacaf87c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size of w: torch.Size([1, 16, 512])\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Size of w: \", ws[0].shape)\n",
"axis = 100 # value 0-511\n",
"layer = 15 # value 0-15\n",
"seed = 8\n",
"\n",
"# Let op! Truncation PSI staat niet op 1!!\n",
"_w_to_modify = zs_to_ws(G, device, zs=seeds_to_zs(G, [seed]), label=None, truncation_psi=0.5)[0].clone()\n",
"w_to_modify = _w_to_modify.cpu().numpy()\n",
"\n",
"display(w_to_img(G, device, 'const', _w_to_modify))"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "7a87dd01-b69b-47ed-b112-90eb2ac707ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size of w: torch.Size([1, 16, 512])\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "10b8d4a64c80401cba76312689e6a828",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cadf1b8a3c3045aa8883aa683f37f9c1",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"generator_to_video(\n",
" tqdm(modified_on_axis_generator(G, device, w_to_modify, axis, 1)),\n",
" out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axis_100_layer_1.mp4',\n",
" fps=20, frame_size=(256,256), quality=9\n",
")\n",
"generator_to_video(\n",
" tqdm(modified_on_axis_generator(G, device, w_to_modify, axis, 15)), \n",
" out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axis_100_layer_15.mp4', \n",
" fps=20, frame_size=(256,256), quality=8\n",
")"
]
},
{
"cell_type": "markdown",
"id": "dfd7ba46-36b2-4668-957b-1254f5ee0d3f",
"metadata": {},
"source": [
"When changing values in a particular layer in the `w`-space, we can see that for low layers (layer 1 below) large features change, whereas for higher layers (layer 15 below) only small features such as colors & patterns change."
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "90f4f3e2-ed4a-4d42-a220-3089b3c75134",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "47f1985e4b894d888bb28fada4eb798c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00!Vrmdat\\x00\\x00\\x02…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "58bef803fdce4f63bbd238bb9d25314d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\x0b\\x99\\x02mdat\\x0…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(\n",
" video_to_widget(out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axis_100_layer_1.mp4'),\n",
" video_to_widget(out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axis_100_layer_15.mp4')\n",
") "
]
},
{
"cell_type": "markdown",
"id": "4f402493-0c06-49c7-ab7b-14b0844b6c75",
"metadata": {},
"source": [
"A longer running version of the above; now loop through various axes in the same layer. For layer 0 (large features) and layer 15 (small features)."
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "0e514cf0-887f-4dd2-bb03-5fd25f069ad7",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a9c74925628545eba7da94c4aa083b6c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f3b6029f68ae4c1c80d7cc0b717e51c6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d706abc751d248ddbdd1cb11d7d464f9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a7b963ba72904e528b186ffdbdf06a37",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a3192a71d50d45b7bf4e6ad211823769",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ed620be5e0c34246a0d75493ed25f63c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "562fe42449ef4bbcbe450ad2fcde79ba",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0b49a5203bd8487683a16e44f1651585",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2f8f22f37af0409eaab233729c1b4f2f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ac58d2fbe78d411a98d6d9d51520e539",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6799d95bee9f4d8a81ce06028b123042",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "04dcfa204b5448b8b64dfb51c2f3516f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f1e1e28d32514cb68637c339430ad9b4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a6f0cab82f68427d8f9e80f22857c119",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2c5936decb4641f2bc4d62ab5d4c8a7c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "74271bbb6cb44a499ff26609354f6a4e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"0it [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"axes = range(0, 200, 20)\n",
"layers = range(0,16)\n",
"\n",
"\n",
"for layer in layers:\n",
" generator_to_video(\n",
" tqdm(modified_on_axes_generator(G, device, w_to_modify, axes, layer)),\n",
" out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axes_layer_{layer:02d}.mp4',\n",
" fps=20, frame_size=(256,256), quality=8)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "defcdbee-a062-4d6e-bbb5-c15b11cc6753",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9b9b31bc19974133b2d5f320f4860e6b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xad\\xe1%mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cff1c594c88d49c98dcbe596733114bc",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xe1kkmdat\\x00\\x00\\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8af2af5f81ac4626a1817938ff4fb0f4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xc3\\xb3\\x9bmdat\\x0…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6c0340b21b184f50a8530a5083ebb467",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xb6\\xeb\\xd3mdat\\x0…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "650b46d8080a4d7d90918af7ec235eaa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xb8\\xf0,mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "44bae9992b6a4d41a539541d10dbd4ef",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xbf!Qmdat\\x00\\x00\\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c837bb8b6cf74f30945784d996768098",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xcb\\x064mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ba3b00ec4ed9485bb910458ed205d32d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xd6Y\\xc2mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2ef050894d644d9c94dbb0508ae5ac00",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xd5\\x03\\x02mdat\\x0…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "726c3a9cf39d4cdf90df13f7b6839876",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xd9z\\xa9mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b9129cef9f4a4b4480b0c841c3784b17",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xd32\\x90mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "22538a5f306d48e8abb42d8dfb384775",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xd0p\\xc2mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7af0b20ce81744ac84cd905053ba0e2f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xc2\\xd0(mdat\\x00\\x…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5eae46a9be374b2abc06a561925a4925",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xbbbWmdat\\x00\\x00\\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ecbec0988c5e45a6b76ba811859065b0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\xb2HKmdat\\x00\\x00\\…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8a3c81ac05ef4d11909bb237ccf24997",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Video(value=b'\\x00\\x00\\x00 ftypisom\\x00\\x00\\x02\\x00isomiso2avc1mp41\\x00\\x00\\x00\\x08free\\x00\\x82\\xe9\\x0emdat\\x0…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for layer in layers:\n",
" display(\n",
" video_to_widget(\n",
" out_dir / snapshot.run.id / f'{snapshot.iteration_str}-seed{seed}-modified_on_axes_layer_{layer:02d}.mp4',\n",
" )\n",
" )"
]
},
{
"cell_type": "markdown",
"id": "0a7ffa0f-874b-4ac7-aa3a-f6045cfb4219",
"metadata": {
"tags": []
},
"source": [
"### Interactive modifications"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7b5decbd-d70c-455e-b5cd-983179a9a356",
"metadata": {},
"outputs": [],
"source": [
"# # put img in output widget as to limit flicker on clearing the output with pre-set height\n",
"# out = widgets.Output(layout={'border': '1px solid black', 'height': f\"{run_data['resolution']*2+10}px\"})\n",
"\n",
"# @widgets.interact(img_idx=(0,13), layer=(0, 15), axis=(0, 511), diff=(-200,200))\n",
"# def modify_axis(img_idx,layer, axis, diff):\n",
"# w = ws[img_idx].copy()\n",
"# img1 = w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\"))\n",
"# w[0][layer][axis] = orig + diff\n",
"# img2 = w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\"))\n",
" \n",
"# with out:\n",
"# out.clear_output()\n",
"# # out.clear_output()\n",
"# display(img1)\n",
"# display(img2)\n",
"# out"
]
},
{
"cell_type": "markdown",
"id": "478d3949-1a15-4b58-90e0-e3468eec1e78",
"metadata": {},
"source": [
"# Clustering"
]
},
{
"cell_type": "markdown",
"id": "58983a1d-59a9-4253-b363-c832f4ae7dcb",
"metadata": {},
"source": [
"## create clusters for arrondisement"
]
},
{
"cell_type": "code",
"execution_count": 92,
"id": "d5a0e8e7-bdcc-472e-ba09-f99f4ae3aa52",
"metadata": {},
"outputs": [],
"source": [
"arrondisement_idxs = {}\n",
"for idx, p in enumerate(projections):\n",
" if p.arrondisement not in arrondisement_idxs:\n",
" arrondisement_idxs[p.arrondisement] = []\n",
" arrondisement_idxs[p.arrondisement].append(idx)\n",
"\n",
" \n",
"arrondisement_centers = {}\n",
"for arrondisement in arrondisement_idxs:\n",
" idxs = arrondisement_idxs[arrondisement]\n",
" arrondisement_centers[arrondisement] = np.average(np.array(ws)[idxs], axis=0)\n",
"\n",
"ws_avg = np.average(np.array(ws), axis=0)\n",
"arrondisement_diffs = {nr: center - ws_avg for nr, center in arrondisement_centers.items()}\n"
]
},
{
"cell_type": "code",
"execution_count": 93,
"id": "11abc74a-d095-4b5f-8dea-525d8a2a4de4",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(w_to_img(G, device, \"const\", torch.from_numpy(ws_avg).to(\"cuda\")))"
]
},
{
"cell_type": "code",
"execution_count": 94,
"id": "e7e11d85-6499-4f45-9dcc-4a413e23c89f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"11\n"
]
},
{
"ename": "NameError",
"evalue": "name 'arrondisement_diff' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_1/3983068317.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mnr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiff\u001b[0m \u001b[0;32min\u001b[0m \u001b[0marrondisement_diffs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mdisplay\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw_to_img\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"const\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfrom_numpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mws_avg\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0marrondisement_diff\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnr\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"cuda\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'arrondisement_diff' is not defined"
]
}
],
"source": [
"for nr, diff in arrondisement_diffs.items():\n",
" print(nr)\n",
" display(w_to_img(G, device, \"const\", torch.from_numpy(ws_avg+arrondisement_diff[nr]*2).to(\"cuda\")))"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "897841c4-c966-4ed2-8aba-1aa726f73245",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nFz9V7Rl2XUdCG6/j7v++XAvTGakRRokkEgQhBcAUo6kSJFSS12l0TWq+6urNPRVH/1V/d/67aao0WKxqVaxVCJIEbQiCMKnNxEZGRkZPuLZ+649ZvvdH+vcB6gDAzkyY0S8d985ey8z51xz4T/5o/+glfbeW2tV0yCMUEQhRsZokiRSSs5FmqVSSkoppTTGGGMMIYQQKKXWWmM0xiTNsvHx8cXLl2MIIUYukp/8+KfD0agsS6X0K698Jk3Sd9999/HeXlEUi/niF77w+V6v75199913J5Pp1vbWcrl89tlnz547+8H7H5yMx4TSe/fuPfPM0088+SRn/MaNG6+//sb21jbCaDqdPvHElRdeeMF79/obbwTvi6IYDPqDQW+xmBOM0kSiGLud7snJSafTSZKkqipKKWWUc04IRSgihDDCMUZMCME4BO+9h58OYYQRjghhhAilhBCEsNYKfmouBCU0BO+cCz5QSh8/fpwkSaNUmiZJkhyNx1vbZx4+fJxnmZTJ3Xv3jbHLsvz0p1/udHrG2J/+9Kd1XWdpVlZVt1t88YtfRDESir/3ve9Np7N+v7+1ufnyp19ilB0cHv34Rz9GCC2Wi9de+9zGxmaSpOPx+M///C+klGkitTbPPPv0Sy++cPfu7RsffXj2zE6WZSfjk6tXn/TeccYIIRHFRCYn45Nur8cZN0aH4EMIYfUuI0IIIRRX/4shxEgJgd+mjMUYMcacCWstQijEqJQihMDXDzHCo8OYUEq9d4wxSuERecYYJqSqaoQRZ4wzRihxztV1QynNshRjjBCilHjvY4ghhhCisSaE0Ov1JpPJ4dHRs888p5TOi+KTT24xxvI8WywWQvAYEXwXFOHcxZOT8fbO1tr6umpUXmQhRGNMnueMMYSig1/W1nXtnG8axZJErq2vMcqstUVRVFXlvSeYzOazqqysdctl6Y4swhgjHFEkhORZxjlPkjTPc865EBIjFGIMMWKMA4oxohjgN2KMESOEYkQIRYTw6uuEEFCMznvrnPPeWhdCaF9EjCHG4Bz8u/eeEupDIIQ45xDGhBBjnfM+hohixJhghBllKKIYY0SIc4Yics5Op9M0TfMsizGG9vMgQghCMYQQUaSMEUwiihhFinCMEaG4+rAIE0IIiRF57xljCOPgPfwnQlEIgTGRQhRFhzKKMJJCwo+IMSIEY4IRQjEEhBFjlGBMCKGUGKNDCIwxFKNSKoSAESKECSGSJCnyPMaIUPvX0yxDKC6WC0opYwwjhBHCGDvnlEJlVRlj4BMHH+AwYYzjz/0KIcB711oH76018AcQQgRjRFn71BFC8OQ9wjGEEDDGlFKMMMbYe69cgzGmlBGEGKUYYzjxJCKCMUKIEIoxxnAYUUQRYRSdtZQxxmgIwTuLUYw2WutiCB4hgkmSJjEEpRVnPMSotaKU6qWu6opSSihFsX2mGBMhkoePHnY6HSlFxgTGGN6U994YTSk7k54ry2XwgTKmlP7k1id1VcskEYL3er0kSaQUaZb1+4MYo3WO5UWOMTbWLBZza40xJstzIcWQDrrdDkKIcwEnzzlntGlUo5Wu6+bkZBJDwIR47xln/cGAUooRgmjRhlIUnbU+eIwxJrh9PYQQQhjjlDHmHaWUc84Ya28HQoS0rwdhHCOKISKEUUQIIec9xtj74JyNIXrvrXUIY+ucb+8PDsFjTAjBnAtKSF1VdVMjhDjnp08KRUQZhfcacCCEtBEQzj1GCBHIAwhhQjDGGKImpRRjghAy1jRN471XjC+XiyRNCSFFUVR17b2HkAZfFhNMAg7BY4I5oxhDwI2M0YiCs5YQjCLCGIXgQ/BwUVGM7YtHKElSSkgMEWMcYkQICc4ppYQSIQTca4wJfF/4jhi3oQQhRCnlXCRJghGilBFCvHdaa++D9w7+Llxa3P7NSEh7uGmbAFEbfdqHg1ffIISA4e7A9UEIY4xCCN4heICMU8o4o8w6A28Bsq6zTkqZJNJZSymlhLZZKKLgQ14UxpoQPMbYOU8IRQjDw9/bO9zcCEIKo22SJGmWIhSddc4F67TgIi8KyjgJ0QdHKdvY3IoR1XU1Pj7RWmOE8iLnnDHGkjRliUwwIcH7fGsbDoT33jlHKBUEG2Ocs4xRpWpCSH/QlUqi2D5xxph3XilVVlUIAe5DjJG0FwAhhKxz3ntMMDxHY2wI3jqHUIyQAayt66osS8gAIQT4aWMMBGPKKOOMccYFh/eBMaaUMMYZYwgjSMFw90IMGCPngjHGOwcZBiFkjXXeUcfgxAghlFLeecaZ904IgSBOeh/g5KH25RFKacQ+BKgMoEJoU1QIGGNGmRBCSMkZjyia9ra35xDD6SeEkOicQzESSlBAlBIUo3MWIUQoQSgSSlfXPiIUMcERxRAjpSTG4Jx13nvvMcLBe4SQD55QQjBBKPrgEUKMUUwIhG2M8WldAx9MNc1sNgshJEkKxy5JUkopQsg6G2PECGOMnPfBe/gK1lprLVwAKALxaWwgGMpIQimjNCIEER9B/IsRblFECFI99j6iVTyJESMEJwT+FmPMew/VNaWEUeaDRyE656zziUy8cxA/OePeB0JolhdCCExIRERra4xRSinVhBDKsrx0abcoOuViWRSdwWAgZJIkiTEGYxxDdM7Wdb1cLqfTudaaQR6knHvvvI+EYCklhGnvnRCSMaqUKorCORdiFJwrpWIMCAXGWYheSDFKEsrY8fGR9w7CP26LkTZHUUIopYmUnU6RplmqlJCSMUYIEULkeUEIMcZ470MI3vuqKkOMjVJVWWmlKWHW2KZpoMZQSjtnfQjBB611o1QMIZEiyxKEUAjeeVfk+XAwXC7LXrdbdDpKNYSQplGLxYJz0ekUSqtQ+6LT8d475wnBESFC4O3Ax48RDhQh3roYI2NMax1jpIwRQhhjMUYpJaPUB980dYxRCA6VACQuggl0GlBBwSUKISCMEIZvh5xzUtIQQggeahC4DCF4QgilFGNEMMIYMUac81xwQghGmDEaQ4whEEIIoYyy1eVFzjmMkffeOYsxCSE0TbNcLrwPWqnVBSXQtAgpGaVSSikTxpmUEipb5xwhBBMcQtBKY4wpwUabECM0A5BeGKVQlxKMMcGUkLaIXKVxhCJGGK3KlTa8tJclYoxjCJSxtgaGG0Kotc57zzmH4h4TQilVjcIYI4Q5F5yLPM8Zo865pmkoZc45Y5zWVnCJcc2ZyPPi2vUPMSaTyUQIURT5cDAYDAf9fl9rXVc1Q224gk/aVo2M0RhRjNFa0zSOMiq4YIwZaxMpkySBg+G9p4R47+Hnhd+ESt97DzWgUqqN6CH6EIQQaZp0bNEpim63KwRP0mQ2n2d5zhhjjCGEhBDdXo9z7r3v9Xt5UWRZnhdFmmZZXsQYfQiMCWhrIKr1ej1Iwhhj550U0jt/fHQ0n82jD1prrTXjDDoNxrhSmnNOpEQIWesQioTwtpiGQ4oQhigQQgiRc2aMhree5TlCyFlrnYs+GK2Pj48Z585ZIUSSJlDStF9iVbwyyhBCIcQQojE2+MAow5gYY5xzSZJAwU0IxZis3kMkpC3AGGfOW4wxIVhKkSQyhkAoYYwSSgmFkoWsinscQiAEhYicdwjhNMs2tzY3tzalTIzW3vumaZqmscYorcuytM5CiQVJGGOcZVmW5ZxzLniaZoJzxhljQogkxuicQwg7Z7XWSusQ2jIyeB9jgCYY0nWbCAmmBGNCOYOWA1PnKCUIQzjA8LSgAwshIoS988EHxnl7KzDGmCil0ySlhLBVbYYRJoRyxqVIOPOq0TEghDBljBBKCJtN541S1trt7R2l7N7+4ccff8I5Kzoday1b3UmEMdxThFcNEcaYMYYxJoS21SQhVVVBWGKMMcaFEDFGQmiIcTwew90mGCtjY4wEE+89ISyiaJ0ry+VisaSUjk9O5vNFkmbGWoyJEDLGyDmHPJgkSZqkZbk0xmRZNugPuJTdTmc0GmZpRihljPR63eFoFEMYDIeLZSmkHAwHXMhGNZQyay3
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"6\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"8\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"9\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"11\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"12\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"13\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"14\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"15\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nFT9V7Cs15klBm6/f5vuZObx5lrcCw8QBEADskyzSHaxWEbtIjTREzGhnojRSz+OpIeZ6FCMWpoYzei5W6rRTEvVperqqi7bxaoiWSAAAgRAArhw15vj86TP324/DzvPJecgcIFAHJyT+efen1nfWuuDP/rRXxhjHHAEE4iQc64sSyU1gEBrRTAx1gAHnHPGmDAMwzAwxgAIEYTWOeccQtBaWxSltQYhTAnWWqdpI1ssbt66+eqXvkQIG41GP377ne9+9zfu3bsnhNra3l5bXT05PXv9R29Ya7/+tdeuXL6YZdlnn38+m85brVa73To5OWm12tPpdKW7MjgdZHmutWaUPP3002EY3LjxsbEWAiikuHLlitHmo48+ghCtrfaDILDW5kXx2eef/8ovvQasbbebcRQdnxyvra5BBMuqDoIwCAIHgJRSa4URNsZYaxnjmGBKqdFaa+UAcM5BAACEjDKEkbVOKVmWJaXU/y9BEIZhaJ0VdYUR4oxprY8Ojza3No+PT+49eGSdOzo6GY3GOzvbSZzwIJRSzOdzB8DTTz2NCXr0aD9bZIvFIkmSIAyeffaZMAwfPXr04OGjJE6kFHt7e87ZXrenlMryPODBdDabz+d7ezsbG5thGLz73vuP9vcvXLhw+/adF154odNunxwfv/feexiDf/KP/sHtO3frqnrxxReLIi+r4ujw8MqVq3VdCSGUVsZY5xxCCCEEIWSMMcbKstRaYYzTNNXaEELKogQQRGFU13VVC2cd58w5hzFGEEqlCKUIIkJIGAY84BBAf0gAAFLJIi+llIzRqqoAAMBZHoRKKWNMs5FGUeScy/MsDENjTJ4XvV7v6PDowaNHTz395KWLl/4//99/s7mxde2JJxAid+7e3z84PB0MxuPpi194iRACIRwMTnu9fhCEs+kEQrh/cLC9tfGf/PZvnZ6ctDvtt995+2cffGCsHQyGzz7zzM7OTlVXYRhSSoizFjiHEFRKVnUdRzGCkDFirVHSAIydNYSQOE6ttRihRbao6zoIg3arnRd5tsgggo200Wo26looJY0x/lEijAPOAQBaKWcdxlhrXRZFkqYb62sQwvl8CoHjjE4mo7Jck1K2Ws3pdKqUnE5nEKLt7e26rsfjEQ8Ywg0h6u3t7bSR1HWNCda1lko1Gg2MUb/fq6pyOByFUeg/BipFUeRSyoBTSrBWKuC80UghhJQybQxjTErprLHGEIQgcITgZjO1xs7nMyEEoQQC4ACAAFpryzwPwzBJUwhoDQHBCFgLIGCUaC2nk4kxJorCNEkQQlmWFXlOKQ2DAGG8s70dR3EURZSxuqoccIyxbm+l2+0A4CaTRGtNCGGcBWEAEei0mwjtYoyEUIRgazUEsNPp1HV9NhwFAeecttvN7e2tOI6jKLJGd9qtOAo5Z7dvfv7EE0+Iuo6jcH29r4121mKMrTXWGgRRwAMAAMHYEgKAw8g9vgAOOEqwEPViMccIBUGolNJaQwiEqKUU1pg0TQPOMSFKqbIonIMQEYQgRohzbq11zopaVFWFEMQYc86llAC4KAy00QgCSqlSimCUxC0AHCFEiBoj7JxTSmGMIQSirhFGhBBjDMKYEKKktNYCZ7RWhJAgCLPs0Xw2i6LYWlPkBaUzRsvJZAKcGw5HvW6HcWashRBopbW2dV0TjDc3N9fW1ufzWWelwzknRZ4ZY6xzhFJGaVHkRhuMsVIKQYQxsgZJISEsEYQIQa0UYyzgwXQ65ZxFUZRlWVmWEELnLHAOOAcAwAhBADDG1ljngDaaYKyUqkVNGRN1jTAeDUd7u7tBEMymM+cAAEBr46wTQkqpAACccUKwEJJgXNWVtRYAhxDW2ljryrJUSmFCjDaMUsYYpUQphREmBDNGN9bXG40UQYcxUlItFgtjDIJQihpAmGdzrY0xGgLow7yoq/kMEoyttRACozU4/3LOEYKtNXVV1rUAzlljHHDGmPlsFgScMYYgJIRIISCE1llMMELIWpukaRQl4/E4DEPnQMADbZRzNgzCTqctpGSMIYRarZaxhjPeSBtpsymVopQYYxGExtgoDOM49q9TCgkcIIQ45+I4Qgh3VjqU0gf37/e6KxjBjY21IOBRzOuqmIzHCCEIgNHaWgsBoJT4wAwg8H8666SSzjoHnBAiDMMkSRBChJBssXDOSSHSNMlzSDCu68paRykTQjjnKCEYEwCc0UoC55yr65IzTikFzjlr8ywzxhBCpNFSSgghhBAAV9cVABACpzEmlJRVaYx21kZRTDBxAFBCGWNKKgAAo1QppZSCwCilIYBhEORZJoSAEEopCcGirrXSSipjtdGmqmoEkTXGWSekxIRYa6uqttZFYVhVFcYEQkggQoxgCJG1VisFHKCUYOwPMKCEOOsAcBAACCFCqNlsAgCqutJaWWujOGqihj8lCEGEkTUWQggAQAhBhKy1zgGtNSbEWeejKULIWv+sI4SQUtoYEwRhGAQQwPOKSyOEIUDAAYwxo0xrlcRJFEbT6UwKyRhHEDvj/OcRhqF/Gf63B0GAEarrOo4C/x8ZZRCA+XyutCKUOgsgghhjCCAEACLEGLPGAILjKHLAOece/zSf0yCE1jmlFCEYY4KdfyMWIhTHsXO2LAqEYJqkQRBopR1wDjgIAaWUUooxzvOiLMoszwjF/X5faz0eje/fuz88G4VRpLWilLZazTRNy6J88ODhdDonGFNKd3d2GWVa6cHpoK4riBDGcH19rd1uFXnx8MFDY0xVlhDCNI23tjb2drc/+OCD+XSMEUYIAQCMsdZaAAHGBCF/CAGEEAEAEHQOWgictdYYJWXAuTGmqkrGGCFEKSWlbDYb1lghBIDQaO2s9bEBQQAAwBhjjK11zjkppVISQgQggABgvCwJLLHAOQQhBBAACJYP2VlrnbUEE//MEULOGoQgJdRaCxygjCmtlVQAQF95EkoghNYYKUQtBKVEa6WUstY4Yxij1hh/Z5TWWmngQBCEUp5ppdK0MZ3NrLHKSrJYzCGEzjlrLcLYHz5/qwAAnAdKSUxIHGEIoTEGAGCMEUIghLRWUogwjKzRCCOECIKoVAUA0GdVjJCxFjrgs4q1RmkthbTWSqlns5k1DmM8mU6KoqCUTifT4+NjayyAsJE2tFJKqaPDQ2ssRBBCsLe7W9d1vsgGg4HR1hhNCEnSZGtzUwoxm80IJhjhJE1arUYQcH+HEUJaa0oJAA5AQCl1bvn8fXS3wDnntDaUUgCAL38xQr4HcM5prYy1zjoIoVKqqipCiLXWWMMYc9Yao4FzUkqEkDYaOCCVBM5Za5RSjHIfgMuiVEpFUWSdRRBxHoRhlCQNglkQBHVdSyWDICSYGGOlUO1WO4njs7MzpRQEQCuVZ3mSJHES7x/sz6bTjfUN50CWZf49ZItsPp9NJ1PGyGw2lUqVVemcs84fMgcRRAgCB4wx1hprjLXWl/KUIOssBAAT4qM+AhDBZcAyWjvnMMHUUgghQhgAWNelMf6Ttf7YAAAQhBAjhJAPLv4B+jPmA83jL845hJBgZK2FECGE/AWglEIACCaEYEoZ5zzgPJO5Mcb/EKWUUhIhWFUlhEhKSSnR2ljnlJTAOSGE1kYIUde1qGspFQSQEgKAK8oCYwQBdNYCjMj62jpEyFmrtPZxzjmAMKqr2hjNOc/zIo5jbXRZlsZo51wcJ865LMsQQpTS4XBYFoXP+HEUE0IWi7nRJi+KuhbWGOeAvzlKLU+JtQ5jHIZRFEUI4aYxjUYTQUQIbTZaadoQorbWYozDIGg2W3EcY4SzfJHEabPR6nTyTnuFUQYhrEUdhVEcJ5wHjLIoisui0EpZayGEWmkhJSXYWksIAQAqKbV/jggBB5RWzjpGqTaGUhonMXAOIqiNgcZgQtAyiUFGqXPAWtvt9rJsAZyzziGE4iQWQkCIfOZkjIVB0G63Go3G4OxMKwUhsNYqrVdXV3vdnhACIpgXxerqaqvZVso0G43VXj8MQyWVkGJrc6vb7WOEL126BBwgGK+urvW6Xc5
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"16\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"17\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"18\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"19\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"20\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for arrondisement in sorted(arrondisement_centers.keys()):\n",
" w = arrondisement_centers[arrondisement]\n",
" print(arrondisement)\n",
" display(w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\")))"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "0988d48a-b6fa-4349-818d-78e6304636d5",
"metadata": {},
"outputs": [],
"source": [
"street_idxs = {}\n",
"for idx, p in enumerate(projections):\n",
" if p.street_type not in street_idxs:\n",
" street_idxs[p.street_type] = []\n",
" street_idxs[p.street_type].append(idx)\n",
"\n",
" \n",
"street_centers = {}\n",
"for street_type in street_idxs:\n",
" idxs = street_idxs[street_type]\n",
" street_centers[street_type] = np.average(np.array(ws)[idxs], axis=0)\n"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "35db3cda-82f8-40cb-9021-13f4223bc520",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"StreetType.RUE\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nGT9aZRl13UmiJ35zm+MOXKegMRMEABJgKQokiKpLlFkdVdXSapeZUtVbi+Xf9qr/raXXf+8XK1eXiV3225Xl2oiNZRISSyJpESKxCgCIIFEIoFEIsfIyJjfeIczH//Y9wVQq18ugoFIRLz77j3n7G9/+9vfxq+9/AOEkA8BBRQCiuMIY8Qo00Y75xhjxhjOGWPcOYcQCiFgTLx3UkrG+e1bt9c31tM8Y0xcu/ae0mZjY/P119947NHHLl++7Jx/9913b926zYV49plPrq6uGmP29nbffvtKp+iISDRN8/TTT6+srr7+s5/VdU0ImU5n2qjnnnuu2+0hhH76059qZQaDgbV2PB499YmnTp48ubu7895714bD4bDfy7JUCHZwuE8JydIUhZDGSQghiuIoEs55pVXTNM55zjnGqGma4EMcxyKKnHeM0uCD9z6ggBDCi5fznjGmpNJaIxQoZXESe++991EURVFECeGcX79+ff9gvyiKzRObOzu7aZ5jTA8PDzc3TtR1c+v2HUzodDp96KGHNjdPaq1fffW12Wy2vLSsjS7LanNz48mnnsAIN0314ksvBR/SNLXGPPLIIydPncIYv/H6G7t7e5SQRso4jj732c9iQjtF8e61a+9efbfT7Uyns7XVleeee9Z7d+vWzRsffnDh/PkoFndv33788cfKcr6ysrKz/eDWrduEUCUlpcQ770P7QosX/ugrTAnFBFNKj78ghFDKOGMYkyiKhBDwTYwxIYQxxhgj7Qsj/NEvQwhhghlllFJjDbylNRphzCgLIWCCEUKcc61VCIgxVtcVYzxOkx/+4Puf+czzaZoTyr71H7799W9+Y3dnh1J64cKl+bys61rKZjAYNnVTN/XR0ZFSOk2TX/mVLx8dHBadfPv+/dt37y6vrPzgBz+oa/mbv/Eby8srd+/eHQz61trRaPS1r331X//+v2acc+89JxTuCsFEa1XbGj5VCIExppRWShNCgg+EUkqR9wFjLLjQRsOuQIu7GULAGAXkCSHw+bMsxYRQSggl2CLrrNbKeeecIwQTQpyzjFHvnffOOq21UkpijFAIlBCEglIyhAD3nBKMgkcheOeapsmyJASfxIkxOooiRinBhGBina1GZUBICJFlmfc+BOS9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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"StreetType.AVENUE\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"StreetType.BOULEVARD\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for street_type in street_centers:\n",
" w = street_centers[street_type]\n",
" print(street_type)\n",
" display(w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\")))"
]
},
{
"cell_type": "markdown",
"id": "ff41f76c-70c2-4ae6-87fa-096d6a04fbd0",
"metadata": {},
"source": [
"## find clusters in ws"
]
},
{
"cell_type": "code",
"execution_count": 154,
"id": "612ba08c-3791-4c2d-b3fa-59a92246c76e",
"metadata": {},
"outputs": [],
"source": [
"flat_ws = [w.flatten() for w in ws]"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "6e7edbbd-7d74-48ee-80e2-a9487d450a1d",
"metadata": {},
"outputs": [],
"source": [
"# from sklearn.cluster import OPTICS, cluster_optics_dbscan\n",
"# import matplotlib.gridspec as gridspec\n",
"\n",
"# clust = OPTICS(min_samples=50, xi=0.05, min_cluster_size=0.05)\n",
"\n",
"# # Run the fit\n",
"# clust.fit(flat_ws)\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "cd05db0c-8308-4d75-8155-e33f254a7e40",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 3 µs, sys: 0 ns, total: 3 µs\n",
"Wall time: 6.44 µs\n"
]
}
],
"source": [
"%time\n",
"from sklearn.cluster import KMeans\n",
"\n",
"k_means = KMeans(init=\"k-means++\", n_clusters=10, n_init=10)\n",
"k_means.fit(flat_ws)\n",
"\n",
"k_means_cluster_centers = [center.reshape(ws[0].shape) for center in k_means.cluster_centers_]\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "7cc381e1-ea7b-453e-bfc2-b40415a0f474",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"k means clusters\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"k means clusters\")\n",
"for center_w in k_means_cluster_centers:\n",
" display(w_to_img(G, device, \"const\", torch.from_numpy(center_w).to(\"cuda\")))"
]
},
{
"cell_type": "code",
"execution_count": 154,
"id": "b3cb8abe-5708-4e4a-af76-afceeb8ab134",
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"# # OPTICS\n",
"# colors = [\"g.\", \"r.\", \"b.\", \"y.\", \"c.\"]\n",
"# for klass, color in zip(range(0, 5), colors):\n",
"# Xk = X[clust.labels_ == klass]\n",
"# ax2.plot(Xk[:, 0], Xk[:, 1], color, alpha=0.3)\n",
"# ax2.plot(X[clust.labels_ == -1, 0], X[clust.labels_ == -1, 1], \"k+\", alpha=0.1)\n",
"# ax2.set_title(\"Automatic Clustering\\nOPTICS\")\n",
"\n",
"# # DBSCAN at 0.5\n",
"# colors = [\"g\", \"greenyellow\", \"olive\", \"r\", \"b\", \"c\"]\n",
"# for klass, color in zip(range(0, 6), colors):\n",
"# Xk = X[labels_050 == klass]\n",
"# ax3.plot(Xk[:, 0], Xk[:, 1], color, alpha=0.3, marker=\".\")\n",
"# ax3.plot(X[labels_050 == -1, 0], X[labels_050 == -1, 1], \"k+\", alpha=0.1)\n",
"# ax3.set_title(\"Clustering at 0.5 epsilon cut\\nDBSCAN\")\n",
"\n",
"# # DBSCAN at 2.\n",
"# colors = [\"g.\", \"m.\", \"y.\", \"c.\"]\n",
"# for klass, color in zip(range(0, 4), colors):\n",
"# Xk = X[labels_200 == klass]\n",
"# ax4.plot(Xk[:, 0], Xk[:, 1], color, alpha=0.3)\n",
"# ax4.plot(X[labels_200 == -1, 0], X[labels_200 == -1, 1], \"k+\", alpha=0.1)\n",
"# ax4.set_title(\"Clustering at 2.0 epsilon cut\\nDBSCAN\")\n",
"\n",
"# plt.tight_layout()\n",
"# plt.show()"
]
},
{
"cell_type": "markdown",
"id": "81e7f63d-cc4b-4f06-85db-a11d88a84493",
"metadata": {},
"source": [
"## PCA"
]
},
{
"cell_type": "code",
"execution_count": 100,
"id": "f32f987e-11ee-44f4-8891-6ff92ab1ea25",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.pipeline import Pipeline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"id": "5e734acf-3502-491e-b957-97d4c30a4cf2",
"metadata": {},
"source": [
"Preprocess the data\n",
"\n",
"1. Flatten `w`s\n",
"2. Standardise data over the axes\n",
"3. PCA\n",
"\n",
"Then we can get any 2D point of the PCA-axes and reverse the steps above\n",
"\n",
"1. inverse_transform pca\n",
"2. inverse transform standardization\n",
"3. unflatten (using `resize()`) bach to original shape"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "47cf1bce-56a8-4764-a57c-b2066b54b584",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 16, 512)\n"
]
}
],
"source": [
"# todo standardise data\n",
"# see also: https://towardsdatascience.com/pca-using-python-scikit-learn-e653f8989e60\n",
"# Standardizing the features\n",
"w_shape = ws[0].shape\n",
"print(w_shape)\n",
"flat_ws = [w.flatten() for w in ws]\n",
"scaler = StandardScaler()\n",
"standardized_ws = scaler.fit_transform(flat_ws)\n",
"\n",
"# test reversal of transformation: print(flat_ws[0], scaler.inverse_transform(standardized_ws[0]))"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "f26e2e37-e30b-4249-a347-29f29744858f",
"metadata": {},
"outputs": [],
"source": [
"pca = PCA(n_components=200)"
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "813b3f80-0b1c-4c32-b685-fba98a1fd72d",
"metadata": {},
"outputs": [],
"source": [
"# not sure if this is valid, but let's see what happens\n",
"principalComponents = pca.fit_transform(standardized_ws)"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "aa110d8f-594c-454b-9322-58ff299571c8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1.61154972e+00, 3.31606657e-02, 4.47464615e+00, ...,\n",
" 1.94088140e-01, 4.78075869e+00, 8.02469521e-01],\n",
" [-2.56667542e+00, -3.51671605e+01, 1.56012990e+01, ...,\n",
" -9.45038641e-01, 2.07813188e+00, -9.21029695e-02],\n",
" [-2.39633159e+01, 1.48184863e+01, 2.25411644e+01, ...,\n",
" 3.72232960e+00, -5.20663485e+00, 4.49771847e+00],\n",
" ...,\n",
" [-1.67646213e-01, -8.22765505e+00, 2.09605350e+00, ...,\n",
" 7.08278019e-01, -2.01915810e+00, -4.33537491e+00],\n",
" [-2.52184294e+01, 1.94189453e+01, 6.88460403e+00, ...,\n",
" -1.08684533e-02, -3.41931834e+00, 6.66559655e-01],\n",
" [ 5.90393462e+00, 1.54345160e+01, -1.01523026e+00, ...,\n",
" -1.71276984e+00, -3.23904415e+00, 1.87072751e+00]])"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"principalComponents"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "2eeae35d-16a6-4df1-b170-e75804bc79ef",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"difference between a w and and it's transformation as principle component\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEAAElEQVR4nJz915MlW3cfiK21tklzXNl2996+/n4f8AEgQYJmCAbJmVFIoQgx5k3zIFHSv6RX6UUxD6MXxURIAc4MjUBqSAGiSIDAh8+b69tUdVUdm2a7tfSwM8851d0XRCg7uurUOXkyd+69zG/Zjf+n//P/cTqdVVW5WMyn04k1RinlvNvtts45BBSRlBIRhRCISAR2u7Zp2xA8IgIAkWLmmFKMaTZfuN59/sWXu537+c9+Vlel1vpnP/u5Mdpa++jRQ2NtWRS3d3d3t3fBBwD4vb/1e+cX50T0Z3/6Z4g4mU5iSo8fP6nKYrVaff7rX8/n89/67d/q+n61XHVd9/zZcxZZLpcfffThZFJXdfn9733v9OzknScP5rMaEXxwIgAAgKSVjjECiNbaGgPAMUYRQSKllCKFiCLCIswiAgiAhIpIa22MsdYopUQYABEBh4OYpWmazWbTtF1ZlmVRIAoiGK1DSE3bpiQ+8NX13U9+/ON/+t//D0Sqa/vF4uQf/ef/cD6f/4t/8S+F5eLiYjKZnJyegvDnn3/+6WefnZ+fv3z5UpH6/PPP67ruuvb21c1n3//sN3/zN7744osn77xz8+r2X/yzf26sLavq/OKiKApO6aOPPlwu74zRRtOnn3603W0QMCU5PT231vwX/8U/rOpakSqs/cXPf/4Hf/AHs/ns0ePH5+fnZ2dnp6cnVVkSEeXZIMxrmn+CAAtzYubELEiIQMwiIswCwgLStk3TNMxJa2OMJiJttNZaESICc8qE0Tu/WW+Xq5V3nogmk4kxNsQYQxThEHyKUWstwHVdWVsorZVSbduXZXl7t+TEn3zy6WbbFkX59OnTv/jhn1eVff/9p7d3dwL4J//hT4uibpv2xYvniNT1/fXV9cnJ6fsffPD4nUeTulJKXV1d/+gvfvz82TOlqHf++vp6OpsXRamNsdvd7uXLl2VpLi7Oq7JMHPu+3243za4hRdPpdDabLeaL09P5crk0xj56dCEAnNi53hgbUwKAzAm7pvVl8bd+7/eWyx0hPn/xfLPerDdbo3XiWJQlIsxnc+9DjAkAt7tdYn716nqxWJBW2832wcOHq9WqsPbZ8+cA8PLqarXeJJHNehVCfPXq+r/8n/2X77z77r/9N//vH//kJ+fnZ9///mfT2XQymU6n06oqALgojIgklpRYRIzRJ4v5+fm5MRYJlSKtNREpUiISYvTON03T9733gZkBQGlVFsVkMqnr2hhtjAEAEWFOzvmUmIguLy/Xq+XzFy8AUClEAKXVbDrzPvR9zykpUkVhZ/PZ++8/3Wy289n0f/tP/neffvZpYa1S9N/8X/4bRPzhn//5X/vd39VaffX1148ePyZSP/zhDwkppoRIq9V613ZlVa23mxjjdrshpbQtLi4uLi4vqrpOKW2323oyAYC+79t2O51Nu77brDfzxQmzdF3X9h0zG2Oqqvzoo4/+wT/4B2cXF9PpVGtljFaKiAgBRYCZgQUAYaD+4WDmFGOIUWtNpACQ8peEmBOIiHBKKbONUgCYiMhoozT1XfTOxxSb3e7lyxd3d3fMgohaGyLyIXgfYvCcUmIWZmOMsSZLpRhTjKkoy7bpAGSz2fqQlNI/+vGPv/3667//9/+z3rkQQlXXTdP+6Z/8+W63ffb8WYpJRFarVUppOp397/8P/8RNqqquf/wXP/x//N//YD6fTadTAOi6PsVkrNUPHj5smubi/PT0dD6bTkXYuf7m5oYn9eLkhIisLeqqIqK+77U2Whsfgve+67rNZq2U7vu+73vnvDam63qtbWLarPv1ZjubTdfrzW63Q8SqKq6vr0XkxYuXrnchhBjjo0ePz8/PXrx4rhS9/8H7/93/7b/7/PNfn52d//SnP7XGzOazvutBYL1cMXNh7e///t/7J//kfwMAv/1bP/i//rf/7dX19TvvvlNVlTFKhGMMhTUiEIIHEUKwZXF6cnpychJi9N4DiDaaUyqKggG8933vdk2z3WzbtkmJATIBoDXWud57V1VVWRZVVXVdyykJQIwRgYwxs/ls0TZ5tULw1pjJpNbaEyERAkuz222329u7O2EubPny5cv3nz61xtRV9f4HH3zyySeXlxff+95nn3/+uTXm1dX10/feM0qnFL//2ad/9Ed/1PX9pJ6WZVUYa4wx2jDHvu+/+fabn/7spw8ePtxutj/4wW/e3d59+83X77//vvchhOic32y2IuSrpDU2u10wTmttja4n9YMHl7P5wliTOCaOiUERIdJAvqQAwXvHzFrrrAEUKbLGWCMiIghwUBFa69lsypx88FprUirG2Pd930OeBGstEfrOJ06PHj88Ozvtey8i89mcSHkfvPch+K5rQwzCnFKy1iqtAAkBe+cKW9zdLWOMSlG/3RFp58LNzau+74RZhIXTdrt59ep6s9nsttuiLAEQkbRW8/liMqmRgIiMMVVVTWezxXze9y7EpLQmIr1c3lmrT05Pz87OJnWpFMUYJ5P61c3NdrdVisrSGmO01iB2vjAIGFPixPP57ORkHmNCpN71KaaYeDab933ourDZ9gJJJG23u5OTkxD8yckCQMqy7Lt+PpuH4FzvF4t5VVVZ3KYkjx49AuAPP/xoebecTqfa6O1mO5vN3nv6nncucQKRpmmVUtfXr5jFWrtardbrdV0VhEiEdV0prVzvBMTaoizLsiwBhACN0QBijBGRFGPjHDOHEGIIAoxEVqks/EQEQJg5pijCwiycOCU1noBIpKjvuxBCVVWICCJaaxHZ7XYhhMSCoLRWbdtySnVdX1xc/tG//aOL84vz8/N/9+/+/eXl5cnJyW63Ozs7A4D1evXJpx8/efLko08+dn3/zjvv/KN/9I9++MMfdl1/9fLqyZNHiFSW9XZ7M6lrreny8vzhw0fPvn326NGj+XxWlOXZ+VnXtcxCSEqpjPFEkveBCJUi731ZFjHFtm1qrAEkgzpmBmARERmEPqcECDEGERGWDHERAJAyyWUciAhIsN1sbu9uQwja6MJaJALMLCKE0PddTKnvXUpijHE+eB/y8LQ2AqiUKoqiqsoQgjEmpogIGZFWVc2crC0WJ4uiKB9cPvjqm2fGFB9++NFPfvwXJydzH5zzznnvnPvse9/7xc9/8evPP59MJoh0c3sHgO89fRqZJSbB7m61brpulmbamNi2u6axxk6mM/3ppx+3bVNYa422xiqFIKC1XswXVVURKaM1MzMnAHB9q7WpqgkR+eAJZbPddl2ntUatBVLXdcGnqpp+9fVzAEFEyV9OKYSwmM+Lsihs0fe9CCTm5d3q7m45nc2Z4ac/+dl6vX733ScIUJTFbD6bzWa//tWv5vPZxcX5s2fPHz169Or6+ovPv3j3vfd+/OMfN01jrFkuV1nFU1bMRIoUESVOIhJTEhEiFSSmlPKqK6VJ0WKxcM4551jEB6cIQ4gCgoDa6Koqp9PJZDKx1hprY2JtDDO7vmeWfK+yLK21zJwhg9amqur5PK1Wa3ZBREIIiBkjyHQyeXV1s16tvfeud+89fa+u68l0oo0+Pz+/vLx8/PiJNnqxmE8eP9rtmgcPH7739OlXX3/zzdfffP83vl9VEyL17Nnzqq4fPLg4PT29vLy8uLys62pxcpIZvev7rnNN23ofjPNFkZiD914RaqWZExJppQlRawXAlDkAQABAMtuDACBYAGBgEAAAYfHBB++VUlpbawpATDHFlKcUUuKUkoDElDKyMlorRZNJNZ1ORWS92TZN13WubVofYmGLlHixmAwCKMYQqG27EMJkOknMyIwozjmtTQgxhtQ0y/V627swmQAibNZrY7CeVClGJMXM2017t7xLMXkfUmKtVd/71WpZFjZ4VxbFarWKIVRFqRSJCCIKQNd12nuvlAIQpbLhQQCgOpVSEgFCqup6Np0613dtO53NtLbOOe89Ik5ns8Vi8ez58/VqHWNKiW1RAVDfd67v27a1xoQYM4ECyGff+3S73RVFwcy/+uWvyrJMMd3dLj/+5OPlcnV9ff348eMHlw+Q6On
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<PIL.Image.Image image mode=RGB size=256x256>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# inversing, how to\n",
"in_ws = pca.transform(scaler.transform([flat_ws[0]]))\n",
"out_w = scaler.inverse_transform(pca.inverse_transform(in_ws[0])).reshape(w_shape)\n",
"# print(\n",
"# in_ws,\n",
"# # standardized_ws[0],\n",
"# pca.inverse_transform(in_ws[0]),\n",
"# scaler.inverse_transform(pca.inverse_transform(in_ws[0])),\n",
"# out_w\n",
"# )\n",
"# print(out_w.shape)\n",
"# print(pca.transform(scaler.transform([out_w.flatten()])))\n",
"\n",
"print(\"difference between a w and and it's transformation as principle component\")\n",
"display(w_to_img(G, device, \"const\", torch.from_numpy(flat_ws[0].reshape(w_shape)).to(\"cuda\")))\n",
"display(w_to_img(G, device, \"const\", torch.from_numpy(out_w).to(\"cuda\")))\n"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "1712678f-3bd9-4eaf-9cee-442aa5a6bd87",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.03719539, 0.03083506, 0.02502103, 0.02392811, 0.01832833,\n",
" 0.01664506, 0.01436675, 0.0128155 , 0.0113901 , 0.01018435,\n",
" 0.00893113, 0.00839184, 0.00830136, 0.00733185, 0.0071629 ,\n",
" 0.00709925, 0.00684545, 0.00646671, 0.00586685, 0.00570798,\n",
" 0.00548803, 0.00529359, 0.00515314, 0.00482574, 0.00468961,\n",
" 0.00460188, 0.0044443 , 0.00424957, 0.00411777, 0.00388916,\n",
" 0.00375024, 0.00372458, 0.00352066, 0.00349229, 0.00342873,\n",
" 0.00338586, 0.00327643, 0.0032402 , 0.00315235, 0.00306244,\n",
" 0.00301184, 0.00295148, 0.00283491, 0.00279611, 0.00264463,\n",
" 0.00261954, 0.00253977, 0.00248575, 0.00245711, 0.00242337,\n",
" 0.00238702, 0.00233425, 0.00232051, 0.0022772 , 0.00226395,\n",
" 0.0022173 , 0.00217148, 0.00214981, 0.00212702, 0.00209847,\n",
" 0.00207502, 0.002037 , 0.00202758, 0.00200343, 0.00196619,\n",
" 0.00191755, 0.00189991, 0.00184876, 0.00184063, 0.00182143,\n",
" 0.00180289, 0.00178724, 0.00177503, 0.00175602, 0.00174498,\n",
" 0.0017251 , 0.00171772, 0.00170503, 0.00167998, 0.00166922,\n",
" 0.00165378, 0.00163315, 0.00162352, 0.00160393, 0.00159042,\n",
" 0.00157854, 0.00157469, 0.0015523 , 0.00153437, 0.00152306,\n",
" 0.00151376, 0.00149581, 0.00147976, 0.00147736, 0.00146386,\n",
" 0.00144843, 0.00144123, 0.00141827, 0.00141202, 0.00140769,\n",
" 0.00139562, 0.00138907, 0.00138305, 0.00137331, 0.00136423,\n",
" 0.00135134, 0.00134088, 0.00133683, 0.00132733, 0.00131227,\n",
" 0.00130235, 0.00129866, 0.0012914 , 0.0012807 , 0.00127436,\n",
" 0.00126488, 0.00126267, 0.0012544 , 0.00124938, 0.00124523,\n",
" 0.00123922, 0.00123378, 0.001229 , 0.00121797, 0.0012156 ,\n",
" 0.00120613, 0.00120481, 0.00119854, 0.00119352, 0.00119081,\n",
" 0.00118408, 0.00117777, 0.00116976, 0.00116667, 0.0011639 ,\n",
" 0.00115719, 0.00114168, 0.00113964, 0.00113488, 0.00113222,\n",
" 0.00112772, 0.00112263, 0.00111752, 0.00111242, 0.00110615,\n",
" 0.00110498, 0.00109987, 0.00109112, 0.00108757, 0.00108484,\n",
" 0.00108193, 0.00107626, 0.00107193, 0.00106148, 0.0010544 ,\n",
" 0.0010526 , 0.00105167, 0.00104751, 0.00104082, 0.00103592,\n",
" 0.0010335 , 0.00102875, 0.00102273, 0.00102157, 0.0010153 ,\n",
" 0.0010098 , 0.00100661, 0.00100271, 0.00100007, 0.00099672,\n",
" 0.00099161, 0.00098602, 0.0009802 , 0.00097786, 0.00097214,\n",
" 0.00096767, 0.00096097, 0.00095992, 0.00095713, 0.00095247,\n",
" 0.00094635, 0.00093872, 0.00093745, 0.00093701, 0.00092747,\n",
" 0.00092438, 0.00092211, 0.00091813, 0.00091706, 0.0009097 ,\n",
" 0.00090215, 0.00090001, 0.00089257, 0.00088849, 0.00088753,\n",
" 0.00088435, 0.00088031, 0.00086721, 0.00086319, 0.00085784])"
]
},
"execution_count": 106,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Variance that is captured per axis of PCA\n",
"pca.explained_variance_ratio_"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "5f124133-90b6-484a-b86b-221e6f566143",
"metadata": {},
"outputs": [],
"source": [
"arrondisement_avg_ws = arrondisement_centers.values()\n",
"arrondisement_avg_ws_flat = [w.flatten() for w in arrondisement_avg_ws]\n",
"arrondisement_avg_w_scaled = scaler.transform(arrondisement_avg_ws_flat)\n",
"arrondisement_avg_components = pca.transform(arrondisement_avg_w_scaled)\n",
"arrondisement_x = arrondisement_avg_components[:,0]\n",
"arrondisement_y = arrondisement_avg_components[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "1b7d0eca-6ee9-41f2-b0a5-35807d05d0cd",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1600x1600 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (8,8), dpi=200)\n",
"ax = fig.add_subplot(1,1,1) \n",
"ax.set_xlabel('Principal Component 1', fontsize = 15)\n",
"ax.set_ylabel('Principal Component 2', fontsize = 15)\n",
"ax.set_title('2 component PCA', fontsize = 20)\n",
"# targets = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']\n",
"# colors = ['r', 'g', 'b']\n",
"# for target, color in zip(targets,colors):\n",
"# indicesToKeep = finalDf['target'] == target\n",
"\n",
"x,y = principalComponents[:,0], principalComponents[:,1]\n",
"\n",
"c = [float(p.arrondisement) / 20 for p in projections]\n",
"ax.scatter(x, y, c=c, cmap='inferno')\n",
"\n",
"ax.scatter(arrondisement_x, arrondisement_y, marker='+', linewidths=1, s=100)\n",
"# ax.legend(targets)\n",
"ax.grid()"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "c20852ae-86fc-42b5-a355-eb022121c6c3",
"metadata": {},
"outputs": [],
"source": [
"# TODO\n",
"# each point in the graph can be calculated back to the closest W by reversing the PCA\n",
"# see https://github.com/mGalarnyk/Python_Tutorials/blob/master/Sklearn/PCA/PCA_Image_Reconstruction_and_such.ipynb\n",
"# this might give us a better sense of how the graph represents the data"
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "abbdbe5c-305c-4a4d-943b-75854402ca52",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "920eaade27034fefba964bd84647473e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=0.0, description='com1', max=111.50354634596117, min=-42.9155692698718…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.interactive_render(com1, com2, com3, com4)>"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# interact(f, Median_Size=widgets.IntSlider(min=1,max=21,step=2,value=1));\n",
"from ipywidgets import interact\n",
"def interactive_render(com1, com2, com3, com4):\n",
" components = np.zeros(pca.n_components)\n",
" components[0] = com1\n",
" components[1] = com2\n",
" components[2] = com3\n",
" components[3] = com4\n",
" print(com1, com2, com3, com4)\n",
" \n",
" w = scaler.inverse_transform(pca.inverse_transform(components)).reshape(w_shape)\n",
" display(w_to_img(G, device, \"const\", torch.from_numpy(w).to(\"cuda\")).resize((512,512)))\n",
"\n",
"interact(interactive_render,\n",
" com1=widgets.FloatSlider(min=min(principalComponents[:,0]),max=max(principalComponents[:,0]),step=2,value=0),\n",
" com2=widgets.FloatSlider(min=min(principalComponents[:,1]),max=max(principalComponents[:,1]),step=2,value=0),\n",
" com3=widgets.FloatSlider(min=min(principalComponents[:,2]),max=max(principalComponents[:,2]),step=2,value=0),\n",
" com4=widgets.FloatSlider(min=min(principalComponents[:,3]),max=max(principalComponents[:,3]),step=2,value=0, continuous_update = False))"
]
},
{
"cell_type": "code",
"execution_count": 111,
"id": "5ad1d713-f88f-4aee-b3b4-9c2f947c30a9",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bdbe952804f04f0798547b49000377d7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(FloatSlider(value=0.0, description='#0', max=111.50354634596117, min=-42.915569269871845, step=…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8774b2a08c294e19a8c43c1d3c911666",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib widget\n",
"from ipywidgets import *\n",
"from PIL import Image #got overwritten by ipywidgets import\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# x = np.linspace(0, 2 * np.pi)\n",
"# fig = plt.figure()\n",
"# ax = fig.add_subplot(1, 1, 1)\n",
"# line, = ax.plot(x, np.sin(x))\n",
"\n",
"zs = seeds_to_zs(G, [0,1000, 2000, 3000])\n",
"example_ws = zs_to_ws(G, device, None, 1, zs)\n",
"\n",
"fig = plt.figure(figsize=(10, 7))\n",
" \n",
"# setting values to rows and column variables\n",
"rows = 2\n",
"columns = 2\n",
"\n",
"def update(**coms):\n",
" components = np.zeros(pca.n_components)\n",
" # components[0] = com1\n",
" for com in coms:\n",
" components[int(com[3:])] = coms[com]\n",
" # TODO :not only pca, but also normaliser should inverse transform\n",
" w = scaler.inverse_transform(pca.inverse_transform(components)).reshape(w_shape)\n",
" for j, example_w in enumerate(example_ws):\n",
" fig.add_subplot(rows, columns, j+1)\n",
" img = w_to_img(G, device, \"const\", example_w + torch.from_numpy(w).to(\"cuda\")) #.resize((512,512))\n",
" plt.imshow(img)\n",
" \n",
" # line.set_ydata(np.sin(w * x))\n",
" # fig.canvas.draw_idle()\n",
"\n",
"widget_args = {}\n",
"for i in range(pca.n_components):\n",
" widget_args[f\"com{i}\"] = widgets.FloatSlider(\n",
" min=min(principalComponents[:,i]),\n",
" max=max(principalComponents[:,i]),\n",
" step=2,\n",
" value=0,\n",
" description=f\"#{i}\"\n",
" )\n",
"\n",
"\n",
"# for component in \n",
"# args = {\n",
"# \"com1\": widgets.FloatSlider(min=min(principalComponents[:,0]),max=max(principalComponents[:,0]),step=2,value=0),\n",
"# \"com2\": widgets.FloatSlider(min=min(principalComponents[:,1]),max=max(principalComponents[:,1]),step=2,value=0)\n",
"# }\n",
"\n",
"a = VBox(list(widget_args.values()), layout=Layout(height='250px', overflow_y='auto'))\n",
"display(a)\n",
"\n",
"interactive_output(update, widget_args);\n"
]
},
{
"cell_type": "markdown",
"id": "5428c6b3-1d69-4c71-aebd-1889dacfc184",
"metadata": {},
"source": [
"\n",
"## GANSpace-like PCA\n",
"\n",
"[GANSpace](https://github.com/harskish/ganspace) has a different approach to PCA. Instead of projecting images, it maps a bunch of randomly picked $z$ to $w$ and runs a PCA on that. Approximate the approach here"
]
},
{
"cell_type": "code",
"execution_count": 253,
"id": "17600aec-a91c-4b7e-8de3-e353752653dc",
"metadata": {},
"outputs": [],
"source": [
"seeds = range(0,20000)\n",
"latent_zs = seeds_to_zs(G, seeds)\n",
"latent_ws = [w.cpu() for w in zs_to_ws(G, device, None, 1, latent_zs)]"
]
},
{
"cell_type": "code",
"execution_count": 254,
"id": "cb1f1132-b45f-4aa7-8eac-7b5050457051",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([1, 16, 512])\n",
"(8192,) [-0.2765468 -0.10210045 0.723061 ... -0.0810022 -0.6487312\n",
" -0.28810868]\n"
]
}
],
"source": [
"w_shape = latent_ws[0].shape\n",
"print(w_shape)\n",
"flat_latent_ws = [np.array(w.flatten()) for w in latent_ws]\n",
"print(flat_latent_ws[0].shape, (flat_latent_ws[0]))\n",
"for i, w in enumerate(flat_latent_ws):\n",
" if w.shape != flat_latent_ws[0].shape:\n",
" print(i, w.shape)\n"
]
},
{
"cell_type": "code",
"execution_count": 255,
"id": "b902dad8-dd92-4111-93a6-019a8d1440fd",
"metadata": {},
"outputs": [],
"source": [
"pipe = Pipeline([\n",
" ('scale', StandardScaler()),\n",
" ('reduce_dims', PCA(n_components=200)),\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 256,
"id": "1b560460-ca8e-4f2f-a97b-24030ea35195",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-13.46145201, 10.9578397 , -9.01645383, ..., -4.26652838,\n",
" 0.54254983, 0.67415027],\n",
" [-20.62894525, 14.07739525, 8.04529328, ..., 3.79106632,\n",
" -2.85699847, -2.89242468],\n",
" [ 7.04371089, 6.57044117, -4.06409529, ..., 3.01764698,\n",
" 0.52163567, 1.73529972],\n",
" ...,\n",
" [ -7.08758567, -0.56364632, -1.80573682, ..., -0.0240149 ,\n",
" 2.03519639, 4.05465535],\n",
" [ 4.10067465, 2.15865921, 7.07302713, ..., 0.17858016,\n",
" -2.75948972, 0.85801461],\n",
" [ 1.78903144, 6.70584062, -10.78917191, ..., -0.49335522,\n",
" -0.1568574 , -2.15811906]])"
]
},
"execution_count": 256,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pipe.fit_transform(flat_latent_ws)"
]
},
{
"cell_type": "code",
"execution_count": 257,
"id": "c22785bd-9c1f-4cdb-a304-10e99cb7739a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.01386597, 0.0132396 , 0.01223125, 0.01159524, 0.01096552,\n",
" 0.01052631, 0.01043808, 0.01015916, 0.00994854, 0.00946204,\n",
" 0.00914045, 0.00900616, 0.00866137, 0.00858 , 0.00849454,\n",
" 0.00836783, 0.00800156, 0.00789864, 0.00782796, 0.00761313,\n",
" 0.00753595, 0.00740414, 0.00729987, 0.00721204, 0.0071075 ,\n",
" 0.00702033, 0.00691903, 0.0068254 , 0.00674271, 0.00666371,\n",
" 0.00661757, 0.00650555, 0.00644614, 0.00637392, 0.00632288,\n",
" 0.00626642, 0.00617692, 0.00612639, 0.006077 , 0.00596563,\n",
" 0.00585294, 0.00582016, 0.00574776, 0.00571392, 0.00565867,\n",
" 0.0056296 , 0.00554828, 0.00549612, 0.00541355, 0.00538062,\n",
" 0.00535851, 0.00527297, 0.00522266, 0.00512659, 0.00508391,\n",
" 0.00503549, 0.00501872, 0.00495656, 0.00486777, 0.00481696,\n",
" 0.00478395, 0.00475394, 0.00467766, 0.00466604, 0.00460612,\n",
" 0.00455931, 0.00450144, 0.00446277, 0.00444565, 0.0044097 ,\n",
" 0.00437425, 0.00433994, 0.00430129, 0.00427034, 0.00424376,\n",
" 0.00421057, 0.00414938, 0.00411421, 0.00406747, 0.00399768,\n",
" 0.00395569, 0.00394551, 0.00391071, 0.00387016, 0.00384194,\n",
" 0.00381035, 0.00380695, 0.00373522, 0.00369872, 0.00367988,\n",
" 0.00365705, 0.00363659, 0.00360854, 0.00357532, 0.0035427 ,\n",
" 0.00354016, 0.00348509, 0.00346777, 0.00342003, 0.00336639,\n",
" 0.0033247 , 0.00329531, 0.00328408, 0.0032313 , 0.00321499,\n",
" 0.00318191, 0.00318035, 0.00313959, 0.00312017, 0.0030763 ,\n",
" 0.00305458, 0.00302704, 0.00302095, 0.0029833 , 0.00297705,\n",
" 0.0029571 , 0.00289552, 0.00283763, 0.00282829, 0.00280339,\n",
" 0.00279487, 0.00276068, 0.00275809, 0.00274047, 0.00270539,\n",
" 0.00269067, 0.002655 , 0.00263413, 0.00262213, 0.00259036,\n",
" 0.00257166, 0.00255584, 0.00252172, 0.00251626, 0.00247392,\n",
" 0.00245628, 0.00243044, 0.00241176, 0.00240298, 0.00238527,\n",
" 0.00236558, 0.00235809, 0.00231985, 0.00230674, 0.0022845 ,\n",
" 0.00226735, 0.00225602, 0.00223097, 0.00220342, 0.00217895,\n",
" 0.00216093, 0.00214178, 0.00213071, 0.00209729, 0.00209028,\n",
" 0.00206574, 0.00204086, 0.00202574, 0.00200196, 0.00197883,\n",
" 0.00197373, 0.00195984, 0.00192752, 0.00191487, 0.00190642,\n",
" 0.00188085, 0.00187579, 0.00185825, 0.00184192, 0.00183504,\n",
" 0.00180692, 0.00179856, 0.00178695, 0.00177481, 0.00176761,\n",
" 0.00174372, 0.00171722, 0.00170804, 0.00169209, 0.00167504,\n",
" 0.00165395, 0.00165158, 0.00164359, 0.00162815, 0.00162487,\n",
" 0.00160078, 0.00157909, 0.00156454, 0.00154808, 0.00154272,\n",
" 0.0015278 , 0.00150206, 0.00148701, 0.0014591 , 0.00144501,\n",
" 0.00144335, 0.00142898, 0.00141929, 0.00140767, 0.00138854])"
]
},
"execution_count": 257,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pca = pipe.named_steps['reduce_dims']\n",
"pca.components_\n",
"pca.explained_variance_ratio_"
]
},
{
"cell_type": "markdown",
"id": "e8c6cf98-e9d9-40aa-a857-7bf5e0aa762e",
"metadata": {},
"source": [
"Now use this to do $w' = w + Vx$ for which $w'$ is the modified image, $w$ is the weight for an input image you want to modify, $V$ are the components, $x_k$ are the component values, all starting at 0."
]
},
{
"cell_type": "code",
"execution_count": 258,
"id": "95c1e523-69d4-4489-adee-435e488daaa8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 16, 512)\n"
]
}
],
"source": [
"w_shape = ws[0].shape\n",
"print(w_shape)\n",
"flat_ws = [w.flatten() for w in ws]\n",
"principal_components = pipe.transform(flat_ws)"
]
},
{
"cell_type": "code",
"execution_count": 259,
"id": "d8b79b60-d49f-4bb2-af49-bfec46d78178",
"metadata": {},
"outputs": [],
"source": [
"arrondisement_avg_ws = arrondisement_centers.values()\n",
"arrondisement_avg_ws_flat = [w.flatten() for w in arrondisement_avg_ws]\n",
"arrondisement_avg_components = pipe.transform(arrondisement_avg_w_scaled)\n",
"arrondisement_x = arrondisement_avg_components[:,0]\n",
"arrondisement_y = arrondisement_avg_components[:,1]"
]
},
{
"cell_type": "code",
"execution_count": 260,
"id": "3c0838f8-f108-4247-831b-cc4b2f6a6db2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2400x2400 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"fig = plt.figure(figsize = (8,8), dpi=300)\n",
"ax = fig.add_subplot(1,1,1) \n",
"ax.set_xlabel('Principal Component 1', fontsize = 15)\n",
"ax.set_ylabel('Principal Component 2', fontsize = 15)\n",
"ax.set_title('2 component PCA', fontsize = 20)\n",
"# targets = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']\n",
"# colors = ['r', 'g', 'b']\n",
"# for target, color in zip(targets,colors):\n",
"# indicesToKeep = finalDf['target'] == target\n",
"\n",
"x,y = principal_components[:,0], principal_components[:,1]\n",
"\n",
"c = [float(p.arrondisement) / 20 for p in projections]\n",
"ax.scatter(x, y, c=c, cmap='inferno')\n",
"\n",
"ax.scatter(arrondisement_x, arrondisement_y, marker='+', linewidths=1, s=100)\n",
"# ax.legend(targets)\n",
"ax.grid()"
]
},
{
"cell_type": "code",
"execution_count": 262,
"id": "9dd8ea1b-6afa-46d7-9dd5-f7fc747045ee",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f52e5c4dd481474f8838193b3b4b20b4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(FloatSlider(value=0.0, description='#0', max=15.163285441357617, min=-29.08003241024723, step=2…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "808525d83023490698979e2d8629cf35",
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,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
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib widget\n",
"from ipywidgets import *\n",
"from PIL import Image #got overwritten by ipywidgets import\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# x = np.linspace(0, 2 * np.pi)\n",
"# fig = plt.figure()\n",
"# ax = fig.add_subplot(1, 1, 1)\n",
"# line, = ax.plot(x, np.sin(x))\n",
"\n",
"zs = seeds_to_zs(G, [0,1000, 2000, 3000])\n",
"example_ws = zs_to_ws(G, device, None, 1, zs)\n",
"\n",
"fig = plt.figure(figsize=(10, 7))\n",
" \n",
"# setting values to rows and column variables\n",
"rows = 2\n",
"columns = 2\n",
"pca = pipe.named_steps['reduce_dims']\n",
"\n",
"def update(**coms):\n",
" components = np.zeros(pca.n_components)\n",
" # components[0] = com1\n",
" for com in coms:\n",
" components[int(com[3:])] = coms[com]\n",
" w = pipe.inverse_transform(components).reshape(w_shape)\n",
" for j, example_w in enumerate(example_ws):\n",
" fig.add_subplot(rows, columns, j+1)\n",
" img = w_to_img(G, device, \"const\", example_w + torch.from_numpy(w).to(\"cuda\")) #.resize((512,512))\n",
" plt.imshow(img)\n",
" \n",
" # line.set_ydata(np.sin(w * x))\n",
" # fig.canvas.draw_idle()\n",
"\n",
"widget_args = {}\n",
"for i in range(pca.n_components):\n",
" widget_args[f\"com{i}\"] = widgets.FloatSlider(\n",
" min=min(principal_components[:,i]),\n",
" max=max(principal_components[:,i]),\n",
" step=2,\n",
" value=0,\n",
" description=f\"#{i}\"\n",
" )\n",
"\n",
"\n",
"# for component in \n",
"# args = {\n",
"# \"com1\": widgets.FloatSlider(min=min(principalComponents[:,0]),max=max(principalComponents[:,0]),step=2,value=0),\n",
"# \"com2\": widgets.FloatSlider(min=min(principalComponents[:,1]),max=max(principalComponents[:,1]),step=2,value=0)\n",
"# }\n",
"\n",
"a = VBox(list(widget_args.values()), layout=Layout(height='250px', overflow_y='auto'))\n",
"display(a)\n",
"\n",
"interactive_output(update, widget_args);\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b8e55466-d013-4ea6-92d9-d4dc09e36056",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "66cd3b55-02bf-4d73-8a0b-06ada3017ee9",
"metadata": {},
"source": [
"## t-SNE"
]
},
{
"cell_type": "markdown",
"id": "df100bd9-6ee0-4a88-bc66-94dc6384a45d",
"metadata": {},
"source": [
"t-SNE is an alternative way to visualise multidimensional data in a non-linear fassion (as opposed to PCA). Unfortunately, it seems for now unable to find _any_ clusters in the data."
]
},
{
"cell_type": "code",
"execution_count": 138,
"id": "371d278d-5655-4ba3-a658-e102d4c2da95",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 16, 512)\n"
]
}
],
"source": [
"from sklearn.manifold import TSNE\n",
"\n",
"w_shape = ws[0].shape\n",
"print(w_shape)\n",
"# like PCA we flatten the data\n",
"flat_ws = [w.flatten() for w in ws]\n",
"tsne = TSNE(n_components=2, learning_rate=2500, #learning_rate='auto',\n",
" init='random', perplexity=3, n_iter=13000)\n",
"tsned_ws = tsne.fit_transform(flat_ws)\n"
]
},
{
"cell_type": "code",
"execution_count": 139,
"id": "e493a611-0695-4174-8631-b0172333f1b5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2400x2400 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"fig = plt.figure(figsize = (8,8), dpi=300)\n",
"ax = fig.add_subplot(1,1,1) \n",
"ax.set_title('2 component t-SNE', fontsize = 20)\n",
"\n",
"x,y = tsned_ws[:,0], tsned_ws[:,1]\n",
"\n",
"c = [float(p.arrondisement) / 20 for p in projections]\n",
"ax.scatter(x, y, c=c, cmap='inferno')\n",
"\n",
"# ax.scatter(tsne_arrondisement_x, tsne_arrondisement_y, marker='+', linewidths=1, s=100)\n",
"# ax.legend(targets)\n",
"ax.grid()"
]
},
{
"cell_type": "markdown",
"id": "26a6aa1e-930e-42db-bf09-d5b5bba746ab",
"metadata": {},
"source": [
"# Dataset\n",
"\n",
"some code related to loading (and later) projecting the dataset"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cbee669f-0a93-42ac-bebc-281c304fb96e",
"metadata": {},
"outputs": [],
"source": [
"# see build_dataset_labels.py for parsing the paths\n",
"# then use this data to project the images with the code above"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "paris-stylegan3",
"language": "python",
"name": "paris-stylegan3"
},
"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.10"
},
"toc-autonumbering": true,
"toc-showcode": false,
"toc-showmarkdowntxt": false
},
"nbformat": 4,
"nbformat_minor": 5
}