{"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/real-time-streaming-video-denoising-with","title":"Real-time Streaming Video Denoising with Bidirectional Buffers","arxiv_id":"2207.06937","date":"2022-07-14","proceeding":null,"authors":["Chenyang Qi","Junming Chen","Xin Yang","Qifeng Chen"],"abstract":"Video streams are delivered continuously to save the cost of storage and device memory. Real-time denoising algorithms are typically adopted on the user device to remove the noise involved during the shooting and transmission of video streams. However, sliding-window-based methods feed multiple input frames for a single output and lack computation efficiency. Recent multi-output inference works propagate the bidirectional temporal feature with a parallel or recurrent framework, which either suffers from performance drops on the temporal edges of clips or can not achieve online inference. In this paper, we propose a Bidirectional Streaming Video Denoising (BSVD) framework, to achieve high-fidelity real-time denoising for streaming videos with both past and future temporal receptive fields. The bidirectional temporal fusion for online inference is considered not applicable in the MoViNet. However, we introduce a novel Bidirectional Buffer Block as the core module of our BSVD, which makes it possible during our pipeline-style inference. In addition, our method is concise and flexible to be utilized in both non-blind and blind video denoising. We compare our model with various state-of-the-art video denoising models qualitatively and quantitatively on synthetic and real noise. Our method outperforms previous methods in terms of restoration fidelity and runtime. Our source code is publicly available at https://github.com/ChenyangQiQi/BSVD","url_abs":"https://arxiv.org/abs/2207.06937v1","url_pdf":"https://arxiv.org/pdf/2207.06937v1.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":"real-time-streaming-video-denoising-with","repo_url":"https://github.com/chenyangqiqi/bsvd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"video-denoising","task_name":"Video Denoising"}],"methods":[{"method_slug":"movinet","method_name":"MoViNet"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/video-denoising-on-crvd-1","task":"Video Denoising","dataset":"CRVD","model":"BSVD (real-time)","rank_in_archive_order":1,"of":3,"metrics":{"PSNR (Raw)":"44.39","PSNR (sRBG)":"40.48","SSIM (Raw)":"0.9894","SSIM (sRGB)":"0.9820"},"uses_additional_data":false},{"leaderboard":"/sota/video-denoising-on-davis-sigma40","task":"Video Denoising","dataset":"DAVIS sigma40","model":"BSVD (real-time)","rank_in_archive_order":4,"of":8,"metrics":{"PSNR":"33.86"},"uses_additional_data":false},{"leaderboard":"/sota/video-denoising-on-davis-sigma50","task":"Video Denoising","dataset":"DAVIS sigma50","model":"BSVD (Real-time)","rank_in_archive_order":4,"of":8,"metrics":{"PSNR":"32.91"},"uses_additional_data":false},{"leaderboard":"/sota/video-denoising-on-set8-sigma40","task":"Video Denoising","dataset":"Set8 sigma40","model":"BSVD (real-time)","rank_in_archive_order":4,"of":8,"metrics":{"PSNR":"30.97"},"uses_additional_data":false},{"leaderboard":"/sota/video-denoising-on-set8-sigma50","task":"Video Denoising","dataset":"Set8 sigma50","model":"BSVD (real-time)","rank_in_archive_order":5,"of":9,"metrics":{"PSNR":"30.06"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2207.06937","atlas_url":"https://app.syntology.ai/?focus=2207.06937","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2207.06937"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/chenyangqiqi/bsvd","reach":null}],"summary":{"ran_draft_wrong":3},"by_repo_kind":{"official":{"samples":3,"ran":3,"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":"3097f4ab44a20fba","entry":"extract_dict","repo":"chenyangqiqi/bsvd","repo_kind":"official","path":"Experimental_root/archs/bsvd_arch.py","file_url":"https://github.com/chenyangqiqi/bsvd/blob/HEAD/Experimental_root/archs/bsvd_arch.py","link_basis":"first_harvest_node","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":"3097f4ab44a20fba"}},{"code_sha256_prefix":"46f8c3c25e04a46a","entry":"get_norm_function","repo":"chenyangqiqi/bsvd","repo_kind":"official","path":"Experimental_root/archs/bsvd_arch.py","file_url":"https://github.com/chenyangqiqi/bsvd/blob/HEAD/Experimental_root/archs/bsvd_arch.py","link_basis":"first_harvest_node","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":"46f8c3c25e04a46a"}},{"code_sha256_prefix":"41e77777fc58ab17","entry":"replace_dict","repo":"chenyangqiqi/bsvd","repo_kind":"official","path":"Experimental_root/archs/bsvd_arch.py","file_url":"https://github.com/chenyangqiqi/bsvd/blob/HEAD/Experimental_root/archs/bsvd_arch.py","link_basis":"first_harvest_node","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":"41e77777fc58ab17"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}