{"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/class-incremental-novel-class-discovery","title":"Class-incremental Novel Class Discovery","arxiv_id":"2207.08605","date":"2022-07-18","proceeding":null,"authors":["Subhankar Roy","Mingxuan Liu","Zhun Zhong","Nicu Sebe","Elisa Ricci"],"abstract":"We study the new task of class-incremental Novel Class Discovery (class-iNCD), which refers to the problem of discovering novel categories in an unlabelled data set by leveraging a pre-trained model that has been trained on a labelled data set containing disjoint yet related categories. Apart from discovering novel classes, we also aim at preserving the ability of the model to recognize previously seen base categories. Inspired by rehearsal-based incremental learning methods, in this paper we propose a novel approach for class-iNCD which prevents forgetting of past information about the base classes by jointly exploiting base class feature prototypes and feature-level knowledge distillation. We also propose a self-training clustering strategy that simultaneously clusters novel categories and trains a joint classifier for both the base and novel classes. This makes our method able to operate in a class-incremental setting. Our experiments, conducted on three common benchmarks, demonstrate that our method significantly outperforms state-of-the-art approaches. Code is available at https://github.com/OatmealLiu/class-iNCD","url_abs":"https://arxiv.org/abs/2207.08605v1","url_pdf":"https://arxiv.org/pdf/2207.08605v1.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":"class-incremental-novel-class-discovery","repo_url":"https://github.com/oatmealliu/class-incd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"incremental-learning","task_name":"Incremental Learning"},{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"novel-class-discovery","task_name":"Novel Class Discovery"}],"methods":[{"method_slug":"base","method_name":"BASE"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2207.08605","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2207.08605"}},"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/oatmealliu/class-incd","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/OatmealLiu/class-iNCD","reach":{"status":"ok"}}],"summary":{"ran":1,"ran_fixture":1,"unverified":4},"by_repo_kind":{"official":{"samples":6,"ran":2,"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":6,"samples":[{"code_sha256_prefix":"42bb9f310dc0ce24","entry":"BCE","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"42bb9f310dc0ce24"}},{"code_sha256_prefix":"c8ff9b85064cd9d4","entry":"cluster_acc","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c8ff9b85064cd9d4"}},{"code_sha256_prefix":"b7a6bc2d6ab2911e","entry":"PairEnum","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b7a6bc2d6ab2911e"}},{"code_sha256_prefix":"e2be79a2aa006550","entry":"fair_test1","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e2be79a2aa006550"}},{"code_sha256_prefix":"63366af166f0d657","entry":"sample_labeled_features","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"63366af166f0d657"}},{"code_sha256_prefix":"7a452c0aa517ea2b","entry":"train_IL_center","repo":"OatmealLiu/class-iNCD","repo_kind":"official","path":"incd_2step_tinyimagenet.py","file_url":"https://github.com/OatmealLiu/class-iNCD/blob/HEAD/incd_2step_tinyimagenet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7a452c0aa517ea2b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}