[ICCV 2021 Oral] SnowflakeNet: Point Cloud Completion by Snowflake Point Deconvolution with Skip-Transformer

Overview

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

License

This project is open sourced under MIT license.

Comments
  • Need  explanation about Output files

    Need explanation about Output files

    Thanks about the code, I need some information about the output files. For example for the chair class of pcn there are 5 folders as pcd0 to pcd3 and pcdc with many files in each of them. First what are they and why are they in 5 different files and second, what kind of tools do you suggest for visualizing and considering them? I found that all of the output .h5 files have the same data values!

    opened by ema2161 4
  • L1 chamfer distance for PCN dataset is  5.07*10^(-3), which is better than 7.21*10^(-3) in the paper, is this correct?

    L1 chamfer distance for PCN dataset is 5.07*10^(-3), which is better than 7.21*10^(-3) in the paper, is this correct?

    Hi, I trained the model based on the PCN dataset. The average L1 chamfer distance is 5.1510^(-3). The pre-trained model you provided is 5.0710^(-3), which is better than the data 7.21*10^(-3) in the paper. Except for the dataset path, I did not modify your code. Is this result correct?

    opened by zichang06 2
  • Code for visualization

    Code for visualization

    Thank you very much for releasing the code. I'm seeking a good visualization tool for point cloud. According to your paper, the visualized point cloud is beautiful. Could you please release the code for visualization?

    opened by qinglew 2
  • How to read Shapenet lmdb file?

    How to read Shapenet lmdb file?

    Hi,

    Thanks for your work!

    I noticed that your public shapenet training data is saved in 'train.lmdb'. May I ask how you read shapenet data from lmdb file?

    opened by EternityDS 1
  • About dataset of Completion3D

    About dataset of Completion3D

    In utils/data_loaders.py, the dataset class always return the partial point cloud and grount truth point cloud. But when I try to inference using pretrained models, an error occurs. This is because for testing split, there is no ground truth data, i.e. /path/to/datasets/Completion3D/test/gt doesn't exist. The dataset is download from the link you provided. So, could you please provide the corresponding ground truth of testing split of completion3d?

    opened by qinglew 1
  • Accidental use of PCN test data for validation?

    Accidental use of PCN test data for validation?

    opened by lucasbrynte 1
  • Code for L2 Chamfer distance

    Code for L2 Chamfer distance

    Hello, authors! I would like to know how you obtained the L2 Chamfer distance in Table 2 of your paper. After executing your code on the c3d dataset, I obtained the following outcome, which seems to be the L1 Chamfer distance.

    ============================ TEST RESULTS ============================
    Taxonomy        #Sample ChamferDistance
    02691156        100     0.2252
    02933112        100     1.2307
    02958343        100     0.6126
    03001627        100     1.0656
    03636649        100     1.1419
    04256520        100     0.8829
    04379243        100     1.2952
    04530566        100     0.5210
    Overall                 0.8719
    
    Epoch  -1       2.8626  1.6381  1.1422  0.8719  0.0540
    
    opened by ShenZheng2000 0
  • Training with special point cloud dataset

    Training with special point cloud dataset

    Hi, I want to use myself training dataset, dose it possible? Could I set each of these point cloud dataset to a fixed size of 200000 points for-example, instead of 16348 points which you had set for pcn dataset? The best Ema

    opened by ema2161 5
  • Regarding validation transforms

    Regarding validation transforms

    Hi, I noticed that you are scaling the point clouds by 0.85 during validation - #. Wouldn't this reduce the chamfer value as the whole object is now compressed to a smaller size? To confirm this I computed the chamfer distance with and without it on the validation set using the provided pre-trained model (c3d).

    Validation transforms as is - CD: 0.000872 (is as expected and close to the reported numbers on the test set) Using the test set transforms during validation (i.e only ToTensor()) - CD: 0.001968 (more than twice the previous case)

    It would be really helpful if you could clarify the same. Thanks

    opened by MukundVarmaT 3
  • About training duration

    About training duration

    hi, I wonder how do you define your training strategy (e.g. batchsize in pcn case and hardware infos) and how much epochs does it take to converge? Looking forward to your reply!

    opened by leonardozcm 2
Owner
AllenXiang
AllenXiang
Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021)

Style-based Point Generator with Adversarial Rendering for Point Cloud Completion (CVPR 2021) An efficient PyTorch library for Point Cloud Completion.

Microsoft 119 Jan 2, 2023
[CVPR 2021 Oral] Variational Relational Point Completion Network

VRCNet: Variational Relational Point Completion Network This repository contains the PyTorch implementation of the paper: Variational Relational Point

PL 121 Dec 12, 2022
Point Cloud Denoising input segmentation output raw point-cloud valid/clear fog rain de-noised Abstract Lidar sensors are frequently used in environme

Point Cloud Denoising input segmentation output raw point-cloud valid/clear fog rain de-noised Abstract Lidar sensors are frequently used in environme

null 75 Nov 24, 2022
MVP Benchmark for Multi-View Partial Point Cloud Completion and Registration

MVP Benchmark: Multi-View Partial Point Clouds for Completion and Registration [NEWS] 2021-07-12 [NEW ?? ] The submission on Codalab starts! 2021-07-1

PL 93 Dec 21, 2022
PyTorch implementation for View-Guided Point Cloud Completion

PyTorch implementation for View-Guided Point Cloud Completion

null 22 Jan 4, 2023
Code Release for ICCV 2021 (oral), "AdaFit: Rethinking Learning-based Normal Estimation on Point Clouds"

AdaFit: Rethinking Learning-based Normal Estimation on Point Clouds (ICCV 2021 oral) **Project Page | Arxiv ** Runsong Zhu¹, Yuan Liu², Zhen Dong¹, Te

null 40 Dec 30, 2022
Implementation of the "Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos" paper.

Point 4D Transformer Networks for Spatio-Temporal Modeling in Point Cloud Videos Introduction Point cloud videos exhibit irregularities and lack of or

Hehe Fan 101 Dec 29, 2022
Official Python implementation of the 'Sparse deconvolution'-v0.3.0

Sparse deconvolution Python v0.3.0 Official Python implementation of the 'Sparse deconvolution', and the CPU (NumPy) and GPU (CuPy) calculation backen

Weisong Zhao 23 Dec 28, 2022
Pmapper is a super-resolution and deconvolution toolkit for python 3.6+

pmapper pmapper is a super-resolution and deconvolution toolkit for python 3.6+. PMAP stands for Poisson Maximum A-Posteriori, a highly flexible and a

NASA Jet Propulsion Laboratory 8 Nov 6, 2022
Bulk2Space is a spatial deconvolution method based on deep learning frameworks

Bulk2Space Spatially resolved single-cell deconvolution of bulk transcriptomes using Bulk2Space Bulk2Space is a spatial deconvolution method based on

Dr. FAN, Xiaohui 60 Dec 27, 2022
Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral) This is the official implementat

Yifan Zhang 259 Dec 25, 2022
Implementation of the "PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences" paper.

PSTNet: Point Spatio-Temporal Convolution on Point Cloud Sequences Introduction Point cloud sequences are irregular and unordered in the spatial dimen

Hehe Fan 63 Dec 9, 2022
Synthetic LiDAR sequential point cloud dataset with point-wise annotations

SynLiDAR dataset: Learning From Synthetic LiDAR Sequential Point Cloud This is official repository of the SynLiDAR dataset. For technical details, ple

null 78 Dec 27, 2022
SkipGNN: Predicting Molecular Interactions with Skip-Graph Networks (Scientific Reports)

SkipGNN: Predicting Molecular Interactions with Skip-Graph Networks Molecular interaction networks are powerful resources for the discovery. While dee

Kexin Huang 49 Oct 15, 2022
Cross-modal Deep Face Normals with Deactivable Skip Connections

Cross-modal Deep Face Normals with Deactivable Skip Connections Victoria Fernández Abrevaya*, Adnane Boukhayma*, Philip H. S. Torr, Edmond Boyer (*Equ

null 72 Nov 27, 2022
Implementation of paper: "Image Super-Resolution Using Dense Skip Connections" in PyTorch

SRDenseNet-pytorch Implementation of paper: "Image Super-Resolution Using Dense Skip Connections" in PyTorch (http://openaccess.thecvf.com/content_ICC

wxy 114 Nov 26, 2022
Code for "Human Pose Regression with Residual Log-likelihood Estimation", ICCV 2021 Oral

Human Pose Regression with Residual Log-likelihood Estimation [Paper] [arXiv] [Project Page] Human Pose Regression with Residual Log-likelihood Estima

JeffLi 347 Dec 24, 2022
Improving Contrastive Learning by Visualizing Feature Transformation, ICCV 2021 Oral

Improving Contrastive Learning by Visualizing Feature Transformation This project hosts the codes, models and visualization tools for the paper: Impro

Bingchen Zhao 83 Dec 15, 2022
BARF: Bundle-Adjusting Neural Radiance Fields 🤮 (ICCV 2021 oral)

BARF ?? : Bundle-Adjusting Neural Radiance Fields Chen-Hsuan Lin, Wei-Chiu Ma, Antonio Torralba, and Simon Lucey IEEE International Conference on Comp

Chen-Hsuan Lin 539 Dec 28, 2022