(Re-)Implementation for PIE-NET paper (Wang, et al., 2020).
So far, training data preparation have been completed, and point classification is in a working state. It is undecided whether curve proposal and proposal selection will be implemented.
For my quick study on point cloud sampling methods, see this Markdown file.
CAD models (feat
s and obj
s) were downloaded from [2], before a Python package [3] was used to sample point clouds from the obj
s.
I experimented two sampling methods: Monte Carlo and Poisson Disk. The former was selected due to its faster speed of sampling, although the latter yielded better point clouds. For comparison, see here.
Ground truth, including point classes and offsets, was calculated and transferred from the feat
s to the sampled point clouds.
In the paper, point classification was done with PointNet++. In this implementation, PointNet++ Tensorflow 2.0 layers were used from a public repo [4]. I modified the existing semantic segmentation model to support point classification by adjusting final outputs and adding a custom loss.
Some failed attempts are documented here as warnings for others to avoid.
- The original PointNet++ implementation [5] was not as useful because it requires older versions of Python and TF.
- Software like Blender or gmsh could also be used to sample point clouds from CAD models. But they generally do not have great Python APIs and come with redundant functionalities.
training_data.py
includes some functions for generating training data.
The Pointnet++ layers were included as a submodule of this repo (pointnet2-tensorflow2/
), which contains WIP point classification code.
whiteboard.ipynb
is my interactive playground for testing and learning.