{"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/content-aware-unsupervised-deep-homography","title":"Content-Aware Unsupervised Deep Homography Estimation","arxiv_id":"1909.05983","date":"2019-09-12","proceeding":"ECCV 2020 8","authors":["Jirong Zhang","Chuan Wang","Shuaicheng Liu","Lanpeng Jia","Nianjin Ye","Jue Wang","Ji Zhou","Jian Sun"],"abstract":"Homography estimation is a basic image alignment method in many applications. It is usually conducted by extracting and matching sparse feature points, which are error-prone in low-light and low-texture images. On the other hand, previous deep homography approaches use either synthetic images for supervised learning or aerial images for unsupervised learning, both ignoring the importance of handling depth disparities and moving objects in real world applications. To overcome these problems, in this work we propose an unsupervised deep homography method with a new architecture design. In the spirit of the RANSAC procedure in traditional methods, we specifically learn an outlier mask to only select reliable regions for homography estimation. We calculate loss with respect to our learned deep features instead of directly comparing image content as did previously. To achieve the unsupervised training, we also formulate a novel triplet loss customized for our network. We verify our method by conducting comprehensive comparisons on a new dataset that covers a wide range of scenes with varying degrees of difficulties for the task. Experimental results reveal that our method outperforms the state-of-the-art including deep solutions and feature-based solutions.","url_abs":"https://arxiv.org/abs/1909.05983v2","url_pdf":"https://arxiv.org/pdf/1909.05983v2.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":"content-aware-unsupervised-deep-homography","repo_url":"https://github.com/JirongZhang/DeepHomography","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":null,"task_name":"Triplet"}],"methods":[{"method_slug":"triplet-loss","method_name":"Triplet Loss"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/homography-estimation-on-s-coco","task":"Homography Estimation","dataset":"S-COCO","model":"Content-Aware","rank_in_archive_order":5,"of":5,"metrics":{"MACE":"2.08"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1909.05983","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1909.05983"}},"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/JirongZhang/DeepHomography","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":6},"by_repo_kind":{"official":{"samples":7,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/resnet.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/resnet.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"c5e496cacd9cbeca","entry":"DLT_solve","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/utils.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/utils.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":"c5e496cacd9cbeca"}},{"code_sha256_prefix":"64ccde2b8bf9d32c","entry":"getPatchFromFullimg","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/resnet.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/resnet.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":"64ccde2b8bf9d32c"}},{"code_sha256_prefix":"da2c46dcd369c656","entry":"make_mesh","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/dataset.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/dataset.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":"da2c46dcd369c656"}},{"code_sha256_prefix":"76ee69805983123c","entry":"normMask","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/resnet.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/resnet.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":"76ee69805983123c"}},{"code_sha256_prefix":"f308a5f3f5f78131","entry":"transform","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/utils.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/utils.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":"f308a5f3f5f78131"}},{"code_sha256_prefix":"1f89cba5f67259e9","entry":"transformer","repo":"JirongZhang/DeepHomography","repo_kind":"official","path":"Oneline-DLTv1/utils.py","file_url":"https://github.com/JirongZhang/DeepHomography/blob/HEAD/Oneline-DLTv1/utils.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":"1f89cba5f67259e9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}