{"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/scanimate-weakly-supervised-learning-of","title":"SCANimate: Weakly Supervised Learning of Skinned Clothed Avatar Networks","arxiv_id":"2104.03313","date":"2021-04-07","proceeding":"CVPR 2021 1","authors":["Shunsuke Saito","Jinlong Yang","Qianli Ma","Michael J. Black"],"abstract":"We present SCANimate, an end-to-end trainable framework that takes raw 3D scans of a clothed human and turns them into an animatable avatar. These avatars are driven by pose parameters and have realistic clothing that moves and deforms naturally. SCANimate does not rely on a customized mesh template or surface mesh registration. We observe that fitting a parametric 3D body model, like SMPL, to a clothed human scan is tractable while surface registration of the body topology to the scan is often not, because clothing can deviate significantly from the body shape. We also observe that articulated transformations are invertible, resulting in geometric cycle consistency in the posed and unposed shapes. These observations lead us to a weakly supervised learning method that aligns scans into a canonical pose by disentangling articulated deformations without template-based surface registration. Furthermore, to complete missing regions in the aligned scans while modeling pose-dependent deformations, we introduce a locally pose-aware implicit function that learns to complete and model geometry with learned pose correctives. In contrast to commonly used global pose embeddings, our local pose conditioning significantly reduces long-range spurious correlations and improves generalization to unseen poses, especially when training data is limited. Our method can be applied to pose-aware appearance modeling to generate a fully textured avatar. We demonstrate our approach on various clothing types with different amounts of training data, outperforming existing solutions and other variants in terms of fidelity and generality in every setting. The code is available at https://scanimate.is.tue.mpg.de.","url_abs":"https://arxiv.org/abs/2104.03313v2","url_pdf":"https://arxiv.org/pdf/2104.03313v2.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":"scanimate-weakly-supervised-learning-of","repo_url":"https://github.com/shunsukesaito/SCANimate","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"scanimate-weakly-supervised-learning-of","repo_url":"https://github.com/tingtingliao/mvphuman","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3d-human-reconstruction","task_name":"3D Human Reconstruction"},{"task_slug":"weakly-supervised-learning","task_name":"Weakly-supervised Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-human-reconstruction-on-4d-dress","task":"3D Human Reconstruction","dataset":"4D-DRESS","model":"SCANimate_Inner","rank_in_archive_order":1,"of":22,"metrics":{"Chamfer (cm)":"0.965","IoU":" 0.918","Normal Consistency":"0.854"},"uses_additional_data":false},{"leaderboard":"/sota/3d-human-reconstruction-on-4d-dress","task":"3D Human Reconstruction","dataset":"4D-DRESS","model":"SCANimate_Outer","rank_in_archive_order":5,"of":22,"metrics":{"Chamfer (cm)":"1.237","IoU":"0.912","Normal Consistency":"0.828"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2104.03313","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.03313"}},"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/tingtingliao/mvphuman","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shunsukesaito/SCANimate","reach":null}],"summary":{"ran":3,"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":9,"samples":[{"code_sha256_prefix":"e7cf8aa105b90b17","entry":"MLP","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"e7cf8aa105b90b17"}},{"code_sha256_prefix":"d70da435eb18566c","entry":"Sin","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d70da435eb18566c"}},{"code_sha256_prefix":"3f0832197151cd61","entry":"get_embedder","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3f0832197151cd61"}},{"code_sha256_prefix":"f490f7e7ff55d497","entry":"BaseIMNet3d","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f490f7e7ff55d497"}},{"code_sha256_prefix":"d5a9ed0a327efe88","entry":"IGRSDFNet","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d5a9ed0a327efe88"}},{"code_sha256_prefix":"56d2efda09153ca2","entry":"index3d","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"56d2efda09153ca2"}},{"code_sha256_prefix":"ea66ad43286db95e","entry":"index3d_custom","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ea66ad43286db95e"}},{"code_sha256_prefix":"5244213194eeb8cf","entry":"init_mlp_geometric","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5244213194eeb8cf"}},{"code_sha256_prefix":"d61f276728e7e055","entry":"init_mlp_siren","repo":"shunsukesaito/SCANimate","repo_kind":"official","path":"lib/model/IGRSDFNet.py","file_url":"https://github.com/shunsukesaito/SCANimate/blob/HEAD/lib/model/IGRSDFNet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"d61f276728e7e055"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}