{"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/unsupervised-human-pose-estimation-through","title":"Unsupervised Human Pose Estimation through Transforming Shape Templates","arxiv_id":"2105.04154","date":"2021-05-10","proceeding":"CVPR 2021 1","authors":["Luca Schmidtke","Athanasios Vlontzos","Simon Ellershaw","Anna Lukens","Tomoki Arichi","Bernhard Kainz"],"abstract":"Human pose estimation is a major computer vision problem with applications ranging from augmented reality and video capture to surveillance and movement tracking. In the medical context, the latter may be an important biomarker for neurological impairments in infants. Whilst many methods exist, their application has been limited by the need for well annotated large datasets and the inability to generalize to humans of different shapes and body compositions, e.g. children and infants. In this paper we present a novel method for learning pose estimators for human adults and infants in an unsupervised fashion. We approach this as a learnable template matching problem facilitated by deep feature extractors. Human-interpretable landmarks are estimated by transforming a template consisting of predefined body parts that are characterized by 2D Gaussian distributions. Enforcing a connectivity prior guides our model to meaningful human shape representations. We demonstrate the effectiveness of our approach on two different datasets including adults and infants.","url_abs":"https://arxiv.org/abs/2105.04154v1","url_pdf":"https://arxiv.org/pdf/2105.04154v1.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":"unsupervised-human-pose-estimation-through","repo_url":"https://github.com/lschmidtke/shape_templates","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"unsupervised-human-pose-estimation-through","repo_url":"https://github.com/infantmotion/infantmotion.github.io","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"template-matching","task_name":"Template Matching"},{"task_slug":"unsupervised-human-pose-estimation","task_name":"Unsupervised Human Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2105.04154","atlas_url":"https://app.syntology.ai/?focus=2105.04154","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2105.04154"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/lschmidtke/shape_templates","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/infantmotion/infantmotion.github.io","reach":{"status":"ok"}}],"summary":{"ran_fixture":1,"ran_violates":1,"ran_draft_wrong":1,"unverified":6},"by_repo_kind":{"official":{"samples":9,"ran":3,"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":"9084d28f30c5495b","entry":"get_3rd_point","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/transforms.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/transforms.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9084d28f30c5495b"}},{"code_sha256_prefix":"5d546e1ecbee1866","entry":"get_dir","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/transforms.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/transforms.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d546e1ecbee1866"}},{"code_sha256_prefix":"a389d0fb57120bdf","entry":"id_generator","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"processing/h36m_processing.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/processing/h36m_processing.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a389d0fb57120bdf"}},{"code_sha256_prefix":"3e915aa903575ba6","entry":"compute_anchor_loss","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/losses.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3e915aa903575ba6"}},{"code_sha256_prefix":"3fa27226f242b41d","entry":"compute_boundary_loss","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/losses.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/losses.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3fa27226f242b41d"}},{"code_sha256_prefix":"174942967930e188","entry":"draw_shape","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/helper.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"174942967930e188"}},{"code_sha256_prefix":"beb11c9b064fb863","entry":"get_bbx","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"processing/h36m_processing.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/processing/h36m_processing.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"beb11c9b064fb863"}},{"code_sha256_prefix":"a5ac42bbf3a2026c","entry":"load_config","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/helper.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/helper.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a5ac42bbf3a2026c"}},{"code_sha256_prefix":"89dda06edbba1976","entry":"transform_anchor_points","repo":"lschmidtke/shape_templates","repo_kind":"official","path":"src/core/utils/transforms.py","file_url":"https://github.com/lschmidtke/shape_templates/blob/HEAD/src/core/utils/transforms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89dda06edbba1976"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}