{"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/sekd-self-evolving-keypoint-detection-and","title":"SEKD: Self-Evolving Keypoint Detection and Description","arxiv_id":"2006.05077","date":"2020-06-09","proceeding":null,"authors":["Yafei Song","Ling Cai","Jia Li","Yonghong Tian","Mingyang Li"],"abstract":"Researchers have attempted utilizing deep neural network (DNN) to learn novel local features from images inspired by its recent successes on a variety of vision tasks. However, existing DNN-based algorithms have not achieved such remarkable progress that could be partly attributed to insufficient utilization of the interactive characters between local feature detector and descriptor. To alleviate these difficulties, we emphasize two desired properties, i.e., repeatability and reliability, to simultaneously summarize the inherent and interactive characters of local feature detector and descriptor. Guided by these properties, a self-supervised framework, namely self-evolving keypoint detection and description (SEKD), is proposed to learn an advanced local feature model from unlabeled natural images. Additionally, to have performance guarantees, novel training strategies have also been dedicatedly designed to minimize the gap between the learned feature and its properties. We benchmark the proposed method on homography estimation, relative pose estimation, and structure-from-motion tasks. Extensive experimental results demonstrate that the proposed method outperforms popular hand-crafted and DNN-based methods by remarkable margins. Ablation studies also verify the effectiveness of each critical training strategy. We will release our code along with the trained model publicly.","url_abs":"https://arxiv.org/abs/2006.05077v1","url_pdf":"https://arxiv.org/pdf/2006.05077v1.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":"sekd-self-evolving-keypoint-detection-and","repo_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"homography-estimation","task_name":"Homography Estimation"},{"task_slug":"keypoint-detection","task_name":"Keypoint Detection"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.05077","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.05077"}},"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/aliyun/Self-Evolving-Keypoint-Demo","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":11},"by_repo_kind":{"listed":{"samples":11,"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":11,"samples":[{"code_sha256_prefix":"06834635ea29cb25","entry":"benchmark_features","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"evaluate_homography.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/evaluate_homography.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":false,"mcp_get_code":{"code_sha256":"06834635ea29cb25"}},{"code_sha256_prefix":"b4199ed15b0438ca","entry":"benchmark_features","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"evaluate_mpn.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/evaluate_mpn.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":false,"mcp_get_code":{"code_sha256":"b4199ed15b0438ca"}},{"code_sha256_prefix":"be223a7a33ac4ba0","entry":"benchmark_features","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"evaluate_repeatability.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/evaluate_repeatability.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":false,"mcp_get_code":{"code_sha256":"be223a7a33ac4ba0"}},{"code_sha256_prefix":"1c50fa2fbc860726","entry":"binary_focal_loss","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"loss/loss_focal.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/loss/loss_focal.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":false,"mcp_get_code":{"code_sha256":"1c50fa2fbc860726"}},{"code_sha256_prefix":"25583f01c7a1051a","entry":"calculate_displacement","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"nets/sekd.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/nets/sekd.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":false,"mcp_get_code":{"code_sha256":"25583f01c7a1051a"}},{"code_sha256_prefix":"deb13554676659ec","entry":"focal_loss","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"loss/loss_focal.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/loss/loss_focal.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":false,"mcp_get_code":{"code_sha256":"deb13554676659ec"}},{"code_sha256_prefix":"6bad5b3acd244193","entry":"generate_read_function","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"evaluate_homography.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/evaluate_homography.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":false,"mcp_get_code":{"code_sha256":"6bad5b3acd244193"}},{"code_sha256_prefix":"3085901f03841471","entry":"loss_L2Net","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"loss/loss_l2net.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/loss/loss_l2net.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":false,"mcp_get_code":{"code_sha256":"3085901f03841471"}},{"code_sha256_prefix":"80f6f9d30c73e125","entry":"loss_random_sampling","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"loss/loss_random_sampling.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/loss/loss_random_sampling.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":false,"mcp_get_code":{"code_sha256":"80f6f9d30c73e125"}},{"code_sha256_prefix":"a2c6f68f82eb1784","entry":"mnn_matcher","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"evaluate_homography.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/evaluate_homography.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":false,"mcp_get_code":{"code_sha256":"a2c6f68f82eb1784"}},{"code_sha256_prefix":"7b7e414e3d968b19","entry":"one_hot","repo":"aliyun/Self-Evolving-Keypoint-Demo","repo_kind":"listed","path":"loss/loss_focal.py","file_url":"https://github.com/aliyun/Self-Evolving-Keypoint-Demo/blob/HEAD/loss/loss_focal.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":false,"mcp_get_code":{"code_sha256":"7b7e414e3d968b19"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}