{"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/ssb-simple-but-strong-baseline-for-boosting-1","title":"SSB: Simple but Strong Baseline for Boosting Performance of Open-Set Semi-Supervised Learning","arxiv_id":"2311.10572","date":"2023-11-17","proceeding":"ICCV 2023 1","authors":["Yue Fan","Anna Kukleva","Dengxin Dai","Bernt Schiele"],"abstract":"Semi-supervised learning (SSL) methods effectively leverage unlabeled data to improve model generalization. However, SSL models often underperform in open-set scenarios, where unlabeled data contain outliers from novel categories that do not appear in the labeled set. In this paper, we study the challenging and realistic open-set SSL setting, where the goal is to both correctly classify inliers and to detect outliers. Intuitively, the inlier classifier should be trained on inlier data only. However, we find that inlier classification performance can be largely improved by incorporating high-confidence pseudo-labeled data, regardless of whether they are inliers or outliers. Also, we propose to utilize non-linear transformations to separate the features used for inlier classification and outlier detection in the multi-task learning framework, preventing adverse effects between them. Additionally, we introduce pseudo-negative mining, which further boosts outlier detection performance. The three ingredients lead to what we call Simple but Strong Baseline (SSB) for open-set SSL. In experiments, SSB greatly improves both inlier classification and outlier detection performance, outperforming existing methods by a large margin. Our code will be released at https://github.com/YUE-FAN/SSB.","url_abs":"https://arxiv.org/abs/2311.10572v1","url_pdf":"https://arxiv.org/pdf/2311.10572v1.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":"ssb-simple-but-strong-baseline-for-boosting-1","repo_url":"https://github.com/yue-fan/ssb","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"multi-task-learning","task_name":"Multi-Task Learning"},{"task_slug":"outlier-detection","task_name":"Outlier Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2311.10572","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.10572"}},"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/yue-fan/ssb","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/YUE-FAN/SSB","reach":{"status":"ok"}}],"summary":{"ran":4,"ran_draft_wrong":3,"unverified":5},"by_repo_kind":{"official":{"samples":12,"ran":7,"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":"5e98bb442e8e8665","entry":"DistAlignQueueHook","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"5e98bb442e8e8665"}},{"code_sha256_prefix":"4024208f887303d6","entry":"Logger","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"4024208f887303d6"}},{"code_sha256_prefix":"d9def42110729a85","entry":"conv1x1","repo":"yue-fan/ssb","repo_kind":"official","path":"models/resnet_imagenet.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/models/resnet_imagenet.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":"d9def42110729a85"}},{"code_sha256_prefix":"160bb14bd76201b4","entry":"conv3x3","repo":"yue-fan/ssb","repo_kind":"official","path":"models/resnet_imagenet.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/models/resnet_imagenet.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":"160bb14bd76201b4"}},{"code_sha256_prefix":"99c1dcab51b21ada","entry":"get_cosine_schedule_with_warmup","repo":"yue-fan/ssb","repo_kind":"official","path":"main_sim_ssb.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/main_sim_ssb.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"99c1dcab51b21ada"}},{"code_sha256_prefix":"0a7c46eb67c0c21b","entry":"mish","repo":"yue-fan/ssb","repo_kind":"official","path":"models/resnext.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/models/resnext.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":"0a7c46eb67c0c21b"}},{"code_sha256_prefix":"1fa9a3804f4b98ff","entry":"update_classwise_acc","repo":"yue-fan/ssb","repo_kind":"official","path":"trainer_flex_ssb.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/trainer_flex_ssb.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":"1fa9a3804f4b98ff"}},{"code_sha256_prefix":"f252f885deb8d5a4","entry":"build_resnext","repo":"yue-fan/ssb","repo_kind":"official","path":"models/resnext.py","file_url":"https://github.com/yue-fan/ssb/blob/HEAD/models/resnext.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":"f252f885deb8d5a4"}},{"code_sha256_prefix":"15f0b85cedae6b3a","entry":"test","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"15f0b85cedae6b3a"}},{"code_sha256_prefix":"c7534185b4586d3f","entry":"test_ood","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"c7534185b4586d3f"}},{"code_sha256_prefix":"af5974bbbe60d361","entry":"train","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"af5974bbbe60d361"}},{"code_sha256_prefix":"9a342919129add7b","entry":"update_bank","repo":"YUE-FAN/SSB","repo_kind":"official","path":"trainer_sim_ssb.py","file_url":"https://github.com/YUE-FAN/SSB/blob/HEAD/trainer_sim_ssb.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":"9a342919129add7b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}