{"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/generalized-continual-category-discovery","title":"Category Adaptation Meets Projected Distillation in Generalized Continual Category Discovery","arxiv_id":"2308.12112","date":"2023-08-23","proceeding":null,"authors":["Grzegorz Rypeść","Daniel Marczak","Sebastian Cygert","Tomasz Trzciński","Bartłomiej Twardowski"],"abstract":"Generalized Continual Category Discovery (GCCD) tackles learning from sequentially arriving, partially labeled datasets while uncovering new categories. Traditional methods depend on feature distillation to prevent forgetting the old knowledge. However, this strategy restricts the model's ability to adapt and effectively distinguish new categories. To address this, we introduce a novel technique integrating a learnable projector with feature distillation, thus enhancing model adaptability without sacrificing past knowledge. The resulting distribution shift of the previously learned categories is mitigated with the auxiliary category adaptation network. We demonstrate that while each component offers modest benefits individually, their combination - dubbed CAMP (Category Adaptation Meets Projected distillation) - significantly improves the balance between learning new information and retaining old. CAMP exhibits superior performance across several GCCD and Class Incremental Learning scenarios. The code is available at https://github.com/grypesc/CAMP.","url_abs":"https://arxiv.org/abs/2308.12112v4","url_pdf":"https://arxiv.org/pdf/2308.12112v4.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":"generalized-continual-category-discovery","repo_url":"https://github.com/grypesc/camp","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"class-incremental-learning","task_name":"Class Incremental Learning"},{"task_slug":"continual-learning","task_name":"Continual Learning"},{"task_slug":"incremental-learning","task_name":"Incremental Learning"},{"task_slug":"partially-labeled-datasets","task_name":"Partially Labeled Datasets"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"class-incremental-learning-1","task_name":"class-incremental learning"}],"methods":[{"method_slug":"fail","method_name":"fail"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2308.12112","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.12112"}},"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/grypesc/camp","reach":{"status":"ok"}}],"summary":{"ran_fixture":1,"ran_draft_wrong":1,"ran":1,"unverified":3},"by_repo_kind":{"official":{"samples":6,"ran":3,"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":"55120f2026b56aa2","entry":"drop_path","repo":"grypesc/camp","repo_kind":"official","path":"approaches/networks/vit.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/approaches/networks/vit.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"55120f2026b56aa2"}},{"code_sha256_prefix":"ec22c16f1e0653f7","entry":"get_params_groups","repo":"grypesc/camp","repo_kind":"official","path":"approaches/camp.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/approaches/camp.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ec22c16f1e0653f7"}},{"code_sha256_prefix":"c2cb4004f0d0ce2a","entry":"info_nce_logits","repo":"grypesc/camp","repo_kind":"official","path":"utils/losses.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/utils/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c2cb4004f0d0ce2a"}},{"code_sha256_prefix":"7dd3693c86f04fcd","entry":"get_all_tasks_dataloader","repo":"grypesc/camp","repo_kind":"official","path":"datasets/base.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/datasets/base.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":"7dd3693c86f04fcd"}},{"code_sha256_prefix":"69e87eaa4f80fc4d","entry":"vit_small","repo":"grypesc/camp","repo_kind":"official","path":"approaches/networks/vit.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/approaches/networks/vit.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":"69e87eaa4f80fc4d"}},{"code_sha256_prefix":"71f4c23ac114a32d","entry":"vit_tiny","repo":"grypesc/camp","repo_kind":"official","path":"approaches/networks/vit.py","file_url":"https://github.com/grypesc/camp/blob/HEAD/approaches/networks/vit.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":"71f4c23ac114a32d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}