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

Subproblem partitioning to support covariance estimation for ultra large-scale problem #2882

Open
wants to merge 25 commits into
base: main
Choose a base branch
from

Conversation

B1ueber2y
Copy link
Contributor

@B1ueber2y B1ueber2y commented Nov 4, 2024

  • Abstract the logic of parameter block partitioning from covariance estimator to ProblemPartitioner.
  • Support covariance estimation with subproblem specified either by 1) a list of subset pose parameter blocks. 2) a list of subset image ids. If used, only the subproblem is considered in covariance estimation, with all the other pose parameter blocks treated as fixed boundary blocks. The key interface is estimator.UseSubproblemFromSubsetPoseBlocks and estimator.UseSubproblemFromSubsetImages.
  • Add tests. The output is compared with ceres estimator on an extended problem setting all boundary poses to be constant. Note that our approach does not require any modification to the problem itself and could automatically prune points and variables that are non-relevant in the subproblem while this baseline cannot (also ceres suffers from rank deficient points).
  • Fill in missing tests for Factorize() introduced in Faster covariance computation for small blocks #2633)

Note that with this update the qvec and tvec for a single image might not be in adjacent blocks in the internal ordering of covariance estimation, and thus the covariance getter by image ids are accordingly updated. The performance should stay unchanged.

This will make estimation of pose covariance for ultra large-scale problem feasible with a reasonable selection of subset pose blocks. One can do covariance estimation in sliding window manner either spatially or temporally with this update.

@B1ueber2y B1ueber2y marked this pull request as draft November 4, 2024 04:59
@B1ueber2y B1ueber2y marked this pull request as ready for review November 4, 2024 12:19
@B1ueber2y B1ueber2y changed the title Subproblem partitioning with BFS to support covariance estimation for extremely large-scale problem Subproblem partitioning with BFS to support covariance estimation for ultra large-scale problem Nov 4, 2024
@B1ueber2y B1ueber2y changed the title Subproblem partitioning with BFS to support covariance estimation for ultra large-scale problem Subproblem partitioning to support covariance estimation for ultra large-scale problem Nov 4, 2024
@ahojnnes
Copy link
Contributor

ahojnnes commented Nov 5, 2024

I have not had time to look into the details but the title sounds exciting. Independent of the algorithm itself, I would suggest to first converge on a simplified interface. I took a stab at this in this draft PR: #2788. Not sure if this is still the best approach. It was based on a discussion we had about only exposing the option to compute covariances for poses based on fixed points and vice versa.

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

Successfully merging this pull request may close these issues.

2 participants