{"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/191209697","title":"DeepSFM: Structure From Motion Via Deep Bundle Adjustment","arxiv_id":"1912.09697","date":"2019-12-20","proceeding":"ECCV 2020 8","authors":["Xingkui Wei","yinda zhang","Zhuwen Li","Yanwei Fu","xiangyang xue"],"abstract":"Structure from motion (SfM) is an essential computer vision problem which has not been well handled by deep learning. One of the promising trends is to apply explicit structural constraint, e.g. 3D cost volume, into the network. However, existing methods usually assume accurate camera poses either from GT or other methods, which is unrealistic in practice. In this work, we design a physical driven architecture, namely DeepSFM, inspired by traditional Bundle Adjustment (BA), which consists of two cost volume based architectures for depth and pose estimation respectively, iteratively running to improve both. The explicit constraints on both depth (structure) and pose (motion), when combined with the learning components, bring the merit from both traditional BA and emerging deep learning technology. Extensive experiments on various datasets show that our model achieves the state-of-the-art performance on both depth and pose estimation with superior robustness against less number of inputs and the noise in initialization.","url_abs":"https://arxiv.org/abs/1912.09697v2","url_pdf":"https://arxiv.org/pdf/1912.09697v2.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":"191209697","repo_url":"https://github.com/weixk2015/DeepSFM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1912.09697","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1912.09697"}},"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/weixk2015/DeepSFM","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":16},"by_repo_kind":{"listed":{"samples":16,"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":"d0fd876aff7404fd","entry":"cam2pixel","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"inverse_warp.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/inverse_warp.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":"d0fd876aff7404fd"}},{"code_sha256_prefix":"838096d4632e974c","entry":"cam2pixel_cost","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"inverse_warp.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/inverse_warp.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":"838096d4632e974c"}},{"code_sha256_prefix":"6ddb8c98ecf2faaa","entry":"compute_errors_test","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"loss_functions.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/loss_functions.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":"6ddb8c98ecf2faaa"}},{"code_sha256_prefix":"56f26f9a1c756e3b","entry":"compute_errors_train","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"loss_functions.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/loss_functions.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":"56f26f9a1c756e3b"}},{"code_sha256_prefix":"0d38c54288d1ecd2","entry":"compute_valid_depth_mask","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"demon_metrics.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/demon_metrics.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":"0d38c54288d1ecd2"}},{"code_sha256_prefix":"d4bc98ec8543f74c","entry":"convbn","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"models/submodule.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/models/submodule.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":"d4bc98ec8543f74c"}},{"code_sha256_prefix":"c266e9e34b51eb96","entry":"convbn_3d","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"models/submodule.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/models/submodule.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":"c266e9e34b51eb96"}},{"code_sha256_prefix":"74bd17db09c781ec","entry":"convbn_3d_o","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"models/submodule.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/models/submodule.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":"74bd17db09c781ec"}},{"code_sha256_prefix":"4b564c59b0375e40","entry":"convtext","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"models/PSNet.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/models/PSNet.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":"4b564c59b0375e40"}},{"code_sha256_prefix":"4c94913988c2503b","entry":"depth2normal","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"convert.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/convert.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":"4c94913988c2503b"}},{"code_sha256_prefix":"4271119dd37b0467","entry":"imgrad","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"convert.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/convert.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":"4271119dd37b0467"}},{"code_sha256_prefix":"d73614cefe70ce50","entry":"imgrad_yx","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"convert.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/convert.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":"d73614cefe70ce50"}},{"code_sha256_prefix":"94676aa789a890f5","entry":"l1","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"demon_metrics.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/demon_metrics.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":"94676aa789a890f5"}},{"code_sha256_prefix":"8d573359b9ccf5f6","entry":"l1_inverse","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"demon_metrics.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/demon_metrics.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":"8d573359b9ccf5f6"}},{"code_sha256_prefix":"7d9d5ed0cad1ad89","entry":"pixel2cam","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"inverse_warp.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/inverse_warp.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":"7d9d5ed0cad1ad89"}},{"code_sha256_prefix":"548cf2456d12d855","entry":"read_png_depth","repo":"weixk2015/DeepSFM","repo_kind":"listed","path":"pose_sequence_folders.py","file_url":"https://github.com/weixk2015/DeepSFM/blob/HEAD/pose_sequence_folders.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":"548cf2456d12d855"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}