{"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/map-relative-pose-regression-for-visual-re","title":"Map-Relative Pose Regression for Visual Re-Localization","arxiv_id":"2404.09884","date":"2024-04-15","proceeding":"CVPR 2024 1","authors":["Shuai Chen","Tommaso Cavallari","Victor Adrian Prisacariu","Eric Brachmann"],"abstract":"Pose regression networks predict the camera pose of a query image relative to a known environment. Within this family of methods, absolute pose regression (APR) has recently shown promising accuracy in the range of a few centimeters in position error. APR networks encode the scene geometry implicitly in their weights. To achieve high accuracy, they require vast amounts of training data that, realistically, can only be created using novel view synthesis in a days-long process. This process has to be repeated for each new scene again and again. We present a new approach to pose regression, map-relative pose regression (marepo), that satisfies the data hunger of the pose regression network in a scene-agnostic fashion. We condition the pose regressor on a scene-specific map representation such that its pose predictions are relative to the scene map. This allows us to train the pose regressor across hundreds of scenes to learn the generic relation between a scene-specific map representation and the camera pose. Our map-relative pose regressor can be applied to new map representations immediately or after mere minutes of fine-tuning for the highest accuracy. Our approach outperforms previous pose regression methods by far on two public datasets, indoor and outdoor. Code is available: https://nianticlabs.github.io/marepo","url_abs":"https://arxiv.org/abs/2404.09884v1","url_pdf":"https://arxiv.org/pdf/2404.09884v1.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":"map-relative-pose-regression-for-visual-re","repo_url":"https://github.com/nianticlabs/marepo","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"novel-view-synthesis","task_name":"Novel View Synthesis"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.09884","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.09884"}},"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/nianticlabs/marepo","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran":6,"ran_fixture":1,"unverified":4},"by_repo_kind":{"official":{"samples":11,"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":11,"samples":[{"code_sha256_prefix":"04a0abb48deff3ab","entry":"add_uniform_noise","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"04a0abb48deff3ab"}},{"code_sha256_prefix":"6f110daeb39f6ff0","entry":"ecdf","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/metrics.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6f110daeb39f6ff0"}},{"code_sha256_prefix":"e1f7e0ef6f8418cb","entry":"p2f","repo":"nianticlabs/marepo","repo_kind":"official","path":"read_log_marepo.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/read_log_marepo.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"e1f7e0ef6f8418cb"}},{"code_sha256_prefix":"ba258abdb61be8b4","entry":"plot_image","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/marepo_vis_util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/marepo_vis_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ba258abdb61be8b4"}},{"code_sha256_prefix":"f54fbec87e8b287c","entry":"plot_image_saliancy","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/marepo_vis_util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/marepo_vis_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f54fbec87e8b287c"}},{"code_sha256_prefix":"bb4c927772641595","entry":"plot_image_saliancy_with_blending","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/marepo_vis_util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/marepo_vis_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"bb4c927772641595"}},{"code_sha256_prefix":"f4abd6472ccdc099","entry":"pose_error_torch","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/metrics.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/metrics.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f4abd6472ccdc099"}},{"code_sha256_prefix":"cf7d0ebaf10c3f5c","entry":"error_auc","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/metrics.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/metrics.py","link_basis":"plan_row","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":"cf7d0ebaf10c3f5c"}},{"code_sha256_prefix":"1cebb83236e4dd1b","entry":"fix_90deg_jitter_global_coordinate","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1cebb83236e4dd1b"}},{"code_sha256_prefix":"ec27f84a942a61b4","entry":"parse_line_from_file","repo":"nianticlabs/marepo","repo_kind":"official","path":"read_log_marepo.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/read_log_marepo.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"ec27f84a942a61b4"}},{"code_sha256_prefix":"678a51890bd77ed3","entry":"random_jitter_global_coordinate","repo":"nianticlabs/marepo","repo_kind":"official","path":"marepo/util.py","file_url":"https://github.com/nianticlabs/marepo/blob/HEAD/marepo/util.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"678a51890bd77ed3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}