MrTornado24 / FENeRF

[CVPR 2022] FENeRF: Face Editing in Neural Radiance Fields
MIT License
225 stars 19 forks source link

Inversion的时候如果是输入同一个人多个视角的图片? #13

Closed muyoucun closed 1 year ago

muyoucun commented 2 years ago

请问做inverse latent code的时候输入的都是一张正面人脸图像嘛? 如果说我有这个人的几张不同角度的图片,做inverse的时候得到的latent code、重建出来的结果会不会更好?? 如果是的话 请问在inverse_render_double_semantic里边具体要怎么操作呢??

MrTornado24 commented 2 years ago

对,现在都是正面图像。但你也可以用一些预训练好的pose检测网络,例如deepfacerecon得到pose,然后在训练的时候按照这个角度渲染下来。多视角优化的结果一般会更好,但前提也是已知每张图的camera pose。训练的时候渲染多个视角然后分别对相应视角下的GT算loss就行。

muyoucun commented 2 years ago

谢谢大佬。 再请问一下,有关camera pose的问题。我看在训练或者推理的时候,输入的相机视角目前都是从一个pose distribution中随机采样得到的,那如果我已知了我所有图片的camera pose(通过您说的deepfacerecon?),那这一块 我就可以直接用已知的pose,不需要下面的采样了是吗??

points_cam, z_vals, rays_d_cam = get_initial_rays_trig(batch_size, num_steps, resolution=(img_size, img_size), device=self.device, fov=fov, ray_start=ray_start, ray_end=ray_end) # batch_size, pixels, num_steps, 1
transformed_points, z_vals, transformed_ray_directions, transformed_ray_origins, pitch, yaw = transform_sampled_points(points_cam, z_vals, rays_d_cam, h_stddev=h_stddev, v_stddev=v_stddev, h_mean=h_mean, v_mean=v_mean, device=self.device, mode=sample_dist)