{"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/checkerpose-progressive-dense-keypoint","title":"CheckerPose: Progressive Dense Keypoint Localization for Object Pose Estimation with Graph Neural Network","arxiv_id":"2303.16874","date":"2023-03-29","proceeding":"ICCV 2023 1","authors":["Ruyi Lian","Haibin Ling"],"abstract":"Estimating the 6-DoF pose of a rigid object from a single RGB image is a crucial yet challenging task. Recent studies have shown the great potential of dense correspondence-based solutions, yet improvements are still needed to reach practical deployment. In this paper, we propose a novel pose estimation algorithm named CheckerPose, which improves on three main aspects. Firstly, CheckerPose densely samples 3D keypoints from the surface of the 3D object and finds their 2D correspondences progressively in the 2D image. Compared to previous solutions that conduct dense sampling in the image space, our strategy enables the correspondence searching in a 2D grid (i.e., pixel coordinate). Secondly, for our 3D-to-2D correspondence, we design a compact binary code representation for 2D image locations. This representation not only allows for progressive correspondence refinement but also converts the correspondence regression to a more efficient classification problem. Thirdly, we adopt a graph neural network to explicitly model the interactions among the sampled 3D keypoints, further boosting the reliability and accuracy of the correspondences. Together, these novel components make CheckerPose a strong pose estimation algorithm. When evaluated on the popular Linemod, Linemod-O, and YCB-V object pose estimation benchmarks, CheckerPose clearly boosts the accuracy of correspondence-based methods and achieves state-of-the-art performances. Code is available at https://github.com/RuyiLian/CheckerPose.","url_abs":"https://arxiv.org/abs/2303.16874v2","url_pdf":"https://arxiv.org/pdf/2303.16874v2.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":"checkerpose-progressive-dense-keypoint","repo_url":"https://github.com/ruyilian/checkerpose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2303.16874","atlas_url":"https://app.syntology.ai/?focus=2303.16874","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.16874"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/RuyiLian/CheckerPose","reach":null}],"summary":{"ran":3,"ran_fixture":2,"ran_violates":1,"ran_draft_wrong":3,"unverified":3},"by_repo_kind":{"official":{"samples":12,"ran":9,"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":12,"samples":[{"code_sha256_prefix":"eb7d2796646a1b58","entry":"Index2Feat_module","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eb7d2796646a1b58"}},{"code_sha256_prefix":"867a5d1fd85cb80c","entry":"MLP_QueryNet","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"867a5d1fd85cb80c"}},{"code_sha256_prefix":"3a4e6e03e31dc6a0","entry":"StaticGraph_module","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3a4e6e03e31dc6a0"}},{"code_sha256_prefix":"e117f45960a9a457","entry":"from_bit_prob_to_id","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e117f45960a9a457"}},{"code_sha256_prefix":"97585cf5dbeb1837","entry":"from_code_prob_to_id","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"97585cf5dbeb1837"}},{"code_sha256_prefix":"3f179262db33b7f1","entry":"from_mask_prob_to_mask","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f179262db33b7f1"}},{"code_sha256_prefix":"d869bfc65c47e517","entry":"get_MLP_leakyReLU_layers","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d869bfc65c47e517"}},{"code_sha256_prefix":"3d836ca3230417ae","entry":"get_gdrn_upsample_module","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3d836ca3230417ae"}},{"code_sha256_prefix":"a774849fdc6cb021","entry":"get_graph_feature","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a774849fdc6cb021"}},{"code_sha256_prefix":"d979eab4f9fcbafe","entry":"PoseNet_GNNskip","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.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":"d979eab4f9fcbafe"}},{"code_sha256_prefix":"40cab79e9b830452","entry":"Refine_moduleGNN","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.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":"40cab79e9b830452"}},{"code_sha256_prefix":"5935c64a872da27c","entry":"from_code_to_id","repo":"RuyiLian/CheckerPose","repo_kind":"official","path":"checkerpose/model/pipeline.py","file_url":"https://github.com/RuyiLian/CheckerPose/blob/HEAD/checkerpose/model/pipeline.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":"5935c64a872da27c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}