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}
}

Intro pic

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:

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 . We thank the authors for their great job!

License

This project is open sourced under MIT license.

GitHub

https://github.com/AllenXiangX/SnowflakeNet