{"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/residual-pattern-learning-for-pixel-wise-out","title":"Residual Pattern Learning for Pixel-wise Out-of-Distribution Detection in Semantic Segmentation","arxiv_id":"2211.14512","date":"2022-11-26","proceeding":"ICCV 2023 1","authors":["Yuyuan Liu","Choubo Ding","Yu Tian","Guansong Pang","Vasileios Belagiannis","Ian Reid","Gustavo Carneiro"],"abstract":"Semantic segmentation models classify pixels into a set of known (``in-distribution'') visual classes. When deployed in an open world, the reliability of these models depends on their ability not only to classify in-distribution pixels but also to detect out-of-distribution (OoD) pixels. Historically, the poor OoD detection performance of these models has motivated the design of methods based on model re-training using synthetic training images that include OoD visual objects. Although successful, these re-trained methods have two issues: 1) their in-distribution segmentation accuracy may drop during re-training, and 2) their OoD detection accuracy does not generalise well to new contexts (e.g., country surroundings) outside the training set (e.g., city surroundings). In this paper, we mitigate these issues with: (i) a new residual pattern learning (RPL) module that assists the segmentation model to detect OoD pixels without affecting the inlier segmentation performance; and (ii) a novel context-robust contrastive learning (CoroCL) that enforces RPL to robustly detect OoD pixels among various contexts. Our approach improves by around 10\\% FPR and 7\\% AuPRC the previous state-of-the-art in Fishyscapes, Segment-Me-If-You-Can, and RoadAnomaly datasets. Our code is available at: https://github.com/yyliu01/RPL.","url_abs":"https://arxiv.org/abs/2211.14512v3","url_pdf":"https://arxiv.org/pdf/2211.14512v3.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":"residual-pattern-learning-for-pixel-wise-out","repo_url":"https://github.com/yyliu01/rpl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"residual-pattern-learning-for-pixel-wise-out","repo_url":"https://github.com/yyliu01/it2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"anomaly-segmentation","task_name":"Anomaly Segmentation"},{"task_slug":"contrastive-learning","task_name":"Contrastive Learning"},{"task_slug":"ood-detection","task_name":"Out of Distribution (OOD) Detection"},{"task_slug":"out-of-distribution-detection","task_name":"Out-of-Distribution Detection"},{"task_slug":"scene-segmentation","task_name":"Scene Segmentation"},{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"}],"methods":[{"method_slug":"contrastive-learning","method_name":"Contrastive Learning"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/anomaly-detection-on-fishyscapes-1","task":"Anomaly Detection","dataset":"Fishyscapes","model":"RPL+CoroCL","rank_in_archive_order":1,"of":8,"metrics":{"AP":"95.96","FPR95":"0.52"},"uses_additional_data":true},{"leaderboard":"/sota/anomaly-detection-on-fishyscapes-l-f","task":"Anomaly Detection","dataset":"Fishyscapes L&F","model":"RPL+CoroCL","rank_in_archive_order":4,"of":18,"metrics":{"AP":"53.99","FPR95":"2.27"},"uses_additional_data":true},{"leaderboard":"/sota/anomaly-detection-on-road-anomaly","task":"Anomaly Detection","dataset":"Road Anomaly","model":"RPL+CoroCL","rank_in_archive_order":6,"of":10,"metrics":{"AP":"71.61","FPR95":"17.74"},"uses_additional_data":true},{"leaderboard":"/sota/scene-segmentation-on-streethazards","task":"Scene Segmentation","dataset":"StreetHazards","model":"LDN121-RPL","rank_in_archive_order":2,"of":3,"metrics":{"Open-mIoU":"56.3"},"uses_additional_data":true}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2211.14512","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2211.14512"}},"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/yyliu01/rpl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yyliu01/it2","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":2,"ran_draft_wrong":1,"unverified":7},"by_repo_kind":{"official":{"samples":10,"ran":3,"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":"65036122655f55ba","entry":"Upsample","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/model/mynn.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/model/mynn.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":"65036122655f55ba"}},{"code_sha256_prefix":"cd5145f17043aea6","entry":"bnrelu","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/model/wide_resnet_base.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/model/wide_resnet_base.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":"cd5145f17043aea6"}},{"code_sha256_prefix":"fac5364e2f53c6db","entry":"conv3x3","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/model/resnet.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/model/resnet.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":"e88336b0fba9336c","entry":"Norm2d","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/model/mynn.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/model/mynn.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":"e88336b0fba9336c"}},{"code_sha256_prefix":"099d45b346da1fd6","entry":"all_gather_samples","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/valid.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/valid.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":"099d45b346da1fd6"}},{"code_sha256_prefix":"fed5d097b5e9c6b5","entry":"compute_anomaly_score","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/valid.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/valid.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":"fed5d097b5e9c6b5"}},{"code_sha256_prefix":"636e8a6b9fc0f5ec","entry":"disimilarity_entropy","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/loss/PositiveEnergy.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/loss/PositiveEnergy.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":"636e8a6b9fc0f5ec"}},{"code_sha256_prefix":"3e5a5d0d501b2416","entry":"energy_loss","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/loss/PositiveEnergy.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/loss/PositiveEnergy.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":"3e5a5d0d501b2416"}},{"code_sha256_prefix":"73678314f37edd92","entry":"final_test_inlier","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/valid.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/valid.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":"73678314f37edd92"}},{"code_sha256_prefix":"f2ceca3699d06b96","entry":"forgiving_state_restore","repo":"yyliu01/rpl","repo_kind":"official","path":"rpl.code/model/mynn.py","file_url":"https://github.com/yyliu01/rpl/blob/HEAD/rpl.code/model/mynn.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":"f2ceca3699d06b96"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}