Home

Awesome

PU-GCN: Point Cloud Upsampling using Graph Convolutional Networks (CVPR21')

CVPR21 | Arxiv | project | code | PU1K data

This is the official implementation for our CVPR 21' paper PU-GCN: Point Cloud Upsampling using Graph Convolutional Networks. This repository supports training our PU-GCN, and previous methods PU-Net, MPU (3PU), PU-GAN.

Update

Preparation

  1. Clone the repository:

    https://github.com/guochengqian/PU-GCN.git
    cd PU-GCN
    
  2. install the environment Once you have modified the path in compile.sh under tf_ops, you can simply install pugcn environment by:

     bash env_install.sh
     conda activate pugcn
    

    Note this repository is based on Tensorflow (1.13.1) and the TF operators from PointNet++. You can check the env_install.sh for details how to install the environment. In the second step, for compiling TF operators, please check compile.sh in tf_ops folder, one may have to manually change the path!!

  3. Download PU1K dataset from Google Drive
    Link the data to ./data:

    mkdir data
    ln -s /path/to/PU1K ./data/
    
  4. Optional. The original meshes of PU1K dataset is avaialble in Goolge Drive

Train on PU1K (Random input)

note: If you favor uniform inputs, you have to retrain all models. Otherwise, the results might be really bad. To train with uniform inputs, simply add --fps in the command line below. We provide the pretrained PU-GCN on PU-GAN's dataset using the uniform inputs here in case it is needed.

To train models on PU1K using random inputs. Our pretrained models (PU-GCN on PU1K random and other models) are available Google Drive

To train on other dataset, simply change the --data_dir to locate to your data file.

Evaluation

  1. Test on PU1K dataset

    bash test_pu1k_allmodels.sh # please modify this script and `test_pu1k.sh` if needed
    
  2. Test on real-scanned dataset

    bash test_realscan_allmodels.sh
    
  3. Visualization. check below. You have to modify the path inside.

    python vis_benchmark.py
    

Citation

If PU-GCN and the repo are useful for your research, please consider citing:

@InProceedings{Qian_2021_CVPR,
    author    = {Qian, Guocheng and Abualshour, Abdulellah and Li, Guohao and Thabet, Ali and Ghanem, Bernard},
    title     = {PU-GCN: Point Cloud Upsampling Using Graph Convolutional Networks},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2021},
    pages     = {11683-11692}
}

@article{Yu2018PUNetPC,
  title={PU-Net: Point Cloud Upsampling Network},
  author={Lequan Yu and Xianzhi Li and Chi-Wing Fu and D. Cohen-Or and P. Heng},
  journal={2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  year={2018},
  pages={2790-2799}
}

@article{Wang2019PatchBasedP3,
  title={Patch-Based Progressive 3D Point Set Upsampling},
  author={Yifan Wang and Shihao Wu and Hui Huang and D. Cohen-Or and O. Sorkine-Hornung},
  journal={2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2019},
  pages={5951-5960}
}

@inproceedings{li2019pugan,
     title={PU-GAN: a Point Cloud Upsampling Adversarial Network},
     author={Li, Ruihui and Li, Xianzhi and Fu, Chi-Wing and Cohen-Or, Daniel and Heng, Pheng-Ann},
     booktitle = {{IEEE} International Conference on Computer Vision ({ICCV})},
     year = {2019}
 }

Acknowledgement

This repo is heavily built on PU-GAN code. We also borrow the architecture and evaluation codes from MPU and PU-Net.