This is the official repository for the paper
LiDPM: Rethinking Point Diffusion for Lidar Scene Completion
Tetiana Martyniuk, Gilles Puy, Alexandre Boulch, Renaud Marlet, Raoul de Charette
IEEE IV 2025
Updates:
- 15/07/2025: SemanticKITTI validation set results updated (see Evaluation).
- 10/07/2025: inference scripts updated.
- 25/06/2025: training and inference code released.
- Installation
- SemanticKITTI Dataset
- Ground truth generation
- Training the model
- Model Weights
- Inference
- Evaluation
- Citation
- License
- Acknowledgments
The code uses Python 3.7.
conda create --name lidpm python=3.7
conda activate lidpm
git clone https://github.com/astra-vision/LiDPM
cd LiDPM
sudo apt install build-essential libopenblas-dev
pip install -r requirements.txt
# Install Minkowski Engine
export TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
pip install -U git+https://github.com/NVIDIA/MinkowskiEngine --install-option="--blas=openblas" --install-option="--force_cuda" -v --no-deps
The SemanticKITTI dataset has to be downloaded from the official webpage and extracted in the following structure:
SemanticKITTI
└── dataset
└── sequences
├── 00/
│ ├── velodyne/
| | ├── 000000.bin
| | ├── 000001.bin
| | └── ...
│ └── labels/
| ├── 000000.label
| ├── 000001.label
| └── ...
├── ...
├── 08/ # for validation
├── ...
├── 11/ # 11-21 for testing
├── ...
└── 21/
└── ...
To generate the complete scenes, run the map_from_scans.py
script.
This uses the dataset scans and poses to generate sequence maps, which serve as ground truth during training.
Specify the SemanticKITTI path and the output path in the corresponding config file.
cd lidpm/scripts
python map_from_scans.py configs/map_from_scans.yaml
To train the diffusion model, the configurations are defined in config/train.yaml
, and the training can be started
with:
cd lidpm
python train.py --config config/train.yaml
Don't forget to specify the data_dir
and gt_map_dir
in the config file.
The model was trained on 4 NVIDIA A100 GPUs for 40 epochs.
The pre-trained model checkpoint can be downloaded from the GitHub release.
To complete the lidar scans, run
cd lidpm/scripts
python inference.py configs/inference.yaml
In the corresponding config you should specify the path to the diffusion checkpoint, dataset path, and output folder,
and decide if you want to run inference on a particular sequence or over the list of predefined pointclouds
(configured in canonical_minival_filename
).
In order to speed up inference, we follow LiDiff and employ DPM-Solver. To complete the lidar scans using DPM-Solver, run
cd lidpm/scripts
python inference_dpmSolver.py configs/inference_dpmSolver.yaml
The number of DPM-Solver steps is configured via denoising_steps
, and the corresponding number of diffusion steps is
set via starting_point
.
For insights into these parameters, refer to Table 2 ("Ablation studies") in the paper.
By default, we use denoising_steps=20
and starting_point=300
, as suggested by our ablation.
For evaluation on SemanticKITTI, we follow the protocol from LiDiff. The results are obtained using the LiDPM model checkpoint (see Model Weights) and DPM-Solver inference (20 steps). To report "LiDPM (refined)" results, we use the off-the-shelf LiDiff refinement network.
Below are the evaluation results on the SemanticKITTI validation set, based on the updated LiDiff metrics code and incorporating the revised values.
Method | Output | JSD 3D ↓ | JSD BEV ↓ | Voxel IoU (m) ↑ | CD ↓ | ||
---|---|---|---|---|---|---|---|
0.5 | 0.2 | 0.1 | |||||
LMSCNet | Voxel | - | 0.431 | 30.83 | 12.09 | 3.65 | 0.641 |
LODE | Surface | - | 0.451 | 33.81 | 16.39 | 5.0 | 1.029 |
MID | Surface | - | 0.470 | 31.58 | 22.72 | 13.14 | 0.503 |
PVD | Points | - | 0.498 | 15.91 | 3.97 | 0.6 | 1.256 |
LiDiff (diffusion-only) | Points | 0.564 | 0.444 | 31.47 | 16.79 | 4.67 | 0.434 |
LiDPM (diffusion-only) | Points | 0.532 | 0.440 | 34.09 | 19.45 | 6.27 | 0.446 |
LiDiff (refined) | Points | 0.573 | 0.416 | 32.43 | 22.99 | 13.40 | 0.376 |
LiDPM (refined) | Points | 0.542 | 0.403 | 36.59 | 25.76 | 14.93 | 0.377 |
If you build upon LiDPM paper or code, please cite our paper:
@INPROCEEDINGS{martyniuk2025lidpm,
author={Martyniuk, Tetiana and Puy, Gilles and Boulch, Alexandre and Marlet, Renaud and de Charette, Raoul},
booktitle={2025 IEEE Intelligent Vehicles Symposium (IV)},
title={LiDPM: Rethinking Point Diffusion for Lidar Scene Completion},
year={2025},
volume={},
number={},
pages={555-560},
doi={10.1109/IV64158.2025.11097538}
}
This project is licensed under the Apache License 2.0.
This code is developed upon the LiDiff codebase. We modify it to depart from the "local" diffusion paradigm to the "global" one presented in LiDPM paper. We thank the authors of LiDiff for making their work publicly available.