{"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/thin-plate-spline-motion-model-for-image","title":"Thin-Plate Spline Motion Model for Image Animation","arxiv_id":"2203.14367","date":"2022-03-27","proceeding":"CVPR 2022 1","authors":["Jian Zhao","HUI ZHANG"],"abstract":"Image animation brings life to the static object in the source image according to the driving video. Recent works attempt to perform motion transfer on arbitrary objects through unsupervised methods without using a priori knowledge. However, it remains a significant challenge for current unsupervised methods when there is a large pose gap between the objects in the source and driving images. In this paper, a new end-to-end unsupervised motion transfer framework is proposed to overcome such issue. Firstly, we propose thin-plate spline motion estimation to produce a more flexible optical flow, which warps the feature maps of the source image to the feature domain of the driving image. Secondly, in order to restore the missing regions more realistically, we leverage multi-resolution occlusion masks to achieve more effective feature fusion. Finally, additional auxiliary loss functions are designed to ensure that there is a clear division of labor in the network modules, encouraging the network to generate high-quality images. Our method can animate a variety of objects, including talking faces, human bodies, and pixel animations. Experiments demonstrate that our method performs better on most benchmarks than the state of the art with visible improvements in pose-related metrics.","url_abs":"https://arxiv.org/abs/2203.14367v2","url_pdf":"https://arxiv.org/pdf/2203.14367v2.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":"thin-plate-spline-motion-model-for-image","repo_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"face-reenactment","task_name":"Face Reenactment"},{"task_slug":"image-animation","task_name":"Image Animation"},{"task_slug":"motion-estimation","task_name":"Motion Estimation"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"},{"task_slug":"model","task_name":"model"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2203.14367","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.14367"}},"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/yoyo-nb/thin-plate-spline-motion-model","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/yoyonb/Thin-Plate-Spline-Motion-Model","reach":{"status":"gone","observed_at":"2026-09-17","how":"tree_404+repo_404"}}],"summary":{"ran":7,"ran_violates":1,"ran_fixture":1,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"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":"cc822200aa21f534","entry":"AntiAliasInterpolation2d","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc822200aa21f534"}},{"code_sha256_prefix":"b9c2907721f30e2d","entry":"Decoder","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b9c2907721f30e2d"}},{"code_sha256_prefix":"26141a5132dd41c8","entry":"DownBlock2d","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"26141a5132dd41c8"}},{"code_sha256_prefix":"7734c6dbfc47b9ec","entry":"Encoder","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7734c6dbfc47b9ec"}},{"code_sha256_prefix":"f13c1877591873b5","entry":"Hourglass","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f13c1877591873b5"}},{"code_sha256_prefix":"f5c9c7ad1763b8ce","entry":"TPS","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f5c9c7ad1763b8ce"}},{"code_sha256_prefix":"502353a4a40bcf3c","entry":"UpBlock2d","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"502353a4a40bcf3c"}},{"code_sha256_prefix":"a6ec956a2cd586e1","entry":"from_homogeneous","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a6ec956a2cd586e1"}},{"code_sha256_prefix":"cba98ca3e7ba2298","entry":"kp2gaussian","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cba98ca3e7ba2298"}},{"code_sha256_prefix":"c299e0261d0f079a","entry":"to_homogeneous","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c299e0261d0f079a"}},{"code_sha256_prefix":"e2e28d9d3f0b9c4f","entry":"DenseMotionNetwork","repo":"yoyo-nb/thin-plate-spline-motion-model","repo_kind":"official","path":"modules/dense_motion.py","file_url":"https://github.com/yoyo-nb/thin-plate-spline-motion-model/blob/HEAD/modules/dense_motion.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":"e2e28d9d3f0b9c4f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}