{"id":18792524,"url":"https://github.com/prbonn/3duis","last_synced_at":"2025-10-12T20:05:02.149Z","repository":{"id":38689362,"uuid":"506669623","full_name":"PRBonn/3DUIS","owner":"PRBonn","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-10T12:07:18.000Z","size":1768,"stargazers_count":87,"open_issues_count":1,"forks_count":11,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-03-31T14:11:19.992Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/PRBonn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-23T14:17:50.000Z","updated_at":"2025-03-23T15:11:24.000Z","dependencies_parsed_at":"2025-03-31T14:11:26.339Z","dependency_job_id":"1bac2ff2-e42e-43ef-929f-90d09f6388e9","html_url":"https://github.com/PRBonn/3DUIS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2F3DUIS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2F3DUIS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2F3DUIS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2F3DUIS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PRBonn","download_url":"https://codeload.github.com/PRBonn/3DUIS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675597,"owners_count":20977376,"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":[],"created_at":"2024-11-07T21:20:21.260Z","updated_at":"2025-10-12T20:04:57.108Z","avatar_url":"https://github.com/PRBonn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 3DUIS: 3D Unsupervised Instance Segmentation\n\nThis repo contains the code for our [paper](https://www.ipb.uni-bonn.de/pdfs/nunes2022ral-iros.pdf): Unsupervised Class-Agnostic Instance\nSegmentation of 3D LiDAR Data for Autonomous Vehicles.\n\nOur approach uses a self-supervised pretrained network to extract point-wise features and use it to build a graph representation of the point cloud,\nmapping the relation between each point and it's neighbors. Then, we apply GraphCut to divide each instance from the background, achieving class-agnostic\ninstance segmentation in an unsupervised manner.\n\nAdditionally, we created a new benchmark for Open-World LiDAR instance segmentation based on SemanticKITTI [here](https://bit.ly/39VFTRD).\n\n![Competition](pics/codalab.png)\n\n![Instance Segmentation](pics/qualitative.png)\n\n### Table of Contents\n\n1. [Introduction of the paper and benchmark](#(3DUIS)-3D-Unsupervised-Instance-Segmentation)\n2. [Publication](#Publication)\n3. [Dependencies](#Dependencies)\n4. [Data preparation](#Data-preparation)\n5. [Pretrained weights](#Pretrained-weights)\n6. [Running the code](#Running-the-code)\n7. [License](#License)\n\n## Publication\n\nIf you use our code and benchmark, please cite the correspondig papers:\n\n```\n@article{nunes2022ral,\n    author = {L. Nunes and R. Marcuzzi and X. Chen and J. Behley and C. Stachniss},\n    title = {{SegContrast: 3D Point Cloud Feature Representation Learning through Self-supervised Segment Discrimination}},\n    journal = {{IEEE Robotics and Automation Letters (RA-L)}},\n    year = 2022,\n    doi = {10.1109/LRA.2022.3142440},\n    issn = {2377-3766},\n    volume = {7},\n    number = {2},\n    pages = {2116-2123},\n    url = {http://www.ipb.uni-bonn.de/pdfs/nunes2022ral-icra.pdf},\n}\n```\n\n```\n@article{nunes2022ral-3duis,\n  author = {Lucas Nunes and Xieyuanli Chen and Rodrigo Marcuzzi and Aljosa Osep and Laura Leal-Taixé and Cyrill Stachniss and Jens Behley},\n  title = {{Unsupervised Class-Agnostic Instance Segmentation of 3D LiDAR Data for Autonomous Vehicles}},\n  journal = {IEEE Robotics and Automation Letters (RA-L)},\n  year = 2022,\n  doi = {10.1109/LRA.2022.3187872}},\n  issn = {2377-3766},\n  volume = {7},\n  number = {4},\n  pages = {8713-8720},\n  url = {https://www.ipb.uni-bonn.de/pdfs/nunes2022ral-iros.pdf},\n}\n```\n\n## Dependencies\n\nInstalling pre-requisites:\n\n`sudo apt install build-essential python3-dev libopenblas-dev`\n\n`pip3 install -r requirements.txt`\n\nNext install MinkowskiEngine:\n\n`pip3 install -U git+https://github.com/NVIDIA/MinkowskiEngine --install-option=\"--blas=openblas\" -v --no-deps`\n\n## Data preparation\n\nDownload [SemanticKITTI](http://www.semantic-kitti.org/dataset.html#download) inside the directory ```./Datasets/SemanticKITTI/datasets```. The directory structure should be:\n\n```\n./\n└── Datasets/\n    └── SemanticKITTI\n        └── dataset\n          └── sequences\n            ├── 00/           \n            │   ├── velodyne/\t\n            |   |\t├── 000000.bin\n            |   |\t├── 000001.bin\n            |   |\t└── ...\n            │   └── labels/ \n            |       ├── 000000.label\n            |       ├── 000001.label\n            |       └── ...\n            ├── 08/ # for validation\n            ├── 11/ # 11-21 for testing\n            └── 21/\n                └── ...\n```\n\nFor the unsupervised ground segmentation, you need to run [patchwork](https://github.com/LimHyungTae/patchwork) over the SemanticKITTI dataset and put the generated files over:\n```\n./\n└── Datasets/\n    └── SemanticKITTI\n        └── assets\n            └── patchwork   \n                ├── 08\n                    ├── 000000.label\n                    ├── 000001.label\n                    └── ...\n```\n\nFor the validation set (sequence 08) you can download the patchwork ground segmentation [here](https://www.ipb.uni-bonn.de/html/projects/3duis/08_patchwork.zip) and extract as described above.\n\n## Pretrained weights\n\nYou can download [here](https://www.ipb.uni-bonn.de/html/projects/segcontrast/segcontrast_pretrain.zip) the network weights pretrained with [SegContrast](https://github.com/PRBonn/segcontrast) , and it should be extracted inside `./checkpoints`.\n\n## Running the code\n\nTo extract the instances run:\n\n`python3 3duis.py`\n\n(In the repo we have one example point cloud that you can run to see the results and check if the setup is working)\n\nThe predicted instance segmentation should be saved in `outputs/3DUIS/`\n\nTo visualize it run:\n\n`python3 vis_inst.py`\n\n## License\nThis project is free software made available under the MIT License. For details see the LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2F3duis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprbonn%2F3duis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2F3duis/lists"}