{"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/snake-shape-aware-neural-3d-keypoint-field","title":"SNAKE: Shape-aware Neural 3D Keypoint Field","arxiv_id":"2206.01724","date":"2022-06-03","proceeding":null,"authors":["Chengliang Zhong","Peixing You","Xiaoxue Chen","Hao Zhao","Fuchun Sun","Guyue Zhou","Xiaodong Mu","Chuang Gan","Wenbing Huang"],"abstract":"Detecting 3D keypoints from point clouds is important for shape reconstruction, while this work investigates the dual question: can shape reconstruction benefit 3D keypoint detection? Existing methods either seek salient features according to statistics of different orders or learn to predict keypoints that are invariant to transformation. Nevertheless, the idea of incorporating shape reconstruction into 3D keypoint detection is under-explored. We argue that this is restricted by former problem formulations. To this end, a novel unsupervised paradigm named SNAKE is proposed, which is short for shape-aware neural 3D keypoint field. Similar to recent coordinate-based radiance or distance field, our network takes 3D coordinates as inputs and predicts implicit shape indicators and keypoint saliency simultaneously, thus naturally entangling 3D keypoint detection and shape reconstruction. We achieve superior performance on various public benchmarks, including standalone object datasets ModelNet40, KeypointNet, SMPL meshes and scene-level datasets 3DMatch and Redwood. Intrinsic shape awareness brings several advantages as follows. (1) SNAKE generates 3D keypoints consistent with human semantic annotation, even without such supervision. (2) SNAKE outperforms counterparts in terms of repeatability, especially when the input point clouds are down-sampled. (3) the generated keypoints allow accurate geometric registration, notably in a zero-shot setting. Codes are available at https://github.com/zhongcl-thu/SNAKE","url_abs":"https://arxiv.org/abs/2206.01724v2","url_pdf":"https://arxiv.org/pdf/2206.01724v2.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":"snake-shape-aware-neural-3d-keypoint-field","repo_url":"https://github.com/zhongcl-thu/snake","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"keypoint-detection","task_name":"Keypoint Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2206.01724","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2206.01724"}},"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/zhongcl-thu/SNAKE","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zhongcl-thu/snake","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":7,"unverified":7},"by_repo_kind":{"official":{"samples":14,"ran":7,"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":"60f2f4207ae20ab9","entry":"angles2rotation_matrix","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/augmentation.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/augmentation.py","link_basis":"harvester_set","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":"60f2f4207ae20ab9"}},{"code_sha256_prefix":"61969ba9c876c10d","entry":"atomic_rotate_pytorch_batch","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/augmentation.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/augmentation.py","link_basis":"harvester_set","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":"61969ba9c876c10d"}},{"code_sha256_prefix":"8e6b5059f61d84e6","entry":"chamfer_distance_naive","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/nets/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/nets/common.py","link_basis":"harvester_set","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":"8e6b5059f61d84e6"}},{"code_sha256_prefix":"0072de07b144b152","entry":"compute_iou","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/nets/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/nets/common.py","link_basis":"harvester_set","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":"0072de07b144b152"}},{"code_sha256_prefix":"dcf31906f80d979c","entry":"get_ray_directions_cam","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/nets/geometry.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/nets/geometry.py","link_basis":"harvester_set","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":"dcf31906f80d979c"}},{"code_sha256_prefix":"9babaac7293b5582","entry":"make_3d_grid","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/train_dataset.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/train_dataset.py","link_basis":"harvester_set","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":"9babaac7293b5582"}},{"code_sha256_prefix":"54dc24b743feff79","entry":"reflect_vector_on_vector","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/nets/geometry.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/nets/geometry.py","link_basis":"harvester_set","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":"54dc24b743feff79"}},{"code_sha256_prefix":"9a8db8d09e7923d3","entry":"accuracy","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/utils/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/utils/common.py","link_basis":"harvester_set","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":"9a8db8d09e7923d3"}},{"code_sha256_prefix":"60c37454e2a095ce","entry":"augment","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/augmentation.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/augmentation.py","link_basis":"harvester_set","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":"60c37454e2a095ce"}},{"code_sha256_prefix":"f4d8f4c4d0f7da71","entry":"chamfer_distance","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/nets/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/nets/common.py","link_basis":"harvester_set","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":"f4d8f4c4d0f7da71"}},{"code_sha256_prefix":"97c47b2462e29db3","entry":"load_last_iter","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/utils/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/utils/common.py","link_basis":"harvester_set","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":"97c47b2462e29db3"}},{"code_sha256_prefix":"3777dfeb89e049b9","entry":"load_state","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/utils/common.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/utils/common.py","link_basis":"harvester_set","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":"3777dfeb89e049b9"}},{"code_sha256_prefix":"c994f6f4b55acda6","entry":"naive_read_pcd","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/train_dataset.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/train_dataset.py","link_basis":"harvester_set","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":"c994f6f4b55acda6"}},{"code_sha256_prefix":"0bd31bdc88752b70","entry":"sample_vertex_from_mesh","repo":"zhongcl-thu/SNAKE","repo_kind":"official","path":"core/datasets/smpl_model.py","file_url":"https://github.com/zhongcl-thu/SNAKE/blob/HEAD/core/datasets/smpl_model.py","link_basis":"harvester_set","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":"0bd31bdc88752b70"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}