{ "cells": [ { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set CUDA:0 as current device.\n", "14496(22.12%) pixels in layer 0 are masked as skipped\n", "15980(24.38%) pixels in layer 1 are masked as skipped\n" ] }, { "data": { "image/png": "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\n", "text/plain": "
" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import sys\n", "import os\n", "import torch\n", "import torch.nn as nn\n", "import matplotlib.pyplot as plt\n", "\n", "rootdir = os.path.abspath(sys.path[0] + '/../')\n", "sys.path.append(rootdir)\n", "torch.cuda.set_device(0)\n", "print(\"Set CUDA:%d as current device.\" % torch.cuda.current_device())\n", "torch.autograd.set_grad_enabled(False)\n", "\n", "from utils import img\n", "from utils import device\n", "from utils.view import *\n", "from components.foveation import Foveation\n", "\n", "\n", "foveation = Foveation([20, 45, 110], [(256, 256), (256, 256), (256, 230)], (1600, 1440))\n", "layers_mask = foveation.get_layers_mask()\n", "plt.figure()\n", "for i, mask in enumerate(layers_mask):\n", " colored_mask = torch.zeros(mask.size(0), mask.size(1), 3, device=mask.device)\n", " c = torch.tensor([[1, 0, 0], [0, 1, 0], [0, 0, 1]], device=mask.device)\n", " for bi in range(3):\n", " region = torch.logical_and(mask > bi, mask < bi + 1)\n", " colored_mask[region] = c[bi] * (mask[region][..., None] - bi)\n", " plt.subplot(1, len(layers_mask), i + 1)\n", " img.plot(colored_mask)\n", " n_skipped = torch.sum(mask < 0)\n", " n_tot = len(mask.flatten())\n", " print (f\"{n_skipped}({n_skipped / n_tot * 100:.2f}%) pixels in layer {i} are masked as skipped\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.8.5 64-bit ('base': conda)", "name": "python385jvsc74a57bd082066b63b621a9e3d15e3b7c11ca76da6238eff3834294910d715044bd0561e5" }, "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.5" }, "metadata": { "interpreter": { "hash": "82066b63b621a9e3d15e3b7c11ca76da6238eff3834294910d715044bd0561e5" } }, "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 }