{"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/snap-self-supervised-neural-maps-for-visual-1","title":"SNAP: Self-Supervised Neural Maps for Visual Positioning and Semantic Understanding","arxiv_id":"2306.05407","date":"2023-06-08","proceeding":"NeurIPS 2023 11","authors":["Paul-Edouard Sarlin","Eduard Trulls","Marc Pollefeys","Jan Hosang","Simon Lynen"],"abstract":"Semantic 2D maps are commonly used by humans and machines for navigation purposes, whether it's walking or driving. However, these maps have limitations: they lack detail, often contain inaccuracies, and are difficult to create and maintain, especially in an automated fashion. Can we use raw imagery to automatically create better maps that can be easily interpreted by both humans and machines? We introduce SNAP, a deep network that learns rich neural 2D maps from ground-level and overhead images. We train our model to align neural maps estimated from different inputs, supervised only with camera poses over tens of millions of StreetView images. SNAP can resolve the location of challenging image queries beyond the reach of traditional methods, outperforming the state of the art in localization by a large margin. Moreover, our neural maps encode not only geometry and appearance but also high-level semantics, discovered without explicit supervision. This enables effective pre-training for data-efficient semantic scene understanding, with the potential to unlock cost-efficient creation of more detailed maps.","url_abs":"https://arxiv.org/abs/2306.05407v2","url_pdf":"https://arxiv.org/pdf/2306.05407v2.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":"snap-self-supervised-neural-maps-for-visual-1","repo_url":"https://github.com/google-research/snap","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"scene-understanding","task_name":"Scene Understanding"}],"methods":[{"method_slug":"align","method_name":"ALIGN"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2306.05407","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2306.05407"}},"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/google-research/snap","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_honours":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"ran":1,"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":7,"samples":[{"code_sha256_prefix":"4f697aeaa3747cc2","entry":"get_block_desc","repo":"google-research/snap","repo_kind":"official","path":"snap/models/resnet.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/resnet.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4f697aeaa3747cc2"}},{"code_sha256_prefix":"5a7176d92f373893","entry":"balancing_weights","repo":"google-research/snap","repo_kind":"official","path":"snap/models/semantic_net.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/semantic_net.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":false,"mcp_get_code":{"code_sha256":"5a7176d92f373893"}},{"code_sha256_prefix":"c1386112ff3f93ea","entry":"masked_mean","repo":"google-research/snap","repo_kind":"official","path":"snap/models/layers.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/layers.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":false,"mcp_get_code":{"code_sha256":"c1386112ff3f93ea"}},{"code_sha256_prefix":"ee3edbe8686ce0eb","entry":"masked_softmax","repo":"google-research/snap","repo_kind":"official","path":"snap/models/layers.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/layers.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":false,"mcp_get_code":{"code_sha256":"ee3edbe8686ce0eb"}},{"code_sha256_prefix":"e4d204bc18f18435","entry":"normalize","repo":"google-research/snap","repo_kind":"official","path":"snap/models/layers.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/layers.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":false,"mcp_get_code":{"code_sha256":"e4d204bc18f18435"}},{"code_sha256_prefix":"3f53d845c39b8bf4","entry":"pad_to_multiple","repo":"google-research/snap","repo_kind":"official","path":"snap/models/image_encoder.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/image_encoder.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":false,"mcp_get_code":{"code_sha256":"3f53d845c39b8bf4"}},{"code_sha256_prefix":"f0dbdc7813be0fcd","entry":"standardize","repo":"google-research/snap","repo_kind":"official","path":"snap/models/resnet.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/resnet.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":false,"mcp_get_code":{"code_sha256":"f0dbdc7813be0fcd"}},{"code_sha256_prefix":"703f7585dc88471c","entry":"template_matching","repo":"google-research/snap","repo_kind":"official","path":"snap/models/pose_exhaustive_voting.py","file_url":"https://github.com/google-research/snap/blob/HEAD/snap/models/pose_exhaustive_voting.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":false,"mcp_get_code":{"code_sha256":"703f7585dc88471c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}