{"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/deep-homography-estimation-for-visual-place","title":"Deep Homography Estimation for Visual Place Recognition","arxiv_id":"2402.16086","date":"2024-02-25","proceeding":null,"authors":["Feng Lu","Shuting Dong","Lijun Zhang","Bingxi Liu","Xiangyuan Lan","Dongmei Jiang","Chun Yuan"],"abstract":"Visual place recognition (VPR) is a fundamental task for many applications such as robot localization and augmented reality. Recently, the hierarchical VPR methods have received considerable attention due to the trade-off between accuracy and efficiency. They usually first use global features to retrieve the candidate images, then verify the spatial consistency of matched local features for re-ranking. However, the latter typically relies on the RANSAC algorithm for fitting homography, which is time-consuming and non-differentiable. This makes existing methods compromise to train the network only in global feature extraction. Here, we propose a transformer-based deep homography estimation (DHE) network that takes the dense feature map extracted by a backbone network as input and fits homography for fast and learnable geometric verification. Moreover, we design a re-projection error of inliers loss to train the DHE network without additional homography labels, which can also be jointly trained with the backbone network to help it extract the features that are more suitable for local matching. Extensive experiments on benchmark datasets show that our method can outperform several state-of-the-art methods. And it is more than one order of magnitude faster than the mainstream hierarchical VPR methods using RANSAC. The code is released at https://github.com/Lu-Feng/DHE-VPR.","url_abs":"https://arxiv.org/abs/2402.16086v2","url_pdf":"https://arxiv.org/pdf/2402.16086v2.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":"deep-homography-estimation-for-visual-place","repo_url":"https://github.com/lu-feng/dhe-vpr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"homography-estimation","task_name":"Homography Estimation"},{"task_slug":"re-ranking","task_name":"Re-Ranking"},{"task_slug":"visual-place-recognition","task_name":"Visual Place Recognition"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2402.16086","atlas_url":"https://app.syntology.ai/?focus=2402.16086","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.16086"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/dhe-vpr","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/Lu-Feng/DHE-VPR","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran_draft_wrong":1,"ran":6,"unverified":9},"by_repo_kind":{"official":{"samples":17,"ran":8,"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":"daf11df89eb6cd54","entry":"compute_similarity","repo":"Lu-Feng/DHE-VPR","repo_kind":"official","path":"network.py","file_url":"https://github.com/Lu-Feng/DHE-VPR/blob/HEAD/network.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"daf11df89eb6cd54"}},{"code_sha256_prefix":"ad695e1e64bd704c","entry":"gem","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"network.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/network.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ad695e1e64bd704c"}},{"code_sha256_prefix":"4db942a401f79a6d","entry":"get_keypoints","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"homography_project.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/homography_project.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4db942a401f79a6d"}},{"code_sha256_prefix":"a45a1ebcd76f102e","entry":"get_output_dim","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"commons.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/commons.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a45a1ebcd76f102e"}},{"code_sha256_prefix":"dd744fafe75ef469","entry":"match_batch_tensor","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"homography_project.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/homography_project.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dd744fafe75ef469"}},{"code_sha256_prefix":"3af50595c400a1d0","entry":"open_image_and_apply_transform","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"datasets_util.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/datasets_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3af50595c400a1d0"}},{"code_sha256_prefix":"c91f6ee832367388","entry":"open_image_and_apply_transform_train","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"datasets_util.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/datasets_util.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c91f6ee832367388"}},{"code_sha256_prefix":"e0db474b009dabf3","entry":"to_cuda","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"train_dhe.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/train_dhe.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e0db474b009dabf3"}},{"code_sha256_prefix":"35a2d5e5ea929ea3","entry":"Network","repo":"Lu-Feng/DHE-VPR","repo_kind":"official","path":"network.py","file_url":"https://github.com/Lu-Feng/DHE-VPR/blob/HEAD/network.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":"35a2d5e5ea929ea3"}},{"code_sha256_prefix":"cf97fc0d1f953674","entry":"cct_2","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cf97fc0d1f953674"}},{"code_sha256_prefix":"f709bdf67ed60e8a","entry":"cct_4","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f709bdf67ed60e8a"}},{"code_sha256_prefix":"f1b8c16700889467","entry":"cct_6","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"model/cct/cct.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f1b8c16700889467"}},{"code_sha256_prefix":"937b98b0302097b0","entry":"collate_fn","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"datasets_ws.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"937b98b0302097b0"}},{"code_sha256_prefix":"b3145a842e257fe6","entry":"compute_features","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"util.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b3145a842e257fe6"}},{"code_sha256_prefix":"73fee8a3f2a6bee4","entry":"compute_recalls","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"util.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"73fee8a3f2a6bee4"}},{"code_sha256_prefix":"f0db6d80ebf12bfa","entry":"path_to_pil_img","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"datasets_ws.py","file_url":"https://github.com/lu-feng/dhe-vpr/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f0db6d80ebf12bfa"}},{"code_sha256_prefix":"2f631cc89e3a62e9","entry":"reprojection_error_ofinliers","repo":"lu-feng/dhe-vpr","repo_kind":"official","path":"homography_project.py","file_url":"https://github.com/lu-feng/dhe-vpr/blob/HEAD/homography_project.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":"2f631cc89e3a62e9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}