The official code repository for the CVPR 2025 paper "SuperPC: A Single Diffusion Model for Unified Point Cloud Processing".
- Added dataset preparation code and instructions
- Uploaded the pretrained weights
- Added evaluation and single-sample testing code
- Add detailed training pipeline
- Possibly add prepared datasets if permission is granted by the original dataset providers
- Add the flow-matching based training pipeline and pretrained weights
Run the setup script:
./setup_env.sh
Follow the detailed dataset preparation guide to download the three raw datasets and prepare ground-truth point clouds and images.
Download all pretrained weights from: https://drive.google.com/drive/folders/1FrQtm8LBVrbdRT4Xs87rIZpJ9nYaTqcG?usp=drive_link
Use test_superpc.py for single-sample or split-based testing with optional output saving.
[Single sample] (assuming you have already prepared the ShapeNet dataset):
airplane: /02691156/10aa040f470500c6a66ef8df4909ded9
python test_superpc.py \
--dataset shapenet \
--cat-id 02691156 \
--model-id 10155655850468db78d106ce0a280f87 \
--mode easy \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--vision_image_dir /path/to/shapenet/render/images \
--num_points 2048 \
--target_num_points 8192 \
--use_input_scout_fill true \
--seed 21 \
--sampling_steps 25 \
--save_pc true[Whole ShapeNet test split] (omit --cat-id and --model-id):
python test_superpc.py \
--dataset shapenet \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--vision_image_dir /path/to/shapenet/render/images \
--num_points 2048 \
--target_num_points 8192 \
--use_input_scout_fill true \
--seed 21 \
--sampling_steps 25 \
--save_pc trueUse test_superpc.py for single-sample or split-based testing with optional output saving.
[Single sample] (assuming you have already prepared the TartanAir dataset):
Single TartanAir sample by metadata path:
python test_superpc.py \
--dataset tartanair \
--tartanair_root /data_sair/tartanair_maps \
--metadata_path /path/to/tartanair_maps/hospital/Easy/P000/000000/metadata.json \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--num_points 11520 \
--target_num_points 46080 \
--seed 21 \
--sampling_steps 25 \
--save_pc trueTartanAir split testing (--eval_split: train, val, test, or all):
python test_superpc.py \
--dataset tartanair \
--tartanair_root /data_sair/tartanair_maps \
--eval_split test \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--num_points 11520 \
--target_num_points 46080 \
--seed 21 \
--sampling_steps 25 \
--save_pc trueUse test_superpc.py for single-sample or split-based testing with optional output saving.
[Single sample] (assuming you have already prepared the KITTI-360 dataset):
Single KITTI-360 sample by metadata path:
python test_superpc.py \
--dataset kitti360 \
--kitti360_root /path/to/kitti360_maps/submaps \
--metadata_path /path/to/kitti360_maps/submaps/2013_05_28_drive_0000_sync/image_00/0000000090/metadata.json \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--num_points 11520 \
--target_num_points 46080 \
--use_input_scout_fill true \
--seed 21 \
--sampling_steps 25 \
--save_pc trueKITTI-360 split testing (--eval_split=test maps to the val split because KITTI-360 currently uses train/val partitioning):
python test_superpc.py \
--dataset kitti360 \
--kitti360_root /path/to/kitti360_maps/submaps \
--eval_split test \
--ckpt_path /path/to/your_checkpoint.pth \
--use_vision_conditioning true \
--num_points 11520 \
--target_num_points 46080 \
--seed 21 \
--sampling_steps 25 \
--save_pc trueThe codebase is built upon: MinkowskiEngine, PUFM, DiffusionPC, and DCD. We appreciate the authors' excellent work.
@inproceedings{du2025superpc,
title={SuperPC: a single diffusion model for point cloud completion, upsampling, denoising, and colorization},
author={Du, Yi and Zhao, Zhipeng and Su, Shaoshu and Golluri, Sharath and Zheng, Haoze and Yao, Runmao and Wang, Chen},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={16953--16964},
year={2025}
}