MCPcopy Index your code
hub / github.com/cvlab-kaist/PF3plat

github.com/cvlab-kaist/PF3plat @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,042 symbols 3,522 edges 141 files 201 documented · 19% updated 11mo ago★ 2455 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

PF3plat: Pose-Free Feed-Forward 3D Gaussian Splatting

<a href="https://sunghwanhong.github.io/">Sunghwan Hong<sup>*</sup></a>
·
<a href="https://crepejung00.github.io/">Jaewoo Jung<sup>*</sup></a>
·
<a href="https://scholar.google.com/citations?user=zu-I2fYAAAAJ&hl=en">Heeseong Shin</a>
·
<a href="https://onground-korea.github.io/">Jisang Han</a>
·
<a href="https://jlyang.org/">Jiaolong Yang<sup>†</sup></a>
·
<a href="https://www.microsoft.com/en-us/research/people/cluo/">Chong Luo<sup>†</sup></a>
·
<a href="https://cvlab.kaist.ac.kr/">Seungryong Kim<sup>†</sup></a>

ICML 2025

Paper | Project Page

Logo

PF3plat enables estimates multi-view consistent depth, accurate camera pose, and photorealistic images from uncalibrated image collections.

What to expect:

  • 🛠️ [x] Training and evaluation code & scripts
  • 🌍 [] Demo code, taking only RGB images, for an easy use
  • ⚡ [] Leveraging more recently released monocular metric depth estimation model, DepthPro or MoGe (Check out Jiaolong's new paper!).
  • 🚀 [] Releasing more generalized model (trained on full set of DL3DV and RealEstate10K)

Installation

Our code is developed based on pytorch 2.0.1, CUDA 12.1 and python 3.10.

We recommend using conda for installation:

conda create -n pf3plat python=3.10
conda activate pf3plat

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt

Preparing RealEstate10K, ACID and DL3DV Datasets

Training Dataset

  • For training on RealEstate10K and ACID, we primarily follow pixelSplat and MVSplat to train on 256x256 resolution.

  • Please refer to here for acquiring the processed 360p dataset (360x640 resolution).

  • For DL3DV, please download from here. We include both training and evaluation sets in there.

  • Note that we use the subset of DL3DV for training, so if you want to train and evaluate in your own way, you can prepare the dataset by following the instructions here.

  • By default, we assume all the datasets are placed in datasets directory.

Evaluation Dataset

  • For evaluation on RealEstate10K and ACID, we follow CoPoNeRF and use different evaluation splits. Please download from Re10k and ACID.

  • Note that the evaluation set, which contains 140 scenes for evaluation, is included along with the training set.

  • By default, we assume all the datasets are placed in datasets directory.

Training

We observed that enabling flash attention leads to frequent NaN values. In this codebase, we set flash=False. We thus set the current batch size as 3. We trained our model with A6000.

Note that for evaluation you need to specify the path to the datasets in config/experiment/{re10k,acid,dl3dv}.yaml or simply pass as argument in the command line.

python -m src.main +experiment={re10k, acid, dl3dv} data_loader.train.batch_size=3

Evaluation

The pretrained weights can be found here. Note that for evaluation you need to specify the path to the datasets in config/experiment/{re10k,acid,dl3dv}.yaml or simply pass as argument in the command line.

python -m src.main +experiment={re10k, acid}_test checkpointing.load=$PATHTOCKPT$ dataset/view_sampler=evaluation mode=test test.compute_score=true

python -m src.main +experiment=dl3dv_test checkpointing.load=$PATHTPCKPT$ dataset/view_sampler=evaluation mode=test test.compute_scores=true dataset.view_sampler.index_path=assets/evaluation_index_dl3dv_{5, 10}view.json

Camera Conventions

The camera intrinsic matrices are normalized (the first row is divided by image width, and the second row is divided by image height).

The camera extrinsic matrices are OpenCV-style camera-to-world matrices ( +X right, +Y down, +Z camera looks into the screen).

Citation

@article{hong2024pf3plat,
      title   = {PF3plat: Pose-Free Feed-Forward 3D Gaussian Splatting},
      author  = {Sunghwan Hong and Jaewoo Jung and Heeseong Shin and Jisang Han and Jiaolong Yang and Chong Luo and Seungryong Kim},
      journal = {arXiv preprint arXiv:2410.22128},
      year    = {2024}
    }

Acknowledgements

We thank the following repos for their codes, which were used in our implementation: pixelSplat, MVSplat, UniDepth v2 and LightGlue. We thank the original authors for their excellent work. I also thank Haofei Xu for helping me making this repo.

Core symbols most depended-on inside this repo

to
called by 78
src/model/unidepth/utils/ema_torch.py
clone
called by 47
src/model/types.py
add_label
called by 38
src/visualization/annotation.py
hcat
called by 25
src/visualization/layout.py
add_border
called by 22
src/visualization/layout.py
conv_nd
called by 21
src/model/encoder/costvolume/ldm_unet/util.py
vcat
called by 20
src/visualization/layout.py
device
called by 17
src/model/unidepth/utils/sht.py

Shape

Method 470
Function 373
Class 197
Route 2

Languages

Python100%

Modules by API surface

src/flow_util.py48 symbols
src/model/encoder/costvolume/ldm_unet/unet.py47 symbols
src/model/LightGlue/lightglue/lightglue.py40 symbols
src/model/unidepth/utils/misc.py33 symbols
src/model/unidepth/unidepthv2/decoder.py33 symbols
src/model/encoder/costvolume/ldm_unet/attention.py29 symbols
src/model/LightGlue/lightglue/aliked.py27 symbols
src/model/encoder/costvolume/ldm_unet/util.py26 symbols
src/model/unidepth/utils/ema_torch.py24 symbols
src/model/unidepth/backbones/convnext.py22 symbols
src/model/unidepth/backbones/dinov2.py20 symbols
src/model/model_wrapper.py20 symbols

For agents

$ claude mcp add PF3plat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page