{"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/disk-learning-local-features-with-policy","title":"DISK: Learning local features with policy gradient","arxiv_id":"2006.13566","date":"2020-06-24","proceeding":"NeurIPS 2020 12","authors":["Michał J. Tyszkiewicz","Pascal Fua","Eduard Trulls"],"abstract":"Local feature frameworks are difficult to learn in an end-to-end fashion, due to the discreteness inherent to the selection and matching of sparse keypoints. We introduce DISK (DIScrete Keypoints), a novel method that overcomes these obstacles by leveraging principles from Reinforcement Learning (RL), optimizing end-to-end for a high number of correct feature matches. Our simple yet expressive probabilistic model lets us keep the training and inference regimes close, while maintaining good enough convergence properties to reliably train from scratch. Our features can be extracted very densely while remaining discriminative, challenging commonly held assumptions about what constitutes a good keypoint, as showcased in Fig. 1, and deliver state-of-the-art results on three public benchmarks.","url_abs":"https://arxiv.org/abs/2006.13566v2","url_pdf":"https://arxiv.org/pdf/2006.13566v2.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":"disk-learning-local-features-with-policy","repo_url":"https://github.com/cvlab-epfl/disk","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"disk-learning-local-features-with-policy","repo_url":"https://github.com/fabio-sim/LightGlue-ONNX","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-matching","task_name":"Image Matching"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-matching-on-imc-phototourism","task":"Image Matching","dataset":"IMC PhotoTourism","model":"DISK","rank_in_archive_order":2,"of":8,"metrics":{"mean average accuracy @ 10":"0.65435"},"uses_additional_data":true}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.13566","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.13566"}},"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":"deterministic:regex_extraction","url":"https://github.com/cvlab-epfl/disk","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fabio-sim/LightGlue-ONNX","reach":null}],"summary":{"ran":6,"ran_fixture":1,"ran_honours":1,"unverified":1},"by_repo_kind":{"listed":{"samples":9,"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":"2117c48ae9c7855b","entry":"Conv","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2117c48ae9c7855b"}},{"code_sha256_prefix":"04dca05d9283642e","entry":"ThinUnetDownBlock","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"04dca05d9283642e"}},{"code_sha256_prefix":"44727952e7c8b71b","entry":"ThinUnetUpBlock","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"44727952e7c8b71b"}},{"code_sha256_prefix":"27dad2b9963df316","entry":"TrivialDownsample","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"27dad2b9963df316"}},{"code_sha256_prefix":"03ca43e2a2d9c9d4","entry":"TrivialUpsample","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"03ca43e2a2d9c9d4"}},{"code_sha256_prefix":"7b149b05ea2f9297","entry":"Unet","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7b149b05ea2f9297"}},{"code_sha256_prefix":"d1954d52abca6433","entry":"heatmap_to_keypoints","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d1954d52abca6433"}},{"code_sha256_prefix":"efdda0ff601d2d62","entry":"shape_as_tensor","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"efdda0ff601d2d62"}},{"code_sha256_prefix":"d7045b1f4cbcf91c","entry":"DISK","repo":"fabio-sim/LightGlue-ONNX","repo_kind":"listed","path":"lightglue_dynamo/models/disk/disk.py","file_url":"https://github.com/fabio-sim/LightGlue-ONNX/blob/HEAD/lightglue_dynamo/models/disk/disk.py","link_basis":"first_harvest_node","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":"d7045b1f4cbcf91c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}