{"id":20791365,"url":"https://github.com/hyperplane-lab/generative-3d-part-assembly","last_synced_at":"2025-05-05T21:21:26.557Z","repository":{"id":56777333,"uuid":"301576236","full_name":"hyperplane-lab/Generative-3D-Part-Assembly","owner":"hyperplane-lab","description":"Generative 3D Part Assembly via Dynamic Graph Learning, NeurIPS 2020","archived":false,"fork":false,"pushed_at":"2021-05-27T13:18:18.000Z","size":7229,"stargazers_count":167,"open_issues_count":6,"forks_count":11,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-03-30T23:51:08.746Z","etag":null,"topics":["3dvision","generative-model","graphics"],"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/hyperplane-lab.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}},"created_at":"2020-10-06T00:49:03.000Z","updated_at":"2025-03-25T01:59:35.000Z","dependencies_parsed_at":"2022-08-16T02:40:23.636Z","dependency_job_id":null,"html_url":"https://github.com/hyperplane-lab/Generative-3D-Part-Assembly","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/hyperplane-lab%2FGenerative-3D-Part-Assembly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperplane-lab%2FGenerative-3D-Part-Assembly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperplane-lab%2FGenerative-3D-Part-Assembly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperplane-lab%2FGenerative-3D-Part-Assembly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperplane-lab","download_url":"https://codeload.github.com/hyperplane-lab/Generative-3D-Part-Assembly/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252577116,"owners_count":21770734,"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":["3dvision","generative-model","graphics"],"created_at":"2024-11-17T15:44:16.693Z","updated_at":"2025-05-05T21:21:26.541Z","avatar_url":"https://github.com/hyperplane-lab.png","language":"Python","readme":"# Generative 3D Part Assembly via Dynamic Graph Learning\n\nThis is the implementation of NeurIPS 2020 paper \"Generative 3D Part Assembly via Dynamic Graph Learning\" created by \n\u003ca href=\"https://jialeihuang.github.io/\" target=\"_blank\"\u003eJialei Huang*\u003c/a\u003e, \u003ca href=\"https://championchess.github.io/\" target=\"_blank\"\u003eGuanqi Zhan*\u003c/a\u003e, \u003ca href=\"https://fqnchina.github.io/\" target=\"_blank\"\u003eQingnan Fan\u003c/a\u003e, \u003ca href=\"https://cs.stanford.edu/~kaichun/\" target=\"_blank\"\u003eKaichun Mo\u003c/a\u003e, \u003ca href=\"https://linsats.github.io/\" target=\"_blank\"\u003eLin Shao\u003c/a\u003e, \u003ca href=\"https://cfcs.pku.edu.cn/baoquan/\" target=\"_blank\"\u003eBaoquan Chen\u003c/a\u003e, \u003ca href=\"https://geometry.stanford.edu/member/guibas/index.html\" target=\"_blank\"\u003eLeonidas Guibas\u003c/a\u003e and \u003ca href=\"https://zsdonghao.github.io/\" target=\"_blank\"\u003eHao Dong\u003c/a\u003e.\n\n![image1](./images/image1.png)\n\nThe proposed dynamic graph learning framework. The iterative graph neural network backbone takes a set of part point clouds as inputs and conducts 5 iterations of graph message-passing for coarse-to-fine part assembly refinements. The graph dynamics is encoded into two folds, (a) reasoning the part relation (graph structure) from the part pose estimation, which in turn also evolves from the updated part relations, and (b) alternatively updating the node set by aggregating all the geometrically-equivalent parts (the red and purple nodes), e.g. two chair arms, into a single node (the yellow node) to perform graph learning on a sparse node set for even time steps, and unpooling these nodes to the dense node set for odd time steps. Note the semi-transparent nodes and edges are not included in graph learning of certain time steps.\n\n- [paper link](https://arxiv.org/pdf/2006.07793.pdf)\n- [project page](https://hyperplane-lab.github.io/Generative-3D-Part-Assembly/)\n\n\n## File Structure\n\nThis repository provides data and code as follows.\n\n\n```\n    data/                       # contains PartNet data\n        partnet_dataset/\t\t# you need this dataset only if you  want to remake the prepared data\n    prepare_data/\t\t\t\t# contains prepared data you need in our exps \n    \t\t\t\t\t\t\t# and codes to generate data\n    \tChair.test.npy\t\t\t# test data list for Chair (please download the .npy files using the link below)\n    \tChair.val.npy\t\t\t# val data list for Chair\n    \tChair.train.npy \t\t# train data list for Chair\n    \t...\n        prepare_shape.py\t\t\t\t    # prepared data\n    \tprepare_contact_points.py\t\t\t# prepared data for contact points\n    \t\n    exps/\n    \tutils/\t\t\t\t\t# something useful\n    \tdynamic_graph_learning/\t# our experiments code\n    \t\tlogs/\t\t\t\t# contains checkpoints and tensorboard file\n    \t\tmodels/\t\t\t\t# contains model file in our experiments\n    \t\tscripts/\t\t\t# scrpits to train or test\n    \t\tdata_dynamic.py\t\t# code to load data\n    \t\ttest_dynamic.py  \t# code to test\n    \t\ttrain_dynamic.py  \t# code to train\n    \t\tutils.py\n    environment.yaml\t\t\t# environments file for conda\n    \t\t\n\n```\n\nThis code has been tested on Ubuntu 16.04 with Cuda 10.0.130, GCC 7.5.0, Python 3.7.6 and PyTorch 1.1.0. \n\nDownload the [pre-processed data](http://download.cs.stanford.edu/orion/genpartass/prepare_data.zip) for the .npy data files in file prepare_data/\n\n\n## Dependencies\n\nPlease run\n    \n\n        conda env create -f environment.yaml\n        . activate PartAssembly\n        cd exps/utils/cd\n        python setup.py build\n\nto install the dependencies.\n\n## Quick Start\n\nDownload [pretrained models](http://download.cs.stanford.edu/orion/genpartass/checkpoints.zip) and unzip under the root directory.\n\n### Train the model\n\nSimply run\n\n        cd exps/dynamic_graph_learning/scripts/\n        ./train_dynamic.sh\n        \n### Test the model\n\nmodify the path of the model in the test_dynamic.sh file\n\nrun\n\n        cd exps/dynamic_graph_learning/scripts/\n        ./test_dynamic.sh\n\n## Questions\n\nPlease post issues for questions and more helps on this Github repo page. We encourage using Github issues instead of sending us emails since your questions may benefit others.\n\n## Maintainers\n@Championchess \n@JialeiHuang\n\n\n## Citation\n\n    @InProceedings{HuangZhan2020PartAssembly,\n        author = {Huang, Jialei and Zhan, Guanqi and Fan, Qingnan and Mo, Kaichun and Shao, Lin and Chen, Baoquan and Guibas, Leonidas and Dong, Hao},\n        title = {Generative 3D Part Assembly via Dynamic Graph Learning},\n        booktitle = {The IEEE Conference on Neural Information Processing Systems (NeurIPS)},\n        year = {2020}\n    }\n\n## License\n\nMIT License\n\n## Todos\n\nPlease request in Github Issue for more code to release.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperplane-lab%2Fgenerative-3d-part-assembly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperplane-lab%2Fgenerative-3d-part-assembly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperplane-lab%2Fgenerative-3d-part-assembly/lists"}