{"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/displacement-invariant-matching-cost-learning","title":"Displacement-Invariant Matching Cost Learning for Accurate Optical Flow Estimation","arxiv_id":"2010.14851","date":"2020-10-28","proceeding":"NeurIPS 2020 12","authors":["Jianyuan Wang","Yiran Zhong","Yuchao Dai","Kaihao Zhang","Pan Ji","Hongdong Li"],"abstract":"Learning matching costs has been shown to be critical to the success of the state-of-the-art deep stereo matching methods, in which 3D convolutions are applied on a 4D feature volume to learn a 3D cost volume. However, this mechanism has never been employed for the optical flow task. This is mainly due to the significantly increased search dimension in the case of optical flow computation, ie, a straightforward extension would require dense 4D convolutions in order to process a 5D feature volume, which is computationally prohibitive. This paper proposes a novel solution that is able to bypass the requirement of building a 5D feature volume while still allowing the network to learn suitable matching costs from data. Our key innovation is to decouple the connection between 2D displacements and learn the matching costs at each 2D displacement hypothesis independently, ie, displacement-invariant cost learning. Specifically, we apply the same 2D convolution-based matching net independently on each 2D displacement hypothesis to learn a 4D cost volume. Moreover, we propose a displacement-aware projection layer to scale the learned cost volume, which reconsiders the correlation between different displacement candidates and mitigates the multi-modal problem in the learned cost volume. The cost volume is then projected to optical flow estimation through a 2D soft-argmin layer. Extensive experiments show that our approach achieves state-of-the-art accuracy on various datasets, and outperforms all published optical flow methods on the Sintel benchmark.","url_abs":"https://arxiv.org/abs/2010.14851v1","url_pdf":"https://arxiv.org/pdf/2010.14851v1.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":"displacement-invariant-matching-cost-learning","repo_url":"https://github.com/jytime/DICL-Flow","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"displacement-invariant-matching-cost-learning","repo_url":"https://github.com/neu-vi/ezflow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"displacement-invariant-matching-cost-learning","repo_url":"https://github.com/neu-vig/ezflow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"},{"task_slug":"stereo-matching-1","task_name":"Stereo Matching"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2010.14851","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.14851"}},"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":"deterministic:regex_extraction","url":"https://github.com/jytime/DICL-Flow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/neu-vig/ezflow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/neu-vi/ezflow","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"ran_draft_wrong":1,"unverified":8},"by_repo_kind":{"official":{"samples":11,"ran":4,"repositories":1},"listed":{"samples":1,"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":"abcbf43ad9fe6129","entry":"compute_color","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/flow_viz.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/flow_viz.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"abcbf43ad9fe6129"}},{"code_sha256_prefix":"c349bc6f8ed16220","entry":"create_logger","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/log.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/log.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c349bc6f8ed16220"}},{"code_sha256_prefix":"04de40832d91cecb","entry":"readFlowKITTI","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/frame_utils.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/frame_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"04de40832d91cecb"}},{"code_sha256_prefix":"7c3fbc1f552de802","entry":"readPFM","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/frame_utils.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/frame_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7c3fbc1f552de802"}},{"code_sha256_prefix":"215f62561b03c262","entry":"flow_compute_color","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/flow_viz.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/flow_viz.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"215f62561b03c262"}},{"code_sha256_prefix":"d59fe7ab39463182","entry":"flow_to_color","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/flow_viz.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/flow_viz.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d59fe7ab39463182"}},{"code_sha256_prefix":"2d48be2529de8c80","entry":"get_default_model_cfg","repo":"neu-vi/ezflow","repo_kind":"listed","path":"ezflow/models/build.py","file_url":"https://github.com/neu-vi/ezflow/blob/HEAD/ezflow/models/build.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2d48be2529de8c80"}},{"code_sha256_prefix":"f0c289fcdf2bc013","entry":"random_select_points","repo":"jytime/DICL-Flow","repo_kind":"official","path":"loss_functions.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/loss_functions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f0c289fcdf2bc013"}},{"code_sha256_prefix":"1662ea0b62b0229c","entry":"readFlow","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/frame_utils.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/frame_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1662ea0b62b0229c"}},{"code_sha256_prefix":"f081ebfd3f0d4c82","entry":"resize_flow","repo":"jytime/DICL-Flow","repo_kind":"official","path":"utils/augmentor.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/utils/augmentor.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f081ebfd3f0d4c82"}},{"code_sha256_prefix":"21e502a63eb0fcd2","entry":"split2list","repo":"jytime/DICL-Flow","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"21e502a63eb0fcd2"}},{"code_sha256_prefix":"83a4a6b397d8c912","entry":"subspace_loss_batch","repo":"jytime/DICL-Flow","repo_kind":"official","path":"loss_functions.py","file_url":"https://github.com/jytime/DICL-Flow/blob/HEAD/loss_functions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"83a4a6b397d8c912"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}