{"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/effective-whole-body-pose-estimation-with-two","title":"Effective Whole-body Pose Estimation with Two-stages Distillation","arxiv_id":"2307.15880","date":"2023-07-29","proceeding":null,"authors":["Zhendong Yang","Ailing Zeng","Chun Yuan","Yu Li"],"abstract":"Whole-body pose estimation localizes the human body, hand, face, and foot keypoints in an image. This task is challenging due to multi-scale body parts, fine-grained localization for low-resolution regions, and data scarcity. Meanwhile, applying a highly efficient and accurate pose estimator to widely human-centric understanding and generation tasks is urgent. In this work, we present a two-stage pose \\textbf{D}istillation for \\textbf{W}hole-body \\textbf{P}ose estimators, named \\textbf{DWPose}, to improve their effectiveness and efficiency. The first-stage distillation designs a weight-decay strategy while utilizing a teacher's intermediate feature and final logits with both visible and invisible keypoints to supervise the student from scratch. The second stage distills the student model itself to further improve performance. Different from the previous self-knowledge distillation, this stage finetunes the student's head with only 20% training time as a plug-and-play training strategy. For data limitations, we explore the UBody dataset that contains diverse facial expressions and hand gestures for real-life applications. Comprehensive experiments show the superiority of our proposed simple yet effective methods. We achieve new state-of-the-art performance on COCO-WholeBody, significantly boosting the whole-body AP of RTMPose-l from 64.8% to 66.5%, even surpassing RTMPose-x teacher with 65.3% AP. We release a series of models with different sizes, from tiny to large, for satisfying various downstream tasks. Our codes and models are available at https://github.com/IDEA-Research/DWPose.","url_abs":"https://arxiv.org/abs/2307.15880v2","url_pdf":"https://arxiv.org/pdf/2307.15880v2.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":"effective-whole-body-pose-estimation-with-two","repo_url":"https://github.com/idea-research/dwpose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"2d-human-pose-estimation","task_name":"2D Human Pose Estimation"},{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"self-knowledge-distillation","task_name":"Self-Knowledge Distillation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.15880","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.15880"}},"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/idea-research/dwpose","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":2,"unverified":6},"by_repo_kind":{"official":{"samples":8,"ran":2,"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":"8ad410cc3c1eb4b2","entry":"multiclass_nms","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8ad410cc3c1eb4b2"}},{"code_sha256_prefix":"ce701a4106957782","entry":"nms","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ce701a4106957782"}},{"code_sha256_prefix":"64d861666d61123b","entry":"demo_postprocess","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/onnxdet.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"64d861666d61123b"}},{"code_sha256_prefix":"3fc42c6bc0ad77b7","entry":"padRightDownCorner","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/util.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3fc42c6bc0ad77b7"}},{"code_sha256_prefix":"bb3bf2f13b8a3eb5","entry":"postprocess","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/onnxpose.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/onnxpose.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bb3bf2f13b8a3eb5"}},{"code_sha256_prefix":"bfd83ef0068198d1","entry":"preprocess","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/onnxpose.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/onnxpose.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bfd83ef0068198d1"}},{"code_sha256_prefix":"a5bafc51aad44ec0","entry":"smart_resize","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/util.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a5bafc51aad44ec0"}},{"code_sha256_prefix":"8984b7a76d3499da","entry":"smart_resize_k","repo":"idea-research/dwpose","repo_kind":"official","path":"ControlNet-v1-1-nightly/annotator/dwpose/util.py","file_url":"https://github.com/idea-research/dwpose/blob/HEAD/ControlNet-v1-1-nightly/annotator/dwpose/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8984b7a76d3499da"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}