{"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/patch-netvlad-multi-scale-fusion-of-locally","title":"Patch-NetVLAD: Multi-Scale Fusion of Locally-Global Descriptors for Place Recognition","arxiv_id":"2103.01486","date":"2021-03-02","proceeding":"CVPR 2021 1","authors":["Stephen Hausler","Sourav Garg","Ming Xu","Michael Milford","Tobias Fischer"],"abstract":"Visual Place Recognition is a challenging task for robotics and autonomous systems, which must deal with the twin problems of appearance and viewpoint change in an always changing world. This paper introduces Patch-NetVLAD, which provides a novel formulation for combining the advantages of both local and global descriptor methods by deriving patch-level features from NetVLAD residuals. Unlike the fixed spatial neighborhood regime of existing local keypoint features, our method enables aggregation and matching of deep-learned local features defined over the feature-space grid. We further introduce a multi-scale fusion of patch features that have complementary scales (i.e. patch sizes) via an integral feature space and show that the fused features are highly invariant to both condition (season, structure, and illumination) and viewpoint (translation and rotation) changes. Patch-NetVLAD outperforms both global and local feature descriptor-based methods with comparable compute, achieving state-of-the-art visual place recognition results on a range of challenging real-world datasets, including winning the Facebook Mapillary Visual Place Recognition Challenge at ECCV2020. It is also adaptable to user requirements, with a speed-optimised version operating over an order of magnitude faster than the state-of-the-art. By combining superior performance with improved computational efficiency in a configurable framework, Patch-NetVLAD is well suited to enhance both stand-alone place recognition capabilities and the overall performance of SLAM systems.","url_abs":"https://arxiv.org/abs/2103.01486v1","url_pdf":"https://arxiv.org/pdf/2103.01486v1.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":"patch-netvlad-multi-scale-fusion-of-locally","repo_url":"https://github.com/QVPR/Patch-NetVLAD","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"patch-netvlad-multi-scale-fusion-of-locally","repo_url":"https://github.com/gmberton/VPR-datasets-downloader","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"patch-netvlad-multi-scale-fusion-of-locally","repo_url":"https://github.com/marialeyvallina/generalized_contrastive_loss","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"patch-netvlad-multi-scale-fusion-of-locally","repo_url":"https://github.com/taowenyin/PatchNetVLAD","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"},{"task_slug":"visual-localization","task_name":"Visual Localization"},{"task_slug":"visual-place-recognition","task_name":"Visual Place Recognition"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/visual-localization-on-extended-cmu-seasons","task":"Visual Localization","dataset":"Extended CMU Seasons","model":"Patch-NetVLAD","rank_in_archive_order":1,"of":1,"metrics":{"Acc @ .25m, 2°":"0.118","Acc @ .5m, 5°":"0.362","Acc @ 5m, 10°":"0.962"},"uses_additional_data":false},{"leaderboard":"/sota/visual-localization-on-robotcar-seasons-v2","task":"Visual Localization","dataset":"RobotCar Seasons v2","model":"Patch-NetVLAD","rank_in_archive_order":1,"of":1,"metrics":{"Acc @ .25m, 2°":"0.096","Acc @ .5m, 5°":"0.353","Acc @ 5m, 10°":"0.909"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-mapillary-val","task":"Visual Place Recognition","dataset":"Mapillary val","model":"Patch-NetVLAD","rank_in_archive_order":16,"of":18,"metrics":{"Recall@1":"79.5","Recall@10":"87.7","Recall@5":"86.2"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-nordland","task":"Visual Place Recognition","dataset":"Nordland","model":"Patch-NetVLAD","rank_in_archive_order":10,"of":13,"metrics":{"Recall@1":"58.4","Recall@5":"74.6"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-pittsburgh-30k","task":"Visual Place Recognition","dataset":"Pittsburgh-30k-test","model":"Patch-NetVLAD","rank_in_archive_order":16,"of":22,"metrics":{"Recall@1":"88.7","Recall@5":"94.5"},"uses_additional_data":false},{"leaderboard":"/sota/visual-place-recognition-on-tokyo247","task":"Visual Place Recognition","dataset":"Tokyo247","model":"Patch-NetVLAD","rank_in_archive_order":11,"of":14,"metrics":{"Recall@1":"86","Recall@10":"90.5","Recall@5":"88.6"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2103.01486","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2103.01486"}},"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/marialeyvallina/generalized_contrastive_loss","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/taowenyin/PatchNetVLAD","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gmberton/VPR-datasets-downloader","reach":{"status":"unanswered"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/QVPR/Patch-NetVLAD","reach":null}],"summary":{"ran":2,"ran_draft_wrong":1,"ran_fixture":1,"unverified":1},"by_repo_kind":{"official":{"samples":3,"ran":3,"repositories":1},"listed":{"samples":2,"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":0,"samples":[{"code_sha256_prefix":"3df22a709177cb8f","entry":"PatchNetVLAD","repo":"QVPR/Patch-NetVLAD","repo_kind":"official","path":"patchnetvlad/models/patchnetvlad.py","file_url":"https://github.com/QVPR/Patch-NetVLAD/blob/HEAD/patchnetvlad/models/patchnetvlad.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3df22a709177cb8f"}},{"code_sha256_prefix":"9402f303f3ae9ff0","entry":"get_integral_feature","repo":"QVPR/Patch-NetVLAD","repo_kind":"official","path":"patchnetvlad/models/patchnetvlad.py","file_url":"https://github.com/QVPR/Patch-NetVLAD/blob/HEAD/patchnetvlad/models/patchnetvlad.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9402f303f3ae9ff0"}},{"code_sha256_prefix":"d8abdf376063a44c","entry":"get_square_regions_from_integral","repo":"QVPR/Patch-NetVLAD","repo_kind":"official","path":"patchnetvlad/models/patchnetvlad.py","file_url":"https://github.com/QVPR/Patch-NetVLAD/blob/HEAD/patchnetvlad/models/patchnetvlad.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8abdf376063a44c"}},{"code_sha256_prefix":"d062e48ac9b786f0","entry":"get_square_regions_from_integral","repo":"taowenyin/PatchNetVLAD","repo_kind":"listed","path":"patchnetvlad/models/patchnetvlad.py","file_url":"https://github.com/taowenyin/PatchNetVLAD/blob/HEAD/patchnetvlad/models/patchnetvlad.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d062e48ac9b786f0"}},{"code_sha256_prefix":"044ac142e4307cc8","entry":"PatchNetVLAD","repo":"taowenyin/PatchNetVLAD","repo_kind":"listed","path":"patchnetvlad/models/patchnetvlad.py","file_url":"https://github.com/taowenyin/PatchNetVLAD/blob/HEAD/patchnetvlad/models/patchnetvlad.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"044ac142e4307cc8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}