-
Notifications
You must be signed in to change notification settings - Fork 682
Allow passing custom estimation_options in localize_inloc.py #470
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
base: master
Are you sure you want to change the base?
Conversation
Hi @Phil26AT, I wanted to share a few observations regarding recent PyColmap updates (starting around v3.10.0 and later). Since these updates, I’ve been unable to reproduce InLoc's results, not only for SuperGlue and LightGlue but across other models I’ve tested (e.x. LoFTR) As an example, after freshly cloning the InLoc repository and running the provided notebook without making any changes, I obtained the following results with SuperGlue:
These numbers were fairly consistent across multiple machines. For context:
Interestingly, when replacing
Moreover, I can still reliably reproduce results on Aachen v1.1, where I got the following with default settings: SuperGlue:
LightGlue:
Thus, I am not entirely sure the reason for this behaviour on the InLoc dataset specifically. I hope this helps and I’m happy to run additional tests if needed. |
Hi @ayoussf, thank you for reopening this PR. Thank you for reporting detailed statistics on InLoc, and great that Aachen v1.1 is reproducible again. I was rerunning the pipeline (SP+SG) without changes, and also got similar results. However, results with the temporal pairs (used in the leaderboard) were reproducible up to ~2%:
Note that this dataset is fairly small and that pose estimation is non-deterministic (I get fluctuations of 1-2%), so small differences might not be significant. I checked the backlog, and realized that some default parameters in the estimation options changed, e.g.: old vs. new. It might be worth trying those. Could you maybe post the last pycolmap version where results were reproducible for you, together with the actual numbers? I will also try to run the pipeline with older versions over the next days. |
@Phil26AT Thank you for the detailed response. Unfortunately, I cannot pinpoint the exact pycolmap version I used, as I have since switched machines and no longer have access to the old environment to fully reproduce it. What I can say with certainty is that it was prior to v3.11.0. Over the coming days, I will rerun the evaluations for SP+SG and SP+LG across pycolmap versions 0.6.0 through 3.12.3. Starting from v3.11.0, I will also include results using both the old and new estimation options for consistency. I will share the updated results in a new comment on this PR. Lastly, I am aware there is a notebook for InLoc evaluation; however, if you prefer, I can create |
Hello @Phil26AT, Following up on my previous comment, I conducted evaluations on the InLoc dataset using both SP+SG and SP+LG across pycolmap versions 0.6.0 to 3.12.3. I am aware that earlier versions do not include the new RANSAC estimation options. However, for consistency, I evaluated each pycolmap version using both the new and old estimation settings. Since a Markdown table would not fit in a comment, I attached the results as a figure below. To ensure fairness:
From these results:
I also included Poselib results for comparison:
If you would like to double-check the evaluation code used, I have created a branch in my fork: I hope this is helpful, and apologies for the earlier confusion regarding the reproducibility of InLoc results. ![]() |
Allows passing custom estimation_options to localize_inloc.py, while maintaining the default behaviour if not provided.
I have also modified the Markdown in
pipeline_InLoc.ipynb
to specify additional details. If this is unwanted, I can revert to the original markdown.