{"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/gpv-pose-category-level-object-pose","title":"GPV-Pose: Category-level Object Pose Estimation via Geometry-guided Point-wise Voting","arxiv_id":"2203.07918","date":"2022-03-15","proceeding":"CVPR 2022 1","authors":["Yan Di","Ruida Zhang","Zhiqiang Lou","Fabian Manhardt","Xiangyang Ji","Nassir Navab","Federico Tombari"],"abstract":"While 6D object pose estimation has recently made a huge leap forward, most methods can still only handle a single or a handful of different objects, which limits their applications. To circumvent this problem, category-level object pose estimation has recently been revamped, which aims at predicting the 6D pose as well as the 3D metric size for previously unseen instances from a given set of object classes. This is, however, a much more challenging task due to severe intra-class shape variations. To address this issue, we propose GPV-Pose, a novel framework for robust category-level pose estimation, harnessing geometric insights to enhance the learning of category-level pose-sensitive features. First, we introduce a decoupled confidence-driven rotation representation, which allows geometry-aware recovery of the associated rotation matrix. Second, we propose a novel geometry-guided point-wise voting paradigm for robust retrieval of the 3D object bounding box. Finally, leveraging these different output streams, we can enforce several geometric consistency terms, further increasing performance, especially for non-symmetric categories. GPV-Pose produces superior results to state-of-the-art competitors on common public benchmarks, whilst almost achieving real-time inference speed at 20 FPS.","url_abs":"https://arxiv.org/abs/2203.07918v2","url_pdf":"https://arxiv.org/pdf/2203.07918v2.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":"gpv-pose-category-level-object-pose","repo_url":"https://github.com/lolrudy/gpv_pose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"gpv-pose-category-level-object-pose","repo_url":"https://github.com/lolrudy/kp-red","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"gpv-pose-category-level-object-pose","repo_url":"https://github.com/lolrudy/rbp_pose","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"6d-pose-estimation-1","task_name":"6D Pose Estimation"},{"task_slug":"6d-pose-estimation","task_name":"6D Pose Estimation using RGB"},{"task_slug":"6d-pose-estimation-using-rgbd","task_name":"6D Pose Estimation using RGBD"},{"task_slug":"object","task_name":"Object"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[{"method_slug":"speed","method_name":"SPEED"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/6d-pose-estimation-on-linemod-2","task":"6D Pose Estimation","dataset":"LineMOD","model":"GPV-Pose","rank_in_archive_order":5,"of":5,"metrics":{"Mean ADD-S":"98.2"},"uses_additional_data":false},{"leaderboard":"/sota/6d-pose-estimation-using-rgbd-on-real275","task":"6D Pose Estimation using RGBD","dataset":"REAL275","model":"GPV-Pose","rank_in_archive_order":3,"of":11,"metrics":{"FPS":"20","mAP 10, 10cm":"74.6","mAP 10, 5cm":"73.3","mAP 3DIou@25":"84.2","mAP 3DIou@50":"83","mAP 3DIou@75":"64.4","mAP 5, 2cm":"32","mAP 5, 5cm":"42.9"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.07918","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.07918"}},"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/lolrudy/gpv_pose","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lolrudy/kp-red","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/lolrudy/rbp_pose","reach":{"status":"ok"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"ran":0,"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":"c26e5139544812be","entry":"control_loss","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"engine/organize_loss.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/engine/organize_loss.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":"c26e5139544812be"}},{"code_sha256_prefix":"1907108fce7bbe9a","entry":"defor_2D","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"datasets/data_augmentation.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/datasets/data_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":"1907108fce7bbe9a"}},{"code_sha256_prefix":"479152e874348de6","entry":"defor_3D_bb","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"datasets/data_augmentation.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/datasets/data_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":"479152e874348de6"}},{"code_sha256_prefix":"d00ebddb21609c8d","entry":"defor_3D_bc","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"datasets/data_augmentation.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/datasets/data_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":"d00ebddb21609c8d"}},{"code_sha256_prefix":"b7549cd87fb0c3ec","entry":"expected_wrt_occupancy","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"nnutils/layers.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/nnutils/layers.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":"b7549cd87fb0c3ec"}},{"code_sha256_prefix":"6709651c2a3bfacd","entry":"expected_wrt_prob","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"nnutils/layers.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/nnutils/layers.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":"6709651c2a3bfacd"}},{"code_sha256_prefix":"715f90a0136b95bb","entry":"laplacian_cot","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"nnutils/laplacian_loss.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/nnutils/laplacian_loss.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":"715f90a0136b95bb"}},{"code_sha256_prefix":"ac4d8b3cbad04fcc","entry":"mesh_laplacian_smoothing","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"nnutils/laplacian_loss.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/nnutils/laplacian_loss.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":"ac4d8b3cbad04fcc"}},{"code_sha256_prefix":"ded17a074ea35ec9","entry":"occupancy_to_prob","repo":"lolrudy/gpv_pose","repo_kind":"official","path":"nnutils/layers.py","file_url":"https://github.com/lolrudy/gpv_pose/blob/HEAD/nnutils/layers.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":"ded17a074ea35ec9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}