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

[Multiview] Enhance L2 Rotation Averaging with Spectra library #1636

Draft
wants to merge 7 commits into
base: develop
Choose a base branch
from

Conversation

rjanvier
Copy link
Member

@rjanvier rjanvier commented Nov 10, 2019

This PR integrate the Spectra library as a third party dependency into the build tree and take advantage of its features in the L2 RA solver. On some medium sized datasets, speed increase of L2RA is up to 10x. I haven't check for memory usage but it should be highly reduced because we use sparse matrices everywhere.
This hopefully definitely close #937

EDIT: this PR is a WIP for testing it lacks:

  • [Build] Install Spectra headers (within the other parts of the lib)

@pmoulon
Copy link
Member

pmoulon commented Nov 14, 2019

Tested on my machine openMVG_test_rotation_averaging (Failed)

@rjanvier
Copy link
Member Author

rjanvier commented Nov 15, 2019

The paramameters that control the convergence speed should be lowered. (see nvec parameter in the documentation
https://spectralib.org/doc/classspectra_1_1symeigssolver). Initially I use a higher value (7) than the recommended one (2*3 = 6). It worked on my computer but it failed on travis (and on your computer). The recommended value should work on your computer but it still leeds to instabilities on travis (see this build https://travis-ci.org/rjanvier/openMVG/builds/612069353) so I lowered it (5) to make tests pass. I don't know if it's really rigorous...

@rjanvier rjanvier marked this pull request as draft April 5, 2021 17:38
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.

why use ROTATION_AVERAGING_L2 as default in global rotation computation
2 participants