{"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/selex-self-expertise-in-fine-grained","title":"SelEx: Self-Expertise in Fine-Grained Generalized Category Discovery","arxiv_id":"2408.14371","date":"2024-08-26","proceeding":null,"authors":["Sarah Rastegar","Mohammadreza Salehi","Yuki M. Asano","Hazel Doughty","Cees G. M. Snoek"],"abstract":"In this paper, we address Generalized Category Discovery, aiming to simultaneously uncover novel categories and accurately classify known ones. Traditional methods, which lean heavily on self-supervision and contrastive learning, often fall short when distinguishing between fine-grained categories. To address this, we introduce a novel concept called `self-expertise', which enhances the model's ability to recognize subtle differences and uncover unknown categories. Our approach combines unsupervised and supervised self-expertise strategies to refine the model's discernment and generalization. Initially, hierarchical pseudo-labeling is used to provide `soft supervision', improving the effectiveness of self-expertise. Our supervised technique differs from traditional methods by utilizing more abstract positive and negative samples, aiding in the formation of clusters that can generalize to novel categories. Meanwhile, our unsupervised strategy encourages the model to sharpen its category distinctions by considering within-category examples as `hard' negatives. Supported by theoretical insights, our empirical results showcase that our method outperforms existing state-of-the-art techniques in Generalized Category Discovery across several fine-grained datasets. Our code is available at: https://github.com/SarahRastegar/SelEx.","url_abs":"https://arxiv.org/abs/2408.14371v2","url_pdf":"https://arxiv.org/pdf/2408.14371v2.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":"selex-self-expertise-in-fine-grained","repo_url":"https://github.com/sarahrastegar/selex","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"selex-self-expertise-in-fine-grained","repo_url":"https://github.com/sarahrastegar/infosieve","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2408.14371","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.14371"}},"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/sarahrastegar/selex","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sarahrastegar/infosieve","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4,"ran_fixture":1,"ran_honours":1,"unverified":5},"by_repo_kind":{"official":{"samples":11,"ran":6,"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":"167e169f064431a0","entry":"drop_add_residual_stochastic_depth","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer2.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer2.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"167e169f064431a0"}},{"code_sha256_prefix":"55120f2026b56aa2","entry":"drop_path","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"55120f2026b56aa2"}},{"code_sha256_prefix":"15d2b95b53f6db9a","entry":"evaluate_clustering","repo":"sarahrastegar/selex","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/project_utils/cluster_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"15d2b95b53f6db9a"}},{"code_sha256_prefix":"3c04490a215299f2","entry":"make_2tuple","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer2.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer2.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3c04490a215299f2"}},{"code_sha256_prefix":"e9858e26f4c51e98","entry":"named_apply","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer2.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer2.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e9858e26f4c51e98"}},{"code_sha256_prefix":"1645ca2fb55ce1f8","entry":"purity_score","repo":"sarahrastegar/selex","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/project_utils/cluster_utils.py","link_basis":"plan_row","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1645ca2fb55ce1f8"}},{"code_sha256_prefix":"569a0b5d2369b072","entry":"cluster_acc","repo":"sarahrastegar/selex","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/project_utils/cluster_utils.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":"569a0b5d2369b072"}},{"code_sha256_prefix":"40f5a2f8b0143f94","entry":"info_nce_logits","repo":"sarahrastegar/selex","repo_kind":"official","path":"methods/contrastive_training/contrastive_training.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/methods/contrastive_training/contrastive_training.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":"40f5a2f8b0143f94"}},{"code_sha256_prefix":"980dd2e8fa24f9da","entry":"pairwise_distance","repo":"sarahrastegar/selex","repo_kind":"official","path":"methods/clustering/faster_mix_k_means_pytorch.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/methods/clustering/faster_mix_k_means_pytorch.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":"980dd2e8fa24f9da"}},{"code_sha256_prefix":"995a10f898196998","entry":"vit_small","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer.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":"995a10f898196998"}},{"code_sha256_prefix":"996780ba4be89ba3","entry":"vit_tiny","repo":"sarahrastegar/selex","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/sarahrastegar/selex/blob/HEAD/models/vision_transformer.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":"996780ba4be89ba3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}