{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/learning-3d-human-dynamics-from-video","title":"Learning 3D Human Dynamics from Video","arxiv_id":"1812.01601","date":"2018-12-04","proceeding":"CVPR 2019 6","authors":["Angjoo Kanazawa","Jason Y. Zhang","Panna Felsen","Jitendra Malik"],"abstract":"From an image of a person in action, we can easily guess the 3D motion of the person in the immediate past and future. This is because we have a mental model of 3D human dynamics that we have acquired from observing visual sequences of humans in motion. We present a framework that can similarly learn a representation of 3D dynamics of humans from video via a simple but effective temporal encoding of image features. At test time, from video, the learned temporal representation give rise to smooth 3D mesh predictions. From a single image, our model can recover the current 3D mesh as well as its 3D past and future motion. Our approach is designed so it can learn from videos with 2D pose annotations in a semi-supervised manner. Though annotated data is always limited, there are millions of videos uploaded daily on the Internet. In this work, we harvest this Internet-scale source of unlabeled data by training our model on unlabeled video with pseudo-ground truth 2D pose obtained from an off-the-shelf 2D pose detector. Our experiments show that adding more videos with pseudo-ground truth 2D pose monotonically improves 3D prediction performance. We evaluate our model, Human Mesh and Motion Recovery (HMMR), on the recent challenging dataset of 3D Poses in the Wild and obtain state-of-the-art performance on the 3D prediction task without any fine-tuning. The project website with video, code, and data can be found at https://akanazawa.github.io/human_dynamics/.","url_abs":"https://arxiv.org/abs/1812.01601v4","url_pdf":"https://arxiv.org/pdf/1812.01601v4.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"learning-3d-human-dynamics-from-video","repo_url":"https://github.com/akanazawa/human_dynamics","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"tasks":[{"task_slug":"3d-human-dynamics","task_name":"3D Human Dynamics"},{"task_slug":"3d-human-pose-estimation","task_name":"3D Human Pose Estimation"},{"task_slug":"human-dynamics","task_name":"Human Dynamics"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-human-pose-estimation-on-3dpw","task":"3D Human Pose Estimation","dataset":"3DPW","model":"HMMR (T=20)","rank_in_archive_order":106,"of":119,"metrics":{"Acceleration Error":"15.2","MPJPE":"116.5","PA-MPJPE":"72.6"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1812.01601","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1812.01601"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/akanazawa/human_dynamics","reach":{"status":"ok","spdx":"BSD-2-Clause"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"5bf26791a13b1b20","entry":"compute_loss_e_3d","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/ops.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/ops.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5bf26791a13b1b20"}},{"code_sha256_prefix":"5adb3a6418860a82","entry":"compute_loss_e_kp","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/ops.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/ops.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5adb3a6418860a82"}},{"code_sha256_prefix":"fed8c87d61cd6a4b","entry":"float_feature","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/datasets/common.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/datasets/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"fed8c87d61cd6a4b"}},{"code_sha256_prefix":"0575ea0e8e017a77","entry":"get_all_data","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/datasets/h36_to_tfrecords_video.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/datasets/h36_to_tfrecords_video.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"0575ea0e8e017a77"}},{"code_sha256_prefix":"e64a6b3b07db253d","entry":"int64_feature","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/datasets/common.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/datasets/common.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e64a6b3b07db253d"}},{"code_sha256_prefix":"e8e628d7220b85a2","entry":"read_from_example","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"src/datasets/common.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/src/datasets/common.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e8e628d7220b85a2"}},{"code_sha256_prefix":"d5f1c58706737981","entry":"run_poseflow","repo":"akanazawa/human_dynamics","repo_kind":"official","path":"extract_tracks.py","file_url":"https://github.com/akanazawa/human_dynamics/blob/HEAD/extract_tracks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-2-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d5f1c58706737981"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}