{"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/revisit-anything-visual-place-recognition-via","title":"Revisit Anything: Visual Place Recognition via Image Segment Retrieval","arxiv_id":"2409.18049","date":"2024-09-26","proceeding":null,"authors":["Kartik Garg","Sai Shubodh Puligilla","Shishir Kolathaya","Madhava Krishna","Sourav Garg"],"abstract":"Accurately recognizing a revisited place is crucial for embodied agents to localize and navigate. This requires visual representations to be distinct, despite strong variations in camera viewpoint and scene appearance. Existing visual place recognition pipelines encode the \"whole\" image and search for matches. This poses a fundamental challenge in matching two images of the same place captured from different camera viewpoints: \"the similarity of what overlaps can be dominated by the dissimilarity of what does not overlap\". We address this by encoding and searching for \"image segments\" instead of the whole images. We propose to use open-set image segmentation to decompose an image into `meaningful' entities (i.e., things and stuff). This enables us to create a novel image representation as a collection of multiple overlapping subgraphs connecting a segment with its neighboring segments, dubbed SuperSegment. Furthermore, to efficiently encode these SuperSegments into compact vector representations, we propose a novel factorized representation of feature aggregation. We show that retrieving these partial representations leads to significantly higher recognition recall than the typical whole image based retrieval. Our segments-based approach, dubbed SegVLAD, sets a new state-of-the-art in place recognition on a diverse selection of benchmark datasets, while being applicable to both generic and task-specialized image encoders. Finally, we demonstrate the potential of our method to ``revisit anything'' by evaluating our method on an object instance retrieval task, which bridges the two disparate areas of research: visual place recognition and object-goal navigation, through their common aim of recognizing goal objects specific to a place. Source code: https://github.com/AnyLoc/Revisit-Anything.","url_abs":"https://arxiv.org/abs/2409.18049v1","url_pdf":"https://arxiv.org/pdf/2409.18049v1.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":"revisit-anything-visual-place-recognition-via","repo_url":"https://github.com/anyloc/revisit-anything","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"image-segmentation","task_name":"Image Segmentation"},{"task_slug":"navigate","task_name":"Navigate"},{"task_slug":"retrieval","task_name":"Retrieval"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"visual-place-recognition","task_name":"Visual Place Recognition"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/visual-place-recognition-on-17-places","task":"Visual Place Recognition","dataset":"17 Places","model":"SegVLAD-FineT (M)","rank_in_archive_order":1,"of":8,"metrics":{"Recall@1":"95.3"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-amstertime","task":"Visual Place Recognition","dataset":"AmsterTime","model":"SegVLAD-FineT (M)","rank_in_archive_order":6,"of":8,"metrics":{"Recall@1":"60.2"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-baidu-mall","task":"Visual Place Recognition","dataset":"Baidu Mall","model":"SegVLAD-PreT (M)","rank_in_archive_order":1,"of":8,"metrics":{"Recall@1":"80.4"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-inside-out","task":"Visual Place Recognition","dataset":"Inside Out","model":"SegVLAD-FineT (M)","rank_in_archive_order":1,"of":1,"metrics":{"Recall@1":"7.2"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-pittsburgh-30k","task":"Visual Place Recognition","dataset":"Pittsburgh-30k-test","model":"SegVLAD-FineT (M)","rank_in_archive_order":8,"of":22,"metrics":{"Recall@1":"93.1"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-vp-air-1","task":"Visual Place Recognition","dataset":"VP Air","model":"SegVLAD-PreT (M)","rank_in_archive_order":1,"of":1,"metrics":{"Recall@1":"67.2"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2409.18049","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.18049"}},"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/anyloc/revisit-anything","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"ran":3,"ran_fixture":3,"unverified":3},"by_repo_kind":{"official":{"samples":9,"ran":6,"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":"e642533d58d111fd","entry":"calc_recall","repo":"anyloc/revisit-anything","repo_kind":"official","path":"place_rec_pca_finetuned.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/place_rec_pca_finetuned.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e642533d58d111fd"}},{"code_sha256_prefix":"d0a8a0cd6c16fac9","entry":"first_k_unique_indices","repo":"anyloc/revisit-anything","repo_kind":"official","path":"place_rec_pca_finetuned.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/place_rec_pca_finetuned.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d0a8a0cd6c16fac9"}},{"code_sha256_prefix":"8e50745b36bf52b1","entry":"get_matches","repo":"anyloc/revisit-anything","repo_kind":"official","path":"place_rec_pca_finetuned.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/place_rec_pca_finetuned.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8e50745b36bf52b1"}},{"code_sha256_prefix":"733d7f0bedcb74c2","entry":"get_rel_pos","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/modeling/image_encoder.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/modeling/image_encoder.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"733d7f0bedcb74c2"}},{"code_sha256_prefix":"105fa08885dc36cc","entry":"window_partition","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/modeling/image_encoder.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/modeling/image_encoder.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"105fa08885dc36cc"}},{"code_sha256_prefix":"50f37d517e2be27f","entry":"window_unpartition","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/modeling/image_encoder.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/modeling/image_encoder.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"50f37d517e2be27f"}},{"code_sha256_prefix":"f9bc5f31ce61cee8","entry":"build_sam_vit_b","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/build_sam.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/build_sam.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f9bc5f31ce61cee8"}},{"code_sha256_prefix":"6b77c1f11fff3ed6","entry":"build_sam_vit_h","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/build_sam.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/build_sam.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6b77c1f11fff3ed6"}},{"code_sha256_prefix":"3f8890e695469246","entry":"build_sam_vit_l","repo":"anyloc/revisit-anything","repo_kind":"official","path":"sam/segment_anything/build_sam.py","file_url":"https://github.com/anyloc/revisit-anything/blob/HEAD/sam/segment_anything/build_sam.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"3f8890e695469246"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}