{"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/blur-aware-spatio-temporal-sparse-transformer","title":"Blur-aware Spatio-temporal Sparse Transformer for Video Deblurring","arxiv_id":"2406.07551","date":"2024-06-11","proceeding":"CVPR 2024 1","authors":["Huicong Zhang","Haozhe Xie","Hongxun Yao"],"abstract":"Video deblurring relies on leveraging information from other frames in the video sequence to restore the blurred regions in the current frame. Mainstream approaches employ bidirectional feature propagation, spatio-temporal transformers, or a combination of both to extract information from the video sequence. However, limitations in memory and computational resources constraints the temporal window length of the spatio-temporal transformer, preventing the extraction of longer temporal contextual information from the video sequence. Additionally, bidirectional feature propagation is highly sensitive to inaccurate optical flow in blurry frames, leading to error accumulation during the propagation process. To address these issues, we propose \\textbf{BSSTNet}, \\textbf{B}lur-aware \\textbf{S}patio-temporal \\textbf{S}parse \\textbf{T}ransformer Network. It introduces the blur map, which converts the originally dense attention into a sparse form, enabling a more extensive utilization of information throughout the entire video sequence. Specifically, BSSTNet (1) uses a longer temporal window in the transformer, leveraging information from more distant frames to restore the blurry pixels in the current frame. (2) introduces bidirectional feature propagation guided by blur maps, which reduces error accumulation caused by the blur frame. The experimental results demonstrate the proposed BSSTNet outperforms the state-of-the-art methods on the GoPro and DVD datasets.","url_abs":"https://arxiv.org/abs/2406.07551v1","url_pdf":"https://arxiv.org/pdf/2406.07551v1.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":"blur-aware-spatio-temporal-sparse-transformer","repo_url":"https://github.com/huicongzhang/bsstnet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"optical-flow-estimation","task_name":"Optical Flow Estimation"},{"task_slug":"video-deblurring","task_name":"Video Deblurring"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/deblurring-on-dvd-1","task":"Deblurring","dataset":"DVD","model":"BSSTNet","rank_in_archive_order":1,"of":7,"metrics":{"PSNR":"34.95","SSIM":"0.9703"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-gopro","task":"Deblurring","dataset":"GoPro","model":"BSSTNet","rank_in_archive_order":1,"of":56,"metrics":{"PSNR":"35.98","SSIM":"0.9792"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.07551","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.07551"}},"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/huicongzhang/bsstnet","reach":{"status":"ok"}}],"summary":{"ran":5,"ran_draft_wrong":5,"unverified":7},"by_repo_kind":{"official":{"samples":17,"ran":10,"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":17,"samples":[{"code_sha256_prefix":"c2e12a1d35bc95f1","entry":"TernaryLoss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/utils/flow_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/utils/flow_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c2e12a1d35bc95f1"}},{"code_sha256_prefix":"ad4c565716dab068","entry":"conv","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/gshift_arch.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/gshift_arch.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ad4c565716dab068"}},{"code_sha256_prefix":"9bed061f167dd318","entry":"conv1x1","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/gshift_arch.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/gshift_arch.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9bed061f167dd318"}},{"code_sha256_prefix":"538e6221204076af","entry":"fbConsistencyCheck","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/BSST_arch.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/BSST_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"538e6221204076af"}},{"code_sha256_prefix":"0c02fb4e80bda186","entry":"flow_warp","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/BSST_arch.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/BSST_arch.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0c02fb4e80bda186"}},{"code_sha256_prefix":"cd569444547de84f","entry":"get_position_from_periods","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/models/lr_scheduler.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/models/lr_scheduler.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cd569444547de84f"}},{"code_sha256_prefix":"b48d437fd5dc2844","entry":"image_warp","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/utils/flow_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/utils/flow_loss.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b48d437fd5dc2844"}},{"code_sha256_prefix":"99919ce37333a615","entry":"length_sq","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/BSST_arch.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/BSST_arch.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"99919ce37333a615"}},{"code_sha256_prefix":"96ad5dc9ca239aec","entry":"make_layer","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/arch_util.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/arch_util.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"96ad5dc9ca239aec"}},{"code_sha256_prefix":"5a1d8458dc7077a6","entry":"resize_flow","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/archs/arch_util.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/archs/arch_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5a1d8458dc7077a6"}},{"code_sha256_prefix":"612cc86afbc665c9","entry":"FlowLoss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/utils/flow_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/utils/flow_loss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"612cc86afbc665c9"}},{"code_sha256_prefix":"fe05416387de89c6","entry":"g_path_regularize","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/gan_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/gan_loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fe05416387de89c6"}},{"code_sha256_prefix":"81eb425a41a7c2a1","entry":"gradient_penalty_loss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/gan_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/gan_loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"81eb425a41a7c2a1"}},{"code_sha256_prefix":"73446c7004a4a9cb","entry":"r1_penalty","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/gan_loss.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/gan_loss.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"73446c7004a4a9cb"}},{"code_sha256_prefix":"a648a03a952822c0","entry":"reduce_loss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a648a03a952822c0"}},{"code_sha256_prefix":"1ba39317ea81871a","entry":"weight_reduce_loss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ba39317ea81871a"}},{"code_sha256_prefix":"cf63f8afc13f62a7","entry":"weighted_loss","repo":"huicongzhang/bsstnet","repo_kind":"official","path":"basicsr/losses/loss_util.py","file_url":"https://github.com/huicongzhang/bsstnet/blob/HEAD/basicsr/losses/loss_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cf63f8afc13f62a7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}