From abaab19eed64f27e5ef285f8265f5738e0141ea2 Mon Sep 17 00:00:00 2001 From: salykovaa Date: Fri, 11 Jun 2021 15:06:07 +0200 Subject: [PATCH] add llff dataset --- configs/fern.txt | 23 ++-- configs/flower.txt | 23 ++-- configs/hotdog.txt | 29 ++--- configs/lego.txt | 10 +- configs/orchids.txt | 23 ++-- configs/room.txt | 23 ++-- nerf_helpers.py | 10 +- output/lego/0.png | Bin 136012 -> 0 bytes run.py | 158 +++++++++++++++++++--------- utils.py | 251 +++++++++++++++++++++++++++++++++++++++++++- 10 files changed, 446 insertions(+), 104 deletions(-) delete mode 100644 output/lego/0.png diff --git a/configs/fern.txt b/configs/fern.txt index a044d2b..9928bd6 100644 --- a/configs/fern.txt +++ b/configs/fern.txt @@ -1,15 +1,24 @@ -expname = fern_test -basedir = ./logs -datadir = ./data/nerf_llff_data/fern +output_dir = ./output +obs_imgs_dir = ./data/nerf_llff_data/fern +ckpt_dir = ./ckpts + +ckpt_name = fern +model_name = fern dataset_type = llff factor = 8 llffhold = 8 - -N_rand = 1024 +use_viewdirs = True N_samples = 64 N_importance = 64 - -use_viewdirs = True raw_noise_std = 1e0 +obs_img_num = 18 +dil_iter = 1 +kernel_size = 3 +start_pose_num = 19 +batch_size = 2048 +lrate = 0.01 + + + diff --git a/configs/flower.txt b/configs/flower.txt index 43db6a8..8128095 100644 --- a/configs/flower.txt +++ b/configs/flower.txt @@ -1,15 +1,24 @@ -expname = flower_test -basedir = ./logs -datadir = ./data/nerf_llff_data/flower +output_dir = ./output +obs_imgs_dir = ./data/nerf_llff_data/flower +ckpt_dir = ./ckpts + +ckpt_name = flower +model_name = flower dataset_type = llff factor = 8 llffhold = 8 - -N_rand = 1024 +use_viewdirs = True N_samples = 64 N_importance = 64 - -use_viewdirs = True raw_noise_std = 1e0 +obs_img_num = 18 +dil_iter = 1 +kernel_size = 3 +start_pose_num = 19 +batch_size = 2048 +lrate = 0.01 + + + diff --git a/configs/hotdog.txt b/configs/hotdog.txt index 6c28961..8d232bf 100644 --- a/configs/hotdog.txt +++ b/configs/hotdog.txt @@ -1,15 +1,20 @@ -expname = hotdog_test -basedir = ./logs -datadir = ./data/nerf_llff_data/hotdog -dataset_type = llff - -factor = 8 -llffhold = 8 - -N_rand = 1024 -N_samples = 64 -N_importance = 64 +model_name = hotdog +output_dir = ./output +data_dir = ./data/nerf_synthetic/hotdog +dataset_type = blender +obs_imgs_dir = ./data/nerf_synthetic/hotdog/obs_imgs +ckpt_dir = ./ckpts +ckpt_name = hotdog use_viewdirs = True -raw_noise_std = 1e0 +white_bkgd = True +N_samples = 50 +N_importance = 80 +half_res = True +obs_img_num = 15 +dil_iter = 1 +kernel_size = 3 +start_pose_num = 27 +batch_size = 2050 +lrate = 0.01 \ No newline at end of file diff --git a/configs/lego.txt b/configs/lego.txt index 4fdc507..9254cae 100644 --- a/configs/lego.txt +++ b/configs/lego.txt @@ -8,13 +8,13 @@ ckpt_name = lego use_viewdirs = True white_bkgd = True -N_samples = 32 -N_importance = 64 +N_samples = 50 +N_importance = 80 half_res = True -obs_img_num = 30 +obs_img_num = 15 dil_iter = 1 kernel_size = 3 -start_pose_num = 48 -batch_size = 500 +start_pose_num = 27 +batch_size = 2050 lrate = 0.01 \ No newline at end of file diff --git a/configs/orchids.txt b/configs/orchids.txt index ef33502..7264f65 100644 --- a/configs/orchids.txt +++ b/configs/orchids.txt @@ -1,15 +1,24 @@ -expname = orchids_test -basedir = ./logs -datadir = ./data/nerf_llff_data/orchids +output_dir = ./output +obs_imgs_dir = ./data/nerf_llff_data/orchids +ckpt_dir = ./ckpts + +ckpt_name = orchids +model_name = orchids dataset_type = llff factor = 8 llffhold = 8 - -N_rand = 1024 +use_viewdirs = True N_samples = 64 N_importance = 64 - -use_viewdirs = True raw_noise_std = 1e0 +obs_img_num = 18 +dil_iter = 1 +kernel_size = 3 +start_pose_num = 19 +batch_size = 2048 +lrate = 0.01 + + + diff --git a/configs/room.txt b/configs/room.txt index 90d3c32..84b80d3 100644 --- a/configs/room.txt +++ b/configs/room.txt @@ -1,15 +1,24 @@ -expname = room_test -basedir = ./logs -datadir = ./data/nerf_llff_data/room +output_dir = ./output +obs_imgs_dir = ./data/nerf_llff_data/room +ckpt_dir = ./ckpts + +ckpt_name = room +model_name = room dataset_type = llff factor = 8 llffhold = 8 - -N_rand = 1024 +use_viewdirs = True N_samples = 64 N_importance = 64 - -use_viewdirs = True raw_noise_std = 1e0 +obs_img_num = 18 +dil_iter = 1 +kernel_size = 3 +start_pose_num = 19 +batch_size = 2048 +lrate = 0.01 + + + diff --git a/nerf_helpers.py b/nerf_helpers.py index 8f79b5a..20bea9d 100644 --- a/nerf_helpers.py +++ b/nerf_helpers.py @@ -47,11 +47,15 @@ def load_nerf(args, device): 'network_fn': model, 'use_viewdirs': args.use_viewdirs, 'white_bkgd': args.white_bkgd, - 'raw_noise_std': args.raw_noise_std, - 'ndc' : False, - 'lindisp' : args.lindisp + 'raw_noise_std': args.raw_noise_std } + # NDC only good for LLFF-style forward facing data + if args.dataset_type != 'llff' or args.no_ndc: + print('Not ndc!') + render_kwargs['ndc'] = False + render_kwargs['lindisp'] = args.lindisp + # Disable updating of the weights for param in model.parameters(): param.requires_grad = False diff --git a/output/lego/0.png b/output/lego/0.png deleted file mode 100644 index e78e43359b618985838190dc22bc8a0ea898a9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136012 zcmZsAXH*l;6Kz5X0Rko@NXLXOBGNk&AQWkW5Sk#pgN0rt^aQCY73<7M_TR~k zxx5Sj5CC|9Q8x0Q-n?|FbT>)mj4rp?@zQgg-|OR!Ceue_^HwTI73*P}d>QVK`V1Ic zUfT@6ZF3ggd~TYGuo-!Mq>383;+}fTn2@B~qkNsj^4cR>wyw)jI;d>DqRIdbjB35$ zocCX4@2@;D?@`+S9&`S5Wh!9*elBbK%T=n~?MD8AO0S)|iL>!f-=iEsi3zt_e)K~3 zhGZ1vuFxEZ&fu4rM2+$Fp}j6^MLAB6!~~5_?uer`e{Y5V?I7a?OGA5W{`Qss&s4CK z+!FZzObHsGjsKav6~s*c=k-6}|0f1ZnMP;Kwn&Xe3idzL|6B@e%I{w|-r2KG)Y9Rh@D^Wdf(;V+C8W1A>RVoci|^b&ur#FoVqpt*Y%2B<4#VEt75WyJ?kL<+c?!A-@|tYPh2ak(q6u6cMt|_SR1Idyh0`x)Qw=WZY7I zDVLO;m--!N1{F~;1;9uC1ltGPdID#N-X~IjJy}|OsFC9ucyz)EfSGfyOnS|S5)0lb zzT9st^~s(n|*hqQNH#x zqqFzqQva}PtxpN=q|m*+&>u5vbg6kBm#9#7Yu#Ix=A)1VOQ)D|=Y1c9in_a{`3
K?8k(?@Mb>?@eK#GCo4ibRssuKfcY_aWUR{s{ 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 XnCIpC0V{NBm`WHV{^$dcQXGS!%QH9DF4MiX) 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 diff --git a/run.py b/run.py index 6104f3e..2527852 100644 --- a/run.py +++ b/run.py @@ -3,7 +3,7 @@ import imageio import numpy as np import cv2 -from utils import config_parser, load_img, show_img, find_ipoints, img2mse +from utils import config_parser, load_blender, show_img, find_POI, img2mse, load_llff_data from nerf_helpers import load_nerf from render_helpers import render, to8b, get_rays from inerf_helpers import camera_transf @@ -25,35 +25,48 @@ def run(): batch_size = args.batch_size kernel_size = args.kernel_size lrate = args.lrate + dataset_type = args.dataset_type # Load and pre-process the observed image # obs_img - rgb image with elements in range 0...255 - obs_img, hwf, start_pose, end_pose = load_img(args.obs_imgs_dir, obs_img_num, - start_pose_num, args.half_res, args.white_bkgd) - start_pose = torch.Tensor(start_pose).to(device) + if dataset_type == 'blender': + obs_img, hwf, start_pose, obs_img_pose = load_blender(args.obs_imgs_dir, obs_img_num, + start_pose_num, args.half_res, args.white_bkgd) + H, W, focal = hwf + near, far = 2., 6. # Blender + else: + obs_img, hwf, start_pose, obs_img_pose, bds = load_llff_data(args.obs_imgs_dir, obs_img_num, start_pose_num, factor=8, recenter=True, bd_factor=.75, spherify=False) + H, W, focal = hwf + H, W = int(H), int(W) + if args.no_ndc: + near = np.ndarray.min(bds) * .9 + far = np.ndarray.max(bds) * 1. + else: + near = 0. + far = 1. + start_pose = torch.Tensor(start_pose).to(device) if DEBUG: show_img("Observed image", obs_img) # Find points of interest - interest_pts_coords = find_ipoints(obs_img, DEBUG) # xy pixel coordinates of interest points (N x 2) + POI = find_POI(obs_img, DEBUG) # xy pixel coordinates of interest points (N x 2) + # Filter out the points that do not fit sample region + POI = [point for point in POI if ((((point[0]-kernel_size) >= 0) and ((point[1]-kernel_size) >= 0 )) and (((point[0]+kernel_size) <= (H-1)) and ((point[1]+kernel_size) <= (W-1))))] + POI = np.array(POI).astype(int) # Dilate the observed image I = args.dil_iter dil_obs_img = cv2.dilate(obs_img, np.ones((kernel_size, kernel_size), np.uint8), iterations=I) if DEBUG: show_img("Dilated image", dil_obs_img) - print(start_pose) - print(end_pose) - return + dil_obs_img = (np.array(dil_obs_img) / 255.).astype(np.float32) - H, W, focal = hwf region_size = kernel_size ** 2 num_regions = int(batch_size / region_size) # Load NeRF Model - near, far = 2., 6. # Blender render_kwargs = load_nerf(args, device) bds_dict = { 'near': near, @@ -68,18 +81,16 @@ def run(): testsavedir = os.path.join(output_dir, model_name) os.makedirs(testsavedir, exist_ok=True) - for k in range(600): + + for k in range(300): batch = np.zeros((num_regions, kernel_size, kernel_size, 2), dtype=np.int) - rand_inds = np.random.choice(interest_pts_coords.shape[0], size=[num_regions], replace=False) # (N_rand,) - rand_coords = interest_pts_coords[rand_inds] + rand_inds = np.random.choice(POI.shape[0], size=[num_regions], replace=False) # (N_rand,) + rand_coords = POI[rand_inds] step = int(kernel_size / 2) - coords = np.asarray(np.stack(np.meshgrid(np.linspace(0, H - 1, H), np.linspace(0, W - 1, W)), -1), + coords = np.asarray(np.stack(np.meshgrid(np.linspace(0, W - 1, W), np.linspace(0, H - 1, H)), -1), dtype=np.int) # (H, W, 2) for i in range(len(rand_coords)): - if ((rand_coords[i][0] - step) < 0) or ((rand_coords[i][0] + step + 1) > H) or ( - (rand_coords[i][1] - step) < 0) or ((rand_coords[i][1] + step + 1) > W): - continue batch[i] = coords[rand_coords[i][0] - step: rand_coords[i][0] + step + 1, rand_coords[i][1] - step: rand_coords[i][1] + step + 1] batch = batch.reshape((batch.shape[0] * region_size, 2)) # (num_regions * region_size, 2) @@ -87,6 +98,7 @@ def run(): target_s = torch.Tensor(target_s).to(device) pose = cam_transf(start_pose) + rays_o, rays_d = get_rays(H, W, focal, pose) # (H, W, 3), (H, W, 3) rays_o = rays_o[batch[:, 0], batch[:, 1]] # (N_rand, 3) rays_d = rays_d[batch[:, 0], batch[:, 1]] @@ -105,54 +117,65 @@ def run(): for param_group in optimizer.param_groups: param_group['lr'] = new_lrate - if (k + 1) % 30 == 0: + if (k + 1) % 10 == 0: print(pose) print(loss) + with torch.no_grad(): + rgb, disp, acc, _ = render(H, W, focal, chunk=args.chunk, c2w=pose[:3, :4], **render_kwargs) + rgb = rgb.cpu().detach().numpy() + rgb8 = to8b(rgb) + filename = os.path.join(testsavedir, str(k)+'.png') + imageio.imwrite(filename, rgb8) + def run2(): + # Parameters parser = config_parser() args = parser.parse_args() + output_dir = args.output_dir model_name = args.model_name + obs_img_num = args.obs_img_num + start_pose_num = args.start_pose_num + batch_size = args.batch_size + kernel_size = args.kernel_size + lrate = args.lrate + dataset_type = args.dataset_type + + # Load and pre-process the observed image + # obs_img - rgb image with elements in range 0...255 + if dataset_type == 'blender': + obs_img, hwf, start_pose, obs_img_pose = load_blender(args.obs_imgs_dir, obs_img_num, + start_pose_num, args.half_res, args.white_bkgd) + H, W, focal = hwf + near, far = 2., 6. # Blender + else: + obs_img, hwf, start_pose, obs_img_pose, bds = load_llff_data(args.obs_imgs_dir, obs_img_num, start_pose_num, + factor=8, recenter=True, bd_factor=.75, + spherify=False) + H, W, focal = hwf + H, W = int(H), int(W) + if args.no_ndc: + near = np.ndarray.min(bds) * .9 + far = np.ndarray.max(bds) * 1. + else: + near = 0. + far = 1. + + pose1 = torch.Tensor([[ 0.9968, 0.0270, -0.0748, -0.1488], + [-0.0307, 0.9983, -0.0489, -0.1686], + [ 0.0734, 0.0511, 0.9960, -0.0154], + [ 0.0000, 0.0000, 0.0000, 1.0000]]) + - near, far = 2., 6. render_kwargs = load_nerf(args, device) bds_dict = { 'near': near, 'far': far, } - pose = torch.Tensor([ - [ - -0.9997775554656982, - 0.016899261623620987, - -0.012622464448213577, - -0.05088278651237488 - ], - [ - -0.02109292894601822, - -0.801003098487854, - 0.5982884764671326, - 2.411778211593628 - ], - [ - 9.313225746154785e-10, - 0.5984216928482056, - 0.8011811971664429, - 3.2296650409698486 - ], - [ - 0.0, - 0.0, - 0.0, - 1.0 - ] - ]) render_kwargs.update(bds_dict) - H, W = 400, 400 - camera_angle_x = 0.6911112070083618 - focal = .5 * W / np.tan(.5 * camera_angle_x) - print('RENDER ONLY') - rgb, disp, acc, _ = render(H, W, focal, chunk=args.chunk, c2w=pose[:3, :4], **render_kwargs) + + rgb, disp, acc, _ = render(H, W, focal, chunk=args.chunk, c2w=pose1[:3, :4], **render_kwargs) testsavedir = os.path.join(args.output_dir, model_name) os.makedirs(testsavedir, exist_ok=True) rgb = rgb.cpu().numpy() @@ -160,8 +183,41 @@ def run2(): filename = os.path.join(testsavedir, '0.png') imageio.imwrite(filename, rgb8) +def overlay(): + parser = config_parser() + args = parser.parse_args() + output_dir = args.output_dir + model_name = args.model_name + obs_img_num = args.obs_img_num + + testsavedir = os.path.join(args.output_dir, model_name) + imgs = [] + for i in range(0, 280, 10): + if i == 0: + img = cv2.imread(testsavedir + '/img_' + str(i) + '.png') + else: + img = cv2.imread(testsavedir + '/img_' + str(i-1) + '.png') + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + imgs.append(img) + imageio.mimwrite(os.path.join(testsavedir, 'video.mp4'), imgs, fps=8, quality=8) + """ + ref = cv2.imread(testsavedir + '/ref.png') + + for i in range(0, 300, 10): + if i == 0: + img = cv2.imread(testsavedir + '/' + str(i) + '.png') + dst = cv2.addWeighted(img, 0.8, ref, 0.2, 0) + cv2.imwrite(testsavedir + '/img_' + str(i) + '.png', dst) + else: + img = cv2.imread(testsavedir + '/' + str(i-1) + '.png') + dst = cv2.addWeighted(img, 0.8, ref, 0.2, 0) + cv2.imwrite(testsavedir + '/img_' + str(i-1) + '.png', dst) + """ + DEBUG = False if __name__=='__main__': torch.set_default_tensor_type('torch.cuda.FloatTensor') - run() \ No newline at end of file + #overlay() + run() + diff --git a/utils.py b/utils.py index b1a9cb9..d76cac6 100644 --- a/utils.py +++ b/utils.py @@ -35,9 +35,9 @@ def config_parser(): help='layers in fine network') parser.add_argument("--netwidth_fine", type=int, default=256, help='channels per layer in fine network') - parser.add_argument("--chunk", type=int, default=1024*32, + parser.add_argument("--chunk", type=int, default=1024*32, #1024*32 help='number of rays processed in parallel, decrease if running out of memory') - parser.add_argument("--netchunk", type=int, default=1024*64, + parser.add_argument("--netchunk", type=int, default=1024*64, #1024*64 help='number of pts sent through network in parallel, decrease if running out of memory') # rendering options @@ -72,6 +72,14 @@ def config_parser(): parser.add_argument("--lindisp", action='store_true', help='sampling linearly in disparity rather than depth') + # llff flags + parser.add_argument("--llffhold", type=int, default=8, + help='will take every 1/N images as LLFF test set, paper uses 8') + parser.add_argument("--factor", type=int, default=8, + help='downsample factor for LLFF images') + parser.add_argument("--no_ndc", action='store_true', + help='do not use normalized device coordinates (set for non-forward facing scenes)') + # iNeRF options parser.add_argument("--obs_img_num", type=int, default=0, help='Number of an observed image') @@ -102,7 +110,7 @@ def config_parser(): return parser -def load_img(data_dir, img_num, start_pose_num, half_res, white_bkgd): +def load_blender(data_dir, img_num, start_pose_num, half_res, white_bkgd): with open(os.path.join(data_dir, 'transforms.json'), 'r') as fp: meta = json.load(fp) @@ -144,7 +152,7 @@ def show_img(title, img_rgb): # img - rgb image cv2.destroyAllWindows() -def find_ipoints(img_rgb, DEBUG=False): # img - RGB image in range 0...255 +def find_POI(img_rgb, DEBUG=False): # img - RGB image in range 0...255 img = np.copy(img_rgb) img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) sift = cv2.SIFT_create() @@ -159,4 +167,237 @@ def find_ipoints(img_rgb, DEBUG=False): # img - RGB image in range 0...255 # Misc img2mse = lambda x, y : torch.mean((x - y) ** 2) mse2psnr = lambda x : -10. * torch.log(x) / torch.log(torch.Tensor([10.])) -to8b = lambda x : (255*np.clip(x,0,1)).astype(np.uint8) \ No newline at end of file +to8b = lambda x : (255*np.clip(x,0,1)).astype(np.uint8) + +# Load llff data + +########## Slightly modified version of LLFF data loading code +########## see https://github.com/Fyusion/LLFF for original + +def _minify(basedir, factors=[], resolutions=[]): + needtoload = False + for r in factors: + imgdir = os.path.join(basedir, 'images_{}'.format(r)) + if not os.path.exists(imgdir): + needtoload = True + for r in resolutions: + imgdir = os.path.join(basedir, 'images_{}x{}'.format(r[1], r[0])) + if not os.path.exists(imgdir): + needtoload = True + if not needtoload: + return + + from subprocess import check_output + + imgdir = os.path.join(basedir, 'images') + imgs = [os.path.join(imgdir, f) for f in sorted(os.listdir(imgdir))] + imgs = [f for f in imgs if any([f.endswith(ex) for ex in ['JPG', 'jpg', 'png', 'jpeg', 'PNG']])] + imgdir_orig = imgdir + + wd = os.getcwd() + + for r in factors + resolutions: + if isinstance(r, int): + name = 'images_{}'.format(r) + resizearg = '{}%'.format(100. / r) + else: + name = 'images_{}x{}'.format(r[1], r[0]) + resizearg = '{}x{}'.format(r[1], r[0]) + imgdir = os.path.join(basedir, name) + if os.path.exists(imgdir): + continue + + print('Minifying', r, basedir) + + os.makedirs(imgdir) + check_output('cp {}/* {}'.format(imgdir_orig, imgdir), shell=True) + + ext = imgs[0].split('.')[-1] + args = ' '.join(['mogrify', '-resize', resizearg, '-format', 'png', '*.{}'.format(ext)]) + print(args) + os.chdir(imgdir) + check_output(args, shell=True) + os.chdir(wd) + + if ext != 'png': + check_output('rm {}/*.{}'.format(imgdir, ext), shell=True) + print('Removed duplicates') + print('Done') + + +def _load_data(basedir, factor=None, width=None, height=None, load_imgs=True): + poses_arr = np.load(os.path.join(basedir, 'poses_bounds.npy')) + poses = poses_arr[:, :-2].reshape([-1, 3, 5]).transpose([1, 2, 0]) + bds = poses_arr[:, -2:].transpose([1, 0]) + + img0 = [os.path.join(basedir, 'images', f) for f in sorted(os.listdir(os.path.join(basedir, 'images'))) \ + if f.endswith('JPG') or f.endswith('jpg') or f.endswith('png')][0] + sh = imageio.imread(img0).shape + + sfx = '' + + if factor is not None: + sfx = '_{}'.format(factor) + _minify(basedir, factors=[factor]) + factor = factor + elif height is not None: + factor = sh[0] / float(height) + width = int(sh[1] / factor) + _minify(basedir, resolutions=[[height, width]]) + sfx = '_{}x{}'.format(width, height) + elif width is not None: + factor = sh[1] / float(width) + height = int(sh[0] / factor) + _minify(basedir, resolutions=[[height, width]]) + sfx = '_{}x{}'.format(width, height) + else: + factor = 1 + + imgdir = os.path.join(basedir, 'images' + sfx) + if not os.path.exists(imgdir): + print(imgdir, 'does not exist, returning') + return + + imgfiles = [os.path.join(imgdir, f) for f in sorted(os.listdir(imgdir)) if + f.endswith('JPG') or f.endswith('jpg') or f.endswith('png')] + if poses.shape[-1] != len(imgfiles): + print('Mismatch between imgs {} and poses {} !!!!'.format(len(imgfiles), poses.shape[-1])) + return + + sh = imageio.imread(imgfiles[0]).shape + poses[:2, 4, :] = np.array(sh[:2]).reshape([2, 1]) + poses[2, 4, :] = poses[2, 4, :] * 1. / factor + + if not load_imgs: + return poses, bds + + def imread(f): + if f.endswith('png'): + return imageio.imread(f, ignoregamma=True) + else: + return imageio.imread(f) + + imgs = imgs = [imread(f)[..., :3] / 255. for f in imgfiles] + imgs = np.stack(imgs, -1) + + print('Loaded image data', imgs.shape, poses[:, -1, 0]) + return poses, bds, imgs + + +def normalize(x): + return x / np.linalg.norm(x) + + +def viewmatrix(z, up, pos): + vec2 = normalize(z) + vec1_avg = up + vec0 = normalize(np.cross(vec1_avg, vec2)) + vec1 = normalize(np.cross(vec2, vec0)) + m = np.stack([vec0, vec1, vec2, pos], 1) + return m + + +def ptstocam(pts, c2w): + tt = np.matmul(c2w[:3, :3].T, (pts - c2w[:3, 3])[..., np.newaxis])[..., 0] + return tt + + +def poses_avg(poses): + hwf = poses[0, :3, -1:] + + center = poses[:, :3, 3].mean(0) + vec2 = normalize(poses[:, :3, 2].sum(0)) + up = poses[:, :3, 1].sum(0) + c2w = np.concatenate([viewmatrix(vec2, up, center), hwf], 1) + + return c2w + + +def recenter_poses(poses): + poses_ = poses + 0 + bottom = np.reshape([0, 0, 0, 1.], [1, 4]) + c2w = poses_avg(poses) + c2w = np.concatenate([c2w[:3, :4], bottom], -2) + bottom = np.tile(np.reshape(bottom, [1, 1, 4]), [poses.shape[0], 1, 1]) + poses = np.concatenate([poses[:, :3, :4], bottom], -2) + + poses = np.linalg.inv(c2w) @ poses + poses_[:, :3, :4] = poses[:, :3, :4] + poses = poses_ + return poses + + +##################### + + +def spherify_poses(poses, bds): + p34_to_44 = lambda p: np.concatenate([p, np.tile(np.reshape(np.eye(4)[-1, :], [1, 1, 4]), [p.shape[0], 1, 1])], 1) + + rays_d = poses[:, :3, 2:3] + rays_o = poses[:, :3, 3:4] + + def min_line_dist(rays_o, rays_d): + A_i = np.eye(3) - rays_d * np.transpose(rays_d, [0, 2, 1]) + b_i = -A_i @ rays_o + pt_mindist = np.squeeze(-np.linalg.inv((np.transpose(A_i, [0, 2, 1]) @ A_i).mean(0)) @ (b_i).mean(0)) + return pt_mindist + + pt_mindist = min_line_dist(rays_o, rays_d) + + center = pt_mindist + up = (poses[:, :3, 3] - center).mean(0) + + vec0 = normalize(up) + vec1 = normalize(np.cross([.1, .2, .3], vec0)) + vec2 = normalize(np.cross(vec0, vec1)) + pos = center + c2w = np.stack([vec1, vec2, vec0, pos], 1) + + poses_reset = np.linalg.inv(p34_to_44(c2w[None])) @ p34_to_44(poses[:, :3, :4]) + + rad = np.sqrt(np.mean(np.sum(np.square(poses_reset[:, :3, 3]), -1))) + + sc = 1. / rad + poses_reset[:, :3, 3] *= sc + bds *= sc + rad *= sc + + centroid = np.mean(poses_reset[:, :3, 3], 0) + zh = centroid[2] + + poses_reset = np.concatenate( + [poses_reset[:, :3, :4], np.broadcast_to(poses[0, :3, -1:], poses_reset[:, :3, -1:].shape)], -1) + + return poses_reset, bds + + +def load_llff_data(basedir, obs_img_num, start_pose_num, factor=8, recenter=True, bd_factor=.75, spherify=False): + poses, bds, imgs = _load_data(basedir, factor=factor) # factor=8 downsamples original imgs by 8x + print('Loaded', basedir, bds.min(), bds.max()) + + # Correct rotation matrix ordering and move variable dim to axis 0 + poses = np.concatenate([poses[:, 1:2, :], -poses[:, 0:1, :], poses[:, 2:, :]], 1) + poses = np.moveaxis(poses, -1, 0).astype(np.float32) + images = np.moveaxis(imgs, -1, 0).astype(np.float32) + bds = np.moveaxis(bds, -1, 0).astype(np.float32) + + # Rescale if bd_factor is provided + sc = 1. if bd_factor is None else 1. / (bds.min() * bd_factor) + poses[:, :3, 3] *= sc + bds *= sc + + if recenter: + poses = recenter_poses(poses) + + if spherify: + poses, bds = spherify_poses(poses, bds) + + #images = images.astype(np.float32) + images = np.asarray(images * 255, dtype=np.uint8) + poses = poses.astype(np.float32) + hwf = poses[0,:3,-1] + poses = poses[:,:3,:4] + obs_img = images[obs_img_num] + obs_img_pose = np.concatenate((poses[obs_img_num], np.array([[0,0,0,1.]])), axis=0) + start_pose = np.concatenate((poses[start_pose_num], np.array([[0,0,0,1.]])), axis=0) + return obs_img, hwf, start_pose, obs_img_pose, bds \ No newline at end of file