Skip to content

HengyiWang/amb3r

Repository files navigation

AMB3R: Accurate Feed-forward Metric-scale
3D Reconstruction with Backend

Logo

@article{wang2025amb3r,
  title={AMB3R: Accurate Feed-forward Metric-scale 3D Reconstruction with Backend},
  author={Wang, Hengyi and Agapito, Lourdes},
  journal={arXiv preprint arXiv:2511.20343},
  year={2025}
}

📌 Latest Updates

  • [2026-06-05] Add Déjà View for benchmark and support Déjà View for AMB3R-VO/SfM
  • [2026-05-16] Add VGGT-Omega for benchmark and support VGGT-Omega for AMB3R-VO/SfM
  • [2026-05-09] Add code for visualization.
  • [2026-05-08] Add training code for metric-scale estimation.
  • [2026-03-09] Add training code for AMB3R.
  • [2026-03-02] Add DepthAnything 3 for benchmark and support AMB3R-VO (DA3).
  • [2026-02-28] 📊 We have officially released the code for AMB3R Benchmark.
  • [2026-02-24] 🗺️ We have officially released the code for AMB3R-SfM.
  • [2026-02-21] 🏎️ We have officially released the code for AMB3R-VO.
  • [2026-02-21] 🍯 We have officially released the code for AMB3R (Base model).
🔜 TODOs / Upcoming
  • support of various foundation models for AMB3R-VO and AMB3R-SfM

Installation

1. Clone the repository

git clone https://github.com/HengyiWang/amb3r.git
cd amb3r

2. Create a Conda environment

conda create -n amb3r python=3.9 cmake=3.14.0 -y
conda activate amb3r 
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu118
pip install torch-scatter==2.1.2 -f https://data.pyg.org/whl/torch-2.5.0+cu118.html
pip install "git+https://github.com/facebookresearch/pytorch3d.git@V0.7.8" --no-build-isolation

pip install flash-attn==2.7.3 --no-build-isolation
   
pip install -r requirements.txt

3. Download weights

Download our checkpoint and place it under ./checkpoints/.


🍯 AMB3R (Base model)

Usage

Run the interactive demo with the following command:

python demo.py 

Controls:

  • 0 / 1 : Disable (w/o) / Enable (w/) backend
  • / : Decrease / Increase confidence threshold by 0.01
  • / : Decrease / Increase confidence threshold by 0.1
  • E : Enable sky & edge mask
  • B : Switch background color

🏎️ SLAM (AMB3R-VO)

Usage

Run the AMB3R-VO pipeline with:

python slam/run.py --data_path <path-to-video-folder>

Custom Base Model

Our AMB3R-VO framework is a general framework that is compatible with any base model that produces pointmap, camera pose, and confidence. All you need to do is to add this function to your base model and plug it into our amb3r-vo pipeline pipeline = AMB3R_VO(model):

def run_amb3r_vo(self, frames, cfg, keyframe_memory=None):
    """
    This function runs the AMB3R-VO  with your own base model.
    """
    images = frames['images'] # (B, T, C, H, W) in [-1, 1]
    
    # Run your own base model to get pointmap, pose, and confidence
    pointmap, pose, confidence = self.forward(images)

    return {
        'world_points': pointmap,           # (B, nimgs, H, W, 3)
        'world_points_conf': confidence,    # (B, nimgs, H, W, 1)
        'pose': pose,                       # (B, nimgs, 4, 4)
    }

🗺️ SfM (AMB3R-SfM)

Usage

Run the AMB3R-SfM pipeline with:

python sfm/run.py --data_path <path-to-video-folder>

Custom Base Model

Our AMB3R-SfM framework is also a general framework that is compatible with any base model that produces pointmap, camera pose, and confidence. All you need to do is to add this function to your base model and plug it into our amb3r-sfm pipeline pipeline = AMB3R_SfM(model):

def run_amb3r_sfm(self, frames, cfg, keyframe_memory=None, benchmark_conf0=None):
    """
    This function runs the AMB3R-SfM  with your own base model.
    """
    images = frames['images'] # (B, T, C, H, W) in [-1, 1]
    
    # Run your own base model to get pointmap, pose, and confidence
    pointmap, pose, confidence = self.forward(images)

    return {
        'world_points': pointmap,           # (B, nimgs, H, W, 3)
        'world_points_conf': confidence,    # (B, nimgs, H, W, 1)
        'pose': pose,                       # (B, nimgs, 4, 4)
    }

📊 Benchmark

Please refer to benchmark/README.md for the benchmark details.


🎓 Training

Please refer to docs/train.md for the training details.

Visualizer

Your can use visualizer.ipynb to load .npz from AMB3R-VO/SfM to create the video as in our project page.

Controls:

  • C : Place a new camera
  • Z : Undo last camera
  • L : loop the first and last camera
  • P : Play the preview
  • Q : Quit and render the sequence

Acknowledgement

Our code, data preprocessing pipeline, and evaluation scripts are built upon several amazing open-source projects:

We sincerely thank the authors for their open-source contributions!

The research presented here has been supported by a sponsored research award from Cisco Research and the UCL Centre for Doctoral Training in Foundational AI under UKRI grant number EP/S021566/1. This project made use of time on computing resources from UKRI/EPSRC AI Hub in Generative Models [grant number EP/Y028805/1].


Citation

If you find our code, data, or paper useful, please consider citing:

@article{wang2025amb3r,
  title={AMB3R: Accurate Feed-forward Metric-scale 3D Reconstruction with Backend},
  author={Wang, Hengyi and Agapito, Lourdes},
  journal={arXiv preprint arXiv:2511.20343},
  year={2025}
}

About

[CVPR'26 Highlight] AMB3R: Accurate Feed-forward Metric-scale 3D Reconstruction with Backend

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors