def __getitem__(self, idx): intrinsics, _, _, _ = util.parse_intrinsics(os.path.join(self.instance_dir, "intrinsics.txt"), trgt_sidelength=self.img_sidelength) intrinsics = torch.Tensor(intrinsics).float() rgb = data_util.load_rgb(self.color_paths[idx], sidelength=self.img_sidelength) rgb = rgb.reshape(3, -1).transpose(1, 0) pose = data_util.load_pose(self.pose_paths[idx]) if self.has_params: params = data_util.load_params(self.param_paths[idx]) else: params = np.array([0]) uv = np.mgrid[0:self.img_sidelength, 0:self.img_sidelength].astype(np.int32) uv = torch.from_numpy(np.flip(uv, axis=0).copy()).long() uv = uv.reshape(2, -1).transpose(1, 0) sample = { "instance_idx": torch.Tensor([self.instance_idx]).squeeze(), "rgb": torch.from_numpy(rgb).float(), "pose": torch.from_numpy(pose).float(), "uv": uv, "param": torch.from_numpy(params).float(), "intrinsics": intrinsics } return sample
default=np.sqrt(3) / 2, help='Position of the near plane.') opt = parser.parse_args() print('\n'.join(["%s: %s" % (key, value) for key, value in vars(opt).items()])) device = torch.device('cuda') input_image_dims = [opt.img_sidelength, opt.img_sidelength] proj_image_dims = [ 64, 64 ] # Height, width of 2d feature map used for lifting and rendering. # Read origin of grid, scale of each voxel, and near plane _, grid_barycenter, scale, near_plane, _ = \ util.parse_intrinsics(os.path.join(opt.data_root, 'intrinsics.txt'), trgt_sidelength=input_image_dims[0]) if near_plane == 0.0: near_plane = opt.near_plane # Read intrinsic matrix for lifting and projection lift_intrinsic = util.parse_intrinsics(os.path.join(opt.data_root, 'intrinsics.txt'), trgt_sidelength=proj_image_dims[0])[0] proj_intrinsic = lift_intrinsic # Set up scale and world coordinates of voxel grid voxel_size = (1. / opt.grid_dim) * 1.1 * scale grid_origin = torch.tensor(np.eye(4)).float().to(device).squeeze() grid_origin[:3, 3] = grid_barycenter