optas / latent_3d_points

Auto-encoding & Generating 3D Point-Clouds.
Other
520 stars 110 forks source link

Learning Representations and Generative Models For 3D Point Clouds

Created by Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, Leonidas J. Guibas.

representative

Introduction

This work is based on our arXiv tech report. We proposed a novel deep net architecture for auto-encoding point clouds. The learned representations were amenable to semantic part editting, shape analogies, linear classification and shape interpolations.

Citation

If you find our work useful in your research, please consider citing:

@article{achlioptas2017latent_pc,
  title={Learning Representations and Generative Models For 3D Point Clouds},
  author={Achlioptas, Panos and Diamanti, Olga and Mitliagkas, Ioannis and Guibas, Leonidas J},
  journal={arXiv preprint arXiv:1707.02392},
  year={2017}
}

Dependencies

Requirements:

Our code has been tested with Python 2.7, TensorFlow 1.3.0, TFLearn 0.3.2, CUDA 8.0 and cuDNN 6.0 on Ubuntu 14.04.

Installation

Download the source code from the git repository:

git clone https://github.com/optas/latent_3d_points

To be able to train your own model you need first to compile the EMD/Chamfer losses. In latent_3d_points/external/structural_losses we have included the cuda implementations of Fan et. al.

cd latent_3d_points/external

with your editor modify the first three lines of the makefile to point to 
your nvcc, cudalib and tensorflow library.

make

Data Set

We provide ~57K point-clouds, each sampled from a mesh model of ShapeNetCore with (area) uniform sampling. To download them (1.4GB):

cd latent_3d_points/
./download_data.sh

The point-clouds will be stored in latent_3d_points/data/shape_net_core_uniform_samples_2048

Use the function snc_category_to_synth_id, defined in src/in_out/, to map a class name such as "chair" to its synthetic_id: "03001627". Point-clouds of models of the same class are stored under a commonly named folder.

Usage

To train a point-cloud AE look at:

latent_3d_points/notebooks/train_single_class_ae.ipynb

To train a latent-GAN based on a pre-trained AE look at:

latent_3d_points/notebooks/train_latent_gan.ipynb

To train a raw-GAN:

latent_3d_points/notebooks/train_raw_gan.ipynb    

To use the evaluation metrics (MMD, Coverage, JSD) between two point-cloud sets look at:

latent_3d_points/notebooks/compute_evaluation_metrics.ipynb

License

This project is licensed under the terms of the MIT license (see LICENSE.md for details).