{"id":15700320,"url":"https://github.com/soumik12345/point-cloud-segmentation","last_synced_at":"2025-05-07T22:46:17.182Z","repository":{"id":40688163,"uuid":"412101458","full_name":"soumik12345/point-cloud-segmentation","owner":"soumik12345","description":"TF2 implementation of PointNet for segmenting point clouds","archived":false,"fork":false,"pushed_at":"2021-11-16T01:20:23.000Z","size":5017,"stargazers_count":39,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-07T22:46:11.314Z","etag":null,"topics":["deep-learning","keras","point-cloud","segmentation","tensorflow2","tpu"],"latest_commit_sha":null,"homepage":"https://keras.io/examples/vision/pointnet_segmentation/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soumik12345.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-30T14:38:33.000Z","updated_at":"2025-03-31T09:19:42.000Z","dependencies_parsed_at":"2022-09-05T20:40:12.220Z","dependency_job_id":null,"html_url":"https://github.com/soumik12345/point-cloud-segmentation","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumik12345%2Fpoint-cloud-segmentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumik12345%2Fpoint-cloud-segmentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumik12345%2Fpoint-cloud-segmentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soumik12345%2Fpoint-cloud-segmentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soumik12345","download_url":"https://codeload.github.com/soumik12345/point-cloud-segmentation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252967982,"owners_count":21833247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","keras","point-cloud","segmentation","tensorflow2","tpu"],"created_at":"2024-10-03T19:47:46.106Z","updated_at":"2025-05-07T22:46:17.158Z","avatar_url":"https://github.com/soumik12345.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Point Cloud Segmentation\n\n_**By [Soumik Rakshit](https://github.com/soumik12345) \u0026 [Sayak Paul](https://github.com/sayakpaul)**_\n\n\u003cimg src=\"https://github.com/soumik12345/point-cloud-segmentation/workflows/tests/badge.svg\" alt=\"build-failing\"\u003e\n\nThis repository provides a TF2 implementation of PointNet\u003csup\u003e1\u003c/sup\u003e for segmenting point clouds. Our implementation is fully supported on\nTPUs allowing you to train models faster. Distributed training (single-device multi-worker) on GPUs is also supported and so is single-GPU\ntraining. For results and pre-trained models please see below.\n\nTo get an understanding of PointNet for segmentation, follow this blog post from keras.io: [Point cloud segmentation with PointNet](https://keras.io/examples/vision/pointnet_segmentation/).\n\nWe use the **ShapeNetCore dataset** to train our models on individual categories. The dataset is available [here](https://shapenet.org/). To train and test \nour code, you don't need to download the dataset beforehand, though.\n\n**Update November 16, 2021**: We won the [#TFCommunitySpolight award](https://twitter.com/TensorFlow/status/1460321709488152579) for this project.\n\n## Running using Docker\n\n- Build image using `docker build -t point-cloud-image .`\n\n- Run Jupyter Server using `docker run -it --gpus all -p 8888:8888 -v $(pwd):/usr/src/point-cloud-segmentation point-cloud-image`\n\n\n## Create TFRecords for ShapeNetCore Shape Segmentation\n\nThis part is only required if you would like to train models using TPUs. Be advised that\ntraining using TPUs is usually recommended when you have sufficient amount of data. Therefore, \nyou should only use TPUs for the following object categories:\n\n* `Airplane`\n* `Car`\n* `Chair`\n* `Table`\n\nAs such we only provide results and models for these categories. \n\n```\nUsage: create_tfrecords.py [OPTIONS]\n\nExample:\n  python create_tfrecords.py --experiment_configs configs/shapenetcore.py\n```\n\n\n## Train for ShapeNetCore Shape Segmentation\n\n```\nUsage: train_shapenet_core.py [OPTIONS]\n\nOptions:\n  --experiment_configs    Experiment configs (configs/shapenetcore.py)\n  --wandb_project_name    Project Name (DEFAULT: pointnet_shapenet_core)\n  --use_wandb             Use WandB flag (DEFAULT: True)\n\nExample:\n  python train_shapenet_core.py --experiment_configs configs/shapenetcore.py\n```\n\nIn case you want to change the configuration-related parameters, either edit them directly in\n`configs/shapenetcore.py` or add a new configuration and specify the name of the configuration\nin the command line.\n\n## Notes on the Training Setup\n\n* The `batch_size` in the configuration denotes local batch size. If you are using single-host multi-worker distributed training,\nthe `batch_size` denoted here will be multiplied by the number of workers you have. \n* Using a Google Cloud Storage (GCS) based `artifact_location` is not a requirement if you are using GPU(s). But for \nTPUs, it's a requirement. \n\n## Notebooks\n\nWe also provide notebooks for training and testing the models:\n\n* `notebooks/train_gpu.ipynb` lets you train using GPU(s). If you are using multiple GPUs in the single machine it will\nbe detected automatically. If your machine supports mixed-precision, then also it will be detected automatically.\n* `notebooks/train_tpu.ipynb` lets you train using TPUs. For this using TFRecords for handling data IS a requirement.\n* `notebooks/run_inference.ipynb` lets you test the models on GPU(s) on individual object categories.\n* `notebooks/keras-tuner.ipynb` lets you tune the hyperparameters of the training routine namely \n  number of epochs, initial learning rate (LR), and LR decaying epochs. We use Keras Tuner for\n  this.\n\nWe track our training results using [Weights and Biases](https://wandb.ai/) (WandB). For the hyperparameter\ntuning part, we combine TensorBoard and WandB.\n\n## Segmentation Results and Models\n\n| \u003ch3\u003eObject Category\u003c/h3\u003e | \u003ch3\u003eTraining Result\u003c/h3\u003e | \u003ch3\u003eFinal Model\u003c/h3\u003e |\n|:---:|:---:|:---:|\n| Airplane | [WandB Run](https://wandb.ai/pointnet/pointnet_shapenet_core/runs/n4bm5z0h) | [SavedModel Link](https://github.com/soumik12345/point-cloud-segmentation/releases/download/v0.3/airplane.gz) |\n| Car | [WandB Run](https://wandb.ai/pointnet/pointnet_shapenet_core/runs/3vbeyj5w) | [SavedModel Link](https://github.com/soumik12345/point-cloud-segmentation/releases/download/v0.3/car.gz) |\n| Chair | [WandB Run](https://wandb.ai/pointnet/pointnet_shapenet_core/runs/1869fpu3) | [SavedModel Link](https://github.com/soumik12345/point-cloud-segmentation/releases/download/v0.3/chair.tar.gz) |\n| Table | [WandB Run](https://wandb.ai/pointnet/pointnet_shapenet_core/runs/3sqgxjkb) | [SavedModel Link](https://github.com/soumik12345/point-cloud-segmentation/releases/download/v0.3/table.tar.gz) |\n\nBelow are some segmentation results:\n\n### Airplane\n\n![](./assets/Airplane/airplane.gif)\n\n### Car\n\n![](./assets/Car/car.gif)\n\n### Chair\n\n![](./assets/Chair/chair.gif)\n\n### Table\n\n![](./assets/Table/table.gif)\n\n## References\n\n[1] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation; Charles R. Qi, Hao Su, Kaichun Mo, Leonidas J. Guibas;\nCVPR 2017; https://arxiv.org/abs/1612.00593.\n\n## Acknowledgements\n\nWe are thankful to the [GDE program](https://developers.google.com/programs/experts/) for providing us GCP credits.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoumik12345%2Fpoint-cloud-segmentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoumik12345%2Fpoint-cloud-segmentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoumik12345%2Fpoint-cloud-segmentation/lists"}