GaMO: Geometry-aware Multi-view Diffusion Outpainting for Sparse View 3D Reconstruction
January 12, 2026 ยท View on GitHub
Project Page ๏ฝ ArXiv
Official implementation of GaMO (version 1)
๐ Note: A fully integrated version with merged environments and a one-click end-to-end pipeline is planned to be released in 2026 February.
๐ ๏ธ TODO
- โ Release multi-stage code and environment setups
- โ
Provide example dataset:
Replica_6/office_2 - โฌ Merge multiple conda environments and resolve dependency incompatibilities
- โฌ Integrate a one-click bash script for end-to-end pipeline execution
- โฌ Add more evaluation datasets
Environment Setup
โ ๏ธ Note: The project currently requires 3 separate conda environments because certain modules depend on incompatible library versions. A unified environment YAML will be released in the next update.
Pretrained Models (Required)
Before running GaMO, make sure the pretrained weights exist under:
gamo/check_points/
Required:
- GaMO pretrained model
(Download) โ pretrained_model.zip
Save to:gamo/check_points/(unzipped) - DUSt3R ViTLarge checkpoint
(Download) โ DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
Save to:gamo/check_points/
Additional optional downloads (depending on your environment):
-
Stable-Diffusion-2-1-base
โ place under:gamo/check_points/
(Download) โ Stable-Diffusion-2-1-base -
MASt3R model weights
โ place under:gamo/submodules/MASt3R-SLAM/thirdparty/mast3r/weights/
(Download) โ MASt3R GitHub
Installation
1. Create conda environments
# 1. 3DGS environment
conda env create -f env/env_3dgs.yml
# 2. GaMO environment
conda env create -f env/env_GaMO.yml
# 3. Mask / Init environment
conda env create -f env/env_opamask.yml
2. Install editable modules
# For 3dgs and opamask
conda activate 3dgs
pip install -e 3dgs/submodules/diff-gaussian-rasterization
pip install -e 3dgs/submodules/simple-knn
# For GaMO
conda activate GaMO
pip install -e gamo/submodules/MASt3R-SLAM
pip install -e gamo/submodules/MASt3R-SLAM/thirdparty/mast3r
pip install -e gamo/submodules/MASt3R-SLAM/thirdparty/in3d
Data Preparation
Dataset must follow:
3dgs/data/Input/Duster/{ROOT}/{SCENE}/
โโโ images/
โโโ images_test/
โโโ sparse/
โโโ 0/
โโโ test/
Example:
3dgs/data/Input/Duster/Replica_6/office_2/
Pipeline Execution
Step 0 โ Initial DUSt3R pointcloud (opamask env)
conda activate opamask
bash Point.sh Replica_6 office_2
mkdir -p 3dgs/data/Input/Duster/Replica_6/office_2/sparse/0
cp dust3r_results/Replica_6/office_2/sparse/0/points3D.ply \
3dgs/data/Input/Duster/Replica_6/office_2/sparse/0/
Step 1 โ Initial 3DGS Training (3dgs env)
conda activate 3dgs
bash Pipeline.sh --step 1 Replica_6 office_2
Step 2 โ Mask + GaMO Outpainting
# masks
conda activate opamask
bash Pipeline.sh --step 1b Replica_6 office_2
# GaMO Outpaint
conda activate GaMO
bash Pipeline.sh --step 2 Replica_6 office_2
Step 3 โ Alignment + Seed Init
conda activate GaMO
bash Pipeline.sh --step 3 Replica_6 office_2
conda activate opamask
bash Pipeline.sh --step 3.5 Replica_6 office_2
Step 4 โ Final Refinement + Rendering (3dgs)
conda activate 3dgs
bash Pipeline.sh --step 4 Replica_6 office_2
bash Pipeline.sh --step 5 Replica_6 office_2
Summary Table
| Step | Environment | Command | Description |
|---|---|---|---|
| 0 | opamask | Point.sh | Initial DUSt3R pointcloud |
| 1 | 3dgs | --step 1 | Scale cameras, train GS |
| 1b | opamask | --step 1b | Render masks |
| 2 | GaMO | --step 2 | GaMO diffusion outpainting |
| 3 | GaMO | --step 3 | Alignment / seed init |
| 3.5 | opamask | --step 3.5 | DUSt3R refined pointcloud |
| 4 | 3dgs | --step 4 | Final GS training |
| 5 | 3dgs | --step 5 | Final GS rendering |
Contact
If you encounter issues, open a GitHub Issue. """
Citation
If you find our work useful, please cite this paper and give us a โญ๏ธ.
@article{gamo2024,
author = {Huang, Yi-Chuan and Chien, Hao-Jen and Lin, Chin-Yang and Chen, Ying-Huan and Liu, Yu-Lun},
title = {GaMO: Geometry-aware Multi-view Diffusion Outpainting for Sparse-View 3D Reconstruction},
journal = {arXiv preprint arXiv:2406.01570},
year = {2024}
}