Skip to content

worldbench/SPIRAL

Repository files navigation

Spiral: Semantic-Aware Progressive LiDAR Scene Generation and Understanding

Dekai Zhu*     Yixuan Hu*     Youquan Liu     Dongyue Lu     Lingdong Kong     Slobodan Ilic
(* Equal Contribution)
NeurIPS 2025

   

Teaser

Existing LiDAR generative models are limited to producing unlabeled LiDAR scenes, lacking any semantic annotations. Performing post-hoc labeling on these generated scenes requires additional pretrained segmentation models, which introduces extra computational overhead. Moreover, such after-the-fact annotation yields suboptimal segmentation quality.

To address this issue, we make the following contributions:

  • We propose a novel state-of-the-art semantic-aware range-view LiDAR diffusion model, Spiral, which jointly produces depth and reflectance images along with semantic labels.
  • We introduce unified evaluation metrics that comprehensively evaluate the geometric, physical, and semantic quality of generated labeled LiDAR scenes.
  • We demonstrate the effectiveness of the generated LiDAR scenes for training segmentation models, highlighting Spiral's potential for generative data augmentation.

πŸ“š Citation

If you find this work helpful for your research, please kindly consider citing our paper:

@inproceedings{zhu2025spiral,
    title     = {Spiral: Semantic-Aware Progressive LiDAR Scene Generation and Understanding},
    author    = {Zhu, Dekai and Hu, Yixuan and Liu, Youquan and Lu, Dongyue and Kong, Lingdong and Ilic, Slobodan},
    booktitle = {The Thirty-ninth Annual Conference on Neural Information Processing Systems},
    year      = {2025}
}

Updates

  • [07/2026] - Pretrained weights and 10k generated samples for SemanticKITTI have been released. πŸš€
  • [11/2025] - The code for Spiral is released. πŸš€
  • [10/2025] - The project page is online. πŸš€
  • [09/2025] - This work has been accepted to NeurIPS 2025.

βš™οΈ Installation

For details related to installation and environment setups, please run:

conda env create -f environment.yaml
conda activate spiral

If you are stuck with an endless installation, try:

mamba env create -f environment.yaml
conda activate spiral

♨️ Data Preparation

We use the official SemanticKITTI API to preprocess the data by projecting the LiDAR data from Cartesian coordinates into range images. You can download the preprocessed data here. πŸ€—

πŸš€ Getting Started

First, specify the data_path in utils/option.py to point to the directory of the preprocessed data. Then simply run:

python train.py

to start the training. You may adjust certain hyperparameters in utils/option.py to suit your training environment. If you encounter persistent torch dynamo errors, it is recommended to set dynamo_backend to None in option.py.

Note: Following the approach from R2DM, this project uses the Hugging Face datasets library to accelerate data loading, which will generate a large cache under ~/.cache/huggingface/datasets/. Please ensure sufficient disk space is available, or enable overfit mode during debugging.

πŸ™οΈ Generate LiDAR Scenes with Semantic Labels

You can generate LiDAR scenes using either your own trained checkpoint or our released weights [Spiral on SemanticKITTI].

Run:

python sample_and_save.py --ckpt $CHECKPOINT_PATH --output_dir $OUTPUT_DIR

Here, CHECKPOINT_PATH is the path to a model checkpoint (*.pth), and OUTPUT_DIR is the directory where generated scenes are saved.

Each generated LiDAR scene has shape [7, H, W] with the following channels:

  • depth (in meters)
  • x, y, z (in meters)
  • reflectance (0.0-1.0)
  • seg_pred_prob (semantic confidence score, 0.0-1.0)
  • seg_pred (semantic category index, 0-19 in SemanticKITTI)

πŸ“Š Evaluation

In addition to standard geometric metrics (e.g., FRD, FPD), we propose novel semantic-aware metrics (e.g., S-FRD, S-FPD) that jointly evaluate the geometric and semantic consistency of generated LiDAR scenes. These metrics rely on a semantic encoder from LiDM to produce semantic embeddings. The pretrained weights can be downloaded here: [SemanticKITTI]. Place the downloaded file in the root directory of this project.

You can evaluate using your own generated scenes or our provided samples (10k scenes), available here.

Run:

python evaluate.py --ckpt $CHECKPOINT_PATH --sample_dir $OUTPUT_DIR --split all

The evaluation results will be printed upon completion. For SemanticKITTI, all labeled samples from splits 00–10 are included in the real set to measure the similarity between real and generated distributions.

Acknowledgements

This work is developed based on the R2DM codebase.

About

[NeurIPS 2025] SPIRAL: Semantic-Aware Progressive LiDAR Scene Generation and Understanding

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages