{"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/deepcut-unsupervised-segmentation-using-graph","title":"DeepCut: Unsupervised Segmentation using Graph Neural Networks Clustering","arxiv_id":"2212.05853","date":"2022-12-12","proceeding":null,"authors":["Amit Aflalo","Shai Bagon","Tamar Kashti","Yonina Eldar"],"abstract":"Image segmentation is a fundamental task in computer vision. Data annotation for training supervised methods can be labor-intensive, motivating unsupervised methods. Current approaches often rely on extracting deep features from pre-trained networks to construct a graph, and classical clustering methods like k-means and normalized-cuts are then applied as a post-processing step. However, this approach reduces the high-dimensional information encoded in the features to pair-wise scalar affinities. To address this limitation, this study introduces a lightweight Graph Neural Network (GNN) to replace classical clustering methods while optimizing for the same clustering objective function. Unlike existing methods, our GNN takes both the pair-wise affinities between local image features and the raw features as input. This direct connection between the raw features and the clustering objective enables us to implicitly perform classification of the clusters between different graphs, resulting in part semantic segmentation without the need for additional post-processing steps. We demonstrate how classical clustering objectives can be formulated as self-supervised loss functions for training an image segmentation GNN. Furthermore, we employ the Correlation-Clustering (CC) objective to perform clustering without defining the number of clusters, allowing for k-less clustering. We apply the proposed method for object localization, segmentation, and semantic part segmentation tasks, surpassing state-of-the-art performance on multiple benchmarks.","url_abs":"https://arxiv.org/abs/2212.05853v3","url_pdf":"https://arxiv.org/pdf/2212.05853v3.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":"deepcut-unsupervised-segmentation-using-graph","repo_url":"https://github.com/sampl-weizmann/deepcut","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"image-segmentation","task_name":"Image Segmentation"},{"task_slug":"object-localization","task_name":"Object Localization"},{"task_slug":"object-segmentation","task_name":"Object Segmentation"},{"task_slug":"segmentation","task_name":"Segmentation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"unsupervised-object-localization","task_name":"Unsupervised Object Localization"},{"task_slug":"unsupervised-object-segmentation","task_name":"Unsupervised Object Segmentation"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/unsupervised-object-localization-on-coco-20k","task":"Unsupervised Object Localization","dataset":"COCO_20k","model":"DeepCut","rank_in_archive_order":1,"of":1,"metrics":{"CorLoc":"61.6"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-object-localization-on-pascal","task":"Unsupervised Object Localization","dataset":"PASCAL VOC 2007","model":"DeepCut","rank_in_archive_order":1,"of":1,"metrics":{"CorLoc":"69.8"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-object-localization-on-pascal-1","task":"Unsupervised Object Localization","dataset":"PASCAL VOC 2012","model":"DeepCut","rank_in_archive_order":1,"of":1,"metrics":{"CorLoc":"72.2"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-object-segmentation-on-duts","task":"Unsupervised Object Segmentation","dataset":"DUTS","model":"DeepCut","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"59.5"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-object-segmentation-on-ecssd","task":"Unsupervised Object Segmentation","dataset":"ECSSD","model":"DeepCut","rank_in_archive_order":2,"of":2,"metrics":{"mIoU":"74.6"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2212.05853","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2212.05853"}},"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/sampl-weizmann/deepcut","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_fixture":1,"ran":3,"unverified":4},"by_repo_kind":{"listed":{"samples":8,"ran":4,"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":"55120f2026b56aa2","entry":"drop_path","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"vision_transformer.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"55120f2026b56aa2"}},{"code_sha256_prefix":"04c4101fccb5c55b","entry":"get_valid_idx","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"bilateral_solver.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/bilateral_solver.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":"04c4101fccb5c55b"}},{"code_sha256_prefix":"ec22a04e890fb286","entry":"rgb2yuv","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"bilateral_solver.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/bilateral_solver.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":"ec22a04e890fb286"}},{"code_sha256_prefix":"5d9850cf710de517","entry":"yuv2rgb","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"bilateral_solver.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/bilateral_solver.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":"5d9850cf710de517"}},{"code_sha256_prefix":"57e7ea042721ced7","entry":"create_adj","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"util.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/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":"57e7ea042721ced7"}},{"code_sha256_prefix":"97f05e1bca597f48","entry":"deep_features","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"features_extract.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/features_extract.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":"97f05e1bca597f48"}},{"code_sha256_prefix":"32039f99241f69da","entry":"discr_ncut","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"util.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/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":"32039f99241f69da"}},{"code_sha256_prefix":"8df1b6ec8f138441","entry":"graph_to_mask","repo":"sampl-weizmann/deepcut","repo_kind":"listed","path":"util.py","file_url":"https://github.com/sampl-weizmann/deepcut/blob/HEAD/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":"8df1b6ec8f138441"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}