{"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/deep-transformation-invariant-clustering","title":"Deep Transformation-Invariant Clustering","arxiv_id":"2006.11132","date":"2020-06-19","proceeding":"NeurIPS 2020 12","authors":["Tom Monnier","Thibault Groueix","Mathieu Aubry"],"abstract":"Recent advances in image clustering typically focus on learning better deep representations. In contrast, we present an orthogonal approach that does not rely on abstract features but instead learns to predict image transformations and performs clustering directly in image space. This learning process naturally fits in the gradient-based training of K-means and Gaussian mixture model, without requiring any additional loss or hyper-parameters. It leads us to two new deep transformation-invariant clustering frameworks, which jointly learn prototypes and transformations. More specifically, we use deep learning modules that enable us to resolve invariance to spatial, color and morphological transformations. Our approach is conceptually simple and comes with several advantages, including the possibility to easily adapt the desired invariance to the task and a strong interpretability of both cluster centers and assignments to clusters. We demonstrate that our novel approach yields competitive and highly promising results on standard image clustering benchmarks. Finally, we showcase its robustness and the advantages of its improved interpretability by visualizing clustering results over real photograph collections.","url_abs":"https://arxiv.org/abs/2006.11132v2","url_pdf":"https://arxiv.org/pdf/2006.11132v2.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":"deep-transformation-invariant-clustering","repo_url":"https://github.com/monniert/dti-clustering","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":"image-clustering","task_name":"Image Clustering"},{"task_slug":"unsupervised-image-classification","task_name":"Unsupervised Image Classification"}],"methods":[{"method_slug":"interpretability","method_name":"Interpretability"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-clustering-on-fashion-mnist","task":"Image Clustering","dataset":"Fashion-MNIST","model":"DTI-Clustering","rank_in_archive_order":10,"of":13,"metrics":{"Accuracy":"0.612","NMI":"0.637"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-mnist-full","task":"Image Clustering","dataset":"MNIST-full","model":"DTI-Clustering","rank_in_archive_order":7,"of":16,"metrics":{"Accuracy":"0.979","NMI":"0.942"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-mnist-test","task":"Image Clustering","dataset":"MNIST-test","model":"DTI-Clustering","rank_in_archive_order":2,"of":11,"metrics":{"Accuracy":"0.978","NMI":"0.947"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-usps","task":"Image Clustering","dataset":"USPS","model":"DTI-Clustering","rank_in_archive_order":13,"of":16,"metrics":{"Accuracy":"0.864","NMI":"0.882"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-image-classification-on-mnist","task":"Unsupervised Image Classification","dataset":"MNIST","model":"DTI-Clustering","rank_in_archive_order":4,"of":10,"metrics":{"Accuracy":"97.3"},"uses_additional_data":false},{"leaderboard":"/sota/unsupervised-image-classification-on-svhn","task":"Unsupervised Image Classification","dataset":"SVHN","model":"DTI-Clustering","rank_in_archive_order":2,"of":4,"metrics":{"# of clusters (k)":"10","Acc":"57.4"},"uses_additional_data":true}],"syntology":{"syntology_url":"https://syntology.ai/paper/2006.11132","atlas_url":"https://app.syntology.ai/?focus=2006.11132","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.11132"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/monniert/dti-clustering","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"unverified":9},"by_repo_kind":{"official":{"samples":10,"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":"f6b944f50d3f15ae","entry":"count_parameters","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/tools.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f6b944f50d3f15ae"}},{"code_sha256_prefix":"39091286b0f4c42b","entry":"copy_with_noise","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/tools.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":"39091286b0f4c42b"}},{"code_sha256_prefix":"b9217f8a1b76f435","entry":"create_gaussian_weights","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/tools.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/tools.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":"b9217f8a1b76f435"}},{"code_sha256_prefix":"a25541080f88f65c","entry":"get_resnet_model","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/resnet.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":"a25541080f88f65c"}},{"code_sha256_prefix":"672af0454b7920fc","entry":"get_resnet_model","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/mini_resnet.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":"672af0454b7920fc"}},{"code_sha256_prefix":"837970845cb82474","entry":"load_hdf5_file","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/dataset/hdf5.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/dataset/hdf5.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":"837970845cb82474"}},{"code_sha256_prefix":"a480f539bff6f901","entry":"resnet18","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/resnet.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":"a480f539bff6f901"}},{"code_sha256_prefix":"a869ef73c638e65a","entry":"resnet20","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/mini_resnet.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":"a869ef73c638e65a"}},{"code_sha256_prefix":"d616bd25aff63b33","entry":"resnet32","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/mini_resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/mini_resnet.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":"d616bd25aff63b33"}},{"code_sha256_prefix":"7907340b312c48da","entry":"resnet34","repo":"monniert/dti-clustering","repo_kind":"official","path":"src/model/resnet.py","file_url":"https://github.com/monniert/dti-clustering/blob/HEAD/src/model/resnet.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":"7907340b312c48da"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}