SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer
Peng Xiang, Xin Wen, Yu-Shen Liu, Yan-Pei Cao, Pengfei Wan, Wen Zheng, Zhizhong Han
This repository contains the source code for the paper SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer (ICCV 2021 Oral). The project page is here.
Cite this work
@inproceedings{xiang2021snowflakenet,
title={{SnowflakeNet}: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer},
author={Xiang, Peng and Wen, Xin and Liu, Yu-Shen and Cao, Yan-Pei and Wan, Pengfei and Zheng, Wen and Han, Zhizhong},
booktitle={Proceedings of the IEEE International Conference on Computer Vision (ICCV)},
year={2021}
}
Datasets
We use the PCN and Compeletion3D datasets in our experiments, which are available below:
The pretrained models on Completion3D and PCN dataset are available as follows:
Backup Links:
- SnowflakeNet_pre-trained (pwd: oy5c)
Install Python Denpendencies
cd SnowflakeNet
pip install -r requirements.txt
Build PyTorch Extensions
NOTE: PyTorch >= 1.4 of cuda version are required.
cd pointnet2_ops_lib
python setup.py install
cd ..
cd Chamfer3D
python setup.py install
You need to update the file path of the datasets:
__C.DATASETS.COMPLETION3D.PARTIAL_POINTS_PATH = '/path/to/datasets/Completion3D/%s/partial/%s/%s.h5'
__C.DATASETS.COMPLETION3D.COMPLETE_POINTS_PATH = '/path/to/datasets/Completion3D/%s/gt/%s/%s.h5'
__C.DATASETS.SHAPENET.PARTIAL_POINTS_PATH = '/path/to/datasets/ShapeNet/ShapeNetCompletion/%s/partial/%s/%s/%02d.pcd'
__C.DATASETS.SHAPENET.COMPLETE_POINTS_PATH = '/path/to/datasets/ShapeNet/ShapeNetCompletion/%s/complete/%s/%s.pcd'
# Dataset Options: Completion3D, Completion3DPCCT, ShapeNet, ShapeNetCars
__C.DATASET.TRAIN_DATASET = 'ShapeNet'
__C.DATASET.TEST_DATASET = 'ShapeNet'
Getting Started
To train SnowflakeNet, you can simply use the following command:
python main_*.py # remember to change '*' to 'c3d' or 'pcn'
To test or inference, you should specify the path of checkpoint if the config_*.py file
__C.CONST.WEIGHTS = "path to your checkpoint"
then use the following command:
python main_*.py --test
python main_*.py --inference
Visualization of point splitting paths
We provide visualization code for point splitting paths in the visualization folder.
Acknowledgements
Some of the code of this repo is borrowed from GRNet, pytorchpointnet++ and ChamferDistancePytorch. We thank the authors for their great job!
License
This project is open sourced under MIT license.