This is a TensorFlow implementation of using graph convolutional neural network to solve 3D point cloud classification problem. Details are decribed in the short paper A GRAPH-CNN FOR 3D POINT CLOUD CLASSIFICATION and master project report in the folder Documents.
If you find this code usefule please cite the following paper:
Yingxue Zhang and Michael Rabbat, "A GRAPH-CNN FOR 3D POINT CLOUD CLASSIFICATION", International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2018
Link: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8462291
Bibtex:
@inproceedings{ZhangR_18_gcnn_point_cloud,
author = {Yingxue Zhang and Michael Rabbat},
title = {A Graph-CNN for 3D Point Cloud Classification},
booktitle = {International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
address = {Calgary, Canada},
year = {2018}
}
Python 2.7
tensorflow (>0.12)
git clone git@github.com:maggie0106/Graph-CNN-in-3D-Point-Cloud-Classification.git
pip install -r requirements.txt
https://shapenet.cs.stanford.edu/media/modelnet40_ply_hdf5_2048.zip
You can choose between two models using different pooling scheme including global pooling and multi-resolution pooling. And two training schemes have been provided to alleviate the unbalanced data, please change the batchWeight line in the model.py accordingly.
cd global_pooling_model
python main.py
cd multi_res_pooling_model
python main_multi_res.py
This implementation can be used to achieve 3D point cloud classification and can be easily applied to point cloud part segmentation by simply removing the global features aggregation process to achieve pointwise classification. This model also has the potential to extend into any problem relate to the interaction between graph structure and graph signal or purely graph classification problem.
This project is licensed under the MIT License - see the [LICENSE.md] file for details