{"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/memfof-high-resolution-training-for-memory","title":"MEMFOF: High-Resolution Training for Memory-Efficient Multi-Frame Optical Flow Estimation","arxiv_id":"2506.23151","date":"2025-06-29","proceeding":null,"authors":["Vladislav Bargatin","Egor Chistov","Alexander Yakovenko","Dmitriy Vatolin"],"abstract":"Recent advances in optical flow estimation have prioritized accuracy at the cost of growing GPU memory consumption, particularly for high-resolution (FullHD) inputs. We introduce MEMFOF, a memory-efficient multi-frame optical flow method that identifies a favorable trade-off between multi-frame estimation and GPU memory usage. Notably, MEMFOF requires only 2.09 GB of GPU memory at runtime for 1080p inputs, and 28.5 GB during training, which uniquely positions our method to be trained at native 1080p without the need for cropping or downsampling. We systematically revisit design choices from RAFT-like architectures, integrating reduced correlation volumes and high-resolution training protocols alongside multi-frame estimation, to achieve state-of-the-art performance across multiple benchmarks while substantially reducing memory overhead. Our method outperforms more resource-intensive alternatives in both accuracy and runtime efficiency, validating its robustness for flow estimation at high resolutions. At the time of submission, our method ranks first on the Spring benchmark with a 1-pixel (1px) outlier rate of 3.289, leads Sintel (clean) with an endpoint error (EPE) of 0.963, and achieves the best Fl-all error on KITTI-2015 at 2.94%. The code is available at https://github.com/msu-video-group/memfof.","url_abs":"https://arxiv.org/abs/2506.23151v1","url_pdf":"https://arxiv.org/pdf/2506.23151v1.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":"memfof-high-resolution-training-for-memory","repo_url":"https://github.com/msu-video-group/memfof","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":null,"task_name":"GPU"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/optical-flow-estimation-on-kitti-2015","task":"Optical Flow Estimation","dataset":"KITTI 2015","model":"MEMFOF","rank_in_archive_order":1,"of":18,"metrics":{"Fl-all":"2.94","Fl-fg":"4.66"},"uses_additional_data":false},{"leaderboard":"/sota/optical-flow-estimation-on-kitti-2015-train","task":"Optical Flow Estimation","dataset":"KITTI 2015 (train)","model":"MEMFOF","rank_in_archive_order":1,"of":19,"metrics":{"EPE":"2.93","F1-all":"9.93"},"uses_additional_data":false},{"leaderboard":"/sota/optical-flow-estimation-on-sintel-clean","task":"Optical Flow Estimation","dataset":"Sintel-clean","model":"MEMFOF-L","rank_in_archive_order":1,"of":29,"metrics":{"Average End-Point Error":"0.963"},"uses_additional_data":false},{"leaderboard":"/sota/optical-flow-estimation-on-sintel-final","task":"Optical Flow Estimation","dataset":"Sintel-final","model":"MEMFOF-L","rank_in_archive_order":1,"of":28,"metrics":{"Average End-Point Error":"1.907"},"uses_additional_data":false},{"leaderboard":"/sota/optical-flow-estimation-on-spring","task":"Optical Flow Estimation","dataset":"Spring","model":"MEMFOF","rank_in_archive_order":1,"of":11,"metrics":{"1px total":"3.289"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2506.23151","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2506.23151"}},"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/msu-video-group/memfof","reach":null}],"summary":{"ran":8,"ran_draft_wrong":1,"unverified":4},"by_repo_kind":{"official":{"samples":13,"ran":9,"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":"167a7e8bc140806b","entry":"Aggregate","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"167a7e8bc140806b"}},{"code_sha256_prefix":"14f1b0e4c1e457ba","entry":"Attention","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"14f1b0e4c1e457ba"}},{"code_sha256_prefix":"2133e755baf0eebe","entry":"BasicMotionEncoder","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"2133e755baf0eebe"}},{"code_sha256_prefix":"5889efba95f106e9","entry":"ConvNextBlock","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"5889efba95f106e9"}},{"code_sha256_prefix":"aafc690578a6d225","entry":"CorrBlock","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"aafc690578a6d225"}},{"code_sha256_prefix":"ff47f683000643e1","entry":"GMAUpdateBlock","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ff47f683000643e1"}},{"code_sha256_prefix":"0fac8348cbeeb2ca","entry":"InputPadder","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"0fac8348cbeeb2ca"}},{"code_sha256_prefix":"4913dffc8eae9dc0","entry":"ResNetFPN16x","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"4913dffc8eae9dc0"}},{"code_sha256_prefix":"7599edadbb4f2bdc","entry":"conv3x3","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7599edadbb4f2bdc"}},{"code_sha256_prefix":"3a95acdcbffbcf5b","entry":"MEMFOF","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","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":"3a95acdcbffbcf5b"}},{"code_sha256_prefix":"0d272f32cfaeb750","entry":"bilinear_sampler","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","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":"0d272f32cfaeb750"}},{"code_sha256_prefix":"3eac67065d155459","entry":"init_conv1_weights","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","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":"3eac67065d155459"}},{"code_sha256_prefix":"a8c4a270d6812a71","entry":"init_model_weights","repo":"msu-video-group/memfof","repo_kind":"official","path":"memfof/model.py","file_url":"https://github.com/msu-video-group/memfof/blob/HEAD/memfof/model.py","link_basis":"first_harvest_node","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":"a8c4a270d6812a71"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}