This repository provides the official PyTorch implementation of the paper "Shape-Selective Splatting: Regularizing the Shape of Gaussian for Sparse-View Rendering"
Gun Ryu and Wonjun Kim (Corresponding Author)
IEEE Signal Processing Letters, vol. 32, pp. 3172–3176, 2025.
Install the required dependencies via conda:
conda env create -f environment.yml
conda activate sssIn the data preparation stage, we first reconstruct sparse-view inputs using Structure-from-Motion (SfM) with the provided camera poses from the datasets. Then, we perform dense stereo matching using COLMAP’s patch_match_stereo function, followed by stereo_fusion to generate the dense stereo point cloud.
Setup Instructions
mkdir dataset
cd dataset
# Download LLFF dataset
gdown 16VnMcF1KJYxN9QId6TClMsZRahHNMW5g
# Generate sparse point cloud using COLMAP (limited views) for LLFF
python tools/colmap_llff.py
# Download MipNeRF-360 dataset
wget http://storage.googleapis.com/gresearch/refraw360/360_v2.zip
unzip -d mipnerf360 360_v2.zip
# Generate sparse point cloud using COLMAP (limited views) for MipNeRF-360
python tools/colmap_360.pyWe also provide preprocessed sparse and dense point clouds for convenience. You can download them via the link below:
Furthermore, we estimate monocular depth using the method described in Fine-Tuning Image-Conditional Diffusion Models.
Please ensure that the resulting depth .npy files are saved in the depth_npy_{resolution}/ directory of the dataset. These files must be located in the same directory as the original images, and their filenames should match the original image filenames, with the suffix _pred.npy appended.
Example layout for “fern” scene (8× downsampled)
fern/
├── images/
│ ├ IMG_4043.JPG
│ ├ IMG_4044.JPG
│ ├ IMG_4045.JPG
│ └ … other `.JPG` files
├── sparse/
├── dense/
└── depth_npy_8/
├ IMG_4043_pred.npy
├ IMG_4044_pred.npy
├ IMG_4045_pred.npy
└ … other `{image_name}_pred.npy` filesTo train on a single LLFF scene, use the following command:
python train.py -s ${DATASET_PATH} -m ${OUTPUT_PATH} --eval -r 8 --n_views {3 or 6 or 9}To train on a single MipNeRF-360 scene, use the following command:
python train.py -s ${DATASET_PATH} -m ${OUTPUT_PATH} --eval -r 8 --n_views {12 or 24}You can render a target scene using the following command:
python render.py -s ${DATASET_PATH} -m ${MODEL_PATH} --eval -r 8 --iteration 10000python render.py -s ${DATASET_PATH} -m ${MODEL_PATH} --eval -r 8 --iteration 10000You can evaluate the model performance using the following command:
python metrics.py --model_paths ${MODEL_PATH}python metrics.py --model_paths ${MODEL_PATH}This project is licensed under the Apache License 2.0, with the exception of certain components derived from the Gaussian Splatting project.
- Apache License 2.0: All original code written for SSS is released under the Apache 2.0 license. See LICENSE.
- Non-commercial License (Inria & MPII): Some parts of the code are based on Gaussian Splatting, which is licensed for non-commercial research use only. See LICENSE_GAUSSIAN_SPLATTING.md for full terms.
Please ensure that you comply with both licenses when using this repository.
If you find this work helpful, please consider citing:
@ARTICLE{ryu2025sss,
author={Ryu, Gun and Kim, Wonjun},
journal={IEEE Signal Processing Letters},
title={Shape-Selective Splatting: Regularizing the Shape of Gaussian for Sparse-View Rendering},
year={2025},
volume={32},
pages={3172-3176},
doi={10.1109/LSP.2025.3596225}
}
If you have any questions or issues, feel free to reach out:
- Gun Ryu: [fbrjs15@konkuk.ac.kr]