{"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/the-temporal-opportunist-self-supervised","title":"The Temporal Opportunist: Self-Supervised Multi-Frame Monocular Depth","arxiv_id":"2104.14540","date":"2021-04-29","proceeding":"CVPR 2021 1","authors":["Jamie Watson","Oisin Mac Aodha","Victor Prisacariu","Gabriel Brostow","Michael Firman"],"abstract":"Self-supervised monocular depth estimation networks are trained to predict scene depth using nearby frames as a supervision signal during training. However, for many applications, sequence information in the form of video frames is also available at test time. The vast majority of monocular networks do not make use of this extra signal, thus ignoring valuable information that could be used to improve the predicted depth. Those that do, either use computationally expensive test-time refinement techniques or off-the-shelf recurrent networks, which only indirectly make use of the geometric information that is inherently available. We propose ManyDepth, an adaptive approach to dense depth estimation that can make use of sequence information at test time, when it is available. Taking inspiration from multi-view stereo, we propose a deep end-to-end cost volume based approach that is trained using self-supervision only. We present a novel consistency loss that encourages the network to ignore the cost volume when it is deemed unreliable, e.g. in the case of moving objects, and an augmentation scheme to cope with static cameras. Our detailed experiments on both KITTI and Cityscapes show that we outperform all published self-supervised baselines, including those that use single or multiple frames at test time.","url_abs":"https://arxiv.org/abs/2104.14540v2","url_pdf":"https://arxiv.org/pdf/2104.14540v2.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":"the-temporal-opportunist-self-supervised","repo_url":"https://github.com/nianticlabs/manydepth","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":"monocular-depth-estimation","task_name":"Monocular Depth Estimation"},{"task_slug":"unsupervised-monocular-depth-estimation","task_name":"Unsupervised Monocular Depth Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2104.14540","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.14540"}},"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/nianticlabs/manydepth","reach":null}],"summary":{"ran":3},"by_repo_kind":{"official":{"samples":3,"ran":3,"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":3,"samples":[{"code_sha256_prefix":"530d03a46c20d75a","entry":"BackprojectDepth","repo":"nianticlabs/manydepth","repo_kind":"official","path":"manydepth/networks/resnet_encoder.py","file_url":"https://github.com/nianticlabs/manydepth/blob/HEAD/manydepth/networks/resnet_encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"530d03a46c20d75a"}},{"code_sha256_prefix":"a4d372bf8cbd91db","entry":"Project3D","repo":"nianticlabs/manydepth","repo_kind":"official","path":"manydepth/networks/resnet_encoder.py","file_url":"https://github.com/nianticlabs/manydepth/blob/HEAD/manydepth/networks/resnet_encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a4d372bf8cbd91db"}},{"code_sha256_prefix":"2b17e4fa0c1cda8d","entry":"ResnetEncoderMatching","repo":"nianticlabs/manydepth","repo_kind":"official","path":"manydepth/networks/resnet_encoder.py","file_url":"https://github.com/nianticlabs/manydepth/blob/HEAD/manydepth/networks/resnet_encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"2b17e4fa0c1cda8d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}