{"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/kp-red-exploiting-semantic-keypoints-for","title":"KP-RED: Exploiting Semantic Keypoints for Joint 3D Shape Retrieval and Deformation","arxiv_id":"2403.10099","date":"2024-03-15","proceeding":"CVPR 2024 1","authors":["Ruida Zhang","Chenyangguang Zhang","Yan Di","Fabian Manhardt","Xingyu Liu","Federico Tombari","Xiangyang Ji"],"abstract":"In this paper, we present KP-RED, a unified KeyPoint-driven REtrieval and Deformation framework that takes object scans as input and jointly retrieves and deforms the most geometrically similar CAD models from a pre-processed database to tightly match the target. Unlike existing dense matching based methods that typically struggle with noisy partial scans, we propose to leverage category-consistent sparse keypoints to naturally handle both full and partial object scans. Specifically, we first employ a lightweight retrieval module to establish a keypoint-based embedding space, measuring the similarity among objects by dynamically aggregating deformation-aware local-global features around extracted keypoints. Objects that are close in the embedding space are considered similar in geometry. Then we introduce the neural cage-based deformation module that estimates the influence vector of each keypoint upon cage vertices inside its local support region to control the deformation of the retrieved shape. Extensive experiments on the synthetic dataset PartNet and the real-world dataset Scan2CAD demonstrate that KP-RED surpasses existing state-of-the-art approaches by a large margin. Codes and trained models are released on https://github.com/lolrudy/KP-RED.","url_abs":"https://arxiv.org/abs/2403.10099v3","url_pdf":"https://arxiv.org/pdf/2403.10099v3.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":"kp-red-exploiting-semantic-keypoints-for","repo_url":"https://github.com/lolrudy/kp-red","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-shape-retrieval-1","task_name":"3D Shape Retrieval"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.10099","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.10099"}},"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/lolrudy/KP-RED","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":4,"unverified":1},"by_repo_kind":{"official":{"samples":5,"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":0,"samples":[{"code_sha256_prefix":"c360bb211fd2a25c","entry":"conv1x1_1d","repo":"lolrudy/KP-RED","repo_kind":"official","path":"keypointdeformer/models/latent_network.py","file_url":"https://github.com/lolrudy/KP-RED/blob/HEAD/keypointdeformer/models/latent_network.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c360bb211fd2a25c"}},{"code_sha256_prefix":"82e91ea00409e451","entry":"conv1x1_2d","repo":"lolrudy/KP-RED","repo_kind":"official","path":"keypointdeformer/models/latent_network.py","file_url":"https://github.com/lolrudy/KP-RED/blob/HEAD/keypointdeformer/models/latent_network.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"82e91ea00409e451"}},{"code_sha256_prefix":"42db47cf9f8ecf5d","entry":"huber_loss","repo":"lolrudy/KP-RED","repo_kind":"official","path":"modules/functional/loss.py","file_url":"https://github.com/lolrudy/KP-RED/blob/HEAD/modules/functional/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"42db47cf9f8ecf5d"}},{"code_sha256_prefix":"ac428c28090c22b2","entry":"kl_loss","repo":"lolrudy/KP-RED","repo_kind":"official","path":"modules/functional/loss.py","file_url":"https://github.com/lolrudy/KP-RED/blob/HEAD/modules/functional/loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ac428c28090c22b2"}},{"code_sha256_prefix":"44dcf660296c76a5","entry":"knn_search","repo":"lolrudy/KP-RED","repo_kind":"official","path":"keypointdeformer/models/latent_network.py","file_url":"https://github.com/lolrudy/KP-RED/blob/HEAD/keypointdeformer/models/latent_network.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"44dcf660296c76a5"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}