-
Notifications
You must be signed in to change notification settings - Fork 171
Add rig support and upgrade colmap to version 3.12 #201
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
Conversation
|
#201 (comment) continued I discovered that you need to make sure to set the translation to NaN for The zeroed out translation worked with colmap, so it might be good to keep that behavior with glomap to keep it consistent and prevent other people from running into this problem. |
|
Hi @GibsDev, thanks for sharing your experience. Do you mind sharing some data so that we can play around with it? If you set the translation to be NaN, glomap will try to estimate the translation from scratch, so you can observe the difference. However, we expect it to optimize together with other properties in the bundle adjustment part, which should behave similarly to colmap. |
|
I'm afraid I don't have a dataset I can share at the moment without special permission. In further testing I discovered that the rig estimation using glomap was not as effective/accurate as colmap. In one of my test datasets, I was getting 0.84px mean reprojection error with colmap and upwards of 2.3px mean reprojection error with glomap when allowing them to calculate the rig poses from "scratch". However, when I manually fed the rig poses into the rig config, glomap actually managed to beat colmap for mean reprojection error at 0.75px! |
|
Thank you @GibsDev, for sharing your experience. I just found a bug in my previous implementation with |
|
I'm excited to try out the new changes! I did not post about it here, but during further testing I also experienced an issue where almost all of the points were being filtered out by the time the mapper completed, so I'm glad to see that there were some changes related to that as well. |
|
Results have been fantastic in my testing so far! Being able to seed the rig rotation and translation with a very good estimate and then allowing it to refine it seems to be working really well! One thing I discovered after my last post was that even though I was getting better mean reprojection error by hard coding in the relative rig poses with some rough calculations. The overall "convergence" wasn't as good for training gaussian splats. So refining the rig poses is still necessary, or you need to have much more accurate rig poses than what I was using. The changes to the pruning have also been beneficial. I have one dataset that previously was failing about 80% of the time due to all of the tracks being filtered out (without changing any settings between runs). Maybe I'm just getting lucky, but it seems to be much more stable! Well done on this! |
2c4601f to
8d637c6
Compare
* rigged global positioning. Not debugged yet * compilation debugged * the rigged GP debugged * debug code * dbugging rig GP * rig rotation averaging implemented * minor * rigged bundle adjustment * rigged pipeline * largest connect componenet establishment with rigs * test entry point * remove unnecessary dependency * add support for relative pose estimation only * change the snapshot logic * minor * migrate to COLMAP 3..12 (with rig support) * refactor rotation averaging. RIGGED version not working yet * d * rigged rotation averaging debugged. The convergence is poor. * rigged global positioning * minor * add stratefied rotation averaging for initialization * rotation initializer * gravity refinement with rig support * unit test for mapper. Include additional non-trivial rig test * unit test for RA. Add test for rig support * add gravity aligned RA for rigs * move the gravity property to frames * add frame struct * pose io with gravity support * d * remove the old version * rename the rigged version back to normal * name back the rigged version to default * normalization with rig support * cleanup and add support for cam-to-cam constraints * add reconstruction normalization * cleanup * f * d * d * f * d * d * d * d * d * skip unconnected images * f * Update glomap/controllers/global_mapper.cc Co-authored-by: Johannes Schönberger <[email protected]> * Update glomap/controllers/global_mapper.cc Co-authored-by: Johannes Schönberger <[email protected]> * renaming * remove redundant files * temp cam_from_world * change version match to only consider the first two numbers * changed todo * renaming * refactor the code so the is_registered is a frame property * formulate the pruning with respect to frames * m * f * d * d * Update to latest colmap and poselib * Update glomap/estimators/cost_function.h Co-authored-by: Johannes Schönberger <[email protected]> * Update glomap/estimators/gravity_refinement.cc Co-authored-by: Johannes Schönberger <[email protected]> * Update glomap/estimators/gravity_refinement.cc Co-authored-by: Johannes Schönberger <[email protected]> * address minor issues * clean up * f * d * cleanup * expose optimize_rig_poses in cli * fix the bug for the reconstruction output when there are more than 1 cluster * f * make pair_id consistent with colmap * fix the bug for ba with rig calibration * f * f * stablize the reconstruction by removing nearly degenerate points * d * d * d * d * d * d * d * d * d * d * d * d --------- Co-authored-by: Johannes Schönberger <[email protected]> Co-authored-by: Johannes Schönberger <[email protected]>
No description provided.