{"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/crossloc-scalable-aerial-localization","title":"CrossLoc: Scalable Aerial Localization Assisted by Multimodal Synthetic Data","arxiv_id":"2112.09081","date":"2021-12-16","proceeding":"CVPR 2022 1","authors":["Qi Yan","Jianhao Zheng","Simon Reding","Shanci Li","Iordan Doytchinov"],"abstract":"We present a visual localization system that learns to estimate camera poses in the real world with the help of synthetic data. Despite significant progress in recent years, most learning-based approaches to visual localization target at a single domain and require a dense database of geo-tagged images to function well. To mitigate the data scarcity issue and improve the scalability of the neural localization models, we introduce TOPO-DataGen, a versatile synthetic data generation tool that traverses smoothly between the real and virtual world, hinged on the geographic camera viewpoint. New large-scale sim-to-real benchmark datasets are proposed to showcase and evaluate the utility of the said synthetic data. Our experiments reveal that synthetic data generically enhances the neural network performance on real data. Furthermore, we introduce CrossLoc, a cross-modal visual representation learning approach to pose estimation that makes full use of the scene coordinate ground truth via self-supervision. Without any extra data, CrossLoc significantly outperforms the state-of-the-art methods and achieves substantially higher real-data sample efficiency. Our code and datasets are all available at https://crossloc.github.io/.","url_abs":"https://arxiv.org/abs/2112.09081v5","url_pdf":"https://arxiv.org/pdf/2112.09081v5.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":"crossloc-scalable-aerial-localization","repo_url":"https://github.com/topo-epfl/crossloc","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"crossloc-scalable-aerial-localization","repo_url":"https://github.com/TOPO-EPFL/TOPO-DataGen","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"crossloc-scalable-aerial-localization","repo_url":"https://github.com/TOPO-EPFL/CrossLoc-Benchmark-Datasets","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"pose-estimation","task_name":"Pose Estimation"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"synthetic-data-generation","task_name":"Synthetic Data Generation"},{"task_slug":"visual-localization","task_name":"Visual Localization"}],"methods":[],"datasets_introduced":[{"slug":"crossloc-benchmark-datasets","name":"CrossLoc Benchmark Datasets","full_name":""}],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2112.09081","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2112.09081"}},"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/topo-epfl/crossloc","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/TOPO-EPFL/CrossLoc-Benchmark-Datasets","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/TOPO-EPFL/TOPO-DataGen","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":10,"ran":0,"repositories":1},"listed":{"samples":1,"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":"78e4e469e6400712","entry":"coords_world_to_cam","repo":"topo-epfl/crossloc","repo_kind":"official","path":"loss/coord.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/loss/coord.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":"78e4e469e6400712"}},{"code_sha256_prefix":"61144a3508e0512e","entry":"extract_training_info","repo":"topo-epfl/crossloc","repo_kind":"official","path":"visualize.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/visualize.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":"61144a3508e0512e"}},{"code_sha256_prefix":"4afa2c066e917e5c","entry":"get_cam_mat","repo":"topo-epfl/crossloc","repo_kind":"official","path":"loss/coord.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/loss/coord.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":"4afa2c066e917e5c"}},{"code_sha256_prefix":"f4e2e606ab062829","entry":"get_output_path","repo":"topo-epfl/crossloc","repo_kind":"official","path":"finetune_decoder_single_task.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/finetune_decoder_single_task.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":"f4e2e606ab062829"}},{"code_sha256_prefix":"7bca168bac073aa1","entry":"get_pose_err","repo":"topo-epfl/crossloc","repo_kind":"official","path":"utils/evaluation.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/utils/evaluation.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":"7bca168bac073aa1"}},{"code_sha256_prefix":"47eca50cb05380c3","entry":"get_repro_err","repo":"topo-epfl/crossloc","repo_kind":"official","path":"loss/coord.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/loss/coord.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":"47eca50cb05380c3"}},{"code_sha256_prefix":"35804146bd7dff48","entry":"get_rotation_ned_in_ecef","repo":"TOPO-EPFL/CrossLoc-Benchmark-Datasets","repo_kind":"listed","path":"datasets/setup_dataset_utils.py","file_url":"https://github.com/TOPO-EPFL/CrossLoc-Benchmark-Datasets/blob/HEAD/datasets/setup_dataset_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":"35804146bd7dff48"}},{"code_sha256_prefix":"f9086ad3c68ab634","entry":"moving_average","repo":"topo-epfl/crossloc","repo_kind":"official","path":"visualize.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/visualize.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":"f9086ad3c68ab634"}},{"code_sha256_prefix":"f9827104ed8f4c00","entry":"search_directory","repo":"topo-epfl/crossloc","repo_kind":"official","path":"visualize.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/visualize.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":"f9827104ed8f4c00"}},{"code_sha256_prefix":"16fcce4238525871","entry":"semantics_classification_loss","repo":"topo-epfl/crossloc","repo_kind":"official","path":"loss/semantics.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/loss/semantics.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":"16fcce4238525871"}},{"code_sha256_prefix":"2dd80ba6870059ee","entry":"trim_semantic_label","repo":"topo-epfl/crossloc","repo_kind":"official","path":"loss/semantics.py","file_url":"https://github.com/topo-epfl/crossloc/blob/HEAD/loss/semantics.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":"2dd80ba6870059ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}