{"id":18427680,"url":"https://github.com/eldar/differentiable-point-clouds","last_synced_at":"2025-07-23T20:03:35.771Z","repository":{"id":66937325,"uuid":"159208771","full_name":"eldar/differentiable-point-clouds","owner":"eldar","description":"The reference implementation of \"Unsupervised Learning of Shape and Pose with Differentiable Point Clouds\"","archived":false,"fork":false,"pushed_at":"2019-01-07T10:34:13.000Z","size":7584,"stargazers_count":157,"open_issues_count":8,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-07T16:42:49.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/eldar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-26T17:39:40.000Z","updated_at":"2025-03-12T15:01:32.000Z","dependencies_parsed_at":"2023-05-24T18:15:48.679Z","dependency_job_id":null,"html_url":"https://github.com/eldar/differentiable-point-clouds","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eldar/differentiable-point-clouds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldar%2Fdifferentiable-point-clouds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldar%2Fdifferentiable-point-clouds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldar%2Fdifferentiable-point-clouds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldar%2Fdifferentiable-point-clouds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eldar","download_url":"https://codeload.github.com/eldar/differentiable-point-clouds/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldar%2Fdifferentiable-point-clouds/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266738657,"owners_count":23976439,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":[],"created_at":"2024-11-06T05:11:30.604Z","updated_at":"2025-07-23T20:03:35.754Z","avatar_url":"https://github.com/eldar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unsupervised Learning of Shape and Pose with Differentiable Point Clouds\nEldar Insafutdinov and Alexey Dosovitskiy.  \nNeural Information Processing Systems, 2018.\n\nWebsite: https://eldar.insafutdinov.com/PointClouds  \nPaper: https://arxiv.org/abs/1810.09381  \n\n![Teaser Image](resources/overview.png)\n\n## Setup\n\n### Install dependencies\nThe code is in Python 3.6 and Tensorflow \u003e= 1.11. We provide instructions on how to install all dependencies with conda, but using pip should also work. We suggest downloading miniconda for python 3.\n\nCreate Python 3.6 environment (some packages are not yet available for the more recent python 3.7):\n\n```bash\nconda create -n py36 python=3.6\nconda activate py36\n```\nInstall basic dependencies:\n\n```bash\nconda install numpy scikit-image pillow scipy scikit-learn pyyaml\npip install easydict\n```\n\nInstall open3d (more information can be found on the [official website](http://www.open3d.org/docs/getting_started.html#installing-from-pypi-or-conda)):\n\n```bash\nconda install -c open3d-admin open3d\n```\n\nInstall TensorFlow:\n```bash\npip install tensorflow-gpu\n```\n\n### Prepare training data\nWe use [Shapenet v1](https://www.shapenet.org) for all experiments in the paper.\n\nFor convenience, we provide the rendered images, used for training, for the chair, car and airplane classes of the ShapeNet dataset (category ID `03001627`, `02958343` and `02691156` respectively):\n\n```bash\ncd data\n./download_train_data.sh 03001627\n```\n\nConvert training images to TFRecords format:\n\n```bash\n./create_tf_records.sh 03001627\n```\n\nDownload pre-computed ground truth point clouds for evaluation:\n\n```bash\n./download_ground_truth.sh 03001627\n```\n\nYou can also generate ground truth yourself as described [here](dpc/densify/README.md).\n\n### Train and Evaluate\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"resources/training.gif\"\u003e\n\u003c/p\u003e\n\nTo train and evaluate the full model without camera pose supervision execute the following:\n\n```bash\ncd experiments/chair_unsupervised\n# train and compute accuracy on the validation set\npython ../../dpc/run/train_eval.py\n# compute accuracy on the test set\npython ../../dpc/run/predict_eval.py --eval_split=test\n```\n\nYou can use a `--gpu` flag to specify an ID of the GPU you want to run on.\n\nThe file `chamfer_pred_test.txt` contains the accuracy of 3D shape reconstruction represented by the two quantities: coverage and precision. Chamfer distance metric is the sum of precision and coverage. More details on the evaluation metric can be found in the [paper](https://arxiv.org/pdf/1810.09381.pdf#section.5). \n\nThe file `pose_error_pred_test.txt` contains camera pose estimation error. The first quantity is accuracy at the 30° threshold and the second one is the median error in degrees.\n\nA configuration file to train a model with camera pose supervision is located in `experiments/chair_camera_supervision`.\n\n\n### Visualise\n\nWe provide a Jupyter notebook to visualise predicted shapes. The rendering code uses Blender, which you can install in the `external/` subdirectory under name `blender` or simply create a symlink, for example:\n\n```bash\nln -s /path/to/blender-2.79b external/blender\n```\n\nAfter, you can lunch the notebook `experiments/visualise.ipynb`.\n\n## Citation\n\n```\n@inproceedings{insafutdinov18pointclouds,\ntitle = {Unsupervised Learning of Shape and Pose with Differentiable Point Clouds},\nauthor = {Insafutdinov, Eldar and Dosovitskiy, Alexey},\nbooktitle = {Advances in Neural Information Processing Systems (NeurIPS)},\nyear = {2018}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feldar%2Fdifferentiable-point-clouds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feldar%2Fdifferentiable-point-clouds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feldar%2Fdifferentiable-point-clouds/lists"}