(args, render_poses, hwf, chunk, render_kwargs, gt_imgs=None, savedir=None, render_factor=0, single_gt_img=False, img_ids=torch.Tensor(0))
| 401 | |
| 402 | ### This is for validation ### |
| 403 | def render_path(args, render_poses, hwf, chunk, render_kwargs, gt_imgs=None, savedir=None, render_factor=0, single_gt_img=False, img_ids=torch.Tensor(0)): |
| 404 | # render_kwargs['network_fn'].eval() |
| 405 | |
| 406 | H, W, focal = hwf |
| 407 | |
| 408 | if render_factor!=0: |
| 409 | # Render downsampled for speed |
| 410 | H = int(H//render_factor) |
| 411 | W = int(W//render_factor) |
| 412 | focal = focal/render_factor |
| 413 | |
| 414 | rgbs = [] |
| 415 | disps = [] |
| 416 | rgb0s = [] |
| 417 | psnr = [] |
| 418 | |
| 419 | t = time.time() |
| 420 | for i, c2w in enumerate(tqdm(render_poses)): |
| 421 | t = time.time() |
| 422 | rgb, disp, acc, extras = render(H, W, focal, chunk=chunk, c2w=c2w[:3,:4], img_idx=img_ids[i], **render_kwargs) |
| 423 | rgbs.append(rgb.cpu().numpy()) |
| 424 | disps.append(disp.cpu().numpy()) |
| 425 | # rgb0s.append(extras['rgb0'].cpu().numpy()) |
| 426 | if i==0: |
| 427 | print(rgb.shape, disp.shape) |
| 428 | |
| 429 | if gt_imgs is not None: |
| 430 | if single_gt_img: |
| 431 | p = -10. * np.log10(np.mean(np.square(rgb.cpu().numpy() - gt_imgs))) |
| 432 | else: |
| 433 | p = -10. * np.log10(np.mean(np.square(rgb.cpu().numpy() - gt_imgs[i]))) |
| 434 | psnr.append(p)#print(p) |
| 435 | |
| 436 | if savedir is not None: |
| 437 | # rgb8_c = to8b(rgb0s[-1]) # save coarse img |
| 438 | # filename = os.path.join(savedir, '{:03d}_coarse.png'.format(i)) |
| 439 | # imageio.imwrite(filename, rgb8_c) |
| 440 | |
| 441 | rgb8_f = to8b(rgbs[-1]) # save coarse+fine img |
| 442 | filename = os.path.join(savedir, '{:03d}.png'.format(i)) |
| 443 | imageio.imwrite(filename, rgb8_f) |
| 444 | |
| 445 | ### Need validate code |
| 446 | rgb_gt = to8b(gt_imgs[i]) # save GT img here |
| 447 | filename = os.path.join(savedir, '{:03d}_GT.png'.format(i)) |
| 448 | imageio.imwrite(filename, rgb_gt) |
| 449 | |
| 450 | rgb_disp = to8b(disps[-1] / np.max(disps[-1])) # save GT img here |
| 451 | filename = os.path.join(savedir, '{:03d}_disp.png'.format(i)) |
| 452 | imageio.imwrite(filename, rgb_disp) |
| 453 | |
| 454 | rgbs = np.stack(rgbs, 0) |
| 455 | disps = np.stack(disps, 0) |
| 456 | psnr = np.mean(psnr,0) |
| 457 | print("Mean PSNR of this run is:", psnr) |
| 458 | return rgbs, disps |
| 459 | |
| 460 | def render_test(args, train_dl, val_dl, hwf, start, render_kwargs_test, decoder_coarse=None, decoder_fine=None): |
no test coverage detected