Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why predcited motions are scaled using the gtmotion before calculating the ATE? #19

Open
mhmd-j opened this issue Feb 3, 2024 · 3 comments

Comments

@mhmd-j
Copy link

mhmd-j commented Feb 3, 2024

Why in line estimations are scaled using the gtmotions before calculating the ATE?

@SecureSheII
Copy link
Member

Because monocular methods only predict up-to-scale translations. Need to recover the scale with GT before evaluation.

@mhmd-j
Copy link
Author

mhmd-j commented Feb 3, 2024

Thanks for your response!
However in
evaluator.evaluate_one_trajectory(gtposes, estposes, scale=True, kittitype=(datastr=='kitti')) (here), the flag for the scale is true. Then, is passed to
ate_score, gt_ate_aligned, est_ate_aligned = self.ate_eval.evaluate(gt_traj, est_traj, scale) (here) and then is used in rot, trans, trans_error, s = align(gt_xyz, est_xyz, scale) at here.
The function align itself calculates the scale using the Horn method which is used to scale the predictions to ground truth. So why was there a need for the initial scaling before using the evaluator?

@SecureSheII
Copy link
Member

SecureSheII commented Feb 5, 2024

The scale in per_frame_scale_alignment is the flag to simply scale up all translations to GT. The scale in align is the flag for a scale alignment to be done before comparing trajectories using ATE/RPE. Both are the referring to the same issue so per_frame_scale_alignment is indeed redundant here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants