Yufei Han · Bowen Tie · Heng Guo · Youwei Lyu · Si Li · Boxin Shi · Yunpeng Jia · Zhanyu Ma
This project was tested on Ubuntu 22.04.3 with CUDA 11.8 and Python 3.7.13. The reconstruction process for a single object takes approximately 7 minutes on an RTX 4090 GPU.
git clone https://github.com/PRIS-CV/PolGS.git
cd PolGSconda create -n polgs python=3.7.13 -y
conda activate polgsInstall PyTorch with CUDA support:
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116Install other requirements:
pip install -r requirements.txtInstall custom submodules:
pip install submodules/diff-gaussian-rasterization
pip install submodules/simple-knn
pip install submodules/cubemapencoderPlease install PyTorch3D following the official installation guide.
We evaluate our method on subsets of RMVP3D and SMVP3D from NeRSP, PANDORA, and PISR datasets.
- SMVP3D: 36 views (12×3 configuration) for training and testing
- RMVP3D: 31 views (half of the original 61 views) for training and testing
- PANDORA: All available views for training and testing
The data should be organized as follows:
data/
├── PANDORA/
│ ├── owl/
│ │ ├── train/ # RGB images
│ │ ├── train_images_stokes/ # Stokes images
│ │ │ ├── 01_s0.hdr
│ │ │ ├── 01_s0p1.hdr
│ │ │ └── ...
│ │ ├── train_input_azimuth_maps/ # Mask files
│ │ └── cameras.npz # Camera parameters
│ └── ...
├── RMVP3D/
│ ├── frog/
│ │ ├── train/ # RGB images
│ │ ├── s0/ # Stokes S0 images
│ │ ├── s1/ # Stokes S1 images
│ │ ├── s2/ # Stokes S2 images
│ │ ├── train_input_azimuth_maps/ # Mask files
│ │ └── cameras.npz # Camera parameters
│ └── ...
├── SMVP3D/
│ ├── snail/
│ │ └── ...
│ └── ...
└── PISR/
├── StandingRabbit/
├── LyingRabbit/
└── ...
To test on your own polarimetric data:
- Organize your data following the structure above
- Ensure camera coordinate system follows OpenGL conventions (important for correct mesh extraction)
- Create mask files for object segmentation
Before training, ensure you have:
- Prepared your data following the format described in the Data Preparation section
- Updated the data paths in
run.bashto point to your dataset location
To train a scene, execute:
bash run.bashWe gratefully acknowledge the following open-source projects that contributed to this work:
- Gaussian Surfels - For foundational Gaussian surfels implementation
- 3DGS-DR - For 3D Gaussian Splatting with deferred rendering
@inproceedings{han2025polgs,
title={PolGS: Polarimetric Gaussian Splatting for Fast Reflective Surface Reconstruction},
author={Han, Yufei and Tie, Bowen and Guo, Heng and Lyu, Youwei and Li, Si and Shi, Boxin and Jia, Yunpeng and Ma, Zhanyu},
year = {2025},
booktitle = ICCV,
}