{"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/mvsformer-revealing-the-devil-in-transformer","title":"MVSFormer++: Revealing the Devil in Transformer's Details for Multi-View Stereo","arxiv_id":"2401.11673","date":"2024-01-22","proceeding":null,"authors":["Chenjie Cao","Xinlin Ren","Yanwei Fu"],"abstract":"Recent advancements in learning-based Multi-View Stereo (MVS) methods have prominently featured transformer-based models with attention mechanisms. However, existing approaches have not thoroughly investigated the profound influence of transformers on different MVS modules, resulting in limited depth estimation capabilities. In this paper, we introduce MVSFormer++, a method that prudently maximizes the inherent characteristics of attention to enhance various components of the MVS pipeline. Formally, our approach involves infusing cross-view information into the pre-trained DINOv2 model to facilitate MVS learning. Furthermore, we employ different attention mechanisms for the feature encoder and cost volume regularization, focusing on feature and spatial aggregations respectively. Additionally, we uncover that some design details would substantially impact the performance of transformer modules in MVS, including normalized 3D positional encoding, adaptive attention scaling, and the position of layer normalization. Comprehensive experiments on DTU, Tanks-and-Temples, BlendedMVS, and ETH3D validate the effectiveness of the proposed method. Notably, MVSFormer++ achieves state-of-the-art performance on the challenging DTU and Tanks-and-Temples benchmarks.","url_abs":"https://arxiv.org/abs/2401.11673v1","url_pdf":"https://arxiv.org/pdf/2401.11673v1.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":"mvsformer-revealing-the-devil-in-transformer","repo_url":"https://github.com/maybelx/mvsformerplusplus","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"3d-reconstruction","task_name":"3D Reconstruction"},{"task_slug":"depth-estimation","task_name":"Depth Estimation"},{"task_slug":"point-clouds","task_name":"Point Clouds"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/3d-reconstruction-on-dtu","task":"3D Reconstruction","dataset":"DTU","model":"MVSFormer++","rank_in_archive_order":1,"of":24,"metrics":{"Acc":"0.3090","Comp":"0.2521","Overall":"0.2805"},"uses_additional_data":false},{"leaderboard":"/sota/point-clouds-on-tanks-and-temples","task":"Point Clouds","dataset":"Tanks and Temples","model":"MVSFormer++","rank_in_archive_order":1,"of":21,"metrics":{"Mean F1 (Advanced)":"41.70","Mean F1 (Intermediate)":"67.03"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2401.11673","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.11673"}},"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/maybelx/mvsformerplusplus","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":11,"ran_honours":2,"ran_draft_wrong":2,"unverified":4},"by_repo_kind":{"official":{"samples":19,"ran":15,"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":"9ccabd08bdaeae67","entry":"PositionEncoding3D","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/position_encoding.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/position_encoding.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9ccabd08bdaeae67"}},{"code_sha256_prefix":"d17a4985f968317d","entry":"conf_regression","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/module.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/module.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d17a4985f968317d"}},{"code_sha256_prefix":"16a0f9b77eb60de7","entry":"depth_regression","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/module.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/module.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"16a0f9b77eb60de7"}},{"code_sha256_prefix":"79fd467dde213efb","entry":"expand_as","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/warping.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/warping.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"79fd467dde213efb"}},{"code_sha256_prefix":"d94135dc22062b8d","entry":"get_layer_id_for_vit","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/lr_decay.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/lr_decay.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d94135dc22062b8d"}},{"code_sha256_prefix":"6dc3bfdaeb18a64f","entry":"get_position_3d","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/position_encoding.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/position_encoding.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6dc3bfdaeb18a64f"}},{"code_sha256_prefix":"2c4f405822853fe6","entry":"lift","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/warping.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/warping.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2c4f405822853fe6"}},{"code_sha256_prefix":"a76fc7fb6958f97c","entry":"make_nograd_func","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"utils.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a76fc7fb6958f97c"}},{"code_sha256_prefix":"b62bec09ceeaca79","entry":"make_recursive_func","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"utils.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b62bec09ceeaca79"}},{"code_sha256_prefix":"904eb124a1c06ae8","entry":"param_groups_lrd","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/lr_decay.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/lr_decay.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"904eb124a1c06ae8"}},{"code_sha256_prefix":"a06b72ce1e7e80f4","entry":"parse_intrinsics","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/warping.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/warping.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a06b72ce1e7e80f4"}},{"code_sha256_prefix":"0bf4b207ce0d106a","entry":"read_cameras_binary","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"colmap2mvsnet.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/colmap2mvsnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0bf4b207ce0d106a"}},{"code_sha256_prefix":"8a38e306ff4c5b42","entry":"read_cameras_text","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"colmap2mvsnet.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/colmap2mvsnet.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8a38e306ff4c5b42"}},{"code_sha256_prefix":"56858e04e6fdb2ff","entry":"read_next_bytes","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"colmap2mvsnet.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/colmap2mvsnet.py","link_basis":"harvester_set","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":"56858e04e6fdb2ff"}},{"code_sha256_prefix":"312f59d39718ea4b","entry":"simple_loss","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/losses.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"312f59d39718ea4b"}},{"code_sha256_prefix":"aaa70aaf39de3e09","entry":"get_loss","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/losses.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/losses.py","link_basis":"first_harvest_node","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":"aaa70aaf39de3e09"}},{"code_sha256_prefix":"af0d20ff90759992","entry":"get_multi_stage_losses","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/losses.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/losses.py","link_basis":"first_harvest_node","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":"af0d20ff90759992"}},{"code_sha256_prefix":"0499aba1289bdef7","entry":"init_range","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"models/module.py","file_url":"https://github.com/maybelx/mvsformerplusplus/blob/HEAD/models/module.py","link_basis":"first_harvest_node","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":"0499aba1289bdef7"}},{"code_sha256_prefix":"8e28f96374f1b285","entry":"tensor2float","repo":"maybelx/mvsformerplusplus","repo_kind":"official","path":"utils.py","file_url":"https://github.com/maybelx/mvsformerplusplus/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":"8e28f96374f1b285"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}