Coder Social home page Coder Social logo

latent_3d_points's Introduction

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).

latent_3d_points's People

Contributors

olkido avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

latent_3d_points's Issues

Info on clock time per epoch (approximately)

Hi, thanks so much for this code!

It would be great to have some expected time each epoch should take.

Currently I have "ported" it to python3 at https://github.com/mrquincle/latent_3d_points. This is just a few changes: print() statements, making a few structs explicit, xrange -> range and basestring -> str. I did this because in the Colab notebook !find / -name cuda_config.h only shows the cuda files to be part of the python3 installation. Hence, it couldn't find the libraries when running using the python2 runtime.

Currently it runs (using the GPU which is selected) at a bit under a minute per epoch. Is this correct?

Epoch: 0001 training time (minutes)= 0.8922 loss= 0.092229053
INFO:tensorflow:data/single_class_ae/models.ckpt-1 is not in all_model_checkpoint_paths. Manually adding it.
Epoch: 0002 training time (minutes)= 0.8371 loss= 0.072633142
Epoch: 0003 training time (minutes)= 0.8422 loss= 0.068490269
Epoch: 0004 training time (minutes)= 0.8398 loss= 0.066228254
Epoch: 0005 training time (minutes)= 0.8405 loss= 0.065178742
Epoch: 0006 training time (minutes)= 0.8357 loss= 0.064000976
Epoch: 0007 training time (minutes)= 0.8380 loss= 0.062835155
Epoch: 0008 training time (minutes)= 0.8403 loss= 0.061971494
Epoch: 0009 training time (minutes)= 0.8401 loss= 0.060611139
Epoch: 0010 training time (minutes)= 0.8413 loss= 0.059806108

For 500 epochs this would be 0.85 * 500 minutes, which would be over 7 hours. Is that correct indeed?

Cannot compile EMD makefile on Google Colab

Hi,

Has anyone try to run this code on Google Colab? I'm choosing Google Colab to avoid having to install all the requirement on my local machine and to take advantage of the GPU on Google Colab.

I'm trying to make the environment as close to the one in which this code has been tested on. So far, Colab let me install CUDA 8.0.61, tensorflow 1.15.2. I'm using gcc 4.8 to compile the makefile. Python, however, is version 3.6 because that's the only thing Google Colab will support. When I tried to compile the makefile for the EMD/Chamfer losses, I get this error message. If anyone know how to work around this, I'd really appreciate it, otherwise, I'll probably have to install all the requirement on my local machine

/content/drive/My Drive/Project/latent_3d_points-master/external/structural_losses
make: Circular tf_approxmatch_g.cu <- tf_approxmatch_g.cu.o dependency dropped.
make: Circular tf_nndistance_g.cu <- tf_nndistance_g.cu.o dependency dropped.
/usr/local/cuda/bin/nvcc -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.cu.o tf_nndistance_g.cu -I /usr/local/lib/python3.6/dist-packages/tensorflow/include -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1414): warning: calling a constexpr __host__ function("real") from a __host__ __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1414): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1414): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1414): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1419): warning: calling a constexpr __host__ function("real") from a __host__ __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1419): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1419): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1419): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1443): warning: calling a constexpr __host__ function("real") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1444): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1445): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1443): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1444): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1445): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1446): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1451): warning: calling a constexpr __host__ function("real") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1452): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1453): warning: calling a constexpr __host__ function("imag") from a __host__ __device__ function("exp") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1451): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1452): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1453): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1454): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(259): warning: calling a constexpr __host__ function("signbit") from a __host__ __device__ function("truncate_to_bfloat16") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(261): warning: calling a constexpr __host__ function("min") from a __host__ __device__ function("truncate_to_bfloat16") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(263): warning: calling a constexpr __host__ function("signbit") from a __host__ __device__ function("truncate_to_bfloat16") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(259): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(263): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(294): warning: calling a constexpr __host__ function("signbit") from a __host__ __device__ function("float_to_bfloat16_rtne") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(295): warning: calling a constexpr __host__ function("min") from a __host__ __device__ function("float_to_bfloat16_rtne") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(297): warning: calling a constexpr __host__ function("signbit") from a __host__ __device__ function("float_to_bfloat16_rtne") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(294): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/Default/BFloat16.h(297): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(154): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(159): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(267): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(272): warning: calling a constexpr __host__ function from a __host__ __device__ function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/GPU/PacketMath.h(520): error: no suitable conversion function from "const Eigen::half" to "unsigned int" exists

/usr/local/lib/python3.6/dist-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/GPU/PacketMath.h(521): error: class "__half2" has no member "y"

2 errors detected in the compilation of "/tmp/tmpxft_00001468_00000000-5_tf_nndistance_g.cpp4.ii".
makefile:21: recipe for target 'tf_nndistance_g.cu.o' failed
make: *** [tf_nndistance_g.cu.o] Error 2

Here's what in my makefile right now

nvcc = /usr/local/cuda/bin/nvcc
cudalib =  /usr/local/cuda/lib64
tensorflow = /usr/local/lib/python3.6/dist-packages/tensorflow/include

all: tf_approxmatch_so.so tf_approxmatch_g.cu.o tf_nndistance_so.so tf_nndistance_g.cu.o


tf_approxmatch_so.so: tf_approxmatch_g.cu.o tf_approxmatch.cpp
	g++ -std=c++11 tf_approxmatch.cpp tf_approxmatch_g.cu.o -o tf_approxmatch_so.so -shared -fPIC -I $(tensorflow) -lcudart -L $(cudalib) -O2 -D_GLIBCXX_USE_CXX11_ABI=0


tf_approxmatch_g.cu.o: tf_approxmatch_g.cu
	$(nvcc) -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_approxmatch_g.cu.o tf_approxmatch_g.cu -I $(tensorflow) -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2


tf_nndistance_so.so: tf_nndistance_g.cu.o tf_nndistance.cpp
	g++ -std=c++11 tf_nndistance.cpp tf_nndistance_g.cu.o -o tf_nndistance_so.so -shared -fPIC -I $(tensorflow) -lcudart -L $(cudalib) -O2 -D_GLIBCXX_USE_CXX11_ABI=0


tf_nndistance_g.cu.o: tf_nndistance_g.cu
	$(nvcc) -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.cu.o tf_nndistance_g.cu -I $(tensorflow) -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2


clean:
	rm tf_approxmatch_so.so
	rm tf_nndistance_so.so
	rm  *.cu.o

Raw_gan

Thanks for sharing your code.

I check your code to figure out how you achieve raw_GAN performance as you claimed in the paper, but I couldn't find your raw_GAN implement details. I really want to learn from your code.

Hope for your reply.

lack of dependence in `in_out.py`

from general_tools.rla.three_d_transforms import rand_rotation_matrix
from general_tools.in_out.basics import files_in_subdirs
from geo_tool.in_out.soup import load_ply

How can I fix these dependence to run the training?

Windows Support?

Hello, and thank you for making this code available.

I am curious whether you think there is anything in this codebase that is Linux-specific or whether it would be possible to run this on a windows machine as well?

Thanks.

NameError: name 'raw_input' is not defined

@optas @olkido Hello. I am trying to run the train_single_class_ae.ipynb file and I got the error that 'raw_input' is not defined.
Do I need to import it additionally or there was probably an issue with the installations? Hope to hear from you soon!

image

NameError: global name 'nn_distance' is not defined

reset_tf_graph()
ae = PointNetAutoEncoder(conf.experiment_name, conf)

/home/~~/latent_3d_points/src/point_net_ae.py in _create_loss(self)

---> cost_p1_p2, _, cost_p2_p1, _ = nn_distance(self.x_reconstr, self.gt)
self.loss = tf.reduce_mean(cost_p1_p2) + tf.reduce_mean(cost_p2_p1)
elif c.loss == 'emd': [ c.loss == 'chamfer'인 경우 :]

NameError: global name 'nn_distance' is not defined

No module named latend_3d_points.src.ae_templates

Hi,
I have exported PYTHONPATH but I still got an error below:

ImportErrorTraceback (most recent call last)
in ()
1 import os.path as osp
2
----> 3 from latent_3d_points.src.ae_templates import mlp_architecture_ala_iclr_18, default_train_params
4 from latent_3d_points.src.autoencoder import Configuration as Conf
5 from latent_3d_points.src.point_net_ae import PointNetAutoEncoder

ImportError: No module named latent_3d_points.src.ae_templates

Thank you.

Training my own data

Hi! Thanks for sharing this wonderful implementation.
I have some hand data now and I want to train its with ground truth.
I saw the method that you edited parts in point clouds in this paper.
I want to train my own data and make the reconstruction output from the AE network close to the ground truth.
Can you tell me which part of the network I need to do or re-implement ?

Thank you very much.

train_single_class_ae.py : IndexError: list index out of range

Hi,thank you for your work.

when I run the code : train_single_class_ae.py ,I meet the question:

(latent_3d_points) l@l-THUNDEROBOT-PC:~/Documents/latent_3d_points-master$ python train_single_class_ae.py
External Losses (Chamfer-EMD) cannot be loaded. Please install them first.
Give me the class name (e.g. "chair"): 'chair'
03001627
../data/shape_net_core_uniform_samples_2048/03001627
../data/shape_net_core_uniform_samples_2048/03001627
[]
Traceback (most recent call last):
File "train_single_class_ae.py", line 38, in
all_pc_data = load_all_point_clouds_under_folder(class_dir, n_threads=8, file_ending='.ply', verbose=True)
File "/home/l/Documents/latent_3d_points-master/src/in_out.py", line 120, in load_all_point_clouds_under_folder
pclouds, model_ids, syn_ids = load_point_clouds_from_filenames(file_names, n_threads, loader=pc_loader, verbose=verbose)
File "/home/l/Documents/latent_3d_points-master/src/in_out.py", line 125, in load_point_clouds_from_filenames
pc = loader(file_names[0])[0]
IndexError: list index out of range

Training my own data

Hi! Thanks for sharing this wonderful implementation.
I want to train my own data with ground truth, and my goal is making the input data shape close to the ground truth. I saw the method of editing shape parts in your paper. May you tell me where the method in the code? I want to re-implement for my own data.
Thank you very much.

Question about SVM training.

Hi, thanks for your job. I have some question about the svm training and testing precedure.
According to your paper, you randomly rotate the pointcloud and extract the features. Dose it mean that
each you only extract only one features for each pointcloud?(for example, you have 1k pointclouds, you extract 1k feature vectors and send them to the svm?)

The next question is, do you apply any test augmentation during svm testing?

Question about where did you use latent_gan?

HI @optas
Thanks for sharing your code.
I ran the code as the guide said. It seems that you did use AE but I couldn't find where did you put latent_gan in the AE. I couldn't even find "import gan or latent_gan" in training files.
Hope for your reply.

EMD code

Hi, thank you very much for your work on this code, it has been very useful for me.

The calculation of EMD ends up not being quite accurate enough for my current purposes. I am trying to understand if there are some hardcoded hyperparameters that could be useful to me if I changed them. I am also trying to understand what exactly is the algorithm being used. It looks a little bit like it could be Sinkhorn (in which case I would be changing the regularization parameter), but it is not completely clear and there seems to be some differences so I am not sure.

I notice immediately there is a loop:

for (int j=7;j>=-2;j--){
float level=-powf(4.0f,j);

is changing the number of iterations (7, and -2 above), and the 4.0f in variable 'level' going to be useful for changing the accuracy of the computation?

Thanks!

Compiled c++ and imported library successfully but ops are not available from python.

Hi! Many thanks for sharing this wonderful implementation.
I am having a particular problem while running your code (and probably while building it).

I am using tensorflow 1.3.1 on windows 64bit. I have seemingly successfully built your external folder structural_losses with changes for compiling with Visual Studio 2015 and Cuda 8.0.

I am also able to load the ops dlls e.g. using approxmatch_module = tf.load_op_library(osp.join(base_dir, '_approxmatch.pyd'))

However, I don't see the operators approxmatch_module.approx_match,approxmatch_module.match_cost, etc. from the c++ getting exposed to the python tensorflow.

I am getting the following error:
AttributeError: 'module' object has no attribute 'approx_match'

When I do the following

from structural_losses import approxmatch
dir(approxmatch.approxmatch_module)

it lists only the following items
['LIB_HANDLE', 'OP_LIST', '_InitOpDefLibrary', '__builtins__', '__doc__', '__name__', '__package__', '_collections', '_common_shapes', '_op_def_lib', '_op_def_library', '_op_def_pb2', '_op_def_registry', '_ops']

where the actual operations from c++ are missing.

From the compiled shared library, using dependency walker, I see that the following there items are exposed through the dll (i.e. pyd):

char const * const tensorflow::DEVICE_CPU
char const * const tensorflow::DEVICE_GPU
char const * const tensorflow::DEVICE_SYCL

Am I missing anything to get it properly compiled?

Thanks.

unknown symbol error

Hi!
Thank you for your work , it was very good. But I have an issue with running structural losses.
I changed make file with my paths for cuda ,nvcc and tf. Compilation was successful , but when I tried to run import in jupyter notebook there is pop up an error: "undefined symbol: _ZTIN10tensorflow8OpKernelE". After searching in internet, many people have that issue too,but there is not solution for this problem that work for everyone.I tried everything,but nothing worked for me. Maybe you encountered with this problem and can give some advice how to fix it.

I tried to run this project on two different computer, with various environments:

  1. Gpu Nvidia K80 Cuda 8.0 cudnn 7.5 anaconda python 2.7 tensorflow 1.3.0
  2. Gpu Nvidia K80 Cuda 8.0 cudnn 7.5 anaconda python 2.7 tensorflow 1.4.1
    3)Gpu Nvidia K80 Cuda 8.0 cudnn 7.5 anaconda python 3.6 tensorflow 1.4.1
    compiling with g++5 a and g++ 4
    4)GPU Nvidia 1050Ti cudnn 7.5 anaconda python 2.7 tensorflow 1.3.0
    5)GPU Nvidia 1050Ti cudnn 7.5 anaconda python 3.6 tensorflow 1.3.0

Maybe problem is that I have cudnn 7.5 instead 6.0?

With best regards,
Egiazarian V.G.

Question about

I have succeed compile the structural_losses. But it can still not import the Chamfer-EMD. Do you know why?
External Losses (Chamfer-EMD) were not loaded.
External Losses (Chamfer-EMD) cannot be loaded. Please install them first.

make: 放弃循环依赖 tf_approxmatch_g.cu <- tf_approxmatch_g.cu.o 。
/usr/local/cuda-8.0/bin/nvcc -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_approxmatch_g.cu.o tf_approxmatch_g.cu -I /home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
g++ -std=c++11 tf_approxmatch.cpp tf_approxmatch_g.cu.o -o tf_approxmatch_so.so -shared -fPIC -I /home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include -lcudart -L /usr/local/cuda-8.0/lib64 -O2 -D_GLIBCXX_USE_CXX11_ABI=0
make: 放弃循环依赖 tf_nndistance_g.cu <- tf_nndistance_g.cu.o 。
/usr/local/cuda-8.0/bin/nvcc -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.cu.o tf_nndistance_g.cu -I /home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function("real") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function("imag") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function("real") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function("imag") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(133): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(138): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(212): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h(217): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

g++ -std=c++11 tf_nndistance.cpp tf_nndistance_g.cu.o -o tf_nndistance_so.so -shared -fPIC -I /home/gao/tf2/local/lib/python2.7/site-packages/tensorflow/include -lcudart -L /usr/local/cuda-8.0/lib64 -O2 -D_GLIBCXX_USE_CXX11_ABI=0

Cannot compile the EMD/Chamfer losses

After set up current nvcc, cudalib, and tensorflow path, execute make to compile the EMD/Chamfer losses got error message like below.

nvcc = /usr/local/cuda-8.0/bin/nvcc
cudalib = /usr/local/cuda-8.0/lib64
tensorflow = /home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include


make: Circular tf_approxmatch_g.cu <- tf_approxmatch_g.cu.o dependency dropped.
make: Circular tf_nndistance_g.cu <- tf_nndistance_g.cu.o dependency dropped.
/usr/local/cuda-8.0/bin/nvcc -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++11 -c -o tf_nndistance_g.cu.o tf_nndistance_g.cu -I /home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -O2
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function("real") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function("imag") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1254): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function("real") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function("imag") from a host device function("abs") is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/anaconda3/envs/3D_representation/lib/python2.7/site-packages/tensorflow/include/unsupported/Eigen/CXX11/../../../Eigen/src/Core/MathFunctions.h(1259): warning: calling a constexpr host function from a host device function is not allowed. The experimental flag '--expt-relaxed-constexpr' can be used to allow this.

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9220): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9231): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9244): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9255): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9268): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9279): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9292): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9303): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9316): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9327): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9340): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9352): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9365): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9376): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9389): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9401): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9410): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9419): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9428): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9437): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9445): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9454): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9463): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9472): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9481): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9490): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9499): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9508): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9517): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9526): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9535): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512fintrin.h(9544): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(55): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(63): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(73): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(81): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(91): error: argument of type "void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(100): error: argument of type "void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(109): error: argument of type "void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(117): error: argument of type "void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(127): error: argument of type "void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(136): error: argument of type "void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(145): error: argument of type "void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512pfintrin.h(153): error: argument of type "void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10799): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10811): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10823): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10835): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10847): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10859): error: argument of type "const void *" is incompatible with parameter of type "const float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10871): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10883): error: argument of type "const void *" is incompatible with parameter of type "const double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10895): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10907): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10919): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10931): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10943): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10955): error: argument of type "const void *" is incompatible with parameter of type "const int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10967): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10979): error: argument of type "const void *" is incompatible with parameter of type "const long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(10989): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11000): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11009): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11020): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11029): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11040): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11049): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11060): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11069): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11080): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11089): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11100): error: argument of type "void *" is incompatible with parameter of type "float *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11109): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11120): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11129): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11140): error: argument of type "void *" is incompatible with parameter of type "double *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11149): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11160): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11169): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11180): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11189): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11200): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11209): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11220): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11229): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11240): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11249): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11260): error: argument of type "void *" is incompatible with parameter of type "int *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11269): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11280): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11289): error: argument of type "void *" is incompatible with parameter of type "long long *"

/home/lab/.linuxbrew/Cellar/gcc/5.5.0_4/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/include/avx512vlintrin.h(11300): error: argument of type "void *" is incompatible with parameter of type "long long *"

92 errors detected in the compilation of "/tmp/tmpxft_00001e12_00000000-7_tf_nndistance_g.cpp1.ii".
makefile:21: recipe for target 'tf_nndistance_g.cu.o' failed
make: *** [tf_nndistance_g.cu.o] Error 2

The original shapenetcore dataset

Hi, thanks for sharing your work! Can you tell me where to download the original shapenetcore(57k 3D shapes) . In shapenet website, the shapenetcore dataset only contains ~51k 3d shapes.
image

Running on GPU

Dear authors, how to run the code for training raw gan on GPU?

'approx_match' is not defined?

Hello,
First of all, great paper and great results. I have a few questions regarding the architecture and compiling.
I managed to compile everything, using python2.7 and all the tested versions of the libraries (except CUDA, but the compilation was successful (i think?)so I ignored it), but as soon as I run the notebook I get stomped by this message:

NameError: global name 'approx_match' is not defined

My second question is how does 1D Convolution with Stride 1 and Kernel 1 actually work in your case with point clouds? Isn't that just multiplication?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.