{"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/adalam-revisiting-handcrafted-outlier","title":"AdaLAM: Revisiting Handcrafted Outlier Detection","arxiv_id":"2006.04250","date":"2020-06-07","proceeding":null,"authors":["Luca Cavalli","Viktor Larsson","Martin Ralf Oswald","Torsten Sattler","Marc Pollefeys"],"abstract":"Local feature matching is a critical component of many computer vision pipelines, including among others Structure-from-Motion, SLAM, and Visual Localization. However, due to limitations in the descriptors, raw matches are often contaminated by a majority of outliers. As a result, outlier detection is a fundamental problem in computer vision, and a wide range of approaches have been proposed over the last decades. In this paper we revisit handcrafted approaches to outlier filtering. Based on best practices, we propose a hierarchical pipeline for effective outlier detection as well as integrate novel ideas which in sum lead to AdaLAM, an efficient and competitive approach to outlier rejection. AdaLAM is designed to effectively exploit modern parallel hardware, resulting in a very fast, yet very accurate, outlier filter. We validate AdaLAM on multiple large and diverse datasets, and we submit to the Image Matching Challenge (CVPR2020), obtaining competitive results with simple baseline descriptors. We show that AdaLAM is more than competitive to current state of the art, both in terms of efficiency and effectiveness.","url_abs":"https://arxiv.org/abs/2006.04250v1","url_pdf":"https://arxiv.org/pdf/2006.04250v1.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":"adalam-revisiting-handcrafted-outlier","repo_url":"https://github.com/antonbrazhnyi/AdaLAM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"adalam-revisiting-handcrafted-outlier","repo_url":"https://github.com/cavalli1234/AdaLAM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"adalam-revisiting-handcrafted-outlier","repo_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"paddle","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"key-point-matching","task_name":"Key Point Matching"},{"task_slug":"outlier-detection","task_name":"Outlier Detection"},{"task_slug":"visual-localization","task_name":"Visual Localization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.04250","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.04250"}},"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/antonbrazhnyi/AdaLAM","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cavalli1234/AdaLAM","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":19},"by_repo_kind":{"listed":{"samples":19,"ran":0,"repositories":3}},"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":"273031afa673ed50","entry":"arange_sequence","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/utils.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"273031afa673ed50"}},{"code_sha256_prefix":"0b54a05cf65bbe27","entry":"confidence_based_inlier_selection","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/ransac.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/ransac.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"0b54a05cf65bbe27"}},{"code_sha256_prefix":"a3a952583dcee63e","entry":"dist_matrix","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/utils.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"a3a952583dcee63e"}},{"code_sha256_prefix":"044e5f3c6e44c154","entry":"dist_matrix","repo":"cavalli1234/AdaLAM","repo_kind":"listed","path":"adalam/utils.py","file_url":"https://github.com/cavalli1234/AdaLAM/blob/HEAD/adalam/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"044e5f3c6e44c154"}},{"code_sha256_prefix":"aa62684e7175e3a0","entry":"distort_color","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"metric_learning_traffic/imgtool.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/metric_learning_traffic/imgtool.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aa62684e7175e3a0"}},{"code_sha256_prefix":"1baf1bbcafd8baa2","entry":"extract_local_patterns","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"1baf1bbcafd8baa2"}},{"code_sha256_prefix":"ccf718aa4ea2a54a","entry":"extract_local_patterns","repo":"cavalli1234/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/cavalli1234/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ccf718aa4ea2a54a"}},{"code_sha256_prefix":"4c3eec786c61959e","entry":"extract_neighborhood_sets","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"4c3eec786c61959e"}},{"code_sha256_prefix":"9e1bd9727a566275","entry":"extract_neighborhood_sets","repo":"cavalli1234/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/cavalli1234/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"9e1bd9727a566275"}},{"code_sha256_prefix":"8934a86d67997100","entry":"generate_index","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"metric_learning_traffic/losses/commonfunc.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/metric_learning_traffic/losses/commonfunc.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8934a86d67997100"}},{"code_sha256_prefix":"6635220d02d11dda","entry":"group_sum_and_cumsum","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/ransac.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/ransac.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6635220d02d11dda"}},{"code_sha256_prefix":"6e21a7f85e0bd425","entry":"orientation_diff","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/utils.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6e21a7f85e0bd425"}},{"code_sha256_prefix":"9e2a7fd85f0594c2","entry":"postprocess","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"PaddleClas/traffic_class_infer.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/PaddleClas/traffic_class_infer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9e2a7fd85f0594c2"}},{"code_sha256_prefix":"63e249d1dde56372","entry":"preprocess","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"PaddleClas/traffic_class_infer.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/PaddleClas/traffic_class_infer.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"63e249d1dde56372"}},{"code_sha256_prefix":"9b681e8a76479f0f","entry":"random_crop","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"metric_learning_traffic/imgtool.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/metric_learning_traffic/imgtool.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9b681e8a76479f0f"}},{"code_sha256_prefix":"3668fcd0a8a7ae06","entry":"rotate_image","repo":"gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution","repo_kind":"listed","path":"metric_learning_traffic/imgtool.py","file_url":"https://github.com/gujingxiao/BaiduStar2020-Traffic-Sign-Detection-And-Pair-Competition-Solution/blob/HEAD/metric_learning_traffic/imgtool.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3668fcd0a8a7ae06"}},{"code_sha256_prefix":"ce984335a94fc19e","entry":"select_seeds","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ce984335a94fc19e"}},{"code_sha256_prefix":"ca2ddc97cec6ba7b","entry":"select_seeds","repo":"cavalli1234/AdaLAM","repo_kind":"listed","path":"adalam/core.py","file_url":"https://github.com/cavalli1234/AdaLAM/blob/HEAD/adalam/core.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ca2ddc97cec6ba7b"}},{"code_sha256_prefix":"6af9bdca2053ef9c","entry":"stable_sort_residuals","repo":"antonbrazhnyi/AdaLAM","repo_kind":"listed","path":"adalam/ransac.py","file_url":"https://github.com/antonbrazhnyi/AdaLAM/blob/HEAD/adalam/ransac.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6af9bdca2053ef9c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}