All Projects â†’ soumik12345 â†’ point-cloud-segmentation

soumik12345 / point-cloud-segmentation

Licence: MIT license
TF2 implementation of PointNet for segmenting point clouds

Programming Languages

python
139335 projects - #7 most used programming language
Jupyter Notebook
11667 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to point-cloud-segmentation

Depth clustering
🚕 Fast and robust clustering of point clouds generated with a Velodyne sensor.
Stars: ✭ 657 (+1890.91%)
Mutual labels:  point-cloud, segmentation
Gacnet
Pytorch implementation of 'Graph Attention Convolution for Point Cloud Segmentation'
Stars: ✭ 103 (+212.12%)
Mutual labels:  point-cloud, segmentation
Pointcnn
PointCNN: Convolution On X-Transformed Points (NeurIPS 2018)
Stars: ✭ 1,120 (+3293.94%)
Mutual labels:  point-cloud, segmentation
Pointnet
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
Stars: ✭ 3,517 (+10557.58%)
Mutual labels:  point-cloud, segmentation
Pointasnl
PointASNL: Robust Point Clouds Processing using Nonlocal Neural Networks with Adaptive Sampling (CVPR 2020)
Stars: ✭ 159 (+381.82%)
Mutual labels:  point-cloud, segmentation
Superpoint graph
Large-scale Point Cloud Semantic Segmentation with Superpoint Graphs
Stars: ✭ 533 (+1515.15%)
Mutual labels:  point-cloud, segmentation
Pointclouddatasets
3D point cloud datasets in HDF5 format, containing uniformly sampled 2048 points per shape.
Stars: ✭ 80 (+142.42%)
Mutual labels:  point-cloud, segmentation
pyRANSAC-3D
A python tool for fitting primitives 3D shapes in point clouds using RANSAC algorithm
Stars: ✭ 253 (+666.67%)
Mutual labels:  point-cloud, segmentation
Dgcnn.pytorch
A PyTorch implementation of Dynamic Graph CNN for Learning on Point Clouds (DGCNN)
Stars: ✭ 153 (+363.64%)
Mutual labels:  point-cloud, segmentation
Grid Gcn
Grid-GCN for Fast and Scalable Point Cloud Learning
Stars: ✭ 143 (+333.33%)
Mutual labels:  point-cloud, segmentation
pointnet2-pytorch
A clean PointNet++ segmentation model implementation. Support batch of samples with different number of points.
Stars: ✭ 45 (+36.36%)
Mutual labels:  point-cloud, segmentation
3d Pointcloud
Papers and Datasets about Point Cloud.
Stars: ✭ 179 (+442.42%)
Mutual labels:  point-cloud, segmentation
torch-points3d
Pytorch framework for doing deep learning on point clouds.
Stars: ✭ 1,823 (+5424.24%)
Mutual labels:  point-cloud, segmentation
Cilantro
A lean C++ library for working with point cloud data
Stars: ✭ 577 (+1648.48%)
Mutual labels:  point-cloud, segmentation
Point2Sequence
Point2Sequence: Learning the Shape Representation of 3D Point Clouds with an Attention-based Sequence to Sequence Network
Stars: ✭ 34 (+3.03%)
Mutual labels:  point-cloud, segmentation
Torch Points3d
Pytorch framework for doing deep learning on point clouds.
Stars: ✭ 1,135 (+3339.39%)
Mutual labels:  point-cloud, segmentation
Deep Learning For Image Processing
deep learning for image processing including classification and object-detection etc.
Stars: ✭ 5,808 (+17500%)
Mutual labels:  segmentation, tensorflow2
Imgclsmob
Sandbox for training deep learning networks
Stars: ✭ 2,405 (+7187.88%)
Mutual labels:  segmentation, tensorflow2
Pointnet Keras
Keras implementation for Pointnet
Stars: ✭ 110 (+233.33%)
Mutual labels:  point-cloud, segmentation
Pointnet2
PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
Stars: ✭ 2,197 (+6557.58%)
Mutual labels:  point-cloud, segmentation

Point Cloud Segmentation

By Soumik Rakshit & Sayak Paul

build-failing

This repository provides a TF2 implementation of PointNet1 for segmenting point clouds. Our implementation is fully supported on TPUs allowing you to train models faster. Distributed training (single-device multi-worker) on GPUs is also supported and so is single-GPU training. For results and pre-trained models please see below.

To get an understanding of PointNet for segmentation, follow this blog post from keras.io: Point cloud segmentation with PointNet.

We use the ShapeNetCore dataset to train our models on individual categories. The dataset is available here. To train and test our code, you don't need to download the dataset beforehand, though.

Update November 16, 2021: We won the #TFCommunitySpolight award for this project.

Running using Docker

  • Build image using docker build -t point-cloud-image .

  • Run Jupyter Server using docker run -it --gpus all -p 8888:8888 -v $(pwd):/usr/src/point-cloud-segmentation point-cloud-image

Create TFRecords for ShapeNetCore Shape Segmentation

This part is only required if you would like to train models using TPUs. Be advised that training using TPUs is usually recommended when you have sufficient amount of data. Therefore, you should only use TPUs for the following object categories:

  • Airplane
  • Car
  • Chair
  • Table

As such we only provide results and models for these categories.

Usage: create_tfrecords.py [OPTIONS]

Example:
  python create_tfrecords.py --experiment_configs configs/shapenetcore.py

Train for ShapeNetCore Shape Segmentation

Usage: train_shapenet_core.py [OPTIONS]

Options:
  --experiment_configs    Experiment configs (configs/shapenetcore.py)
  --wandb_project_name    Project Name (DEFAULT: pointnet_shapenet_core)
  --use_wandb             Use WandB flag (DEFAULT: True)

Example:
  python train_shapenet_core.py --experiment_configs configs/shapenetcore.py

In case you want to change the configuration-related parameters, either edit them directly in configs/shapenetcore.py or add a new configuration and specify the name of the configuration in the command line.

Notes on the Training Setup

  • The batch_size in the configuration denotes local batch size. If you are using single-host multi-worker distributed training, the batch_size denoted here will be multiplied by the number of workers you have.
  • Using a Google Cloud Storage (GCS) based artifact_location is not a requirement if you are using GPU(s). But for TPUs, it's a requirement.

Notebooks

We also provide notebooks for training and testing the models:

  • notebooks/train_gpu.ipynb lets you train using GPU(s). If you are using multiple GPUs in the single machine it will be detected automatically. If your machine supports mixed-precision, then also it will be detected automatically.
  • notebooks/train_tpu.ipynb lets you train using TPUs. For this using TFRecords for handling data IS a requirement.
  • notebooks/run_inference.ipynb lets you test the models on GPU(s) on individual object categories.
  • notebooks/keras-tuner.ipynb lets you tune the hyperparameters of the training routine namely number of epochs, initial learning rate (LR), and LR decaying epochs. We use Keras Tuner for this.

We track our training results using Weights and Biases (WandB). For the hyperparameter tuning part, we combine TensorBoard and WandB.

Segmentation Results and Models

Object Category

Training Result

Final Model

Airplane WandB Run SavedModel Link
Car WandB Run SavedModel Link
Chair WandB Run SavedModel Link
Table WandB Run SavedModel Link

Below are some segmentation results:

Airplane

Car

Chair

Table

References

[1] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation; Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas; CVPR 2017; https://arxiv.org/abs/1612.00593.

Acknowledgements

We are thankful to the GDE program for providing us GCP credits.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].