BézierGS: Dynamic Urban Scene Reconstruction with Bézier Curve Gaussian Splatting
Zipei Ma⚖, Junzhe Jiang⚖, Yurui Chen, Li Zhang✉
Shanghai Innovation Institute; School of Data Science, Fudan University
ICCV 2025
Official implementation of "BézierGS: Dynamic Urban Scene Reconstruction with Bézier Curve Gaussian Splatting".
BézierGS.mp4
pedestrian.mp4
# Clone the repo.
git clone https://github.com/fudan-zvg/BezierGS
cd BezierGS
# Make a conda environment.
conda create --name bezier python=3.10 -y
conda activate bezier
# Install requirements.
pip install -r requirements.txt
# Install simple-knn
git clone https://gitlab.inria.fr/bkerbl/simple-knn.git
pip install ./simple-knn
# a modified gaussian splatting (for feature rendering)
git clone --recursive https://github.com/SuLvXiangXin/diff-gaussian-rasterization
pip install ./diff-gaussian-rasterization
# Install nvdiffrast (for Envlight)
git clone https://github.com/NVlabs/nvdiffrast
pip install ./nvdiffrastCreate a directory for the data: mkdir dataset. We provide some processed data here.
Prepare Waymo Open Dataset.
We provide the split file following EmerNeRF. You can refer to this document for download details.
Preprocess the example scenes
python script/waymo/waymo_converter.py --root_dir TRAINING_SET_DIR --save_dir SAVE_DIR --split_file script/waymo/waymo_splits/demo.txt --segment_file script/waymo/waymo_splits/segment_list_train.txtGenerating LiDAR depth
python script/waymo/generate_lidar_depth.py --datadir DATA_DIRGenerating sky mask
Install GroundingDINO following this repo and download SAM checkpoint from this link.
python script/waymo/generate_sky_mask.py --datadir DATA_DIR --sam_checkpoint SAM_CHECKPOINTGenerating intance segmentation
git clone https://github.com/xiao10ma/Grounded-Segment-Anything.git
cd Grounded-Segment-Anythingfollow the instruction in the repo to install the dependencies.
Run the following command to generate the instance segmentation.
bash waymo_run.shCUDA_VISIBLE_DEVICES=0 python train.py \
--config configs/waymo/017.yaml \
source_path=dataset/017 \
model_path=eval_output/waymo_nvs/017
After training, evaluation results can be found in {EXPERIMENT_DIR}/eval_output directory.
You can also use the following command to evaluate.
CUDA_VISIBLE_DEVICES=0 python evaluate.py \
--config configs/waymo/017.yaml \
source_path=dataset/017 \
model_path=eval_output/waymo_nvs/017 \
checkpoint=eval_output/waymo_nvs/017/chkpnt30000.pth
@inproceedings{Ma2025BezierGS,
title={BézierGS: Dynamic Urban Scene Reconstruction with Bézier Curve Gaussian Splatting},
author={Ma, Zipei and Jiang, Junzhe and Chen, Yurui and Zhang, Li},
booktitle={ICCV},
year={2025},
}

