Skip to content

Vggt refactor - split into geometry transformer + multi-view tracker #661

Vggt refactor - split into geometry transformer + multi-view tracker

Vggt refactor - split into geometry transformer + multi-view tracker #661

Workflow file for this run

name: CI
on:
pull_request:
paths-ignore:
- "gtsfm/visualization/**"
workflow_dispatch:
jobs:
test:
name: Unit tests and python checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.1
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.17"
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y nodejs npm graphviz
- name: Install project dependencies
run: |
uv sync --locked --python 3.12 --all-groups
uv pip install torch-scatter --find-links https://data.pyg.org/whl/torch-2.7.0+cu128.html
- name: Environment setup
run: |
bash .github/scripts/setup.sh
- name: Flake check
run: |
set -e
uv run flake8 --max-line-length 120 --ignore E201,E202,E203,E231,W291,W293,E303,W391,E402,W503,E731 gtsfm tests
- name: Unit tests
run: |
set -e
uv run pytest tests -m "not slow" --durations=0 --cov gtsfm \
--ignore tests/repro_tests \
--ignore tests/loader/test_argoverse_dataset_loader.py \
--ignore tests/runner/test_frontend_runner.py \
--ignore tests/frontend/correspondence_generator/test_mast3r_correspondence_generator.py
uv run coverage report
benchmark:
name: Benchmark
if: ${{ !contains(github.event.pull_request.title, '[skip benchmarks]') }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
config_dataset_info: [
[sift , door-12 , 15, JPG, test_data, olsson-loader , 1296, true ],
[lightglue , door-12 , 15, JPG, test_data, olsson-loader , 1296, true ],
[megaloc , door-12 , 15, JPG, test_data, olsson-loader , 1296, true ],
[sift , skydio-8 , 15, jpg, wget , colmap-loader , 760, true ],
[lightglue , skydio-8 , 15, jpg, wget , colmap-loader , 760, true ],
[megaloc , skydio-8 , 15, jpg, wget , colmap-loader , 760, true ],
[sift , skydio-32 , 15, jpg, wget , colmap-loader , 760, true ],
[lightglue , skydio-32 , 15, jpg, wget , colmap-loader , 760, true ],
[megaloc , skydio-32 , 15, jpg, wget , colmap-loader , 760, true ],
[sift , palace-fine-arts-281 ,15, jpg, wget , olsson-loader , 320, true ],
[lightglue , notre-dame-20 , 15, jpg, wget , colmap-loader , 760, false],
[sift , 2011205_rc3 , 15, png, wget , astrovision , 1024, true ],
[lightglue , 2011205_rc3 , 15, png, wget , astrovision , 1024, true ],
[sift , gerrard-hall-100 , 15, jpg, wget , colmap-loader , 760, true ],
[lightglue , gerrard-hall-100 , 15, jpg, wget , colmap-loader , 760, true ],
[sift , south-building-128 , 15, jpg, wget , colmap-loader , 760, true ],
[lightglue , south-building-128 , 15, jpg, wget , colmap-loader , 760, true ],
]
steps:
- uses: actions/checkout@v6.0.1
- name: Cache frontend
uses: actions/cache@v5
env:
CACHE_NUMBER_FRONTEND: 3
with:
path: cache
key: ${{ matrix.config_dataset_info[0] }}-${{ matrix.config_dataset_info[1] }}-${{ matrix.config_dataset_info[2] }}-${{ matrix.config_dataset_info[6] }}-${{ env.CACHE_NUMBER_FRONTEND }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.17"
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y nodejs npm graphviz
- name: Install project dependencies
run: |
uv sync --locked --python 3.12
uv pip install torch-scatter --find-links https://data.pyg.org/whl/torch-2.7.0+cu128.html
- name: Environment setup
run: bash .github/scripts/setup.sh
- name: Prepare dataset
run: |
DATASET_NAME=${{ matrix.config_dataset_info[1] }}
DATASET_SRC=${{ matrix.config_dataset_info[4] }}
bash .github/scripts/download_single_benchmark.sh \
$DATASET_NAME \
$DATASET_SRC
- name: Run GTSFM
run: |
DATASET_NAME=${{ matrix.config_dataset_info[1] }}
CONFIG_NAME=${{ matrix.config_dataset_info[0] }}
MAX_FRAME_LOOKAHEAD=${{ matrix.config_dataset_info[2] }}
LOADER_NAME=${{ matrix.config_dataset_info[5] }}
MAX_RESOLUTION=${{ matrix.config_dataset_info[6] }}
SHARE_INTRINSICS=${{ matrix.config_dataset_info[7] }}
bash .github/scripts/execute_single_benchmark.sh \
$DATASET_NAME \
$CONFIG_NAME \
$MAX_FRAME_LOOKAHEAD \
$LOADER_NAME \
$MAX_RESOLUTION \
$SHARE_INTRINSICS
- name: Archive dataset metrics, plots, and output data
uses: actions/upload-artifact@v5
with:
name: results-${{ matrix.config_dataset_info[0] }}-${{ matrix.config_dataset_info[1] }}-${{ matrix.config_dataset_info[2] }}-${{ matrix.config_dataset_info[3] }}-${{ matrix.config_dataset_info[4] }}-${{ matrix.config_dataset_info[5] }}-${{ matrix.config_dataset_info[6] }}-${{ matrix.config_dataset_info[7] }}.zip
path: |
result_metrics
plots
results
dask_reports