Dear authors,
In SmoothOptimizer and RootOptimizer, I think the joints3d/joints3d_op in SMPLLoss/RootLoss is in the world coordinate system. And the re-projection is performed to get the proj_2d joints from (world -> pixel coordinates).
However, it seems like in MotionLoss, the cam_pred_data is passed into RootLoss:
|
loss, stats_dict = super().forward( |
|
observed_data, cam_pred_data, nsteps, valid_mask=valid_mask |
|
) |
Whilst I think from the logic in rollout_latent_motion(), it looks like cam_pred_data is actually still in the world coordinate system, and is transformed back from the local coordinate system used in the rollout procedure. I am therefore confused about the name of the variables: Why is this data named cam_pred_data with a comment above saying "must return trans and root orient in camera frame...", while the function name is apply_world2prior? And it doesn't look like camera coordinate system data to me.
I just would like to confirm whether this is a naming issue or I misunderstood it. Thank you!
Dear authors,
In
SmoothOptimizerandRootOptimizer, I think the joints3d/joints3d_op inSMPLLoss/RootLossis in the world coordinate system. And the re-projection is performed to get the proj_2d joints from (world -> pixel coordinates).However, it seems like in
MotionLoss, the cam_pred_data is passed into RootLoss:slahmr/slahmr/optim/losses.py
Lines 226 to 228 in 58518fe
Whilst I think from the logic in rollout_latent_motion(), it looks like
cam_pred_datais actually still in the world coordinate system, and is transformed back from the local coordinate system used in the rollout procedure. I am therefore confused about the name of the variables: Why is this data namedcam_pred_datawith a comment above saying"must return trans and root orient in camera frame...", while the function name isapply_world2prior? And it doesn't look like camera coordinate system data to me.I just would like to confirm whether this is a naming issue or I misunderstood it. Thank you!