Skip to content

BingHan0458/PU-GACNet

Repository files navigation

PU-GACNet: Graph Attention Convolution Network for Point Cloud Upsampling

This is the official implementation for paper PU-GACNet: Graph Attention Convolution Network for Point Cloud Upsampling

Previous methods including PU-Net, MPU (3PU), PU-GAN, Dis-PU, PU-GCN and the repositories of PU-GCN support training our PU-GACNet. Please kindly cite all of the methods.

Installation

This repository is based on Tensorflow (1.13.1) and the TF operators from PointNet++. Therefore, you need to install tensorflow and compile the TF operators.

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 and tf_compile.sh in tf_ops folder, one has to manually change the path!!.

Usage

  1. Clone the repository:

    https://github.com/BingHan0458/PU-GACNet
    cd PU-GAC
  2. Install the environment:

    Once you have modified the path in compile.sh and tf_compile.sh under tf_ops, you can simply install pugac environment by:

    source env_install.sh
    conda activate pugac
  3. Download the dataset:

    You can download PU1K dataset from Google Drive and place it into PU-GAC/data/PU1K.

    The directory tree of the data file is as follows:

    data
       |__PU1K
           |__train
               |__pu1k_poisson_256_poisson_1024_pc_2500_patch50_addpugan.h5
           |__test
               |__original_meshes
                   |__*.off
               |__input_2048
                   |__*.xyz
               |__gt_8192
                   |__*.xyz
       |__realscan_KITTI
           |__0000001.xyz
           |__...

    Since PU1K benchmark data is used, no data preprocessing operations are required. If you want to use your own datasets, you can refer to data_preprocessing/prep_data for data processing.

  4. Train the models:

    • PU-GACNet
    python main.py --phase train --model pugac --upsampler edge-aware_nodeshuffle --k 20
    • PU-GCN
    python main.py --phase train --model pugcn --upsampler nodeshuffle --k 20
    • PU-Net
    python main.py --phase train --model punet --upsampler multi_cnn
    • MPU
    python main.py --phase train --model mpu --upsampler duplicate
    • PU-GAN
    python main.py --phase train --model pugan --more_up 2
  5. Evaluate the models:

    Before testing, please copy the corresponding model to the pretrain folder. Then you can run the scripts test_pu1k_allmodels.sh.

    source test_pu1k_allmodels.sh # please look this file and `test_pu1k.sh` for details
  6. Test on the real-scanned dataset:

    Before testing, please copy the corresponding model to the pretrain folder. Then you can run the scripts test_realscan_allmodels.sh.

     source test_realscan_allmodels.sh # please look this file and `test_realscan.sh` for details
  7. Visualization:

    You can use meshlab or cloudcompare software for visualization. Furthermore, mayavi is also a good choice.

Citation

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

@inproceedings{Yu2018Pu,
  author  = "Lequan Yu and Xianzhi Li and Chi-Wing Fu and Daniel Cohen-Or and Pheng-Ann Heng.",
  year    = 2018,
  title   = "{Pu-net: Point cloud upsampling network}",
  booktitle="Proceedings of IEEE Conference on Computer Vision and Pattern Recognition {(CVPR-18)}", 
  pages   = "2790-2799",
}

@inproceedings{Wang2019Patch,
  author  = "Yifan Wang and Shihao Wu and Hui Huang and Daniel Cohen-Or and Olga Sorkine-Hornung.",
  year    = 2019,
  title   = "{Patch-based progressive 3d point set upsampling}",
  booktitle="Proceedings of IEEE Conference on Computer Vision and Pattern Recognition {(CVPR-19)}", 
  pages   = "5958-5967",
}

@inproceedings{Li2019Pu,
  author  = "Ruihui Li and Xianzhi Li and Chi-Wing Fu and Daniel Cohen-Or and Pheng-Ann Heng.",
  year    = 2019,
  title   = "{Pu-gan: A point cloud upsampling adversarial network}",
  booktitle="Proceedings of IEEE International Conference on Computer Vision {(ICCV-19)}", 
  pages   = "7203-7212",
}

@inproceedings{Li2021Point,
  author  = "Ruihui Li and Xianzhi Li and PhengAnn Heng and ChiWing Fu.",
  year    = 2021,
  title   = "{Point cloud upsampling via disentangled refinement}",
  booktitle="Proceedings of IEEE Conference on Computer Vision and Pattern Recognition {(CVPR-21)}", 
  pages   = "344-353",
}

@inproceedings{Qian2021Pu,
  author  = "Guocheng Qian and Abdulellah Abualshour and Guohao Li and Ali Thabet and Bernard Ghanem.",
  year    = 2021,
  title   = "{Pu-gcn: Point cloud upsampling using graph convolutional networks}",
  booktitle="Proceedings of IEEE Conference on Computer Vision and Pattern Recognition {(CVPR-21)}", 
  pages   = "11683-11692",
}

Acknowledgement