Skip to content

Improve VGC convergence#49

Draft
zitongzhan wants to merge 1 commit into
cre185:masterfrom
zitongzhan:fixvgc
Draft

Improve VGC convergence#49
zitongzhan wants to merge 1 commit into
cre185:masterfrom
zitongzhan:fixvgc

Conversation

@zitongzhan
Copy link
Copy Markdown
Collaborator

Found likely bugs in InstantSfM’s view-graph calibration vs glomap/COLMAP:

  • It optimized cameras that already had has_prior_focal_length=True; glomap keeps those fixed.
  • It didn’t write calibrated state back like glomap:
    • cameras weren’t promoted to has_prior_focal_length=True
    • good pairs weren’t promoted to CALIBRATED
    • bad pairs weren’t marked DEGENERATE
    • E wasn’t recomputed from the refined calibration
  • It filtered pair validity using unreverted degenerate focal solutions.
  • It didn’t recompute fundamental from Essential for already-calibrated pairs before optimization.
  • On ETH3D single-camera scenes, the same-camera optimization path converged worse than COLMAP; Use an exact bounded scalar solve against the same robust loss.

What was added:

  • glomap-style calibration input preparation
  • exact loss evaluation helpers
  • prior-focal fixing behavior
  • rejected-camera rollback before pair filtering
  • calibrated/degenerate state updates
  • ETH3D regression tests for:
    • no-intrinsics loss vs colmap view_graph_calibrator
    • gt-intrinsics loss vs colmap view_graph_calibrator
    • gt-intrinsics prior focal no-drift

Verification run:

  • PYTHONPATH=/workspaces/InstantSfM INSTANTSFM_ETH3D_SCENES=botanical_garden,bridge,courtyard,facade,terrains pytest -q tests/test_view_graph_calibration.py -q

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.

1 participant