{"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/cloudfixer-test-time-adaptation-for-3d-point","title":"CloudFixer: Test-Time Adaptation for 3D Point Clouds via Diffusion-Guided Geometric Transformation","arxiv_id":"2407.16193","date":"2024-07-23","proceeding":null,"authors":["Hajin Shim","Changhun Kim","Eunho Yang"],"abstract":"3D point clouds captured from real-world sensors frequently encompass noisy points due to various obstacles, such as occlusion, limited resolution, and variations in scale. These challenges hinder the deployment of pre-trained point cloud recognition models trained on clean point clouds, leading to significant performance degradation. While test-time adaptation (TTA) strategies have shown promising results on this issue in the 2D domain, their application to 3D point clouds remains under-explored. Among TTA methods, an input adaptation approach, which directly converts test instances to the source domain using a pre-trained diffusion model, has been proposed in the 2D domain. Despite its robust TTA performance in practical situations, naively adopting this into the 3D domain may be suboptimal due to the neglect of inherent properties of point clouds, and its prohibitive computational cost. Motivated by these limitations, we propose CloudFixer, a test-time input adaptation method tailored for 3D point clouds, employing a pre-trained diffusion model. Specifically, CloudFixer optimizes geometric transformation parameters with carefully designed objectives that leverage the geometric properties of point clouds. We also substantially improve computational efficiency by avoiding backpropagation through the diffusion model and a prohibitive generation process. Furthermore, we propose an online model adaptation strategy by aligning the original model prediction with that of the adapted input. Extensive experiments showcase the superiority of CloudFixer over various TTA baselines, excelling in handling common corruptions and natural distribution shifts across diverse real-world scenarios. Our code is available at https://github.com/shimazing/CloudFixer","url_abs":"https://arxiv.org/abs/2407.16193v1","url_pdf":"https://arxiv.org/pdf/2407.16193v1.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":[],"tasks":[{"task_slug":"computational-efficiency","task_name":"Computational Efficiency"},{"task_slug":"test-time-adaptation","task_name":"Test-time Adaptation"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2407.16193","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.16193"}},"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":"deterministic:regex_extraction","url":"https://github.com/shimazing/CloudFixer","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":10,"ran_fixture":2,"ran_violates":1,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":16,"ran":13,"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":"df23da82fbd7ff7b","entry":"count_parameters","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/model_helper.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/model_helper.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":"df23da82fbd7ff7b"}},{"code_sha256_prefix":"9a8756778dd8234a","entry":"get_graph_feature","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"classifier/models.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/classifier/models.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9a8756778dd8234a"}},{"code_sha256_prefix":"f00fffed990205f4","entry":"get_optim","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"diffusion/build_model.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/diffusion/build_model.py","link_basis":"first_harvest_node","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":"f00fffed990205f4"}},{"code_sha256_prefix":"43510d2695421124","entry":"import_model","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/model_helper.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/model_helper.py","link_basis":"first_harvest_node","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":"43510d2695421124"}},{"code_sha256_prefix":"cdd0141594039dcb","entry":"knn","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"classifier/models.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/classifier/models.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":"cdd0141594039dcb"}},{"code_sha256_prefix":"dc21bf2cf5f7160d","entry":"min_max_normalize","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"classifier/models.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/classifier/models.py","link_basis":"first_harvest_node","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":"dc21bf2cf5f7160d"}},{"code_sha256_prefix":"c3cb7594a2a0ff42","entry":"rotate_batch","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/rotnet_utils.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/rotnet_utils.py","link_basis":"first_harvest_node","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":"c3cb7594a2a0ff42"}},{"code_sha256_prefix":"f7c1ac6b75f91e49","entry":"rotate_batch_with_labels","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/rotnet_utils.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/rotnet_utils.py","link_basis":"first_harvest_node","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":"f7c1ac6b75f91e49"}},{"code_sha256_prefix":"a9abc40d045ad04c","entry":"rotate_point_cloud_by_angle","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/rotnet_utils.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/rotnet_utils.py","link_basis":"first_harvest_node","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":"a9abc40d045ad04c"}},{"code_sha256_prefix":"a82694d00afd7354","entry":"sample","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"train_dm.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/train_dm.py","link_basis":"first_harvest_node","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":"a82694d00afd7354"}},{"code_sha256_prefix":"6ae0cdec9fe5f43b","entry":"softmax_entropy","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/losses.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/losses.py","link_basis":"first_harvest_node","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":"6ae0cdec9fe5f43b"}},{"code_sha256_prefix":"7c508037b40522af","entry":"str2bool","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"cfgs/cfgs_train_classifier.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/cfgs/cfgs_train_classifier.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7c508037b40522af"}},{"code_sha256_prefix":"90c529ca8e85d3db","entry":"sum_except_batch","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/losses.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/losses.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":"90c529ca8e85d3db"}},{"code_sha256_prefix":"b8c2aca158049aa6","entry":"compute_loss_and_nll","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"utils/losses.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/utils/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":"b8c2aca158049aa6"}},{"code_sha256_prefix":"0e98b0df5bd3b28c","entry":"split_set","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"train_classifier.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/train_classifier.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":"0e98b0df5bd3b28c"}},{"code_sha256_prefix":"181c563360b63a31","entry":"test","repo":"shimazing/CloudFixer","repo_kind":"found_in_text","path":"train_classifier.py","file_url":"https://github.com/shimazing/CloudFixer/blob/HEAD/train_classifier.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":"181c563360b63a31"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}