{"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/representation-learning-for-clustering-via","title":"Representation Learning for Clustering via Building Consensus","arxiv_id":"2105.01289","date":"2021-05-04","proceeding":null,"authors":["Aniket Anand Deshmukh","Jayanth Reddy Regatti","Eren Manavoglu","Urun Dogan"],"abstract":"In this paper, we focus on unsupervised representation learning for clustering of images. Recent advances in deep clustering and unsupervised representation learning are based on the idea that different views of an input image (generated through data augmentation techniques) must be close in the representation space (exemplar consistency), and/or similar images must have similar cluster assignments (population consistency). We define an additional notion of consistency, consensus consistency, which ensures that representations are learned to induce similar partitions for variations in the representation space, different clustering algorithms or different initializations of a single clustering algorithm. We define a clustering loss by executing variations in the representation space and seamlessly integrate all three consistencies (consensus, exemplar and population) into an end-to-end learning framework. The proposed algorithm, consensus clustering using unsupervised representation learning (ConCURL), improves upon the clustering performance of state-of-the-art methods on four out of five image datasets. Furthermore, we extend the evaluation procedure for clustering to reflect the challenges encountered in real-world clustering tasks, such as maintaining clustering performance in cases with distribution shifts. We also perform a detailed ablation study for a deeper understanding of the proposed algorithm. The code and the trained models are available at https://github.com/JayanthRR/ConCURL_NCE.","url_abs":"https://arxiv.org/abs/2105.01289v2","url_pdf":"https://arxiv.org/pdf/2105.01289v2.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":"representation-learning-for-clustering-via","repo_url":"https://github.com/JayanthRR/ConCURL_NCE","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"deep-clustering","task_name":"Deep Clustering"},{"task_slug":"image-clustering","task_name":"Image Clustering"},{"task_slug":"representation-learning","task_name":"Representation Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-clustering-on-cifar-10","task":"Image Clustering","dataset":"CIFAR-10","model":"ConCURL","rank_in_archive_order":22,"of":40,"metrics":{"ARI":"0.715","Accuracy":"0.846","NMI":"0.762","Train set":"Train"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-cifar-100","task":"Image Clustering","dataset":"CIFAR-100","model":"ConCURL","rank_in_archive_order":15,"of":30,"metrics":{"ARI":"0.303","Accuracy":"0.479","NMI":"0.468","Train Set":"Train"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-imagenet-10","task":"Image Clustering","dataset":"ImageNet-10","model":"ConCURL","rank_in_archive_order":5,"of":18,"metrics":{"ARI":"0.909","Accuracy":"0.958","NMI":"0.907"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-imagenet-dog-15","task":"Image Clustering","dataset":"Imagenet-dog-15","model":"ConCURL","rank_in_archive_order":7,"of":20,"metrics":{"ARI":"0.531","Accuracy":"0.695","NMI":"0.63"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-stl-10","task":"Image Clustering","dataset":"STL-10","model":"ConCURL","rank_in_archive_order":19,"of":29,"metrics":{"Accuracy":"0.749","NMI":"0.636","Train Split":"Train+Test"},"uses_additional_data":true}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2105.01289","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2105.01289"}},"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/JayanthRR/ConCURL_NCE","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":6},"by_repo_kind":{"official":{"samples":7,"ran":1,"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":"fac5364e2f53c6db","entry":"conv3x3","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"model_utils/nce_resnet.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/model_utils/nce_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":"de5ec551fb74b9c5","entry":"byol_loss_fn","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"losses.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/losses.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":"de5ec551fb74b9c5"}},{"code_sha256_prefix":"693513ff2d202308","entry":"center_crop","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"lib/custom_transforms.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/lib/custom_transforms.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":"693513ff2d202308"}},{"code_sha256_prefix":"2afdf62a2f77e421","entry":"distributed_sinkhorn","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"losses.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/losses.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":"2afdf62a2f77e421"}},{"code_sha256_prefix":"7d0517cb29119e33","entry":"getQ","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"losses.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/losses.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":"7d0517cb29119e33"}},{"code_sha256_prefix":"abf95b2d2f20e322","entry":"random_num_generator","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"lib/custom_transforms.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/lib/custom_transforms.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":"abf95b2d2f20e322"}},{"code_sha256_prefix":"382714b2c227ba48","entry":"to_tensor","repo":"JayanthRR/ConCURL_NCE","repo_kind":"official","path":"lib/custom_transforms.py","file_url":"https://github.com/JayanthRR/ConCURL_NCE/blob/HEAD/lib/custom_transforms.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":"382714b2c227ba48"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}