Learning Representations and Generative Models For 3D Point Clouds
Created by Panos Achlioptas, Olga Diamanti, Ioannis Mitliagkas, Leonidas J. Guibas.
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:
- Python 2.7+ with Numpy, Scipy and Matplotlib
- Tensorflow (version 1.0+)
- TFLearn
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).