{"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-monocular-depth-estimation-with","title":"Unsupervised Monocular Depth Estimation with Left-Right Consistency","arxiv_id":"1609.03677","date":"2016-09-13","proceeding":"CVPR 2017 7","authors":["Clément Godard","Oisin Mac Aodha","Gabriel J. Brostow"],"abstract":"Learning based methods have shown very promising results for the task of\ndepth estimation in single images. However, most existing approaches treat\ndepth prediction as a supervised regression problem and as a result, require\nvast quantities of corresponding ground truth depth data for training. Just\nrecording quality depth data in a range of environments is a challenging\nproblem. In this paper, we innovate beyond existing approaches, replacing the\nuse of explicit depth data during training with easier-to-obtain binocular\nstereo footage.\n  We propose a novel training objective that enables our convolutional neural\nnetwork to learn to perform single image depth estimation, despite the absence\nof ground truth depth data. Exploiting epipolar geometry constraints, we\ngenerate disparity images by training our network with an image reconstruction\nloss. We show that solving for image reconstruction alone results in poor\nquality depth images. To overcome this problem, we propose a novel training\nloss that enforces consistency between the disparities produced relative to\nboth the left and right images, leading to improved performance and robustness\ncompared to existing approaches. Our method produces state of the art results\nfor monocular depth estimation on the KITTI driving dataset, even outperforming\nsupervised methods that have been trained with ground truth depth.","url_abs":"http://arxiv.org/abs/1609.03677v3","url_pdf":"http://arxiv.org/pdf/1609.03677v3.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-monocular-depth-estimation-with","repo_url":"https://github.com/mrharicot/monodepth","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/IcarusWizard/monodepth-paddle","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"paddle","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/Lebhoryi/learn_monodepth","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/OniroAI/MonoDepth-PyTorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/SharhadBashar/Depth-Percetion","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/Yc174/monodepth","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/alwynmathew/monodepth-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/apllolulu/monodepth","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/iodncookie/my_loss_monodepth_master","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/janisgp/Sampling-free-Epistemic-Uncertainty","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/muskie82/CNN-DSO","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/rickgroen/depthgan","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/tudelft/filled-disparity-monodepth","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/vinceecws/Monodepth","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/vita-epfl/monoloco","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"unsupervised-monocular-depth-estimation-with","repo_url":"https://github.com/xown3197/3D_Pedestrian_Localization_2021ComputerVision","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":"depth-prediction","task_name":"Depth Prediction"},{"task_slug":"image-reconstruction","task_name":"Image Reconstruction"},{"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":[{"leaderboard":"/sota/monocular-depth-estimation-on-kitti-eigen-1","task":"Monocular Depth Estimation","dataset":"KITTI Eigen split unsupervised","model":"Monodepth S","rank_in_archive_order":54,"of":55,"metrics":{"absolute relative error":"0.133"},"uses_additional_data":false},{"leaderboard":"/sota/monocular-depth-estimation-on-mid-air-dataset","task":"Monocular Depth Estimation","dataset":"Mid-Air Dataset","model":"Monodepth","rank_in_archive_order":4,"of":6,"metrics":{"Abs Rel":"0.3136","RMSE":"13.595","RMSE log":"0.4380","SQ Rel":"8.7127"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/1609.03677","atlas_url":"https://app.syntology.ai/?focus=1609.03677","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1609.03677"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/Lebhoryi/learn_monodepth","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/apllolulu/monodepth","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mrharicot/monodepth","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rickgroen/depthgan","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/iodncookie/my_loss_monodepth_master","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vinceecws/Monodepth","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/OniroAI/MonoDepth-PyTorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Yc174/monodepth","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/vita-epfl/monoloco","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SharhadBashar/Depth-Percetion","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/muskie82/CNN-DSO","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/IcarusWizard/monodepth-paddle","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/alwynmathew/monodepth-pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/janisgp/Sampling-free-Epistemic-Uncertainty","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tudelft/filled-disparity-monodepth","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xown3197/3D_Pedestrian_Localization_2021ComputerVision","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_honours":2,"ran_fixture":1,"unverified":9},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":11,"ran":2,"repositories":3}},"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":5,"samples":[{"code_sha256_prefix":"bed135371a969180","entry":"count_text_lines","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/utils.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bed135371a969180"}},{"code_sha256_prefix":"914c9ab4e7b7469a","entry":"count_text_lines","repo":"Lebhoryi/learn_monodepth","repo_kind":"listed","path":"monodepth_main.py","file_url":"https://github.com/Lebhoryi/learn_monodepth/blob/HEAD/monodepth_main.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"914c9ab4e7b7469a"}},{"code_sha256_prefix":"92cb86f70b5d6123","entry":"post_process_disparity","repo":"mrharicot/monodepth","repo_kind":"official","path":"monodepth_main.py","file_url":"https://github.com/mrharicot/monodepth/blob/HEAD/monodepth_main.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"92cb86f70b5d6123"}},{"code_sha256_prefix":"d83582de454a0b40","entry":"compute_errors","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"eval/evaluation_utils.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/eval/evaluation_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d83582de454a0b40"}},{"code_sha256_prefix":"cf98eb3840092327","entry":"convert_disps_to_depths_kitti","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"eval/evaluation_utils.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/eval/evaluation_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cf98eb3840092327"}},{"code_sha256_prefix":"4083ce7b80803fcd","entry":"evaluate_cityscapes","repo":"rickgroen/depthgan","repo_kind":"listed","path":"evaluate.py","file_url":"https://github.com/rickgroen/depthgan/blob/HEAD/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4083ce7b80803fcd"}},{"code_sha256_prefix":"95194f001fcc993e","entry":"evaluate_eigen","repo":"rickgroen/depthgan","repo_kind":"listed","path":"evaluate.py","file_url":"https://github.com/rickgroen/depthgan/blob/HEAD/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"95194f001fcc993e"}},{"code_sha256_prefix":"557c80de93088f84","entry":"evaluate_kitti","repo":"rickgroen/depthgan","repo_kind":"listed","path":"evaluate.py","file_url":"https://github.com/rickgroen/depthgan/blob/HEAD/evaluate.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"557c80de93088f84"}},{"code_sha256_prefix":"f98fd14e1515b523","entry":"gradient_x","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"loss.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f98fd14e1515b523"}},{"code_sha256_prefix":"7155e35b4a8e3f1d","entry":"gradient_y","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"loss.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7155e35b4a8e3f1d"}},{"code_sha256_prefix":"6f8a54ff22b913e2","entry":"load_gt_disp_kitti","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"eval/evaluation_utils.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/blob/HEAD/eval/evaluation_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6f8a54ff22b913e2"}},{"code_sha256_prefix":"450c4a6f57ea4ed1","entry":"post_process_disparity","repo":"IcarusWizard/monodepth-paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/IcarusWizard/monodepth-paddle/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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"450c4a6f57ea4ed1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}