{"id":13443677,"url":"https://github.com/alitabet/morton-net","last_synced_at":"2025-03-20T17:31:05.445Z","repository":{"id":90823425,"uuid":"187993108","full_name":"alitabet/morton-net","owner":"alitabet","description":"PyTorch implementation to train MortonNet and use it to compute point features. MortonNet is trained in a self-supervised fashion, and the features can be used for general tasks like part or semantic segmentation of point clouds.","archived":false,"fork":false,"pushed_at":"2019-05-29T13:01:37.000Z","size":465,"stargazers_count":20,"open_issues_count":2,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-28T07:39:41.584Z","etag":null,"topics":["computer-vision","deep-learning","mortonnet","point-cloud","pytorch","s3dis","segmentation","self-supervised-learning","shapenet","vkitti"],"latest_commit_sha":null,"homepage":"https://www.alithabet.com/mortonnet","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alitabet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-05-22T08:10:59.000Z","updated_at":"2024-02-20T11:54:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"6fc79adf-233e-4e38-a9c7-3b89fdf497c7","html_url":"https://github.com/alitabet/morton-net","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/alitabet%2Fmorton-net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alitabet%2Fmorton-net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alitabet%2Fmorton-net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alitabet%2Fmorton-net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alitabet","download_url":"https://codeload.github.com/alitabet/morton-net/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244660272,"owners_count":20489310,"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":["computer-vision","deep-learning","mortonnet","point-cloud","pytorch","s3dis","segmentation","self-supervised-learning","shapenet","vkitti"],"created_at":"2024-07-31T03:02:06.891Z","updated_at":"2025-03-20T17:31:00.436Z","avatar_url":"https://github.com/alitabet.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# MortonNet: Self-Supervised Learning of Local Features in 3D Point Clouds\n\n![Morton order](doc/pull.png)\n\nMortonNet is a self-supervised approach for point cloud processing. \nMortonNet learns local geometric features for each point. Given a\npoint cloud, our approach creates sequences for each point. These\nsequences are based on the popular Morton order. With a sequence of\n`N` points, MortonNet uses the first `N - 1` points and learns to\npredict the last point. We show how to use MortonNet with the\n[S3DIS Dataset](http://buildingparser.stanford.edu/dataset.html).\n\n### Data\nWe download and prepare the data using the tools provided by \n[Engelmann et. al.](https://www.vision.rwth-aachen.de/media/papers/PID4967025.pdf)\navailable [here](https://github.com/VisualComputingInstitute/3d-semantic-segmentation).\nTo download the dataset fill in this [form](https://docs.google.com/forms/d/e/1FAIpQLScDimvNMCGhy_rmBA2gHfDu3naktRm6A8BPwAWWDv-Uhm6Shw/viewform?c=0\u0026w=1).\nNext we process the data and convert to npy files for processing. This code is from\n[Engelmann et. al.](https://github.com/VisualComputingInstitute/3d-semantic-segmentation):\n\n```commandline\npython prepare_s3dis.py --input_dir path/to/dataset --output_dir path/to/output\n```\n\n### Installation\n\nAll the required packages are in `environment.yml`. If you use conda,\nyou can directly run:\n\n```commandline\nconda env create -f environment.yml\n```\n\nIf you prefer to use `pip` or any other alternative, you can create your\nown requirements file using the packages and versions provided. This code \nwas tested with Python 3.6 in Ubuntu 16.04, running CUDA 9.0 and cuDNN 7.4.1. All the package versions are \navailable in the environment file. \n\n### Computing Sequences\n\nBefore training MortonNet, you have to compute the sequences to\nfeed in the self-supervised training scheme. To create sequences,\nrun the following:\n\n```commandline\npython tools/create_sequences.py --root_dir path/to/dataset --out_dir path/to/save.dir --phase train/valid/test\n```\n\nNote that the `path/to/dataset` here corresponds to the path with the npy files. \nBy default this will compute sequences for all the available files. You\ncan specify a file id using the argument `--data_idx`. For more information\nabout available commands run the `--help` or `-h` options.\n\n### Training MortonNet\n\nOnce the sequences are precomputed, you can train MortonNot with:\n\n```commandline\npython train.py --root_dir path/to/sequences --model_dir path/to/checkpoint/save\n```\n\nThere are different ways to configure MortonNet parameters. Possible \nconfigurations are in `tools/config.py`. If you create your own config,\nyou can load it using argument `--config_type`. You can also specify \nother parameters like using multi GPUs, batch size, and others. For a\nfull list run the `--help` or `-h` options.\n\n### Computing features\n\nYou can use the trained MortonNet to compute features for any point\ncloud dataset. The features of every sequence come from the last hidden\nstate of the RNN. Since every point gets 5 sequences during sequence\ncomputation, we can merge these features in different ways. We output\nall 5 features for each point, which can later be concatenated or pooled.\nTo compute features run:\n\n```commandline\npython compute_features.py --root_dir path/to/sequences --best_path path/to/mortonnet/model --out_dir path/to/save/features\n```\n\n### Citation\n\nIf you find our work helpful, please cite our paper.\n\n```\n@misc{thabet2019mortonnet,\n    title={MortonNet: Self-Supervised Learning of Local Features in 3D Point Clouds},\n    author={Ali Thabet and Humam Alwassel and Bernard Ghanem},\n    year={2019},\n    eprint={1904.00230},\n    archivePrefix={arXiv},\n    primaryClass={cs.CV}\n}\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falitabet%2Fmorton-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falitabet%2Fmorton-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falitabet%2Fmorton-net/lists"}