{"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/stun-self-teaching-uncertainty-estimation-for","title":"STUN: Self-Teaching Uncertainty Estimation for Place Recognition","arxiv_id":"2203.01851","date":"2022-03-03","proceeding":null,"authors":["Kaiwen Cai","Chris Xiaoxuan Lu","Xiaowei Huang"],"abstract":"Place recognition is key to Simultaneous Localization and Mapping (SLAM) and spatial perception. However, a place recognition in the wild often suffers from erroneous predictions due to image variations, e.g., changing viewpoints and street appearance. Integrating uncertainty estimation into the life cycle of place recognition is a promising method to mitigate the impact of variations on place recognition performance. However, existing uncertainty estimation approaches in this vein are either computationally inefficient (e.g., Monte Carlo dropout) or at the cost of dropped accuracy. This paper proposes STUN, a self-teaching framework that learns to simultaneously predict the place and estimate the prediction uncertainty given an input image. To this end, we first train a teacher net using a standard metric learning pipeline to produce embedding priors. Then, supervised by the pretrained teacher net, a student net with an additional variance branch is trained to finetune the embedding priors and estimate the uncertainty sample by sample. During the online inference phase, we only use the student net to generate a place prediction in conjunction with the uncertainty. When compared with place recognition systems that are ignorant to the uncertainty, our framework features the uncertainty estimation for free without sacrificing any prediction accuracy. Our experimental results on the large-scale Pittsburgh30k dataset demonstrate that STUN outperforms the state-of-the-art methods in both recognition accuracy and the quality of uncertainty estimation.","url_abs":"https://arxiv.org/abs/2203.01851v2","url_pdf":"https://arxiv.org/pdf/2203.01851v2.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":"stun-self-teaching-uncertainty-estimation-for","repo_url":"https://github.com/ramdrop/stun","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}},{"paper_slug":"stun-self-teaching-uncertainty-estimation-for","repo_url":"https://github.com/csiro-robotics/uncertainty-lpr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"metric-learning","task_name":"Metric Learning"},{"task_slug":"simultaneous-localization-and-mapping","task_name":"Simultaneous Localization and Mapping"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2203.01851","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.01851"}},"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/csiro-robotics/uncertainty-lpr","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ramdrop/stun","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"ran_draft_wrong":1,"unverified":8},"by_repo_kind":{"official":{"samples":9,"ran":1,"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":"ad695e1e64bd704c","entry":"gem","repo":"ramdrop/stun","repo_kind":"official","path":"cirtorch/functional.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/cirtorch/functional.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ad695e1e64bd704c"}},{"code_sha256_prefix":"6eafe96fa3818df6","entry":"cal_recall_from_embeddings","repo":"ramdrop/stun","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"6eafe96fa3818df6"}},{"code_sha256_prefix":"15c361b233d1ca3a","entry":"get_whole_training_set","repo":"ramdrop/stun","repo_kind":"official","path":"datasets/pitts.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/datasets/pitts.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"15c361b233d1ca3a"}},{"code_sha256_prefix":"7d876db99add423b","entry":"get_whole_val_set","repo":"ramdrop/stun","repo_kind":"official","path":"datasets/pitts.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/datasets/pitts.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7d876db99add423b"}},{"code_sha256_prefix":"8d58609181275b23","entry":"input_transform","repo":"ramdrop/stun","repo_kind":"official","path":"datasets/pitts.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/datasets/pitts.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8d58609181275b23"}},{"code_sha256_prefix":"4272b6f966386e5d","entry":"linear_fit","repo":"ramdrop/stun","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"4272b6f966386e5d"}},{"code_sha256_prefix":"d57f881947d223c7","entry":"mac","repo":"ramdrop/stun","repo_kind":"official","path":"cirtorch/functional.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/cirtorch/functional.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d57f881947d223c7"}},{"code_sha256_prefix":"e76a50985c3f0fa0","entry":"reduce_sigma","repo":"ramdrop/stun","repo_kind":"official","path":"utils.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"e76a50985c3f0fa0"}},{"code_sha256_prefix":"40aedf01731c3391","entry":"spoc","repo":"ramdrop/stun","repo_kind":"official","path":"cirtorch/functional.py","file_url":"https://github.com/ramdrop/stun/blob/HEAD/cirtorch/functional.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"40aedf01731c3391"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}