{"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/robust-multi-task-learning-and-online","title":"Robust Multi-Task Learning and Online Refinement for Spacecraft Pose Estimation across Domain Gap","arxiv_id":"2203.04275","date":"2022-03-08","proceeding":null,"authors":["Tae Ha Park","Simone D'Amico"],"abstract":"This work presents Spacecraft Pose Network v2 (SPNv2), a Convolutional Neural Network (CNN) for pose estimation of noncooperative spacecraft across domain gap. SPNv2 is a multi-scale, multi-task CNN which consists of a shared multi-scale feature encoder and multiple prediction heads that perform different tasks on a shared feature output. These tasks are all related to detection and pose estimation of a target spacecraft from an image, such as prediction of pre-defined satellite keypoints, direct pose regression, and binary segmentation of the satellite foreground. It is shown that by jointly training on different yet related tasks with extensive data augmentations on synthetic images only, the shared encoder learns features that are common across image domains that have fundamentally different visual characteristics compared to synthetic images. This work also introduces Online Domain Refinement (ODR) which refines the parameters of the normalization layers of SPNv2 on the target domain images online at deployment. Specifically, ODR performs self-supervised entropy minimization of the predicted satellite foreground, thereby improving the CNN's performance on the target domain images without their pose labels and with minimal computational efforts. The GitHub repository for SPNv2 is available at https://github.com/tpark94/spnv2.","url_abs":"https://arxiv.org/abs/2203.04275v6","url_pdf":"https://arxiv.org/pdf/2203.04275v6.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":"robust-multi-task-learning-and-online","repo_url":"https://github.com/tpark94/spnv2","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"multi-task-learning","task_name":"Multi-Task Learning"},{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":null,"task_name":"Spacecraft Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2203.04275","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.04275"}},"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/tpark94/spnv2","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":12},"by_repo_kind":{"official":{"samples":12,"ran":0,"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":"afabbf638fe66d8d","entry":"bbox_iou","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/metrics.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/metrics.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":"afabbf638fe66d8d"}},{"code_sha256_prefix":"0c593734d9f94980","entry":"build_dataset","repo":"tpark94/spnv2","repo_kind":"official","path":"core/dataset/build.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/dataset/build.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":"0c593734d9f94980"}},{"code_sha256_prefix":"195416253420fd69","entry":"delta_xy_tz_to_translation","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/postprocess.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/postprocess.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":"195416253420fd69"}},{"code_sha256_prefix":"e5fe431cf494a397","entry":"error_translation","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/metrics.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/metrics.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":"e5fe431cf494a397"}},{"code_sha256_prefix":"6e538c5360051b8b","entry":"get_dataloader","repo":"tpark94/spnv2","repo_kind":"official","path":"core/dataset/build.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/dataset/build.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":"6e538c5360051b8b"}},{"code_sha256_prefix":"252f0ed9a01b3930","entry":"get_optimizer","repo":"tpark94/spnv2","repo_kind":"official","path":"core/solver/build.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/solver/build.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":"252f0ed9a01b3930"}},{"code_sha256_prefix":"1f62d0edd80a2c79","entry":"get_scaled_parameters","repo":"tpark94/spnv2","repo_kind":"official","path":"core/nets/build.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/nets/build.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":"1f62d0edd80a2c79"}},{"code_sha256_prefix":"5e9cbeffcbc50081","entry":"get_scaler","repo":"tpark94/spnv2","repo_kind":"official","path":"core/solver/build.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/solver/build.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":"5e9cbeffcbc50081"}},{"code_sha256_prefix":"7d3b66747ff809f2","entry":"load_checkpoint","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/checkpoints.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/checkpoints.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":"7d3b66747ff809f2"}},{"code_sha256_prefix":"10d3c16eac0503a7","entry":"raw_output_to_bbox","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/postprocess.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/postprocess.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":"10d3c16eac0503a7"}},{"code_sha256_prefix":"c6162079b6fafe58","entry":"segment_iou","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/metrics.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/metrics.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":"c6162079b6fafe58"}},{"code_sha256_prefix":"f5a6b9c582abc94c","entry":"solve_pose_from_heatmaps","repo":"tpark94/spnv2","repo_kind":"official","path":"core/utils/postprocess.py","file_url":"https://github.com/tpark94/spnv2/blob/HEAD/core/utils/postprocess.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":"f5a6b9c582abc94c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}