def visualize_human_object()

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