{"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/dense-optical-flow-from-event-cameras","title":"E-RAFT: Dense Optical Flow from Event Cameras","arxiv_id":"2108.10552","date":"2021-08-24","proceeding":null,"authors":["Mathias Gehrig","Mario Millhäusler","Daniel Gehrig","Davide Scaramuzza"],"abstract":"We propose to incorporate feature correlation and sequential processing into dense optical flow estimation from event cameras. Modern frame-based optical flow methods heavily rely on matching costs computed from feature correlation. In contrast, there exists no optical flow method for event cameras that explicitly computes matching costs. Instead, learning-based approaches using events usually resort to the U-Net architecture to estimate optical flow sparsely. Our key finding is that the introduction of correlation features significantly improves results compared to previous methods that solely rely on convolution layers. Compared to the state-of-the-art, our proposed approach computes dense optical flow and reduces the end-point error by 23% on MVSEC. Furthermore, we show that all existing optical flow methods developed so far for event cameras have been evaluated on datasets with very small displacement fields with a maximum flow magnitude of 10 pixels. Based on this observation, we introduce a new real-world dataset that exhibits displacement fields with magnitudes up to 210 pixels and 3 times higher camera resolution. Our proposed approach reduces the end-point error on this dataset by 66%.","url_abs":"https://arxiv.org/abs/2108.10552v3","url_pdf":"https://arxiv.org/pdf/2108.10552v3.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":"dense-optical-flow-from-event-cameras","repo_url":"https://github.com/uzh-rpg/e-raft","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"feature-correlation","task_name":"Feature Correlation"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"}],"methods":[{"method_slug":"concatenated-skip-connection","method_name":"Concatenated Skip Connection"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"u-net","method_name":"U-Net"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2108.10552","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2108.10552"}},"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/uzh-rpg/e-raft","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_fixture":1,"unverified":10},"by_repo_kind":{"official":{"samples":12,"ran":2,"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":"7c8c4c5cb4271dfa","entry":"coords_grid","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/model/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7c8c4c5cb4271dfa"}},{"code_sha256_prefix":"561d1e8d3102a282","entry":"upflow8","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/model/utils.py","link_basis":"plan_row","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"561d1e8d3102a282"}},{"code_sha256_prefix":"1ac8cce613d98769","entry":"bilinear_sampler","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"model/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/model/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":"1ac8cce613d98769"}},{"code_sha256_prefix":"efe587c026e07812","entry":"flow_16bit_to_float","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/dsec_utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/dsec_utils.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":"efe587c026e07812"}},{"code_sha256_prefix":"6fc5ee098dfefa3b","entry":"forward_interpolate_pytorch","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/image_utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/image_utils.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":"6fc5ee098dfefa3b"}},{"code_sha256_prefix":"ba22c483efb8b757","entry":"get_events","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"loader/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/loader/utils.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":"ba22c483efb8b757"}},{"code_sha256_prefix":"ca480d2713282e55","entry":"get_image","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"loader/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/loader/utils.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":"ca480d2713282e55"}},{"code_sha256_prefix":"bcff40acfef90b26","entry":"get_ts","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"loader/utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/loader/utils.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":"bcff40acfef90b26"}},{"code_sha256_prefix":"d81d5e29bb21898b","entry":"get_values_from_key","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/helper_functions.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/helper_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":"d81d5e29bb21898b"}},{"code_sha256_prefix":"24dcd89dbfba92ed","entry":"grid_sample_values","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/image_utils.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/image_utils.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":"24dcd89dbfba92ed"}},{"code_sha256_prefix":"06a201456bf102b9","entry":"move_dict_to_cuda","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/helper_functions.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/helper_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":"06a201456bf102b9"}},{"code_sha256_prefix":"13d7e5935de17ce1","entry":"move_list_to_cuda","repo":"uzh-rpg/e-raft","repo_kind":"official","path":"utils/helper_functions.py","file_url":"https://github.com/uzh-rpg/e-raft/blob/HEAD/utils/helper_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":"13d7e5935de17ce1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}