{"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/classmix-segmentation-based-data-augmentation","title":"ClassMix: Segmentation-Based Data Augmentation for Semi-Supervised Learning","arxiv_id":"2007.07936","date":"2020-07-15","proceeding":null,"authors":["Viktor Olsson","Wilhelm Tranheden","Juliano Pinto","Lennart Svensson"],"abstract":"The state of the art in semantic segmentation is steadily increasing in performance, resulting in more precise and reliable segmentations in many different applications. However, progress is limited by the cost of generating labels for training, which sometimes requires hours of manual labor for a single image. Because of this, semi-supervised methods have been applied to this task, with varying degrees of success. A key challenge is that common augmentations used in semi-supervised classification are less effective for semantic segmentation. We propose a novel data augmentation mechanism called ClassMix, which generates augmentations by mixing unlabelled samples, by leveraging on the network's predictions for respecting object boundaries. We evaluate this augmentation technique on two common semi-supervised semantic segmentation benchmarks, showing that it attains state-of-the-art results. Lastly, we also provide extensive ablation studies comparing different design decisions and training regimes.","url_abs":"https://arxiv.org/abs/2007.07936v2","url_pdf":"https://arxiv.org/pdf/2007.07936v2.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":"classmix-segmentation-based-data-augmentation","repo_url":"https://github.com/WilhelmT/ClassMix","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"classmix-segmentation-based-data-augmentation","repo_url":"https://github.com/lorenmt/reco","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"semi-supervised-semantic-segmentation","task_name":"Semi-Supervised Semantic Segmentation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-3","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 100 samples labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":12,"of":13,"metrics":{"Validation mIoU":"54.07%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-2","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 12.5% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":30,"of":33,"metrics":{"Validation mIoU":"61.35%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-18","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 2% labeled","model":"ClassMix (DeepLabv2 with ResNet101, MSCOCO pre-trained)","rank_in_archive_order":2,"of":3,"metrics":{"Validation mIoU":"52.14%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-1","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 25% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":28,"of":30,"metrics":{"Validation mIoU":"63.63%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-19","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 5% labeled","model":"ClassMix (DeepLabv2 with ResNet101, MSCOCO pre-trained)","rank_in_archive_order":2,"of":3,"metrics":{"Validation mIoU":"58.77%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-8","task":"Semi-Supervised Semantic Segmentation","dataset":"Cityscapes 50% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":22,"of":23,"metrics":{"Validation mIoU":"66.29%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-9","task":"Semi-Supervised Semantic Segmentation","dataset":"PASCAL VOC 2012 25% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":25,"of":27,"metrics":{"Validation mIoU":"72.45"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-7","task":"Semi-Supervised Semantic Segmentation","dataset":"Pascal VOC 2012 1% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":5,"of":6,"metrics":{"Validation mIoU":"54.18%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-4","task":"Semi-Supervised Semantic Segmentation","dataset":"Pascal VOC 2012 12.5% labeled","model":"ClassMix","rank_in_archive_order":30,"of":38,"metrics":{"Validation mIoU":"71.00%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-6","task":"Semi-Supervised Semantic Segmentation","dataset":"Pascal VOC 2012 2% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":7,"of":12,"metrics":{"Validation mIoU":"66.15%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-semantic-segmentation-on-5","task":"Semi-Supervised Semantic Segmentation","dataset":"Pascal VOC 2012 5% labeled","model":"ClassMix (DeepLab v2 MSCOCO pretrained)","rank_in_archive_order":9,"of":14,"metrics":{"Validation mIoU":"67.77%"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.07936","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.07936"}},"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/lorenmt/reco","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/WilhelmT/ClassMix","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":3,"ran_draft_wrong":1,"ran_fixture":1,"unverified":14},"by_repo_kind":{"official":{"samples":19,"ran":5,"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":0,"samples":[{"code_sha256_prefix":"fcbd501f30a007d4","entry":"color_map","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"evaluateSSL.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/evaluateSSL.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fcbd501f30a007d4"}},{"code_sha256_prefix":"fac5364e2f53c6db","entry":"conv3x3","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"model/deeplabv2.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/model/deeplabv2.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"799a094d0124a46c","entry":"get_label_vector","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"evaluateSSL.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/evaluateSSL.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"799a094d0124a46c"}},{"code_sha256_prefix":"b3b7c1c716f4ca66","entry":"lr_poly","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"trainSSL.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/trainSSL.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b3b7c1c716f4ca66"}},{"code_sha256_prefix":"27504cbeb5811ea6","entry":"outS","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"model/deeplabv2.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/model/deeplabv2.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"27504cbeb5811ea6"}},{"code_sha256_prefix":"68fab2021abbbebf","entry":"Res_Deeplab","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"model/deeplabv2.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/model/deeplabv2.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"68fab2021abbbebf"}},{"code_sha256_prefix":"bb18b872b207d4a2","entry":"colorJitter","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformsgpu.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformsgpu.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bb18b872b207d4a2"}},{"code_sha256_prefix":"980e8f8763638799","entry":"colorize_mask","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/helpers.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/helpers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"980e8f8763638799"}},{"code_sha256_prefix":"b0cd1f9681d630e2","entry":"convert_model","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/sync_batchnorm/batchnorm.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/sync_batchnorm/batchnorm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b0cd1f9681d630e2"}},{"code_sha256_prefix":"d6015f0e8b0685cc","entry":"customsoftmax","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/loss.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/loss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d6015f0e8b0685cc"}},{"code_sha256_prefix":"79963969c998c40d","entry":"flip","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformsgpu.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformsgpu.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"79963969c998c40d"}},{"code_sha256_prefix":"b36157ea719029fe","entry":"gaussian_blur","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformsgpu.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformsgpu.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b36157ea719029fe"}},{"code_sha256_prefix":"78c73917d17c705c","entry":"generate_class_mask","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformmasks.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformmasks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"78c73917d17c705c"}},{"code_sha256_prefix":"db898bc1ff25e367","entry":"generate_cow_mask","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformmasks.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformmasks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"db898bc1ff25e367"}},{"code_sha256_prefix":"50a4b555e559ce5e","entry":"generate_cutout_mask","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/transformmasks.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/transformmasks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"50a4b555e559ce5e"}},{"code_sha256_prefix":"fb1d8f93c75b5433","entry":"get_iou","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"evaluateSSL.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/evaluateSSL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fb1d8f93c75b5433"}},{"code_sha256_prefix":"623804a7cb75739e","entry":"get_upsampling_weight","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/helpers.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/helpers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"623804a7cb75739e"}},{"code_sha256_prefix":"d46e561fba210e1a","entry":"get_voc_palette","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"utils/palette.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/utils/palette.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d46e561fba210e1a"}},{"code_sha256_prefix":"d4002df13f6d42ed","entry":"sigmoid_ramp_up","repo":"WilhelmT/ClassMix","repo_kind":"official","path":"trainSSL.py","file_url":"https://github.com/WilhelmT/ClassMix/blob/HEAD/trainSSL.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d4002df13f6d42ed"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}