Awesome
A fast and low memory requirement version of PointHop and PointHop++
Created by Min Zhang
Introduction
This work is an improved implementation of our PointHop method and PointHop++ method, which is built upon Apache Spark. With 12 cores (Intel (R) core ™ i7-5930k CPU @ 3.5GHZ), PointHop finishes in 20 minutes using less than 12GB memory, and PointHop++ finishes in 40 minutes using less than 14GB memory.
In this repository, we release code and data for training a baseline of PointHop and PointHop++ classification network on point clouds sampled from 3D shapes.
Citation
If you find our work useful in your research, please consider citing:
@article{zhang2020pointhop,
title={PointHop: An Explainable Machine Learning Method for Point Cloud Classification},
author={Zhang, Min and You, Haoxuan and Kadam, Pranav and Liu, Shan and Kuo, C-C Jay},
journal={IEEE Transactions on Multimedia},
year={2020},
publisher={IEEE}
}
@article{zhang2020pointhop++,
title={PointHop++: A Lightweight Learning Model on Point Sets for 3D Classification},
author={Zhang, Min and Wang, Yifan and Kadam, Pranav and Liu, Shan and Kuo, C-C Jay},
journal={arXiv preprint arXiv:2002.03281},
year={2020}
}
Installation
The code has been tested with Python 2.7 and 3.5, Java 8.0. You may need to install h5py, sklearn, pickle and pyspark packages.
To check your java version:
java --version
To install pyspark for Python:
sudo pip install pyspark
If you are using Python 3. You may need to set up your configuarion.
PYSPARK_PYTHON=/usr/bin/python3
PYSPARK_DRIVER_PYTHON=/usr/bin/python3
Usage
To train and test a single PointHop model without ensemble to classify point clouds sampled from 3D shapes:
python3 pointhop_spark.py
To train and test a single PointHop++ model without feature selection and ensemble to classify point clouds sampled from 3D shapes:
python3 pointhop2_spark.py
Point clouds of <a href="http://modelnet.cs.princeton.edu/" target="_blank">ModelNet40</a> models in HDF5 files will be automatically downloaded (416MB) to the data folder. Each point cloud contains 2048 points uniformly sampled from a shape surface. Each cloud is zero-mean and normalized into an unit sphere. There are also text files in data/modelnet40_ply_hdf5_2048
specifying the ids of shapes in h5 files.