def batched_inference(models, embeddings, rays, N_samples, N_importance, use_disp, chunk, white_back): """Do batched inference on rays using chunk.""" B = rays.shape[0] chunk = 1024 * 32 results = defaultdict(list) for i in range(0, B, chunk): rendered_ray_chunks = \ render_rays(models, embeddings, rays[i:i+chunk], N_samples, use_disp, 0, 0, N_importance, chunk, dataset.white_back) for k, v in rendered_ray_chunks.items(): results[k] += [v] for k, v in results.items(): results[k] = torch.cat(v, 0) return results
def forward(self, rays): """Do batched inference on rays using chunk.""" B = rays.shape[0] results = defaultdict(list) for i in range(0, B, self.hparams.chunk): rendered_ray_chunks = \ render_rays(self.models, self.embeddings, rays[i:i+self.hparams.chunk], self.hparams.N_samples, self.hparams.use_disp, self.hparams.perturb, self.hparams.noise_std, self.hparams.N_importance, self.hparams.chunk, # chunk size is effective in val mode self.train_dataset.white_back) for k, v in rendered_ray_chunks.items(): results[k] += [v] for k, v in results.items(): results[k] = torch.cat(v, 0) return results