{"id":26187560,"url":"https://github.com/gmum/3d-point-clouds-hypercloud","last_synced_at":"2026-03-07T06:32:55.134Z","repository":{"id":40964697,"uuid":"255989390","full_name":"gmum/3d-point-clouds-HyperCloud","owner":"gmum","description":"The official implementation of the \"Hypernetwork approach to generating point clouds\" paper","archived":false,"fork":false,"pushed_at":"2023-12-17T17:45:35.000Z","size":697,"stargazers_count":26,"open_issues_count":2,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-06-16T10:59:53.844Z","etag":null,"topics":["3d-point-clouds","hypernetworks"],"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-04-15T17:27:32.000Z","updated_at":"2025-03-27T09:08:19.000Z","dependencies_parsed_at":"2023-12-17T18:42:53.174Z","dependency_job_id":null,"html_url":"https://github.com/gmum/3d-point-clouds-HyperCloud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gmum/3d-point-clouds-HyperCloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-HyperCloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-HyperCloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-HyperCloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-HyperCloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gmum","download_url":"https://codeload.github.com/gmum/3d-point-clouds-HyperCloud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gmum%2F3d-point-clouds-HyperCloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30209090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T05:23:27.321Z","status":"ssl_error","status_checked_at":"2026-03-07T05:00:17.256Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","hypernetworks"],"created_at":"2025-03-11T23:50:17.310Z","updated_at":"2026-03-07T06:32:55.116Z","avatar_url":"https://github.com/gmum.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autoencoders with Hyper and Target Networks for Compact Representations of 3D Point Clouds\r\n\r\nAuthors: Przemysław Spurek, Sebastian Winczowski, Jacek Tabor, Maciej Zamorski, Maciej Zįeba, Tomasz Trzcínski\r\n\r\n![Hyper Cloud](docs/hyper_cloud.png)\r\n\r\n| arXiv |\r\n| :---- |\r\n| [Hypernetwork approach to generating point clouds (abs)](https://arxiv.org/abs/2003.00802) |\r\n| [Hypernetwork approach to generating point clouds (pdf)](https://arxiv.org/pdf/2003.00802.pdf) |\r\n\r\n| ICML 2020 |\r\n| :--- |\r\n| [Hypernetwork approach to generating point clouds (abs)](http://proceedings.mlr.press/v119/spurek20a.html) |\r\n| [Hypernetwork approach to generating point clouds (pdf)](http://proceedings.mlr.press/v119/spurek20a/spurek20a.pdf) |\r\n\r\n\r\n#### Abstract\r\nIn this work, we propose a novel method for generating 3D point clouds that leverage properties of hyper networks. \r\nContrary to the existing methods that learn only the representation of a 3D object,our approach simultaneously finds a \r\nrepresentation of the object and its 3D surface. The main idea of our HyperCloud method is to build a hyper network that\r\nreturns weights of a particular neural network (target network) trained to map points from a uniform unit ball \r\ndistribution into a 3D shape. As a consequence, a particular 3D shape can be generated using point-by-point sampling \r\nfrom the assumed prior distribution and transform-ing sampled points with the target network. Since the hyper network is\r\nbased on an auto-encoder architecture  trained  to  reconstruct  realistic  3D shapes, the target network weights can \r\nbe considered a parametrization of the surface of a 3D shape, and not a standard representation of point cloud usually \r\nreturned by competitive approaches.The proposed architecture allows finding mesh-based representation of 3D objects in a\r\n generative manner while providing point clouds en pair in quality with the state-of-the-art methods.\r\n\r\n## Requirements\r\n- dependencies stored in `requirements.txt`.\r\n- Python 3.6+\r\n- cuda\r\n\r\n## Installation\r\nIf you are using `Conda`:\r\n- run `./install_requirements.sh` \r\n\r\notherwise:\r\n- install `cudatoolkit` and run `pip install -r requirements.txt`\r\n\r\nThen execute:\r\n```\r\nexport CUDA_HOME=... # e.g. /var/lib/cuda-10.0/\r\n./build_losses.sh\r\n```\r\n\r\n### Configuration (settings/hyperparams.json, settings/experiments.json):\r\n  - *arch* -\u003e aae | vae\r\n  - *target_network_input:normalization:type* -\u003e progressive\r\n  - *target_network_input:normalization:epoch* -\u003e epoch for which the progressive normalization, of the points from uniform distribution, ends\r\n  - *reconstruction_loss* -\u003e chamfer | earth_mover\r\n  - *dataset* -\u003e shapenet\r\n\r\n\r\n#### Frequency of saving training data (settings/hyperparams.json)\r\n```\r\n\"save_weights_frequency\": int (\u003e 0) -\u003e save model's weights every x epochs\r\n\"save_samples_frequency\": int (\u003e 0) -\u003e save intermediate reconstructions every x epochs\r\n```\r\n\r\n\r\n## Target Network input\r\n![uniform_input](docs/tni_uniform.png)\r\n#### Uniform distribution:\r\n3D points are sampled from uniform distribution. \r\n\r\n###### Normalization\r\nWhen normalization is enabled, points are normalized progressively \r\nfrom first epoch to `target_network_input:normalization:epoch` epoch specified in the configuration. \r\n\r\nAs a result, for epochs \u003e= `target_network_input:normalization:epoch`, target network input is sampled from a uniform unit 3D ball \r\n\r\nExemplary config:\r\n```\r\n\"target_network_input\": {\r\n    \"constant\": false,\r\n    \"normalization\": {\r\n        \"enable\": true,\r\n        \"type\": \"progressive\",\r\n        \"epoch\": 100\r\n    }\r\n}\r\nFor epochs: [1, 100] target network input is normalized progressively\r\nFor epochs: [100, inf] target network input is sampled from a uniform unit 3D ball\r\n``` \r\n\r\n\r\n## Usage\r\n**Add project root directory to PYTHONPATH**\r\n\r\n```export PYTHONPATH=project_path:$PYTHONPATH```\r\n\r\n### Training\r\n`python experiments/train_[aae|vae].py --config settings/hyperparams.json`\r\n\r\nResults will be saved in the directory: \r\n`${results_root}/[aae|vae]/training/uniform*/${dataset}/${classes}`\r\n\r\n\r\n### Experiments\r\n`python experiments/experiments.py --config settings/experiments.json`\r\n\r\nResults will be saved in the directory: \r\n`${results_root}/[aae|vae]/experiments/uniform*/${dataset}/${classes}`\r\n\r\nModel weights are loaded from path:\r\n  - ${weights_path} if specified\r\n  - otherwise: ${results_root}/${arch}/training/.../weights (make sure that `target_network_input` and `classes` are the\r\n   same in the `hyperparams.json`/`experiments.json`)\r\n   \r\n###### Sphere distribution:\r\n![tni_triangulation](docs/tni_triangulation.png)\r\n\r\nThe following experiments provide input of the target network as samples from a triangulation on a unit 3D sphere: \r\n- `sphere_triangles` \r\n- `sphere_triangles_interpolation` \r\n\r\n3D points are sampled uniformly from the triangulation on a unit 3D sphere.\r\n\r\nAvailable methods: `hybrid | hybrid2 | hybrid3 | midpoint | midpoint2 | centroid | edge`\r\n\r\n\r\n### Compute metrics\r\n`python experiments/compute_metrics.py --config settings/experiments.json`\r\n\r\nModel weights are loaded from path:\r\n  - ${weights_path} if specified\r\n  - otherwise: ${results_root}/${arch}/training/.../weights (make sure that `target_network_input` and `classes` are the\r\n   same in the `hyperparams.json`/`experiments.json`)\r\n  \r\n### Shapenet dataset classes\r\nClasses can be specified in the hyperparams/experiments file in the **classes** key\r\n```\r\nairplane,  bag,        basket,     bathtub,   bed,        bench, \r\nbicycle,   birdhouse,  bookshelf,  bottle,    bowl,       bus,      \r\ncabinet,   can,        camera,     cap,       car,        chair,    \r\nclock,     dishwasher, monitor,    table,     telephone,  tin_can,  \r\ntower,     train,      keyboard,   earphone,  faucet,     file,     \r\nguitar,    helmet,     jar,        knife,     lamp,       laptop,   \r\nspeaker,   mailbox,    microphone, microwave, motorcycle, mug,      \r\npiano,     pillow,     pistol,     pot,       printer,    remote_control,      \r\nrifle,     rocket,     skateboard, sofa,      stove,      vessel,   \r\nwasher,    boat,       cellphone\r\n```\r\n### License\r\nThis implementation is licensed under the MIT License\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmum%2F3d-point-clouds-hypercloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgmum%2F3d-point-clouds-hypercloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgmum%2F3d-point-clouds-hypercloud/lists"}