{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set CUDA:2 as current device.\n" ] } ], "source": [ "import sys\n", "sys.path.append('/e/dengnc')\n", "\n", "import torch\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from deeplightfield.my import util\n", "from deeplightfield.msl_net import *\n", "\n", "# Select device\n", "torch.cuda.set_device(2)\n", "print(\"Set CUDA:%d as current device.\" % torch.cuda.current_device())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Test Ray-Sphere Intersection & Cartesian-Spherical Conversion" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor([[ 1.4434, 1.4434, -1.4434]])\n", "tensor(2.5000)\n", "tensor([[[315.0000, 54.7356]]])\n" ] }, { "data": { "image/png": "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\n", "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", "text/plain": "
" }, "metadata": { "needs_background": "light", "transient": {} }, "output_type": "display_data" } ], "source": [ "def PlotSphere(ax, r):\n", " u, v = np.mgrid[0:2 * np.pi:50j, 0:np.pi:20j]\n", " x = np.cos(u) * np.sin(v) * r\n", " y = np.sin(u) * np.sin(v) * r\n", " z = np.cos(v) * r\n", " ax.plot_surface(x, y, z, rstride=1, cstride=1,\n", " color='b', linewidth=0.5, alpha=0.3)\n", "\n", "\n", "def PlotPlane(ax, r):\n", " # 二元函数定义域平面\n", " x = np.linspace(-r, r, 3)\n", " y = np.linspace(-r, r, 3)\n", " X, Y = np.meshgrid(x, y)\n", " ax.plot_wireframe(X, Y, X * 0, color='g', linewidth=1)\n", "\n", "\n", "p = torch.tensor([[0.0, 0.0, 0.0]])\n", "v = torch.tensor([[1.0, 1.0, -1.0]])\n", "r = torch.tensor([[2.5]])\n", "v = v / torch.norm(v) * r * 2\n", "p_on_sphere_ = RaySphereIntersect(p, v, r)[0]\n", "print(p_on_sphere_)\n", "print(p_on_sphere_.norm())\n", "spher_coord = RayToSpherical(p, v, r)\n", "print(spher_coord[..., 1:3].rad2deg())\n", "p_on_sphere = SphericalToCartesian(spher_coord)[0]\n", "\n", "fig = plt.figure(figsize=(6, 6))\n", "ax = fig.gca(projection='3d')\n", "plt.xlabel('x')\n", "plt.ylabel('z')\n", "\n", "PlotPlane(ax, r.item())\n", "PlotSphere(ax, r[0, 0].item())\n", "\n", "ax.scatter([0], [0], [0], color=\"g\", s=10) # Center\n", "ax.scatter([p_on_sphere[0, 0].item()],\n", " [p_on_sphere[0, 2].item()],\n", " [p_on_sphere[0, 1].item()],\n", " color=\"r\", s=10) # Ray position\n", "ax.scatter([p_on_sphere_[0, 0].item()],\n", " [p_on_sphere_[0, 2].item()],\n", " [p_on_sphere_[0, 1].item()],\n", " color=\"y\", s=10) # Ray position\n", "\n", "p_ = p + v\n", "ax.plot([p[0, 0].item(), p_[0, 0].item()],\n", " [p[0, 2].item(), p_[0, 2].item()],\n", " [p[0, 1].item(), p_[0, 1].item()],\n", " color=\"r\")\n", "\n", "ax.plot([p_on_sphere_[0, 0].item(), p_on_sphere_[0, 0].item()],\n", " [p_on_sphere_[0, 2].item(), p_on_sphere_[0, 2].item()],\n", " [0, p_on_sphere_[0, 1].item()], color=\"k\", linestyle='--', linewidth=0.5)\n", "\n", "ax.plot([p_on_sphere_[0, 0].item(), 0],\n", " [p_on_sphere_[0, 2].item(), 0],\n", " [0, 0],\n", " linewidth=0.5, linestyle=\"--\", color=\"k\")\n", "\n", "ax.plot([p_on_sphere_[0, 0].item(), 0],\n", " [p_on_sphere_[0, 2].item(), 0],\n", " [p_on_sphere_[0, 1], 0],\n", " linewidth=0.5, linestyle=\"--\", color=\"k\")\n", "\n", "ax.set_xlim(-r.item(), r.item())\n", "ax.set_ylim(-r.item(), r.item())\n", "ax.set_zlim(-r.item(), r.item())\n", "\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Test Dataset Loader & View-Spherical Transform" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from deeplightfield.data.spherical_view_syn import SphericalViewSynDataset\n", "\n", "DATA_DIR = '../data/sp_view_syn_2020.12.26'\n", "TRAIN_DATA_DESC_FILE = DATA_DIR + '/train.json'\n", "DEPTH_RANGE = (1, 10)\n", "N_DEPTH_LAYERS = 10\n", "\n", "def _GetSphereLayers(depth_range: Tuple[float, float], n_layers: int) -> torch.Tensor:\n", " diopter_range = (1 / depth_range[1], 1 / depth_range[0])\n", " step = (diopter_range[1] - diopter_range[0]) / (n_layers - 1)\n", " depths = [1e5]\n", " depths += [1 / (diopter_range[0] + step * i) for i in range(n_layers)]\n", " return torch.tensor(depths, device=device.GetDevice()).view(-1, 1)\n", "\n", "train_dataset = SphericalViewSynDataset(TRAIN_DATA_DESC_FILE)\n", "train_data_loader = torch.utils.data.DataLoader(\n", " dataset=train_dataset,\n", " batch_size=4,\n", " num_workers=8,\n", " pin_memory=True,\n", " shuffle=True,\n", " drop_last=False)\n", "print(len(train_data_loader))\n", "\n", "print(\"view_res\", train_dataset.view_res)\n", "print(\"cam_params\", train_dataset.cam_params)\n", "\n", "msl_net = MslNet(train_dataset.cam_params,\n", " _GetSphereLayers(DEPTH_RANGE, N_DEPTH_LAYERS),\n", " train_dataset.view_res).to(device.GetDevice())\n", "print(\"sphere layers\", msl_net.rendering.sphere_layers)\n", "\n", "p = None\n", "v = None\n", "centers = None\n", "plt.figure(figsize=(6, 6))\n", "for _, view_images, ray_positions, ray_directions in train_data_loader:\n", " p = ray_positions\n", " v = ray_directions\n", " plt.subplot(2, 2, 1)\n", " util.PlotImageTensor(view_images[0])\n", " plt.subplot(2, 2, 2)\n", " util.PlotImageTensor(view_images[1])\n", " plt.subplot(2, 2, 3)\n", " util.PlotImageTensor(view_images[2])\n", " plt.subplot(2, 2, 4)\n", " util.PlotImageTensor(view_images[3])\n", " break\n", "p_ = SphericalToCartesian(RayToSpherical(p.flatten(0, 1), v.flatten(0, 1),\n", " torch.tensor([[1]], device=device.GetDevice()))) \\\n", " .view(4, train_dataset.view_res[0], train_dataset.view_res[1], 3)\n", "v = v.view(4, train_dataset.view_res[0], train_dataset.view_res[1], 3)[:, 0::50, 0::50, :].flatten(1, 2).cpu().numpy()\n", "p_ = p_[:, 0::50, 0::50, :].flatten(1, 2).cpu().numpy()\n", "\n", "fig = plt.figure(figsize=(6, 6))\n", "ax = fig.gca(projection='3d')\n", "plt.xlabel('x')\n", "plt.ylabel('z')\n", "\n", "PlotSphere(ax, 1)\n", "\n", "ax.scatter([0], [0], [0], color=\"k\", s=10) # Center\n", "\n", "colors = [ 'r', 'g', 'b', 'y' ]\n", "for i in range(4):\n", " ax.scatter(p_[i, :, 0], p_[i, :, 2], p_[i, :, 1], color=colors[i], s=3)\n", " for j in range(p_.shape[1]):\n", " ax.plot([centers[i, 0], centers[i, 0] + v[i, j, 0]],\n", " [centers[i, 2], centers[i, 2] + v[i, j, 2]],\n", " [centers[i, 1], centers[i, 1] + v[i, j, 1]],\n", " color=colors[i], linewidth=0.5, alpha=0.6)\n", "\n", "ax.set_xlim(-1, 1)\n", "ax.set_ylim(-1, 1)\n", "ax.set_zlim(-1, 1)\n", "\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from deeplightfield.data.spherical_view_syn import SphericalViewSynDataset\n", "\n", "DATA_DIR = '../data/sp_view_syn_2020.12.26_rotonly'\n", "TRAIN_DATA_DESC_FILE = DATA_DIR + '/train.json'\n", "DEPTH_RANGE = (1, 10)\n", "N_DEPTH_LAYERS = 10\n", "\n", "def _GetSphereLayers(depth_range: Tuple[float, float], n_layers: int) -> torch.Tensor:\n", " diopter_range = (1 / depth_range[1], 1 / depth_range[0])\n", " step = (diopter_range[1] - diopter_range[0]) / (n_layers - 1)\n", " depths = [1e5]\n", " depths += [1 / (diopter_range[0] + step * i) for i in range(n_layers)]\n", " return torch.tensor(depths, device=device.GetDevice()).view(-1, 1)\n", "\n", "train_dataset = SphericalViewSynDataset(TRAIN_DATA_DESC_FILE, ray_as_item=True)\n", "train_data_loader = torch.utils.data.DataLoader(\n", " dataset=train_dataset,\n", " batch_size=4096,\n", " num_workers=8,\n", " pin_memory=True,\n", " shuffle=True,\n", " drop_last=False)\n", "print(len(train_data_loader))\n", "\n", "print(\"view_res\", train_dataset.view_res)\n", "print(\"cam_params\", train_dataset.cam_params)\n", "\n", "#msl_net = MslNet(train_dataset.cam_params,\n", "# _GetSphereLayers(DEPTH_RANGE, N_DEPTH_LAYERS),\n", "# train_dataset.view_res).to(device.GetDevice())\n", "#print(\"sphere layers\", msl_net.rendering.sphere_layers)\n", "\n", "fig = plt.figure(figsize=(12, 12))\n", "ax = fig.gca(projection='3d')\n", "plt.xlabel('x')\n", "plt.ylabel('z')\n", "\n", "i = 0\n", "selector: np.ndarray = np.array([j for j in range(65536)])\n", "selector = selector.reshape(256, 256)[::3, ::3]\n", "selector = selector.flatten()\n", "for _, pixels, ray_positions, ray_directions in train_data_loader:\n", " p = ray_positions\n", " v = ray_directions / ray_directions.norm(dim=1, keepdim=True)\n", " v = v.numpy()\n", " #ax.scatter(v[selector, 0], v[selector, 2], v[selector, 1], color=pixels.numpy()[selector, :], s=0.1)\n", " ax.scatter(v[:, 0], v[:, 2], v[:, 1], color=pixels.numpy(), s=0.1)\n", " i += 1\n", " if i >= 20:\n", " break\n", "\n", "\n", "ax.scatter([0], [0], [0], color=\"k\", s=10) # Center\n", "\n", "ax.set_xlim(-1, 1)\n", "ax.set_ylim(-1, 1)\n", "ax.set_zlim(-1, 1)\n", "ax.view_init(elev=0,azim=-90)\n", "\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" }, "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 }