in phosa/global_opt.py [0:0]
def visualize_human_object(model, image):
# Rendered frontal image
if image.max() > 1:
image = image / 255.0
rend, mask = model.render(model.renderer)
h, w, c = image.shape
L = max(h, w)
new_image = np.pad(image.copy(), ((0, L - h), (0, L - w), (0, 0)))
new_image[mask] = rend[mask]
new_image = (new_image[:h, :w] * 255).astype(np.uint8)
# Rendered top-down image
theta = 1.3
d = 3
x, y = np.cos(theta), np.sin(theta)
mx, my, mz = model.get_verts_object().mean(dim=(0, 1)).detach().cpu().numpy()
K = model.renderer.K
R2 = torch.cuda.FloatTensor([[[1, 0, 0], [0, x, -y], [0, y, x]]])
t2 = torch.cuda.FloatTensor([mx, my + d, mz])
top_renderer = nr.renderer.Renderer(
image_size=IMAGE_SIZE, K=K, R=R2, t=t2, orig_size=1
)
top_renderer.background_color = [1, 1, 1]
top_renderer.light_direction = [1, 0.5, 1]
top_renderer.light_intensity_direction = 0.3
top_renderer.light_intensity_ambient = 0.5
top_renderer.background_color = [1, 1, 1]
top_down, _ = model.render(top_renderer)
top_down = (top_down * 255).astype(np.uint8)
return new_image, top_down