{"id":14669529,"url":"https://github.com/nghorbani/human_body_prior","last_synced_at":"2025-04-08T08:17:11.769Z","repository":{"id":37773781,"uuid":"185763586","full_name":"nghorbani/human_body_prior","owner":"nghorbani","description":"VPoser: Variational Human Pose Prior","archived":false,"fork":false,"pushed_at":"2022-10-25T06:10:01.000Z","size":27174,"stargazers_count":856,"open_issues_count":38,"forks_count":146,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-01T07:41:53.456Z","etag":null,"topics":["human","motion","pose","pose-estimation","prior","vae"],"latest_commit_sha":null,"homepage":"https://smpl-x.is.tue.mpg.de/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nghorbani.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}},"created_at":"2019-05-09T08:58:22.000Z","updated_at":"2025-03-31T09:33:48.000Z","dependencies_parsed_at":"2022-07-12T16:52:23.160Z","dependency_job_id":null,"html_url":"https://github.com/nghorbani/human_body_prior","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nghorbani%2Fhuman_body_prior","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nghorbani%2Fhuman_body_prior/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nghorbani%2Fhuman_body_prior/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nghorbani%2Fhuman_body_prior/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nghorbani","download_url":"https://codeload.github.com/nghorbani/human_body_prior/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247801175,"owners_count":20998339,"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":["human","motion","pose","pose-estimation","prior","vae"],"created_at":"2024-09-12T02:03:00.879Z","updated_at":"2025-04-08T08:17:11.741Z","avatar_url":"https://github.com/nghorbani.png","language":"Jupyter Notebook","funding_links":[],"categories":["Text to 3D Human"],"sub_categories":["Previous Papers"],"readme":"# VPoser: Variational Human Pose Prior for Body Inverse Kinematics\n\n![alt text](support_data/vposer_samples.png \"Novel Human Poses Sampled From the VPoser.\")\n## Description\nThe articulated 3D pose of the human body is high-dimensional and complex. \nMany applications make use of a prior distribution over valid human poses, but modeling this distribution is difficult.\nHere we present VPoser, a learning based variational human pose prior trained from a large dataset of human poses represented as SMPL bodies.\nThis body prior can be used as an Inverse Kinematics (IK) solver for many tasks such as fitting a body model to images \nas the main contribution of this repository for [SMPLify-X](https://smpl-x.is.tue.mpg.de/). \nVPoser has the following features: \n - defines a prior of SMPL pose parameters\n - is end-to-end differentiable\n - provides a way to penalize impossible poses while admitting valid ones\n - effectively models correlations among the joints of the body\n - introduces an efficient, low-dimensional, representation for human pose\n - can be used to generate valid 3D human poses for data-dependent tasks\n\n## Table of Contents\n  * [Description](#description)\n  * [Installation](#installation)\n  * [Tutorials](#tutorials)\n  * [Advanced IK Capabilities](#advanced-ik-capabilities)\n  * [Train VPoser](#train-vposer)\n  * [Citation](#citation)\n  * [License](#license)\n  * [Acknowledgments](#acknowledgments)\n  * [Contact](#contact)\n  * [FAQ](https://github.com/nghorbani/human_body_prior/wiki/FAQ)\n\n## Installation\n**Requirements**\n- Python 3.7\n- [PyTorch 1.7.1](https://pytorch.org/get-started)\n\n[comment]: \u003c\u003e (- [Torchgeometry 0.1.2]\u0026#40;https://pypi.org/project/torchgeometry/0.1.2/\u0026#41;)\n\n[comment]: \u003c\u003e (- [Body Visualizer]\u0026#40;https://github.com/nghorbani/body_visualizer\u0026#41; for visualizations)\n  \n\nClone this repo and run the following from the root folder:\n```bash\npip install -r requirements.txt\npython setup.py develop\n```\n\n## Tutorials\n![alt text](support_data/latent_interpolation_1.gif \"Interpolation of novel poses on the smoother VPoser latent space.\")\n![alt text](support_data/latent_interpolation_2.gif \"Interpolation of novel poses on the smoother VPoser latent space.\")\n\n* [VPoser Body poZ Space for SMPL Body Model Family](tutorials/vposer.ipynb)\n* [Sampling Novel Body Poses with VPoser](tutorials/vposer_sampling.ipynb)\n\n## Advanced IK Capabilities\n![alt text](support_data/SMPL_inverse_kinematics.gif \"Batched SMPL Inverse Kinematics With Learned Body Prior\")\n\nGiven position of some key points one can find the necessary body joints' rotation configurations via inverse kinematics (IK). \nThe keypoints could either be 3D (joint locations, 3D mocap markers on body surface) or 2D (as in [SMPLify-X](https://smpl-x.is.tue.mpg.de/)).\nWe provide a comprehensive IK engine with flexible key point definition interface demonstrated in tutorials: \n- [IK for 3D joints](tutorials/ik_example_joints.py) \n- [IK for mocap markers](tutorials/ik_example_mocap.py) \n\nOne can define keypoints on the SMPL body, e.g. joints, or any locations relative to the body surface \nand fit body model parameters to them while utilizing the efficient learned pose parameterization of \n[VPoser](https://github.com/nghorbani/human_body_prior). The supported features are:\n- Batch enabled\n- Flexible key point definition\n- LBFGS with wolfe line-search and ADAM optimizer already enabled\n- No need for initializing the body (always starts from zero)\n- Optimizes body pose, translation and body global orientation jointly and iteratively\n\n\n## Train VPoser\nWe train VPoser, as a [variational autoencoder](https://arxiv.org/abs/1312.6114)\nthat learns a latent representation of human pose and regularizes the distribution of the latent code \nto be a normal distribution.\nWe train our prior on data from the [AMASS](https://amass.is.tue.mpg.de/) dataset, \nthat holds the SMPL pose parameters of various publicly available human motion capture datasets.\n\n\n## Citation\nPlease cite the following paper if you use this code directly or indirectly in your research/projects:\n```\n@inproceedings{SMPL-X:2019,\n  title = {Expressive Body Capture: 3D Hands, Face, and Body from a Single Image},\n  author = {Pavlakos, Georgios and Choutas, Vasileios and Ghorbani, Nima and Bolkart, Timo and Osman, Ahmed A. A. and Tzionas, Dimitrios and Black, Michael J.},\n  booktitle = {Proceedings IEEE Conf. on Computer Vision and Pattern Recognition (CVPR)},\n  year = {2019}\n}\n```\nAlso note that if you consider training your own VPoser for your research using the AMASS dataset, \nthen please follow its respective citation guideline.\n \n\n## Contact\nThe code in this repository is developed by [Nima Ghorbani](https://nghorbani.github.io/) \nwhile at [Perceiving Systems](https://ps.is.mpg.de/), Max-Planck Institute for Intelligent Systems, Tübingen, Germany.\n\nIf you have any questions you can contact us at [smplx@tuebingen.mpg.de](mailto:smplx@tuebingen.mpg.de).\n\nFor commercial licensing, contact [ps-licensing@tue.mpg.de](mailto:ps-licensing@tue.mpg.de)\n\n## License\n\nSoftware Copyright License for **non-commercial scientific research purposes**.\nPlease read carefully the [terms and conditions](./LICENSE) and any accompanying documentation before you download and/or use the SMPL-X/SMPLify-X model, data and software, (the \"Model \u0026 Software\"), including 3D meshes, blend weights, blend shapes, textures, software, scripts, and animations. By downloading and/or using the Model \u0026 Software (including downloading, cloning, installing, and any other use of this github repository), you acknowledge that you have read these terms and conditions, understand them, and agree to be bound by them. If you do not agree with these terms and conditions, you must not download and/or use the Model \u0026 Software. Any infringement of the terms of this agreement will automatically terminate your rights under this [License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnghorbani%2Fhuman_body_prior","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnghorbani%2Fhuman_body_prior","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnghorbani%2Fhuman_body_prior/lists"}