{"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/semi-supervised-semantic-segmentation-with-1","title":"Semi-Supervised Semantic Segmentation with Cross-Consistency Training","arxiv_id":"2003.09005","date":"2020-03-19","proceeding":"CVPR 2020 6","authors":["Yassine Ouali","Céline Hudelot","Myriam Tami"],"abstract":"In this paper, we present a novel cross-consistency based semi-supervised approach for semantic segmentation. Consistency training has proven to be a powerful semi-supervised learning framework for leveraging unlabeled data under the cluster assumption, in which the decision boundary should lie in low-density regions. In this work, we first observe that for semantic segmentation, the low-density regions are more apparent within the hidden representations than within the inputs. We thus propose cross-consistency training, where an invariance of the predictions is enforced over different perturbations applied to the outputs of the encoder. Concretely, a shared encoder and a main decoder are trained in a supervised manner using the available labeled examples. To leverage the unlabeled examples, we enforce a consistency between the main decoder predictions and those of the auxiliary decoders, taking as inputs different perturbed versions of the encoder's output, and consequently, improving the encoder's representations. The proposed method is simple and can easily be extended to use additional training signal, such as image-level labels or pixel-level labels across different domains. We perform an ablation study to tease apart the effectiveness of each component, and conduct extensive experiments to demonstrate that our method achieves state-of-the-art results in several datasets.","url_abs":"https://arxiv.org/abs/2003.09005v3","url_pdf":"https://arxiv.org/pdf/2003.09005v3.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":"semi-supervised-semantic-segmentation-with-1","repo_url":"https://github.com/yassouali/CCT","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"semi-supervised-semantic-segmentation-with-1","repo_url":"https://github.com/HiLab-git/DTC","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"semi-supervised-semantic-segmentation-with-1","repo_url":"https://github.com/Luoxd1996/DTC","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"semi-supervised-semantic-segmentation-with-1","repo_url":"https://github.com/ZHKKKe/PixelSSL","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"semi-supervised-semantic-segmentation-with-1","repo_url":"https://github.com/dbash/zerowaste","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"decoder","task_name":"Decoder"},{"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":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2003.09005","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2003.09005"}},"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/HiLab-git/DTC","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Luoxd1996/DTC","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yassouali/CCT","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ZHKKKe/PixelSSL","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dbash/zerowaste","reach":null}],"summary":{"ran_honours":2,"ran":6,"ran_fixture":2,"unverified":10},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":19,"ran":9,"repositories":2}},"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":"3fb68ed6809a8085","entry":"sigmoid_rampup","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/ramps.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/ramps.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":2,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3fb68ed6809a8085"}},{"code_sha256_prefix":"214e4ee9afcfa0e3","entry":"cosine_rampdown","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/ramps.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/ramps.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":"214e4ee9afcfa0e3"}},{"code_sha256_prefix":"271f6a7053a24e6c","entry":"dice","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/metrics.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"271f6a7053a24e6c"}},{"code_sha256_prefix":"9f3489c005e0165d","entry":"dice_loss","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9f3489c005e0165d"}},{"code_sha256_prefix":"4953e4d45e6de492","entry":"dice_loss1","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4953e4d45e6de492"}},{"code_sha256_prefix":"75e298e708abee58","entry":"encode_segmap","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/utils.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"75e298e708abee58"}},{"code_sha256_prefix":"f8c429b95e4ae707","entry":"entropy_loss","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f8c429b95e4ae707"}},{"code_sha256_prefix":"60e3883cd6fa1a80","entry":"multi_scale_predict","repo":"yassouali/CCT","repo_kind":"official","path":"inference.py","file_url":"https://github.com/yassouali/CCT/blob/HEAD/inference.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"60e3883cd6fa1a80"}},{"code_sha256_prefix":"f1e67bfcea91df50","entry":"recursive_glob","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/utils.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f1e67bfcea91df50"}},{"code_sha256_prefix":"dda77a33e14993ff","entry":"upsample","repo":"ZHKKKe/PixelSSL","repo_kind":"listed","path":"pixelssl/ssl_algorithm/ssl_cct.py","file_url":"https://github.com/ZHKKKe/PixelSSL/blob/HEAD/pixelssl/ssl_algorithm/ssl_cct.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dda77a33e14993ff"}},{"code_sha256_prefix":"ca40feece5ce04cb","entry":"cal_dice","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/metrics.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/metrics.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":"ca40feece5ce04cb"}},{"code_sha256_prefix":"133472fc12305a9c","entry":"compute_dtm","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses_2.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses_2.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":"133472fc12305a9c"}},{"code_sha256_prefix":"3b9f66ea3c6c5f9c","entry":"compute_sdf","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses_2.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses_2.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":"3b9f66ea3c6c5f9c"}},{"code_sha256_prefix":"37fd4aff70632850","entry":"decode_seg_map_sequence","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/utils.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/utils.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":"37fd4aff70632850"}},{"code_sha256_prefix":"c7ba8abbb7422762","entry":"grouper","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/la_heart.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/la_heart.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":"c7ba8abbb7422762"}},{"code_sha256_prefix":"57c0f850206bf646","entry":"hd_loss","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/losses_2.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/losses_2.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":"57c0f850206bf646"}},{"code_sha256_prefix":"842cf7025c8045b6","entry":"iterate_eternally","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/la_heart.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/la_heart.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":"842cf7025c8045b6"}},{"code_sha256_prefix":"4232c309adddf9e4","entry":"iterate_once","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/dataloaders/la_heart.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/dataloaders/la_heart.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":"4232c309adddf9e4"}},{"code_sha256_prefix":"069122bd5268cc56","entry":"linear_rampup","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/ramps.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/ramps.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":"069122bd5268cc56"}},{"code_sha256_prefix":"ad6309e2c80e2b00","entry":"load_model","repo":"Luoxd1996/DTC","repo_kind":"listed","path":"code/utils/util.py","file_url":"https://github.com/Luoxd1996/DTC/blob/HEAD/code/utils/util.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":"ad6309e2c80e2b00"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}