You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem: When using the official project (tutorials/camera_position_optimization_with_differentiable_rendering.ipynb) to optimize the camera pose, the rendered image doesn't match the expected result, and the loss doesn't decrease as expected. Instead, the image looks strange (the rendered image is visually distorted).
When I use the following code with blur_radius=np.log(1. / 1e-4 - 1.) * blend_params.sigma in the RasterizationSettings, the rendered image looks distorted, as shown below:
However, when I set blur_radius = 0, the rendered image looks more reasonable:
But in this case, the loss increases continuously, which is not what I expect.
The original mesh (in the current camera pose) looks like this:
Code Explanation:
# Parameters for blending and rasterization
blend_params = BlendParams(sigma=1e-4, gamma=1e-4)
# Set up rasterization settings
raster_settings = RasterizationSettings(
image_size=image_size.cpu().tolist(),
blur_radius=np.log(1. / 1e-4 - 1.) * blend_params.sigma, # Derived from sigma
faces_per_pixel=100, # Number of faces considered per pixel
)
# Create the renderer with the mesh rasterizer and shader
renderer = MeshRenderer(
rasterizer=MeshRasterizer(
cameras=torch_cameras, # Camera parameters
raster_settings=raster_settings
),
shader=SoftSilhouetteShader(blend_params=blend_params) # Soft silhouette shader for rendering
)
# Parameters to optimize: Camera rotation (R) and translation (T)
params_to_optimize = [torch_cameras.R, torch_cameras.T]
optimizer = torch.optim.Adam(params_to_optimize, lr=5e-2)
# Optimization loop
num_steps = 200 # Number of optimization steps
for i in range(num_steps):
optimizer.zero_grad()
# Render the image from the current camera pose
rendered_image = renderer(meshs, cameras=torch_cameras)[..., 3] # Only the alpha channel (silhouette)
plt.imsave("test_render.png", rendered_image.detach().squeeze().cpu().numpy())
# Compute loss (mean squared error between rendered image and ground truth image)
loss = F.mse_loss(rendered_image, image_gt)
optimizer.zero_grad()
loss.backward()
optimizer.step()
How can I solve this issue and get PyTorch3D to properly optimize the pose? What might be causing the problem?
The text was updated successfully, but these errors were encountered:
Problem: When using the official project (tutorials/camera_position_optimization_with_differentiable_rendering.ipynb) to optimize the camera pose, the rendered image doesn't match the expected result, and the loss doesn't decrease as expected. Instead, the image looks strange (the rendered image is visually distorted).
But in this case, the loss increases continuously, which is not what I expect.
Code Explanation:
How can I solve this issue and get PyTorch3D to properly optimize the pose? What might be causing the problem?
The text was updated successfully, but these errors were encountered: