{"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/train-till-you-drop-towards-stable-and-robust","title":"Train Till You Drop: Towards Stable and Robust Source-free Unsupervised 3D Domain Adaptation","arxiv_id":"2409.04409","date":"2024-09-06","proceeding":null,"authors":["Björn Michele","Alexandre Boulch","Tuan-Hung Vu","Gilles Puy","Renaud Marlet","Nicolas Courty"],"abstract":"We tackle the challenging problem of source-free unsupervised domain adaptation (SFUDA) for 3D semantic segmentation. It amounts to performing domain adaptation on an unlabeled target domain without any access to source data; the available information is a model trained to achieve good performance on the source domain. A common issue with existing SFUDA approaches is that performance degrades after some training time, which is a by product of an under-constrained and ill-posed problem. We discuss two strategies to alleviate this issue. First, we propose a sensible way to regularize the learning problem. Second, we introduce a novel criterion based on agreement with a reference model. It is used (1) to stop the training when appropriate and (2) as validator to select hyperparameters without any knowledge on the target domain. Our contributions are easy to implement and readily amenable for all SFUDA methods, ensuring stable improvements over all baselines. We validate our findings on various 3D lidar settings, achieving state-of-the-art performance. The project repository (with code) is: github.com/valeoai/TTYD.","url_abs":"https://arxiv.org/abs/2409.04409v1","url_pdf":"https://arxiv.org/pdf/2409.04409v1.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":"train-till-you-drop-towards-stable-and-robust","repo_url":"https://github.com/valeoai/ttyd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"3d-semantic-segmentation","task_name":"3D Semantic Segmentation"},{"task_slug":"3d-source-free-domain-adaptation","task_name":"3D Source-Free Domain Adaptation"},{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"},{"task_slug":"source-free-domain-adaptation","task_name":"Source-Free Domain Adaptation"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-synlidar-1","task":"3D Source-Free Domain Adaptation","dataset":"SynLiDAR-to-SemanticKITTI","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"32.4"},"uses_additional_data":false},{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-synlidar-2","task":"3D Source-Free Domain Adaptation","dataset":"SynLiDAR-to-SemanticPOSS","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"39.1"},"uses_additional_data":false},{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-nuscenes-4","task":"3D Source-Free Domain Adaptation","dataset":"nuScenes-to-Pandaset","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"65.7"},"uses_additional_data":false},{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-nuscenes-1","task":"3D Source-Free Domain Adaptation","dataset":"nuScenes-to-SemanticKITTI","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"45.4"},"uses_additional_data":false},{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-nuscenes-2","task":"3D Source-Free Domain Adaptation","dataset":"nuScenes-to-SemanticPOSS","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"64.5"},"uses_additional_data":false},{"leaderboard":"/sota/3d-source-free-domain-adaptation-on-nuscenes-3","task":"3D Source-Free Domain Adaptation","dataset":"nuScenes-to-Waymo Open Dataset","model":"TTYD","rank_in_archive_order":1,"of":1,"metrics":{"mIoU":"55.5"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2409.04409","atlas_url":"https://app.syntology.ai/?focus=2409.04409","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.04409"}},"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/valeoai/ttyd","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/valeoai/TTYD","reach":{"status":"ok"}}],"summary":{"ran":8,"ran_honours":1,"ran_draft_wrong":1,"unverified":9},"by_repo_kind":{"official":{"samples":19,"ran":10,"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":19,"samples":[{"code_sha256_prefix":"d7fe71efd7be18ce","entry":"WeightEMA","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d7fe71efd7be18ce"}},{"code_sha256_prefix":"3a4368ddb37954eb","entry":"class_mapping_da","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/Waymo.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/Waymo.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3a4368ddb37954eb"}},{"code_sha256_prefix":"2aa16d95d3187709","entry":"class_mapping_da","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/nuscenes.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/nuscenes.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2aa16d95d3187709"}},{"code_sha256_prefix":"a1a69f062e8f1dcb","entry":"class_mapping_da","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/pandaset.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/pandaset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a1a69f062e8f1dcb"}},{"code_sha256_prefix":"f6b944f50d3f15ae","entry":"count_parameters","repo":"valeoai/ttyd","repo_kind":"official","path":"networks/network.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/networks/network.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f6b944f50d3f15ae"}},{"code_sha256_prefix":"27aa4c3bde697bf7","entry":"parse_header","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/semantic_kitti.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/semantic_kitti.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"27aa4c3bde697bf7"}},{"code_sha256_prefix":"5f8cf95da4e4af73","entry":"parse_mesh_header","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/semantic_kitti.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/semantic_kitti.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5f8cf95da4e4af73"}},{"code_sha256_prefix":"2dd532d51a1cbc79","entry":"read_ply","repo":"valeoai/ttyd","repo_kind":"official","path":"datasets/semantic_kitti.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/datasets/semantic_kitti.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2dd532d51a1cbc79"}},{"code_sha256_prefix":"5db569379bf8e3f7","entry":"read_yaml_file","repo":"valeoai/ttyd","repo_kind":"official","path":"configs_and_mappings.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/configs_and_mappings.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5db569379bf8e3f7"}},{"code_sha256_prefix":"94ccab2d12942c7b","entry":"update_running_conf","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"94ccab2d12942c7b"}},{"code_sha256_prefix":"a801fbd82ec2a383","entry":"entropy","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a801fbd82ec2a383"}},{"code_sha256_prefix":"d92d30cd77706228","entry":"evel_stu","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d92d30cd77706228"}},{"code_sha256_prefix":"14efea405afb2bd4","entry":"main","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"14efea405afb2bd4"}},{"code_sha256_prefix":"b8410a4af7b88726","entry":"main","repo":"valeoai/ttyd","repo_kind":"official","path":"train_ttyd_core.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/train_ttyd_core.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b8410a4af7b88726"}},{"code_sha256_prefix":"f887cfb9d65b5961","entry":"make_a_deepcopy","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f887cfb9d65b5961"}},{"code_sha256_prefix":"4c1b0ec199898b71","entry":"pseudo_label","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4c1b0ec199898b71"}},{"code_sha256_prefix":"9b976ce7df83de81","entry":"pseudo_label","repo":"valeoai/ttyd","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/ttyd/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9b976ce7df83de81"}},{"code_sha256_prefix":"5d8d1036a9d3aed2","entry":"pseudo_labels_probs","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5d8d1036a9d3aed2"}},{"code_sha256_prefix":"2a033443755430c4","entry":"validation_performance_pseudo_labels","repo":"valeoai/TTYD","repo_kind":"official","path":"train_ttyd_st.py","file_url":"https://github.com/valeoai/TTYD/blob/HEAD/train_ttyd_st.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2a033443755430c4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}