{"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/unsupervised-domain-adaptation-via-distilled","title":"Unsupervised Domain Adaptation via Distilled Discriminative Clustering","arxiv_id":"2302.11984","date":"2023-02-23","proceeding":null,"authors":["Hui Tang","YaoWei Wang","Kui Jia"],"abstract":"Unsupervised domain adaptation addresses the problem of classifying data in an unlabeled target domain, given labeled source domain data that share a common label space but follow a different distribution. Most of the recent methods take the approach of explicitly aligning feature distributions between the two domains. Differently, motivated by the fundamental assumption for domain adaptability, we re-cast the domain adaptation problem as discriminative clustering of target data, given strong privileged information provided by the closely related, labeled source data. Technically, we use clustering objectives based on a robust variant of entropy minimization that adaptively filters target data, a soft Fisher-like criterion, and additionally the cluster ordering via centroid classification. To distill discriminative source information for target clustering, we propose to jointly train the network using parallel, supervised learning objectives over labeled source data. We term our method of distilled discriminative clustering for domain adaptation as DisClusterDA. We also give geometric intuition that illustrates how constituent objectives of DisClusterDA help learn class-wisely pure, compact feature distributions. We conduct careful ablation studies and extensive experiments on five popular benchmark datasets, including a multi-source domain adaptation one. Based on commonly used backbone networks, DisClusterDA outperforms existing methods on these benchmarks. It is also interesting to observe that in our DisClusterDA framework, adding an additional loss term that explicitly learns to align class-level feature distributions across domains does harm to the adaptation performance, though more careful studies in different algorithmic frameworks are to be conducted.","url_abs":"https://arxiv.org/abs/2302.11984v1","url_pdf":"https://arxiv.org/pdf/2302.11984v1.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":"unsupervised-domain-adaptation-via-distilled","repo_url":"https://github.com/huitangtang/disclusterda","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":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"},{"task_slug":"unsupervised-domain-adaptationn","task_name":"Unsupervised Domain Adaptationn"}],"methods":[{"method_slug":"align","method_name":"ALIGN"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/unsupervised-domain-adaptation-on-visda2017","task":"Unsupervised Domain Adaptation","dataset":"VisDA2017","model":"DisClusterDA","rank_in_archive_order":13,"of":13,"metrics":{"Average Accuracy":"87.1"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.11984","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.11984"}},"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/huitangtang/disclusterda","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"ran":1,"unverified":7},"by_repo_kind":{"official":{"samples":9,"ran":2,"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":"huitangtang/disclusterda","repo_kind":"official","path":"models/resnet.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/models/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":"1d7c68b369e70ab0","entry":"has_file_allowed_extension","repo":"huitangtang/disclusterda","repo_kind":"official","path":"utils/folder.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/utils/folder.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":"1d7c68b369e70ab0"}},{"code_sha256_prefix":"4d3faaaa1c706b0b","entry":"accuracy","repo":"huitangtang/disclusterda","repo_kind":"official","path":"trainer.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/trainer.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":"4d3faaaa1c706b0b"}},{"code_sha256_prefix":"410030cf052c79b8","entry":"evaluate","repo":"huitangtang/disclusterda","repo_kind":"official","path":"trainer.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/trainer.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":"410030cf052c79b8"}},{"code_sha256_prefix":"2d2234ff68f9f460","entry":"is_image_file","repo":"huitangtang/disclusterda","repo_kind":"official","path":"utils/folder.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/utils/folder.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":"2d2234ff68f9f460"}},{"code_sha256_prefix":"614271f5fabb3651","entry":"make_dataset","repo":"huitangtang/disclusterda","repo_kind":"official","path":"utils/folder.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/utils/folder.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":"614271f5fabb3651"}},{"code_sha256_prefix":"21abb81d23a2c8d9","entry":"resnet18","repo":"huitangtang/disclusterda","repo_kind":"official","path":"models/resnet.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/models/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":"21abb81d23a2c8d9"}},{"code_sha256_prefix":"bccedc983d7db3aa","entry":"resnet34","repo":"huitangtang/disclusterda","repo_kind":"official","path":"models/resnet.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/models/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":"bccedc983d7db3aa"}},{"code_sha256_prefix":"5bc8a522b690e59f","entry":"train_compute_class_mean","repo":"huitangtang/disclusterda","repo_kind":"official","path":"trainer.py","file_url":"https://github.com/huitangtang/disclusterda/blob/HEAD/trainer.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":"5bc8a522b690e59f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}