PCN is a learning-based shape completion method which directly maps a partial point cloud to a dense, complete point cloud without any voxelization. It is based on our 3DV 2018 publication PCN: Point Completion Network. Please refer to our project website or read our paper for more details.
If you find our work useful for your research, please cite:
@inProceedings{yuan2018pcn,
title = {PCN: Point Completion Network},
author = {Yuan, Wentao and Khot, Tejas and Held, David and Mertz, Christoph and Hebert, Martial},
booktitle = {3D Vision (3DV), 2018 International Conference on},
year = {2018}
}
- Install dependencies via
pip3 install -r requirments.txt. - Follow this guide to install Open3D for point cloud I/O.
- Build point cloud distance ops by running
makeunderpc_distance. Make sure the paths in makefile are correct. - Download trained models from Google Drive.
This code is built using Tensorflow 1.12 with CUDA 9.0 and tested on Ubuntu 16.04 with Python 3.5.
Run python3 demo.py. Use --input_path option to switch between the input examples in demo_data.
- Download ShapeNet test data in the
shapenetfolder on Google Drive. Specifically, this experiment requirestest,test_novel,test.listandtest_novel.list. - Run
python3 test_shapenet.py. Use--model_typeoption to choose different model architectures. Typepython3 test_shapenet.py -hfor more options.
- Download KITTI data in the
kittifolder on Google Drive. - Run
python3 test_kitti.py. Typepython3 test_kitti.py -hfor more options.
- Run the KITTI completion experiment first to get complete point clouds.
- Run
python3 kitti_registration.py. Typepython3 kitti_registration.py -hfor more options.
- Download training (
train.lmdb,train.lmdb-lock) and validation (valid.lmdb,valid.lmdb-lock) data fromshapenetorshapenet_cardirectory on Google Drive. Note that the training data for all 8 categories inshapenettakes up 49G of disk space. The training data for only the car category takes 9G instead. - Run
python3 train.py. Typepython3 train.py -hfor more options.
To generate your own data from ShapeNet, first Download ShapeNetCore.v1. Then, create partial point clouds from depth images (see instructions in render) and corresponding ground truths by sampling from CAD models (see instructions in sample). Finally, serialize the data using lmdb_writer.py.
This project Code is released under the MIT License (refer to the LICENSE file for details).