{"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/novel-class-discovery-for-ultra-fine-grained","title":"Novel Class Discovery for Ultra-Fine-Grained Visual Categorization","arxiv_id":"2405.06283","date":"2024-05-10","proceeding":"CVPR 2024 1","authors":["Yu Liu","Yaqi Cai","Qi Jia","Binglin Qiu","Weimin WANG","Nan Pu"],"abstract":"Ultra-fine-grained visual categorization (Ultra-FGVC) aims at distinguishing highly similar sub-categories within fine-grained objects, such as different soybean cultivars. Compared to traditional fine-grained visual categorization, Ultra-FGVC encounters more hurdles due to the small inter-class and large intra-class variation. Given these challenges, relying on human annotation for Ultra-FGVC is impractical. To this end, our work introduces a novel task termed Ultra-Fine-Grained Novel Class Discovery (UFG-NCD), which leverages partially annotated data to identify new categories of unlabeled images for Ultra-FGVC. To tackle this problem, we devise a Region-Aligned Proxy Learning (RAPL) framework, which comprises a Channel-wise Region Alignment (CRA) module and a Semi-Supervised Proxy Learning (SemiPL) strategy. The CRA module is designed to extract and utilize discriminative features from local regions, facilitating knowledge transfer from labeled to unlabeled classes. Furthermore, SemiPL strengthens representation learning and knowledge transfer with proxy-guided supervised learning and proxy-guided contrastive learning. Such techniques leverage class distribution information in the embedding space, improving the mining of subtle differences between labeled and unlabeled ultra-fine-grained classes. Extensive experiments demonstrate that RAPL significantly outperforms baselines across various datasets, indicating its effectiveness in handling the challenges of UFG-NCD. Code is available at https://github.com/SSDUT-Caiyq/UFG-NCD.","url_abs":"https://arxiv.org/abs/2405.06283v1","url_pdf":"https://arxiv.org/pdf/2405.06283v1.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":"novel-class-discovery-for-ultra-fine-grained","repo_url":"https://github.com/ssdut-caiyq/ufg-ncd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"fine-grained-visual-categorization","task_name":"Fine-Grained Visual Categorization"},{"task_slug":"novel-class-discovery","task_name":"Novel Class Discovery"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"transfer-learning","task_name":"Transfer Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.06283","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.06283"}},"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/ssdut-caiyq/ufg-ncd","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/SSDUT-Caiyq/UFG-NCD","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":2,"ran_fixture":1,"ran":8,"ran_violates":1,"unverified":1},"by_repo_kind":{"official":{"samples":13,"ran":12,"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":13,"samples":[{"code_sha256_prefix":"158bf4c3a5f11f04","entry":"conv1x1","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"models/resnet50.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/models/resnet50.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":"158bf4c3a5f11f04"}},{"code_sha256_prefix":"29df79c9fdb0cee8","entry":"conv3x3","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"models/resnet50.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/models/resnet50.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":"29df79c9fdb0cee8"}},{"code_sha256_prefix":"55120f2026b56aa2","entry":"drop_path","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/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":"989da03c9daf897b","entry":"get_multicrop_transform","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"FineGrained/augmentations/resnet_transform.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/FineGrained/augmentations/resnet_transform.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":"989da03c9daf897b"}},{"code_sha256_prefix":"b0cada34bcabce0e","entry":"get_swa_model_","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"utils/get_swa_model.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/utils/get_swa_model.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":"b0cada34bcabce0e"}},{"code_sha256_prefix":"f3d4ce738fce6463","entry":"get_train_val_indices","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"FineGrained/cifar.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/FineGrained/cifar.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":"f3d4ce738fce6463"}},{"code_sha256_prefix":"3a66d453e02b481a","entry":"get_transforms","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"FineGrained/augmentations/resnet_transform.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/FineGrained/augmentations/resnet_transform.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":"3a66d453e02b481a"}},{"code_sha256_prefix":"2586b178b48ed611","entry":"pdist","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"utils/Relaxed_losses.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/utils/Relaxed_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":"2586b178b48ed611"}},{"code_sha256_prefix":"7c508037b40522af","entry":"str2bool","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"discovery_learning.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/discovery_learning.py","link_basis":"plan_row","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7c508037b40522af"}},{"code_sha256_prefix":"905aedc67507c77b","entry":"subsample_classes","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"FineGrained/cifar.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/FineGrained/cifar.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":"905aedc67507c77b"}},{"code_sha256_prefix":"6b976c03af7e2ffc","entry":"subsample_dataset","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"FineGrained/cifar.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/FineGrained/cifar.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":"6b976c03af7e2ffc"}},{"code_sha256_prefix":"6322d561ced017bc","entry":"vit_small","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/blob/HEAD/models/vision_transformer.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":"6322d561ced017bc"}},{"code_sha256_prefix":"92e76c9d03c24769","entry":"vit_tiny","repo":"SSDUT-Caiyq/UFG-NCD","repo_kind":"official","path":"models/vision_transformer.py","file_url":"https://github.com/SSDUT-Caiyq/UFG-NCD/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":"92e76c9d03c24769"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}