{"id":26187573,"url":"https://github.com/gmum/3d-point-clouds-autocomplete","last_synced_at":"2025-08-31T09:37:17.189Z","repository":{"id":75662706,"uuid":"309166663","full_name":"gmum/3d-point-clouds-autocomplete","owner":"gmum","description":"The official implementation of the \"HyperPocket: Generative Point Cloud Completion\" paper in PyTorch","archived":false,"fork":false,"pushed_at":"2021-07-23T08:04:10.000Z","size":5414,"stargazers_count":31,"open_issues_count":1,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-15T00:48:20.203Z","etag":null,"topics":["3d-point-clouds","computer-vision","deep-learning","hypernetworks","pytorch"],"latest_commit_sha":null,"homepage":"","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/gmum.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-01T18:59:50.000Z","updated_at":"2025-03-04T10:39:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"6e4b0c02-bbdc-46ae-9528-027eab37b8eb","html_url":"https://github.com/gmum/3d-point-clouds-autocomplete","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gmum/3d-point-clouds-autocomplete","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-autocomplete","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-autocomplete/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-autocomplete/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-autocomplete/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gmum","download_url":"https://codeload.github.com/gmum/3d-point-clouds-autocomplete/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-autocomplete/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272965431,"owners_count":25023066,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["3d-point-clouds","computer-vision","deep-learning","hypernetworks","pytorch"],"created_at":"2025-03-11T23:50:22.106Z","updated_at":"2025-08-31T09:37:17.043Z","avatar_url":"https://github.com/gmum.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HyperPocket: Generative Point Cloud Completion\nThis repository contains the source code for the paper:\n\n[HyperPocket: Generative Point Cloud Completion](https://arxiv.org/abs/2102.05973)\n\n![Overview](images/hyperpocket_arch.png)\n\n#### Abstract\nScanning real-life scenes with modern registration devices typically give incomplete point cloud representations, \nmostly due to the limitations of the scanning process and 3D occlusions. Therefore, completing such partial \nrepresentations remains a fundamental challenge of many computer vision applications. \nMost of the existing approaches aim to solve this problem by learning to reconstruct individual 3D objects in a \nsynthetic setup of an uncluttered environment, which is far from a real-life scenario. In this work, we reformulate \nthe problem of point cloud completion into an object hallucination task. \nThus, we introduce a novel autoencoder-based architecture called HyperPocket that disentangles latent representations \nand, as a result, enables the generation of multiple variants of the completed 3D point clouds. We split point cloud \nprocessing into two disjoint data streams and leverage a hypernetwork paradigm to fill the spaces, dubbed pockets, \nthat are left by the missing object parts. As a result, the generated point clouds are not only smooth but also \nplausible and geometrically consistent with the scene. Our method offers competitive performances to the other \nstate-of-the-art models, and it enables a plethora of novel applications.\n\n\n## Requirements\n- Python 3.7+\n- dependencies stored in `requirements.txt`.\n- NVIDIA GPU + CUDA\n\n## Installation\nWe highly recommend using [Conda](https://docs.conda.io/en/latest) or \n[Miniconda](https://docs.conda.io/en/latest/miniconda.html).\n\nCreate and activate your conda env:\n- run `conda create --name \u003cyour env name\u003e python=3.7`\n- run `conda activate \u003cyour env name\u003e`\n- go to the project dir\n\nInstall requirements:\n- run `conda install pytorch torchvision torchaudio cudatoolkit=\u003cyour CUDA version (e.g., 10.2)\u003e -c pytorch`\n- run `pip install -r requirements.txt`\n- set your CUDA_HOME by the command: `export CUDA_HOME=... # e.g., /var/lib/cuda-10.2/`\n- install CUDA extension by running `./build_losses.sh` \n\n\n## Usage\n**Add project root directory to PYTHONPATH**\n\n```export PYTHONPATH=$(project_path):$PYTHONPATH```\n\n**Download dataset**\n\nWe use four datasets in our paper.\n\n1. 3D-EPN\n     \n     Download it from the [link](https://ujchmura-my.sharepoint.com/:u:/g/personal/przemyslaw_spurek_uj_edu_pl/ESrI4SBeef5MrpxNz3PhUa4BdSw-CQazfPHAPvHDJUzVQw?e=r7w4dc) or generate by yourself:\n     1) Please download the partial scan point cloud data from [the website](http://kaldir.vc.in.tum.de/adai/CNNComplete/shapenet_dim32_sdf_pc.zip) \n     and extract it into the folder for storing the dataset (e.g., `${project_path}/data/dataset/3depn`). \n     2) For the complete point clouds data, please download it from [PKU disk](https://disk.pku.edu.cn:443/link/9A3E1AC9FBA4DEBD705F028650CBE8C7) \n     (provided by [MSC](https://github.com/ChrisWu1997/Multimodal-Shape-Completion)) and extract it into the same folder.\n     3) copy `splits/3depn/shapenet-official-split.csv` file to that folder\n     4) (if you haven't done it earlier) make a copy of the sample configs by executing \n        \n        `cp setting/config.json.sample setting/config.json`\n     5) specify your dataset preferences in `setting/config.json` file:\n        ```\n            [\"dataset\"][\"name\"] = \"3depn\" \n            [\"dataset\"][\"path\"] = \"\u003cpath to your dataset folder\u003e\"\n            [\"dataset\"][\"num_samples\"] = \u003chow many devisions per a point cloud you would get (in the paper we use 4)\u003e\n        ```\n     6) run `python3 util_scripts/generate_partial_dataset.py --config setting/config.json`\n\n2. PartNet\n    \n    1) Please download it from [the official website](https://www.shapenet.org/download/parts) \n    \n3. Completion3D\n    1) Please download it from [the official website](http://download.cs.stanford.edu/downloads/completion3d/dataset2019.zip)\n    2) Extract it into your folder for datasets (e.g., `${project_path}/data/dataset/completion`)\n    3) (if you haven't done it earlier) make a copy of the sample configs by executing \n        \n        `cp setting/config.json.sample setting/config.json`\n    4) specify your dataset preferences in `setting/config.json` file:\n        ```\n            [\"dataset\"][\"name\"] = \"completion\" \n            [\"dataset\"][\"path\"] = \"\u003cpath to your dataset folder\u003e\"\n        ```\n    \n4. MissingShapeNet\n   \n    Download it from the [link](https://ujchmura-my.sharepoint.com/:u:/g/personal/przemyslaw_spurek_uj_edu_pl/EfNG1CNZwDhDnCJlblwf7r0BvbIRcbhSw5XqR98wXmiWPg?e=fpao42) or generate by yourself:\n    1) (if you haven't done it earlier) make a copy of the sample configs by executing \n        \n        `cp setting/config.json.sample setting/config.json`\n    2) specify your dataset preferences in `setting/config.json` file:\n        ```\n            [\"dataset\"][\"name\"] = \"shapenet\" \n            [\"dataset\"][\"path\"] = \"\u003cpath to the folder for dataset\u003e\"\n            [\"dataset\"][\"num_samples\"] = \u003chow many devisions per a point cloud you would get (in the paper we use 4)\u003e\n            [\"dataset\"][\"is_rotated\"] = \u003cset true if you want to get random-rotated point clouds\u003e\n            [\"dataset\"][\"gen_test_set\"] = \u003cset true if you want to get a test set with point clouds divided into left and right parts\u003e\n        ```\n    3) run `python3 util_scripts/download_shapenet_2048.py --config setting/config.json`\n    4) run `python3 util_scripts/generate_partial_dataset.py --config setting/config.json`\n    5) copy `splits/shapenet/*.list` to the specified folder\n    \n**Training**\n    \nWe have prepared several settings for working with different datasets:\n```\n#train single class of 3depn dataset\nconfig_3depn_airplane.json.sample\nconfig_3depn_chair.json.sample\nconfig_3depn_table.json.sample\n    \n#train model for the Completion3D benchmark\nconfig_completion.json.sample\n\n#train MissingShapeNet\nconfig_missing_shapenet.json.sample\n```\n\n1) (if you haven't done it earlier) make a copy of the preferred config by executing \n    `cp setting/config_\u003cyour choice\u003e.json.sample setting/config_\u003cyour choice\u003e.json`\n\n2) specify your personal configs in `setting/config_\u003cyour choice\u003e.json`:\n    - change `[\"dataset\"][\"path\"]` and `[\"results_root\"]` fields \n    - select your GPU in the field `[\"setup\"][\"gpu_id\"]`\n    - select the batch_size for your device in `[\"training\"][\"dataloader\"]`\n    - also you may change Optimizer and LRScheduler in the appropriate fields\n    \n3) exec script\n    - run `python3 core/main.py --config settings/config.json`\n\n**Pre-trained Models**\nPre-trained models can be downloaded from [our Release page](https://github.com/gmum/3d-point-clouds-autocomplete/releases). \nTo use them:\n    \n1) Download the model weights zip file (naming convention is the same as for the configs above).\n2) Extract zip file to your results directory\n3) If you have not train models with sample configs you may set `[\"experiments][\"epoch\"]` to `\"latest\"` \n   else you need to specify the exac epoch (listed on the release page).\n    \n    \n**Experiments**\n\n1) In case you train the model by yourself, just change `[\"mode\"]` in the config file to `\"experiments\"`\notherwise need also to specify fields mentioned above.\n2) Indicate which experiments you want to run by changing bool fields \n`[\"experiments\"][\u003cexperiment name\u003e][\"execute\"]`\n\nExperiments list:\n- fixed\n- evaluate_generativity\n- compute_mmd_tmd_uhd (requires fixed experiment before)\n- merge_different_categories\n- same_model_different_slices\n- completion3d_submission (generates submission.zip file in your $(project_path) folder)\n\n\n## Extending\nIn case you want create your own experiments: \n1) write you experiment function in core/experiments\n2) add it to `experiment_functions_dict` in core/experiments\n3) include your special parameters into the config file `[\"experiments][\"\u003cyour func name\u003e\"]` (be sure to add a bool field \"execute\" there)  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmum%2F3d-point-clouds-autocomplete","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgmum%2F3d-point-clouds-autocomplete","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmum%2F3d-point-clouds-autocomplete/lists"}