{"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/aanet-aggregation-and-alignment-network-with","title":"AANet: Aggregation and Alignment Network with Semi-hard Positive Sample Mining for Hierarchical Place Recognition","arxiv_id":"2310.05184","date":"2023-10-08","proceeding":null,"authors":["Feng Lu","Lijun Zhang","Shuting Dong","Baifan Chen","Chun Yuan"],"abstract":"Visual place recognition (VPR) is one of the research hotspots in robotics, which uses visual information to locate robots. Recently, the hierarchical two-stage VPR methods have become popular in this field due to the trade-off between accuracy and efficiency. These methods retrieve the top-k candidate images using the global features in the first stage, then re-rank the candidates by matching the local features in the second stage. However, they usually require additional algorithms (e.g. RANSAC) for geometric consistency verification in re-ranking, which is time-consuming. Here we propose a Dynamically Aligning Local Features (DALF) algorithm to align the local features under spatial constraints. It is significantly more efficient than the methods that need geometric consistency verification. We present a unified network capable of extracting global features for retrieving candidates via an aggregation module and aligning local features for re-ranking via the DALF alignment module. We call this network AANet. Meanwhile, many works use the simplest positive samples in triplet for weakly supervised training, which limits the ability of the network to recognize harder positive pairs. To address this issue, we propose a Semi-hard Positive Sample Mining (ShPSM) strategy to select appropriate hard positive images for training more robust VPR networks. Extensive experiments on four benchmark VPR datasets show that the proposed AANet can outperform several state-of-the-art methods with less time consumption. The code is released at https://github.com/Lu-Feng/AANet.","url_abs":"https://arxiv.org/abs/2310.05184v1","url_pdf":"https://arxiv.org/pdf/2310.05184v1.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":"aanet-aggregation-and-alignment-network-with","repo_url":"https://github.com/Lu-Feng/AANet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"re-ranking","task_name":"Re-Ranking"},{"task_slug":null,"task_name":"Triplet"},{"task_slug":"visual-place-recognition","task_name":"Visual Place Recognition"}],"methods":[{"method_slug":"align","method_name":"ALIGN"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2310.05184","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2310.05184"}},"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/Lu-Feng/AANet","reach":{"status":"ok"}}],"summary":{"ran":3,"ran_fixture":1,"unverified":7},"by_repo_kind":{"official":{"samples":11,"ran":4,"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":"6d53c3d8aa5b838f","entry":"DTWdist","repo":"Lu-Feng/AANet","repo_kind":"official","path":"datasets_ws.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/datasets_ws.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6d53c3d8aa5b838f"}},{"code_sha256_prefix":"6bb7492655ecbda4","entry":"drop_path","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/stochastic_depth.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/stochastic_depth.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6bb7492655ecbda4"}},{"code_sha256_prefix":"5926b10d708c6be5","entry":"gem","repo":"Lu-Feng/AANet","repo_kind":"official","path":"network.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/network.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5926b10d708c6be5"}},{"code_sha256_prefix":"f9ba92375293c7b1","entry":"pe_check","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/helpers.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/helpers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f9ba92375293c7b1"}},{"code_sha256_prefix":"ba58679b92fef8bf","entry":"cct_2","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/cct.py","link_basis":"first_harvest_node","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":"ba58679b92fef8bf"}},{"code_sha256_prefix":"33a72da91bbca78d","entry":"cct_4","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/cct.py","link_basis":"first_harvest_node","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":"33a72da91bbca78d"}},{"code_sha256_prefix":"a47b9b1571b35294","entry":"cct_6","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/cct.py","link_basis":"first_harvest_node","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":"a47b9b1571b35294"}},{"code_sha256_prefix":"937b98b0302097b0","entry":"collate_fn","repo":"Lu-Feng/AANet","repo_kind":"official","path":"datasets_ws.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/datasets_ws.py","link_basis":"harvester_set","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":"937b98b0302097b0"}},{"code_sha256_prefix":"f0db6d80ebf12bfa","entry":"path_to_pil_img","repo":"Lu-Feng/AANet","repo_kind":"official","path":"datasets_ws.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/datasets_ws.py","link_basis":"harvester_set","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":"f0db6d80ebf12bfa"}},{"code_sha256_prefix":"39ae5d524f68a36e","entry":"resize_pos_embed","repo":"Lu-Feng/AANet","repo_kind":"official","path":"model/cct/helpers.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/model/cct/helpers.py","link_basis":"first_harvest_node","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":"39ae5d524f68a36e"}},{"code_sha256_prefix":"282b7c5ef7e12ac0","entry":"resume_train","repo":"Lu-Feng/AANet","repo_kind":"official","path":"util.py","file_url":"https://github.com/Lu-Feng/AANet/blob/HEAD/util.py","link_basis":"first_harvest_node","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":"282b7c5ef7e12ac0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}