gen_teaser.ipynb 6.8 KB
Newer Older
Nianchen Deng's avatar
sync    
Nianchen Deng committed
1
2
3
4
{
 "cells": [
  {
   "cell_type": "code",
Nianchen Deng's avatar
Nianchen Deng committed
5
   "execution_count": 5,
Nianchen Deng's avatar
sync    
Nianchen Deng committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Set CUDA:2 as current device.\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "import os\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
22
    "sys.path.append(os.path.abspath(sys.path[0] + '/../'))\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
23
24
25
    "torch.cuda.set_device(2)\n",
    "print(\"Set CUDA:%d as current device.\" % torch.cuda.current_device())\n",
    "\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
26
27
28
29
30
31
32
33
    "from data.spherical_view_syn import *\n",
    "from configs.spherical_view_syn import SphericalViewSynConfig\n",
    "from utils import netio\n",
    "from utils import misc\n",
    "from utils import img\n",
    "from utils import device\n",
    "from utils import view\n",
    "from components.gen_final import GenFinal\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
34
35
36
37
38
39
40
    "\n",
    "\n",
    "def load_net(path):\n",
    "    config = SphericalViewSynConfig()\n",
    "    config.from_id(path[:-4])\n",
    "    config.SAMPLE_PARAMS['perturb_sample'] = False\n",
    "    config.print()\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
41
42
    "    net = config.create_net().to(device.default())\n",
    "    netio.load(path, net)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    "    return net\n",
    "\n",
    "\n",
    "def find_file(prefix):\n",
    "    for path in os.listdir():\n",
    "        if path.startswith(prefix):\n",
    "            return path\n",
    "    return None\n",
    "\n",
    "\n",
    "def load_views(data_desc_file) -> view.Trans:\n",
    "    with open(data_desc_file, 'r', encoding='utf-8') as file:\n",
    "        data_desc = json.loads(file.read())\n",
    "        view_centers = torch.tensor(\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
57
    "            data_desc['view_centers'], device=device.default()).view(-1, 3)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
58
    "        view_rots = torch.tensor(\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
59
    "            data_desc['view_rots'], device=device.default()).view(-1, 3, 3)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
60
61
62
63
64
65
    "        return view.Trans(view_centers, view_rots)\n",
    "\n",
    "\n",
    "def plot_figures(images, center):\n",
    "    plt.figure(figsize=(8, 4))\n",
    "    plt.subplot(121)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
66
    "    img.plot(images['fovea_raw'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
67
    "    plt.subplot(122)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
68
    "    img.plot(images['fovea'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
69
70
71
    "\n",
    "    plt.figure(figsize=(8, 4))\n",
    "    plt.subplot(121)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
72
    "    img.plot(images['mid_raw'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
73
    "    plt.subplot(122)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
74
    "    img.plot(images['mid'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
75
76
77
    "\n",
    "    plt.figure(figsize=(8, 4))\n",
    "    plt.subplot(121)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
78
    "    img.plot(images['periph_raw'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
79
    "    plt.subplot(122)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
80
    "    img.plot(images['periph'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
81
82
83
84
    "\n",
    "    # Plot Blended\n",
    "    plt.figure(figsize=(12, 6))\n",
    "    plt.subplot(121)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
85
    "    img.plot(images['blended_raw'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
86
    "    plt.subplot(122)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
87
    "    img.plot(images['blended'])\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
88
89
90
91
92
93
94
95
96
97
98
99
    "    plt.plot([(res_full[1] - 1) / 2 + center[0] - 5, (res_full[1] - 1) / 2 + center[0] + 5],\n",
    "                [(res_full[0] - 1) / 2 + center[1],\n",
    "                (res_full[0] - 1) / 2 + center[1]],\n",
    "                color=[0, 1, 0])\n",
    "    plt.plot([(res_full[1] - 1) / 2 + center[0], (res_full[1] - 1) / 2 + center[0]],\n",
    "                [(res_full[0] - 1) / 2 + center[1] - 5,\n",
    "                (res_full[0] - 1) / 2 + center[1] + 5],\n",
    "                color=[0, 1, 0])"
   ]
  },
  {
   "cell_type": "code",
Nianchen Deng's avatar
Nianchen Deng committed
100
   "execution_count": 6,
Nianchen Deng's avatar
sync    
Nianchen Deng committed
101
102
103
104
105
106
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Nianchen Deng's avatar
Nianchen Deng committed
107
      "Change working directory to  /home/dengnc/deep_view_syn/data/lobby_all_in_one\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
108
109
110
111
112
113
114
115
116
      "==== Config fovea ====\n",
      "Net type:  nmsl\n",
      "Encode dim:  10\n",
      "Optimizer decay:  0\n",
      "Normalize:  False\n",
      "Direction as input:  False\n",
      "Full-connected network parameters: {'nf': 128, 'n_layers': 4, 'skips': []}\n",
      "Sample parameters {'spherical': True, 'depth_range': (1.0, 50.0), 'n_samples': 32, 'perturb_sample': False, 'lindisp': True, 'inverse_r': True}\n",
      "==========================\n",
Nianchen Deng's avatar
Nianchen Deng committed
117
      "Load net from fovea@nmsl-rgb_e10_fc128x4_d1.00-50.00_s32.pth ...\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
118
119
120
121
122
123
124
125
126
      "==== Config periph ====\n",
      "Net type:  nnmsl\n",
      "Encode dim:  10\n",
      "Optimizer decay:  0\n",
      "Normalize:  False\n",
      "Direction as input:  False\n",
      "Full-connected network parameters: {'nf': 64, 'n_layers': 4, 'skips': []}\n",
      "Sample parameters {'spherical': True, 'depth_range': (1.0, 50.0), 'n_samples': 16, 'perturb_sample': False, 'lindisp': True, 'inverse_r': True}\n",
      "==========================\n",
Nianchen Deng's avatar
Nianchen Deng committed
127
      "Load net from periph@nnmsl-rgb_e10_fc64x4_d1.00-50.00_s16.pth ...\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
128
129
130
131
132
133
      "Dataset loaded.\n",
      "views: [13]\n"
     ]
    }
   ],
   "source": [
Nianchen Deng's avatar
Nianchen Deng committed
134
    "#os.chdir(sys.path[0] + '/../data/__0_user_study/us_gas_all_in_one')\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
135
    "#os.chdir(sys.path[0] + '/../data/__0_user_study/us_mc_all_in_one')\n",
Nianchen Deng's avatar
Nianchen Deng committed
136
    "os.chdir(sys.path[0] + '/../data/lobby_all_in_one')\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
137
138
139
140
141
142
143
    "print('Change working directory to ', os.getcwd())\n",
    "torch.autograd.set_grad_enabled(False)\n",
    "\n",
    "fovea_net = load_net(find_file('fovea'))\n",
    "periph_net = load_net(find_file('periph'))\n",
    "\n",
    "# Load Dataset\n",
Nianchen Deng's avatar
Nianchen Deng committed
144
    "views = load_views('nerf_views.json')\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
145
146
147
148
149
150
151
152
153
    "print('Dataset loaded.')\n",
    "\n",
    "print('views:', views.size())\n",
    "#print('ref views:', ref_dataset.samples)\n",
    "\n",
    "fov_list = [20, 45, 110]\n",
    "res_list = [(128, 128), (256, 256), (256, 230)]  # (192,256)]\n",
    "res_full = (1600, 1440)\n",
    "gen = GenFinal(fov_list, res_list, res_full, fovea_net, periph_net,\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
154
    "               device=device.default())\n"
Nianchen Deng's avatar
sync    
Nianchen Deng committed
155
156
157
158
159
160
161
162
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
Nianchen Deng's avatar
Nianchen Deng committed
163
164
    "center_x_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
    "for view_idx in range(10):\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
165
166
167
    "    center = (center_x_list[view_idx], -center_x_list[view_idx] * 1600 / 1440)\n",
    "    test_view = views.get(view_idx)\n",
    "    images = gen.gen(center, test_view, True)\n",
Nianchen Deng's avatar
Nianchen Deng committed
168
    "    #plot_figures(images, center)\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
169
    "\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
170
    "    misc.create_dir('output/teasers')\n",
Nianchen Deng's avatar
Nianchen Deng committed
171
    "    for key in images:\n",
Nianchen Deng's avatar
sync    
Nianchen Deng committed
172
    "        img.save(\n",
Nianchen Deng's avatar
Nianchen Deng committed
173
    "            images[key], 'output/teasers/view%04d_%s.png' % (view_idx, key))\n"
Nianchen Deng's avatar
sync    
Nianchen Deng committed
174
175
176
177
178
179
180
181
182
183
184
185
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
Nianchen Deng's avatar
sync    
Nianchen Deng committed
186
187
   "display_name": "Python 3.7.9 64-bit ('pytorch': conda)",
   "name": "python379jvsc74a57bd0660ca2a75467d3af74a68fcc6f40bc78ab96b99ff17d2f100b5ca821fbb183f2"
Nianchen Deng's avatar
sync    
Nianchen Deng committed
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
  },
  "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.9"
  },
  "orig_nbformat": 2
 },
 "nbformat": 4,
 "nbformat_minor": 2
}