PCN: Point Completion Network
[paper] [data] [website]
Introduction
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.
Citation
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}
}
Usage
1) Prerequisite
- 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
make
underpc_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.
2) Demo
Run python3 demo.py
. Use --input_path
option to switch between the input examples in demo_data
.
3) ShapeNet Completion
- 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.
4) KITTI Completion
- Download KITTI data in the
kitti
folder on Google Drive. - Run
python3 test_kitti.py
. Typepython3 test_kitti.py -h
for more options.
5) KITTI Registration
- Run the KITTI completion experiment first to get complete point clouds.
- Run
python3 kitti_registration.py
. Typepython3 kitti_registration.py -h
for more options.
6) Training
- 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.
7) Data Generation
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
.
License
This project Code is released under the MIT License (refer to the LICENSE file for details).