{"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/cipr-an-efficient-framework-with-cross","title":"CiPR: An Efficient Framework with Cross-instance Positive Relations for Generalized Category Discovery","arxiv_id":"2304.06928","date":"2023-04-14","proceeding":null,"authors":["Shaozhe Hao","Kai Han","Kwan-Yee K. Wong"],"abstract":"We tackle the issue of generalized category discovery (GCD). GCD considers the open-world problem of automatically clustering a partially labelled dataset, in which the unlabelled data may contain instances from both novel categories and labelled classes. In this paper, we address the GCD problem with an unknown category number for the unlabelled data. We propose a framework, named CiPR, to bootstrap the representation by exploiting Cross-instance Positive Relations in the partially labelled data for contrastive learning, which have been neglected in existing methods. To obtain reliable cross-instance relations to facilitate representation learning, we introduce a semi-supervised hierarchical clustering algorithm, named selective neighbor clustering (SNC), which can produce a clustering hierarchy directly from the connected components of a graph constructed from selective neighbors. We further present a method to estimate the unknown class number using SNC with a joint reference score that considers clustering indexes of both labelled and unlabelled data, and extend SNC to allow label assignment for the unlabelled instances with a given class number. We thoroughly evaluate our framework on public generic image recognition datasets and challenging fine-grained datasets, and establish a new state-of-the-art. Code: https://github.com/haoosz/CiPR","url_abs":"https://arxiv.org/abs/2304.06928v2","url_pdf":"https://arxiv.org/pdf/2304.06928v2.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":"cipr-an-efficient-framework-with-cross","repo_url":"https://github.com/haoosz/cipr","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2304.06928","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2304.06928"}},"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/haoosz/cipr","reach":null}],"summary":{"ran_fixture":2,"ran_draft_wrong":2,"ran_violates":1},"by_repo_kind":{"official":{"samples":5,"ran":5,"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":"5d51de82a8ad88f9","entry":"cluster_acc","repo":"haoosz/cipr","repo_kind":"official","path":"eval_snc.py","file_url":"https://github.com/haoosz/cipr/blob/HEAD/eval_snc.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d51de82a8ad88f9"}},{"code_sha256_prefix":"d3af0307e97e993e","entry":"cluster_purity","repo":"haoosz/cipr","repo_kind":"official","path":"eval_snc.py","file_url":"https://github.com/haoosz/cipr/blob/HEAD/eval_snc.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d3af0307e97e993e"}},{"code_sha256_prefix":"d4d831024e44fed8","entry":"norm","repo":"haoosz/cipr","repo_kind":"official","path":"class_estimate.py","file_url":"https://github.com/haoosz/cipr/blob/HEAD/class_estimate.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d4d831024e44fed8"}},{"code_sha256_prefix":"11985f57f2dbed21","entry":"sample_each_class","repo":"haoosz/cipr","repo_kind":"official","path":"class_estimate.py","file_url":"https://github.com/haoosz/cipr/blob/HEAD/class_estimate.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"11985f57f2dbed21"}},{"code_sha256_prefix":"12e4656cde039f68","entry":"split_cluster_acc_v2","repo":"haoosz/cipr","repo_kind":"official","path":"eval_snc.py","file_url":"https://github.com/haoosz/cipr/blob/HEAD/eval_snc.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"12e4656cde039f68"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}