{"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/model-based-3d-hand-reconstruction-via-self","title":"Model-based 3D Hand Reconstruction via Self-Supervised Learning","arxiv_id":"2103.11703","date":"2021-03-22","proceeding":"CVPR 2021 1","authors":["Yujin Chen","Zhigang Tu","Di Kang","Linchao Bao","Ying Zhang","Xuefei Zhe","Ruizhi Chen","Junsong Yuan"],"abstract":"Reconstructing a 3D hand from a single-view RGB image is challenging due to various hand configurations and depth ambiguity. To reliably reconstruct a 3D hand from a monocular image, most state-of-the-art methods heavily rely on 3D annotations at the training stage, but obtaining 3D annotations is expensive. To alleviate reliance on labeled training data, we propose S2HAND, a self-supervised 3D hand reconstruction network that can jointly estimate pose, shape, texture, and the camera viewpoint. Specifically, we obtain geometric cues from the input image through easily accessible 2D detected keypoints. To learn an accurate hand reconstruction model from these noisy geometric cues, we utilize the consistency between 2D and 3D representations and propose a set of novel losses to rationalize outputs of the neural network. For the first time, we demonstrate the feasibility of training an accurate 3D hand reconstruction network without relying on manual annotations. Our experiments show that the proposed method achieves comparable performance with recent fully-supervised methods while using fewer supervision data.","url_abs":"https://arxiv.org/abs/2103.11703v1","url_pdf":"https://arxiv.org/pdf/2103.11703v1.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":"model-based-3d-hand-reconstruction-via-self","repo_url":"https://github.com/TerenceCYJ/S2HAND","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"3d-hand-pose-estimation","task_name":"3D Hand Pose Estimation"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-hand-pose-estimation-on-ho-3d","task":"3D Hand Pose Estimation","dataset":"HO-3D v2","model":"S2Hand","rank_in_archive_order":21,"of":24,"metrics":{"AUC_J":"0.773","AUC_V":"0.777","F@15mm":"0.930","F@5mm":"0.450","PA-MPJPE (mm)":"11.4","PA-MPVPE":"11.2"},"uses_additional_data":false},{"leaderboard":"/sota/3d-hand-pose-estimation-on-ho-3d-v3","task":"3D Hand Pose Estimation","dataset":"HO-3D v3","model":"S2HAND","rank_in_archive_order":8,"of":8,"metrics":{"AUC_J":"0.769","AUC_V":"0.778","F@15mm":"0.932","F@5mm":"0.448","PA-MPJPE":"11.5","PA-MPVPE":"11.1"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2103.11703","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2103.11703"}},"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":"deterministic:regex_extraction","url":"https://github.com/TerenceCYJ/S2HAND","reach":null}],"summary":{"ran":2,"ran_honours":1,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"official":{"samples":7,"ran":4,"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":7,"samples":[{"code_sha256_prefix":"8e3ed993509ed2a0","entry":"Conv2dStaticSamePadding","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8e3ed993509ed2a0"}},{"code_sha256_prefix":"45905dfc075fd4b9","entry":"MBConvBlock","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.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":"45905dfc075fd4b9"}},{"code_sha256_prefix":"a8d5c98b4d991792","entry":"efficientnet_params","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a8d5c98b4d991792"}},{"code_sha256_prefix":"23e740ac5501213b","entry":"get_same_padding_conv2d","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"23e740ac5501213b"}},{"code_sha256_prefix":"7348ef98d46623c2","entry":"EfficientNet","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.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":"7348ef98d46623c2"}},{"code_sha256_prefix":"d2a7b16829a6a779","entry":"get_model_params","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.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":"d2a7b16829a6a779"}},{"code_sha256_prefix":"88f14d6c66675279","entry":"load_pretrained_weights","repo":"TerenceCYJ/S2HAND","repo_kind":"official","path":"efficientnet_pt/model.py","file_url":"https://github.com/TerenceCYJ/S2HAND/blob/HEAD/efficientnet_pt/model.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":"88f14d6c66675279"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}