Bin Tan1, Rui Yu2, Yujun Shen1, Nan Xue1
1Ant Group 2University of Louisville
- An ultrafast method for structured indoor surface reconstruction.
- We support pose-free multi-view inputs based on VGG-T.
We present PlanarSplatting, an ultra-fast and accurate surface reconstruction approach for multi-view indoor images. We take the 3D planes as the main objective due to their compactness and structural expressiveness in indoor scenes, and develop an explicit optimization framework that learns to fit the expected surface of indoor scenes by splatting the 3D planes into 2.5D depth and normal maps.
git clone https://github.com/ant-research/PlanarSplatting.git --recursive
conda create -n planarSplatting python=3.10
conda activate planarSplatting
pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
pip install submodules/diff-rect-rasterization
pip install submodules/quaternion-utils
# for running on self-captured images
pip install -e submodules/vggt/
You can run PlanarSpaltting with an interactive demo for your own data as follows:
python run_gradio_demo.py
Here, we use state-of-the-art VGGT for relative pose and depth estimation and Metric3D v2 for normal estimation.
Alternatively, you can also run PlanarSpaltting without a GUI as follows:
python run_demo.py --data_path path/to/images
Please follow instructions reported in SimpleRecon to download and extract ScanNetV2 scenes. The extacted data format should be like:
data/ScanNetV2
scans/
scene0000_00/
scene0000_00_vh_clean_2.ply (gt mesh)
sensor_data/
frame-000000.pose.txt
frame-000000.color.jpg
scene0000.txt (scan metadata and image sizes)
intrinsic/
intrinsic_depth.txt
intrinsic_color.txt
scene0000_01/
....
cd planarsplat/data_process/scannetv2
python scannetv2_sample_rgb_intrinsic_pose.py \
--data_path ../../data/ScanNetV2/ \
--out_path ../../data/ScanNetV2/processed_scans/ \
--scene_id scene0488_00
We follow the evaluation methodology from AirPlanes on the ScanNetV2 dataset. For more details, please refer to the AirPlanes repository.
cd planarsplat
python run/runner.py \
--base_conf confs/base_conf_planarSplatCuda.conf \
--conf confs/scannetv2_train.conf \
--gpu 0 \
--scan_id scene0488_00;
Command Line Arguments for runner.py
Path to the base config file.
Path to the scene specific config file.
Index of used GPU.
Name of the scan.
Flag to resume from the latest optimization.
Please follow instructions reported in ScanNet++ to download and extract ScanNet++ scenes. The extacted data format should be like:
data/ScanNet++
45b0dac5e3/
iphone/
scans/
16c9bd2e1e/
....
cd planarsplat/data_process/scannetpp
python scannetpp_prepare_metadata.py \
--data_path ../../../data/ScanNet++ \
--out_root_path ../../../data/ScanNetPP/scans \
--scene_id 45b0dac5e3
python scannetpp_sample_rgb_intrinsic_pose.py \
--data_path ../../../data/ScanNetPP/ \
--out_path ../../../data/ScanNetPP/processed_scans/ \
--scene_id 45b0dac5e3
cd planarsplat
python run/runner.py \
--base_conf confs/base_conf_planarSplatCuda.conf \
--conf confs/scannetpp_train.conf \
--gpu 0 \
--scan_id 45b0dac5e3
If you find our work useful in your research please consider citing our paper:
@inproceedings{PlanarSplatting2024,
title = {PlanarSplatting: Accurate Planar Surface Reconstruction in 3 Minutes},
author = {Tan, Bin and Yu, Rui and Shen, Yujun and Xue, Nan},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year = {2025}
}
PlanarSplatting is built on the top of several outstanding open-source projects. We are extremely grateful for the contributions of these projects and their communities, whose hard work has greatly propelled the development of the field and enabled our work to be realized.