{"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/dispose-disentangling-pose-guidance-for","title":"DisPose: Disentangling Pose Guidance for Controllable Human Image Animation","arxiv_id":"2412.09349","date":"2024-12-12","proceeding":null,"authors":["Hongxiang Li","Yaowei Li","Yuhang Yang","Junjie Cao","Zhihong Zhu","Xuxin Cheng","Long Chen"],"abstract":"Controllable human image animation aims to generate videos from reference images using driving videos. Due to the limited control signals provided by sparse guidance (e.g., skeleton pose), recent works have attempted to introduce additional dense conditions (e.g., depth map) to ensure motion alignment. However, such strict dense guidance impairs the quality of the generated video when the body shape of the reference character differs significantly from that of the driving video. In this paper, we present DisPose to mine more generalizable and effective control signals without additional dense input, which disentangles the sparse skeleton pose in human image animation into motion field guidance and keypoint correspondence. Specifically, we generate a dense motion field from a sparse motion field and the reference image, which provides region-level dense guidance while maintaining the generalization of the sparse pose control. We also extract diffusion features corresponding to pose keypoints from the reference image, and then these point features are transferred to the target pose to provide distinct identity information. To seamlessly integrate into existing models, we propose a plug-and-play hybrid ControlNet that improves the quality and consistency of generated videos while freezing the existing model parameters. Extensive qualitative and quantitative experiments demonstrate the superiority of DisPose compared to current methods. Code: \\href{https://github.com/lihxxx/DisPose}{https://github.com/lihxxx/DisPose}.","url_abs":"https://arxiv.org/abs/2412.09349v2","url_pdf":"https://arxiv.org/pdf/2412.09349v2.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":"dispose-disentangling-pose-guidance-for","repo_url":"https://github.com/lihxxx/dispose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"image-animation","task_name":"Image Animation"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2412.09349","atlas_url":"https://app.syntology.ai/?focus=2412.09349","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.09349"}},"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":"deterministic:regex_extraction","url":"https://github.com/lihxxx/DisPose","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lihxxx/dispose","reach":{"status":"ok"}}],"summary":{"ran":2,"ran_violates":2,"ran_draft_wrong":1,"unverified":13},"by_repo_kind":{"official":{"samples":18,"ran":5,"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":18,"samples":[{"code_sha256_prefix":"8bc93d4aea0c5e55","entry":"MLP","repo":"lihxxx/dispose","repo_kind":"official","path":"mimicmotion/modules/point_adapter.py","file_url":"https://github.com/lihxxx/dispose/blob/HEAD/mimicmotion/modules/point_adapter.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8bc93d4aea0c5e55"}},{"code_sha256_prefix":"deca82ab17e65c7e","entry":"PointAdapter","repo":"lihxxx/dispose","repo_kind":"official","path":"mimicmotion/modules/point_adapter.py","file_url":"https://github.com/lihxxx/dispose/blob/HEAD/mimicmotion/modules/point_adapter.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"deca82ab17e65c7e"}},{"code_sha256_prefix":"424012cb37b31172","entry":"default","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/attention.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"424012cb37b31172"}},{"code_sha256_prefix":"aa5486a3650902d8","entry":"exists","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/attention.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"aa5486a3650902d8"}},{"code_sha256_prefix":"9a299fe5ae09e407","entry":"uniq","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/attention.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9a299fe5ae09e407"}},{"code_sha256_prefix":"d5db4dc031f72a81","entry":"alpha_blend_color","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/util.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d5db4dc031f72a81"}},{"code_sha256_prefix":"be078f17d9fd895e","entry":"bilinear_interpolation","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/point_adapter.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/point_adapter.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"be078f17d9fd895e"}},{"code_sha256_prefix":"64d861666d61123b","entry":"demo_postprocess","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/onnxdet.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/onnxdet.py","link_basis":"plan_row","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"64d861666d61123b"}},{"code_sha256_prefix":"f8b328d3a48d9e03","entry":"draw_bodypose","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/util.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f8b328d3a48d9e03"}},{"code_sha256_prefix":"b408758fe55668b9","entry":"draw_handpose","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/util.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b408758fe55668b9"}},{"code_sha256_prefix":"01ee1ed8e6aa03a8","entry":"get_image_pose","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/preprocess.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/preprocess.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"01ee1ed8e6aa03a8"}},{"code_sha256_prefix":"a54b37e54b4b1524","entry":"multiclass_nms","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/onnxdet.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/onnxdet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a54b37e54b4b1524"}},{"code_sha256_prefix":"add5c08873b82e03","entry":"nms","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/onnxdet.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/onnxdet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"add5c08873b82e03"}},{"code_sha256_prefix":"bb3bf2f13b8a3eb5","entry":"postprocess","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/onnxpose.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/onnxpose.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bb3bf2f13b8a3eb5"}},{"code_sha256_prefix":"bfd83ef0068198d1","entry":"preprocess","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/dwpose/onnxpose.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/dwpose/onnxpose.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bfd83ef0068198d1"}},{"code_sha256_prefix":"282749a9d9e7b6ed","entry":"run_pipeline","repo":"lihxxx/DisPose","repo_kind":"official","path":"inference_ctrl.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/inference_ctrl.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"282749a9d9e7b6ed"}},{"code_sha256_prefix":"9d4de27a6685bbf6","entry":"vectorized_bilinear_interpolation","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/point_adapter.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/point_adapter.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9d4de27a6685bbf6"}},{"code_sha256_prefix":"f73823a83a14d08a","entry":"zero_module","repo":"lihxxx/DisPose","repo_kind":"official","path":"mimicmotion/modules/controlnet.py","file_url":"https://github.com/lihxxx/DisPose/blob/HEAD/mimicmotion/modules/controlnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f73823a83a14d08a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}