{"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-adaptation-from-repeated","title":"Unsupervised Adaptation from Repeated Traversals for Autonomous Driving","arxiv_id":"2303.15286","date":"2023-03-27","proceeding":null,"authors":["Yurong You","Cheng Perng Phoo","Katie Z Luo","Travis Zhang","Wei-Lun Chao","Bharath Hariharan","Mark Campbell","Kilian Q. Weinberger"],"abstract":"For a self-driving car to operate reliably, its perceptual system must generalize to the end-user's environment -- ideally without additional annotation efforts. One potential solution is to leverage unlabeled data (e.g., unlabeled LiDAR point clouds) collected from the end-users' environments (i.e. target domain) to adapt the system to the difference between training and testing environments. While extensive research has been done on such an unsupervised domain adaptation problem, one fundamental problem lingers: there is no reliable signal in the target domain to supervise the adaptation process. To overcome this issue we observe that it is easy to collect unsupervised data from multiple traversals of repeated routes. While different from conventional unsupervised domain adaptation, this assumption is extremely realistic since many drivers share the same roads. We show that this simple additional assumption is sufficient to obtain a potent signal that allows us to perform iterative self-training of 3D object detectors on the target domain. Concretely, we generate pseudo-labels with the out-of-domain detector but reduce false positives by removing detections of supposedly mobile objects that are persistent across traversals. Further, we reduce false negatives by encouraging predictions in regions that are not persistent. We experiment with our approach on two large-scale driving datasets and show remarkable improvement in 3D object detection of cars, pedestrians, and cyclists, bringing us a step closer to generalizable autonomous driving.","url_abs":"https://arxiv.org/abs/2303.15286v1","url_pdf":"https://arxiv.org/pdf/2303.15286v1.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-adaptation-from-repeated","repo_url":"https://github.com/yurongyou/rote-da","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"3d-object-detection","task_name":"3D Object Detection"},{"task_slug":"autonomous-driving","task_name":"Autonomous Driving"},{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"object-detection","task_name":"Object Detection"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"},{"task_slug":"object-detection-1","task_name":"object-detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.15286","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.15286"}},"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/yurongyou/rote-da","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_violates":1,"ran":10,"ran_fixture":1,"unverified":4},"by_repo_kind":{"official":{"samples":16,"ran":12,"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":"b8e95809ca2c17c9","entry":"sigmoid","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/p2_score_filtering_lidar_consistency.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/p2_score_filtering_lidar_consistency.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":2,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b8e95809ca2c17c9"}},{"code_sha256_prefix":"dd2865592c40bf95","entry":"box_to_string","repo":"yurongyou/rote-da","repo_kind":"official","path":"data_preprocessing/lyft/lyft2kitti.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/data_preprocessing/lyft/lyft2kitti.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":"dd2865592c40bf95"}},{"code_sha256_prefix":"74ac280ac0823fc6","entry":"cart2hom","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/gather_past_traversals.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/gather_past_traversals.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":"74ac280ac0823fc6"}},{"code_sha256_prefix":"68d59bd1b88d6e20","entry":"cls_type_to_id","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/kitti_util.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/kitti_util.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":"68d59bd1b88d6e20"}},{"code_sha256_prefix":"306616f38b29c8f3","entry":"in_hull","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/pre_compute_ith365_box_statistics.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/pre_compute_ith365_box_statistics.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":"306616f38b29c8f3"}},{"code_sha256_prefix":"37c1e89b5864f71a","entry":"load_velo_scan","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/gather_past_traversals.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/gather_past_traversals.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":"37c1e89b5864f71a"}},{"code_sha256_prefix":"145ca2df8e53618f","entry":"postprocessing","repo":"yurongyou/rote-da","repo_kind":"official","path":"data_preprocessing/lyft/lyft2kitti.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/data_preprocessing/lyft/lyft2kitti.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":"145ca2df8e53618f"}},{"code_sha256_prefix":"18b226cb7bed941a","entry":"precompute_affinity_matrix","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/clustering_utils.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/clustering_utils.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"18b226cb7bed941a"}},{"code_sha256_prefix":"ebebb4d0ffe1438f","entry":"remove_center","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/pre_compute_p2_score.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/pre_compute_p2_score.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":"ebebb4d0ffe1438f"}},{"code_sha256_prefix":"8843d80ab666c4e9","entry":"rotx","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/kitti_util.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/kitti_util.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":"8843d80ab666c4e9"}},{"code_sha256_prefix":"ae86074e10e1dfd7","entry":"roty","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/kitti_util.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/kitti_util.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":"ae86074e10e1dfd7"}},{"code_sha256_prefix":"8b80c6bbc9d282b1","entry":"transform_points","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/gather_past_traversals.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/gather_past_traversals.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":"8b80c6bbc9d282b1"}},{"code_sha256_prefix":"4fd359829e536e38","entry":"check_numpy_to_torch","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/iou3d_nms/iou3d_nms_utils.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/iou3d_nms/iou3d_nms_utils.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":"4fd359829e536e38"}},{"code_sha256_prefix":"4c924b616bccfdaf","entry":"filter_by_ppscore","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/p2_score_filtering_lidar_consistency.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/p2_score_filtering_lidar_consistency.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":"4c924b616bccfdaf"}},{"code_sha256_prefix":"e43414e20da78858","entry":"is_valid_cluster","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/clustering_utils.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/clustering_utils.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":"e43414e20da78858"}},{"code_sha256_prefix":"c65d0ed036471f5d","entry":"smoothing","repo":"yurongyou/rote-da","repo_kind":"official","path":"p2_score/utils/clustering_utils.py","file_url":"https://github.com/yurongyou/rote-da/blob/HEAD/p2_score/utils/clustering_utils.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":"c65d0ed036471f5d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}