{"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/metagcd-learning-to-continually-learn-in","title":"MetaGCD: Learning to Continually Learn in Generalized Category Discovery","arxiv_id":"2308.11063","date":"2023-08-21","proceeding":"ICCV 2023 1","authors":["Yanan Wu","Zhixiang Chi","Yang Wang","Songhe Feng"],"abstract":"In this paper, we consider a real-world scenario where a model that is trained on pre-defined classes continually encounters unlabeled data that contains both known and novel classes. The goal is to continually discover novel classes while maintaining the performance in known classes. We name the setting Continual Generalized Category Discovery (C-GCD). Existing methods for novel class discovery cannot directly handle the C-GCD setting due to some unrealistic assumptions, such as the unlabeled data only containing novel classes. Furthermore, they fail to discover novel classes in a continual fashion. In this work, we lift all these assumptions and propose an approach, called MetaGCD, to learn how to incrementally discover with less forgetting. Our proposed method uses a meta-learning framework and leverages the offline labeled data to simulate the testing incremental learning process. A meta-objective is defined to revolve around two conflicting learning objectives to achieve novel class discovery without forgetting. Furthermore, a soft neighborhood-based contrastive network is proposed to discriminate uncorrelated images while attracting correlated images. We build strong baselines and conduct extensive experiments on three widely used benchmarks to demonstrate the superiority of our method.","url_abs":"https://arxiv.org/abs/2308.11063v2","url_pdf":"https://arxiv.org/pdf/2308.11063v2.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":"metagcd-learning-to-continually-learn-in","repo_url":"https://github.com/ynanwu/metagcd","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":"meta-learning","task_name":"Meta-Learning"},{"task_slug":"novel-class-discovery","task_name":"Novel Class Discovery"}],"methods":[{"method_slug":"fail","method_name":"fail"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2308.11063","atlas_url":"https://app.syntology.ai/?focus=2308.11063","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2308.11063"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/ynanwu/metagcd","reach":{"status":"ok"}}],"summary":{"ran_fixture":1,"ran":5,"unverified":6},"by_repo_kind":{"official":{"samples":12,"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":12,"samples":[{"code_sha256_prefix":"55120f2026b56aa2","entry":"drop_path","repo":"ynanwu/metagcd","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/ynanwu/metagcd/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"55120f2026b56aa2"}},{"code_sha256_prefix":"15d2b95b53f6db9a","entry":"evaluate_clustering","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/project_utils/cluster_utils.py","link_basis":"harvester_set","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":"15d2b95b53f6db9a"}},{"code_sha256_prefix":"8334bb1bcb28d820","entry":"info_nce_logits","repo":"ynanwu/metagcd","repo_kind":"official","path":"models/utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/models/utils.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":"8334bb1bcb28d820"}},{"code_sha256_prefix":"1645ca2fb55ce1f8","entry":"purity_score","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/project_utils/cluster_utils.py","link_basis":"harvester_set","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":"1645ca2fb55ce1f8"}},{"code_sha256_prefix":"bc2c748ee9fffddf","entry":"strip_state_dict","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/general_utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/project_utils/general_utils.py","link_basis":"harvester_set","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":"bc2c748ee9fffddf"}},{"code_sha256_prefix":"443a6ab0aca3d0e3","entry":"transform_moco_state_dict","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/general_utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/project_utils/general_utils.py","link_basis":"harvester_set","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":"443a6ab0aca3d0e3"}},{"code_sha256_prefix":"569a0b5d2369b072","entry":"cluster_acc","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/cluster_utils.py","file_url":"https://github.com/ynanwu/metagcd/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"569a0b5d2369b072"}},{"code_sha256_prefix":"aacf96bb3684f3d0","entry":"get_dino_head_weights","repo":"ynanwu/metagcd","repo_kind":"official","path":"project_utils/general_utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/project_utils/general_utils.py","link_basis":"harvester_set","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":"aacf96bb3684f3d0"}},{"code_sha256_prefix":"b7dcadef8ac64d4d","entry":"meta_update_model","repo":"ynanwu/metagcd","repo_kind":"official","path":"models/utils.py","file_url":"https://github.com/ynanwu/metagcd/blob/HEAD/models/utils.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":"b7dcadef8ac64d4d"}},{"code_sha256_prefix":"980dd2e8fa24f9da","entry":"pairwise_distance","repo":"ynanwu/metagcd","repo_kind":"official","path":"methods/clustering/faster_mix_k_means_pytorch.py","file_url":"https://github.com/ynanwu/metagcd/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"980dd2e8fa24f9da"}},{"code_sha256_prefix":"995a10f898196998","entry":"vit_small","repo":"ynanwu/metagcd","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/ynanwu/metagcd/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"995a10f898196998"}},{"code_sha256_prefix":"996780ba4be89ba3","entry":"vit_tiny","repo":"ynanwu/metagcd","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/ynanwu/metagcd/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"996780ba4be89ba3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}