Home

Awesome

PFGS: High Fidelity Point Cloud Rendering via Feature Splatting

<!-- ![issues](https://img.shields.io/github/issues/Mercerai/PFGS) ![forks](https://img.shields.io/github/forks/Mercerai/PFGS?style=flat&color=orange) ![stars](https://img.shields.io/github/stars/Mercerai/PFGS?style=flat&color=red) -->

PFGS: High Fidelity Point Cloud Rendering via Feature Splatting
Jiaxu Wang<sup></sup>, Ziyi Zhang<sup></sup>, Junhao He, Renjing Xu*
ECCV 2024

framework_img

If you found this project useful, please cite us in your paper, this is the greatest support for us.

Important Update at December 2024

!!!! UPDATE (1) We fixed a bug in rasterization which might cause an error when compiling for some specific machines. (2) Please directly install the diff-gaussian-rasterization function from this repo, which differs slightly from the original feature-gs. (3) If someone wants to obtain the complete dataset that we preprocess in our certain data structures, please email us, and we will send it to you.

Requirements (Tested on 1 * RTX3090)

Installation

Install from environment.yml

You can directly install the requirements through:

$ conda env create -f environment.yml

Or install packages seperately

Gaussian Rasterization with High-dimensional Features

pip install ./submodules/diff-gaussian-rasterization

You can customize NUM_SEMANTIC_CHANNELS in submodules/diff-gaussian-rasterization/cuda_rasterizer/config.h for any number of feature dimensions that you want.

[Attention~] This rasterization is borrowed from Feature-3DGS but with some minor differences. Please directly install the rasterization from this repo.

Build third_party optionally

python build_pkg.py

Dataset

ScanNet:

DTU:

THuman2:

Train Stage 1

ScanNet:

python train_stage1.py --dataset scannet --scene_dir $data_path --exp_name scannet_stage1 --img_wh 640 512

DTU:

python train_stage1.py --dataset dtu --scene_dir $data_path --exp_name dtu_stage1 --img_wh 640 512

THuman2:

python train_stage1.py --dataset thuman2 --scene_dir $data_path --exp_name thuman2_stage1 --img_wh 512 512 --scale_max 0.0001

Train Stage 2

ScanNet:

python train_stage2.py --dataset scannet --scene_dir $data_path --exp_name scannet_stage2 --img_wh 640 512 --ckpt_stage1 $ckpt_stage1_path

DTU:

python train_stage2.py --dataset dtu --scene_dir $data_path --exp_name dtu_stage2 --img_wh 640 512 --ckpt_stage1 $ckpt_stage1_path

THuman2:

python train_stage1.py --dataset thuman2 --scene_dir $data_path --exp_name thuman2_stage1 --img_wh 512 512 --scale_max 0.0001 --ckpt_stage1 $ckpt_stage1_path

Eval

ScanNet:

python train_stage2.py --dataset scannet --scene_dir $data_path --exp_name scannet_stage2_eval --img_wh 640 512 --resume_path $ckpt_stage2_path --val_mode test

DTU:

python train_stage2.py --dataset dtu --scene_dir $data_path --exp_name dtu_stage2_eval --img_wh 640 512 --resume_path $ckpt_stage2_path --val_mode test

THuman2:

python train_stage1.py --dataset thuman2 --scene_dir $data_path --exp_name thuman2_stage1_eval --img_wh 512 512 --scale_max 0.0001 --resume_path $ckpt_stage2_path --val_mode test

The results will be saved in ./log/$exp_name

Acknowledgements

In this repository, we have used codes or datasets from the following repositories. We thank all the authors for sharing great codes or datasets.

Citation

@misc{wang2024pfgshighfidelitypoint,
      title={PFGS: High Fidelity Point Cloud Rendering via Feature Splatting}, 
      author={Jiaxu Wang and Ziyi Zhang and Junhao He and Renjing Xu},
      year={2024},
      eprint={2407.03857},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2407.03857}, 
}