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 Python 3.7.
- Install dependencies to system via
pip3 install -r requirments.txt
. - Follow this guide to install Open3D for point cloud I/O.
- Build point cloud distance ops by running
make
underpc_distance
. Make sure the paths in makefile are correct. - Download trained models from Google Drive.
This code is built using TensorFlow 1.15 with CUDA 11.0 and tested on Debian 10.
Run python3 demo.py
. Use --input_path
option to switch between the input examples in demo_data
.
- Download ShapeNet test data in the
shapenet
folder on Google Drive. Specifically, this experiment requirestest
,test_novel
,test.list
andtest_novel.list
. - Run
python3 test_shapenet.py
. Use--model_type
option to choose different model architectures. Typepython3 test_shapenet.py -h
for more options.
- Download KITTI data in the
kitti
folder on Google Drive. - Run
python3 test_kitti.py
. Typepython3 test_kitti.py -h
for more options.
- Run the KITTI completion experiment first to get complete point clouds.
- Run
python3 kitti_registration.py
. Typepython3 kitti_registration.py -h
for more options.
- Download training (
train.lmdb
,train.lmdb-lock
) and validation (valid.lmdb
,valid.lmdb-lock
) data fromshapenet
orshapenet_car
directory on Google Drive. Note that the training data for all 8 categories inshapenet
takes up 49G of disk space. The training data for only the car category takes 9G instead. - Run
python3 train.py
. Typepython3 train.py -h
for 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).