{"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/roma-revisiting-robust-losses-for-dense","title":"RoMa: Robust Dense Feature Matching","arxiv_id":"2305.15404","date":"2023-05-24","proceeding":"CVPR 2024 1","authors":["Johan Edstedt","Qiyu Sun","Georg Bökman","Mårten Wadenbäck","Michael Felsberg"],"abstract":"Feature matching is an important computer vision task that involves estimating correspondences between two images of a 3D scene, and dense methods estimate all such correspondences. The aim is to learn a robust model, i.e., a model able to match under challenging real-world changes. In this work, we propose such a model, leveraging frozen pretrained features from the foundation model DINOv2. Although these features are significantly more robust than local features trained from scratch, they are inherently coarse. We therefore combine them with specialized ConvNet fine features, creating a precisely localizable feature pyramid. To further improve robustness, we propose a tailored transformer match decoder that predicts anchor probabilities, which enables it to express multimodality. Finally, we propose an improved loss formulation through regression-by-classification with subsequent robust regression. We conduct a comprehensive set of experiments that show that our method, RoMa, achieves significant gains, setting a new state-of-the-art. In particular, we achieve a 36% improvement on the extremely challenging WxBS benchmark. Code is provided at https://github.com/Parskatt/RoMa","url_abs":"https://arxiv.org/abs/2305.15404v2","url_pdf":"https://arxiv.org/pdf/2305.15404v2.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":"roma-revisiting-robust-losses-for-dense","repo_url":"https://github.com/parskatt/roma","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"camera-pose-estimation","task_name":"Camera Pose Estimation"},{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"image-matching","task_name":"Image Matching"},{"task_slug":"key-point-matching","task_name":"Key Point Matching"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-matching-on-zeb","task":"Image Matching","dataset":"ZEB","model":"RoMa","rank_in_archive_order":3,"of":10,"metrics":{"Mean AUC@5°":"48.8"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2305.15404","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2305.15404"}},"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/parskatt/roma","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":2},"by_repo_kind":{"official":{"samples":2,"ran":0,"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":"bede7ad2720ef8b3","entry":"kde","repo":"parskatt/roma","repo_kind":"official","path":"experiments/train_tiny_roma_v1_outdoor.py","file_url":"https://github.com/parskatt/roma/blob/HEAD/experiments/train_tiny_roma_v1_outdoor.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":"bede7ad2720ef8b3"}},{"code_sha256_prefix":"338f0b589380cc82","entry":"pad_refiner_state_dict","repo":"parskatt/roma","repo_kind":"official","path":"romatch/models/model_zoo/roma_models.py","file_url":"https://github.com/parskatt/roma/blob/HEAD/romatch/models/model_zoo/roma_models.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":"338f0b589380cc82"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}