{"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/learning-semantics-for-visual-place","title":"Learning Semantics for Visual Place Recognition through Multi-Scale Attention","arxiv_id":"2201.09701","date":"2022-01-24","proceeding":null,"authors":["Valerio Paolicelli","Antonio Tavera","Carlo Masone","Gabriele Berton","Barbara Caputo"],"abstract":"In this paper we address the task of visual place recognition (VPR), where the goal is to retrieve the correct GPS coordinates of a given query image against a huge geotagged gallery. While recent works have shown that building descriptors incorporating semantic and appearance information is beneficial, current state-of-the-art methods opt for a top down definition of the significant semantic content. Here we present the first VPR algorithm that learns robust global embeddings from both visual appearance and semantic content of the data, with the segmentation process being dynamically guided by the recognition of places through a multi-scale attention module. Experiments on various scenarios validate this new approach and demonstrate its performance against state-of-the-art methods. Finally, we propose the first synthetic-world dataset suited for both place recognition and segmentation tasks.","url_abs":"https://arxiv.org/abs/2201.09701v2","url_pdf":"https://arxiv.org/pdf/2201.09701v2.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":"learning-semantics-for-visual-place","repo_url":"https://github.com/valeriopaolicelli/SegVPR","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"visual-place-recognition","task_name":"Visual Place Recognition"}],"methods":[{"method_slug":"gps","method_name":"GPS"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2201.09701","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2201.09701"}},"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/valeriopaolicelli/SegVPR","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":2,"unverified":9},"by_repo_kind":{"official":{"samples":11,"ran":2,"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":"2a80220dabcb742a","entry":"conv1x1","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/resnet_vpr.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/resnet_vpr.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2a80220dabcb742a"}},{"code_sha256_prefix":"600ff2c45e0de056","entry":"conv3x3","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/resnet_vpr.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/resnet_vpr.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"600ff2c45e0de056"}},{"code_sha256_prefix":"835db6c2d4fa4ada","entry":"CrossEntropy2d","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/losses.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/losses.py","link_basis":"harvester_set","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":"835db6c2d4fa4ada"}},{"code_sha256_prefix":"602fbde2d15e2d12","entry":"TripletMarginLoss","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/losses.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/losses.py","link_basis":"harvester_set","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":"602fbde2d15e2d12"}},{"code_sha256_prefix":"b4b4bd7b30ae7af4","entry":"gem_pool","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/pooling.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/pooling.py","link_basis":"harvester_set","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":"b4b4bd7b30ae7af4"}},{"code_sha256_prefix":"1879807dc6e8bf82","entry":"get_crop_dim","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/datasets.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/datasets.py","link_basis":"harvester_set","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":"1879807dc6e8bf82"}},{"code_sha256_prefix":"135861a71f0aeea6","entry":"get_places_resnet","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/resnet_vpr.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/resnet_vpr.py","link_basis":"harvester_set","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":"135861a71f0aeea6"}},{"code_sha256_prefix":"9ed8b1e42932da0d","entry":"idda_cs_mapping","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/datasets.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/datasets.py","link_basis":"harvester_set","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":"9ed8b1e42932da0d"}},{"code_sha256_prefix":"5cc57ac1fcde2555","entry":"inv_transform","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/datasets.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/datasets.py","link_basis":"harvester_set","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":"5cc57ac1fcde2555"}},{"code_sha256_prefix":"3b9d9c1adb6b94aa","entry":"l2n","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/net/pooling.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/net/pooling.py","link_basis":"harvester_set","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":"3b9d9c1adb6b94aa"}},{"code_sha256_prefix":"38ecac084a4da52a","entry":"set_paths_ws","repo":"valeriopaolicelli/SegVPR","repo_kind":"official","path":"src/utils/commons.py","file_url":"https://github.com/valeriopaolicelli/SegVPR/blob/HEAD/src/utils/commons.py","link_basis":"harvester_set","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":"38ecac084a4da52a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}