Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
22017e8
store pre ba result
akshay-krishnan Jan 19, 2026
bd91d3b
track visualization script
akshay-krishnan Jan 20, 2026
ac5c784
trajectory aligner sim3 use
akshay-krishnan Jan 21, 2026
6aa3493
Replacing VGGSfM tracker with VGGT tracker module
Jan 26, 2026
90b252d
Decrease min_score to increase connectivity
nantonzhang Jan 27, 2026
a1c3c34
Use Metis by default
nantonzhang Jan 27, 2026
a7d6c90
exclude all result folders
nantonzhang Jan 27, 2026
562448f
change default to no ba
nantonzhang Jan 27, 2026
b9286e4
Add more metrics to eval code
nantonzhang Jan 27, 2026
883d601
merging updates
akshay-krishnan Jan 27, 2026
806606a
save more metrics for debugging
akshay-krishnan Jan 27, 2026
a5cf200
Merge remote-tracking branch 'upstream/ba-debug' into vggt_tracking_e…
nantonzhang Jan 28, 2026
8ce3153
more detailed eval code
nantonzhang Jan 28, 2026
eceb70b
optimize cacher
nantonzhang Jan 28, 2026
86f568a
skip use_nonlinear_sim3_alignment for now
nantonzhang Jan 28, 2026
01d9c81
resolving comments
Feb 5, 2026
0943229
adding 2 parameters in yaml file
Feb 5, 2026
0e5920b
Merge pull request #1039 from borglab/pr-1035
hkhanuja Feb 5, 2026
de2242d
Fixing dependencies
Feb 5, 2026
195f8b9
Merge pull request #1040 from borglab/pr-1035
hkhanuja Feb 5, 2026
040b108
Resolving comments
Feb 6, 2026
d2018e6
Merge pull request #1041 from borglab/pr-1035
hkhanuja Feb 6, 2026
6f02af8
Minor filtering changes to frontend/vggt.py
Feb 6, 2026
7c18df4
Merge pull request #1042 from borglab/pr-1035
hkhanuja Feb 6, 2026
c3e99b8
Pinning GTSAM version
Feb 7, 2026
5c40d50
Pinning GTSAM version in pyproject
Feb 7, 2026
a921e56
Fixing noise model in tests
Feb 7, 2026
04b5313
Fixing tests
Feb 7, 2026
62bdf26
Fixing tests
Feb 7, 2026
8080920
Merge pull request #1049 from borglab/pr-1035
hkhanuja Feb 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 12 additions & 21 deletions gtsfm/cluster_optimizer/cluster_vggt.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,9 @@ def _resize_to_square_tensor(image: np.ndarray, target_size: int) -> torch.Tenso
return (tensor.squeeze(0)) / 255.0


def _load_vggt_inputs(loader, indices: list[int], target_size: int):
def _load_vggt_inputs(loader, indices: list[int], mode: str):
"""Load and preprocess a batch of images for VGGT."""

def resize_transform(arr: np.ndarray) -> torch.Tensor:
return _resize_to_square_tensor(arr, target_size)

return loader.load_image_batch_vggt(indices, target_size, resize_transform)
return loader.load_image_batch_vggt_loader(indices, mode=mode)


def _resolve_vggt_model(cache_key: Hashable | None, loader_kwargs: dict[str, Any] | None) -> Any | None:
Expand Down Expand Up @@ -113,15 +109,14 @@ class ClusterVGGT(ClusterOptimizerBase):
def __init__(
self,
weights_path: Optional[str] = None,
image_load_resolution: int = 1024,
inference_resolution: int = 518,
conf_threshold: float = 5.0,
max_num_points: int = 100000,
tracking: bool = False,
tracking_max_query_pts: int = 1000,
tracking_query_frame_num: int = 4,
tracking_fine_tracking: bool = True,
track_vis_thresh: float = 0.2,
tracking_max_query_pts: int = 2048,
tracking_query_frame_num: int = 3,
Comment thread
hkhanuja marked this conversation as resolved.
track_vis_thresh: float = 0.05,
track_conf_thresh: float = 0.2,
keypoint_extractor: str = "aliked+sp+sift",
camera_type: str = "PINHOLE",
seed: int = 42,
scene_dir: Optional[str] = None,
Expand Down Expand Up @@ -154,15 +149,14 @@ def __init__(
run_bundle_adjustment_on_parent=run_bundle_adjustment_on_parent,
)
self._weights_path = Path(weights_path) if weights_path is not None else None
self._image_load_resolution = image_load_resolution
self._inference_resolution = inference_resolution
self._conf_threshold = conf_threshold
self._max_points_for_colmap = max_num_points
self._tracking = tracking
self._tracking_max_query_pts = tracking_max_query_pts
self._tracking_query_frame_num = tracking_query_frame_num
self._tracking_fine_tracking = tracking_fine_tracking
self._track_vis_thresh = track_vis_thresh
self._track_conf_thresh = track_conf_thresh
self._keypoint_extractor = keypoint_extractor
self._camera_type = camera_type
self._max_reproj_error = max_reproj_error
self._seed = seed
Expand Down Expand Up @@ -216,8 +210,6 @@ def _maybe_set_model_kw(key: str, value: Any) -> None:
def __repr__(self) -> str:
components = [
f"weights_path={self._weights_path}",
f"image_load_resolution={self._image_load_resolution}",
f"inference_resolution={self._inference_resolution}",
f"camera_type={self._camera_type}",
f"dtype={self._dtype}",
f"use_sparse_attention={self._use_sparse_attention}",
Expand Down Expand Up @@ -253,15 +245,14 @@ def create_computation_graph(
image_names = tuple(str(image_filenames[idx]) for idx in keys)

config = VggtConfiguration(
vggt_fixed_resolution=self._inference_resolution,
img_load_resolution=self._image_load_resolution,
confidence_threshold=self._conf_threshold,
max_num_points=self._max_points_for_colmap,
tracking=self._tracking,
max_query_pts=self._tracking_max_query_pts,
query_frame_num=self._tracking_query_frame_num,
fine_tracking=self._tracking_fine_tracking,
track_vis_thresh=self._track_vis_thresh,
track_conf_thresh=self._track_conf_thresh,
keypoint_extractor=self._keypoint_extractor,
dtype=self._dtype,
model_ctor_kwargs=self._model_ctor_kwargs.copy(),
use_sparse_attention=self._use_sparse_attention,
Expand All @@ -270,7 +261,7 @@ def create_computation_graph(
)

image_batch_graph, original_coords_graph = delayed(_load_vggt_inputs, nout=2)(
context.loader, global_indices, self._image_load_resolution
context.loader, global_indices, mode="crop" # mode is fixed to "crop"
Comment thread
hkhanuja marked this conversation as resolved.
Outdated
)

result_graph = delayed(_run_vggt_pipeline)(
Expand Down
12 changes: 6 additions & 6 deletions gtsfm/configs/vggt.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ loader:
_target_: gtsfm.loader.Olsson
dataset_dir: ??? # Required: set to the dataset root on the command line.
images_dir: null
max_resolution: 760
max_resolution: 518 # VGGT recommended max resolution. Non editable. mode is fixed to "crop"
Comment thread
hkhanuja marked this conversation as resolved.
Outdated
Comment thread
hkhanuja marked this conversation as resolved.
Outdated

image_pairs_generator:
_target_: gtsfm.retriever.image_pairs_generator.ImagePairsGenerator
Expand All @@ -29,15 +29,15 @@ cluster_optimizer:
optimizer:
_target_: gtsfm.cluster_optimizer.cluster_vggt.ClusterVGGT
weights_path: null
image_load_resolution: 1024
inference_resolution: 518
conf_threshold: 5.0
max_num_points: 100000
tracking: true
tracking_max_query_pts: 512
tracking_max_query_pts: 2048
tracking_query_frame_num: 3
tracking_fine_tracking: false
track_vis_thresh: 0.2
keypoint_extractor: aliked+sp+sift
track_vis_thresh: 0.05
track_conf_thresh: 0.2
max_reproj_error: 0 # 0.0 means no filtering based on reproj error
camera_type: PINHOLE
drop_outlier_after_camera_merging: false
drop_child_if_merging_fail: true
Expand Down
Loading