{"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/snowformer-scale-aware-transformer-via","title":"SnowFormer: Context Interaction Transformer with Scale-awareness for Single Image Desnowing","arxiv_id":"2208.09703","date":"2022-08-20","proceeding":null,"authors":["Sixiang Chen","Tian Ye","Yun Liu","ErKang Chen"],"abstract":"Due to various and complicated snow degradations, single image desnowing is a challenging image restoration task. As prior arts can not handle it ideally, we propose a novel transformer, SnowFormer, which explores efficient cross-attentions to build local-global context interaction across patches and surpasses existing works that employ local operators or vanilla transformers. Compared to prior desnowing methods and universal image restoration methods, SnowFormer has several benefits. Firstly, unlike the multi-head self-attention in recent image restoration Vision Transformers, SnowFormer incorporates the multi-head cross-attention mechanism to perform local-global context interaction between scale-aware snow queries and local-patch embeddings. Second, the snow queries in SnowFormer are generated by the query generator from aggregated scale-aware features, which are rich in potential clean cues, leading to superior restoration results. Third, SnowFormer outshines advanced state-of-the-art desnowing networks and the prevalent universal image restoration transformers on six synthetic and real-world datasets. The code is released in \\url{https://github.com/Ephemeral182/SnowFormer}.","url_abs":"https://arxiv.org/abs/2208.09703v3","url_pdf":"https://arxiv.org/pdf/2208.09703v3.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":"snowformer-scale-aware-transformer-via","repo_url":"https://github.com/ephemeral182/snowformer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-restoration","task_name":"Image Restoration"},{"task_slug":"single-image-desnowing","task_name":"Single Image Desnowing"},{"task_slug":"snow-removal","task_name":"Snow Removal"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"nafnet","method_name":"NAFNet"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/single-image-desnowing-on-csd","task":"Single Image Desnowing","dataset":"CSD","model":"SnowFormer","rank_in_archive_order":2,"of":6,"metrics":{"Average PSNR (dB)":"39.45"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2208.09703","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2208.09703"}},"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/ephemeral182/snowformer","reach":null}],"summary":{"ran":3,"ran_draft_wrong":2,"ran_fixture":1,"unverified":5},"by_repo_kind":{"official":{"samples":10,"ran":5,"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":11,"samples":[{"code_sha256_prefix":"c368690171e3f98c","entry":"GlobalContext_Interaction","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"c368690171e3f98c"}},{"code_sha256_prefix":"53c6bbfeaa881241","entry":"LocalContext_Interaction","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"53c6bbfeaa881241"}},{"code_sha256_prefix":"2f4a90a7162065dc","entry":"Scale_aware_Query","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"2f4a90a7162065dc"}},{"code_sha256_prefix":"ad4c565716dab068","entry":"conv","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"ad4c565716dab068"}},{"code_sha256_prefix":"dd907925970ddfba","entry":"window_partition","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"dd907925970ddfba"}},{"code_sha256_prefix":"f4c2cb74d3356bc2","entry":"window_reverse","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.py","link_basis":"first_harvest_node","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":"f4c2cb74d3356bc2"}},{"code_sha256_prefix":"47127aa55a7c09f8","entry":"Context_Interaction_Block","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"47127aa55a7c09f8"}},{"code_sha256_prefix":"871b33344852208e","entry":"Context_Interaction_layer","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"871b33344852208e"}},{"code_sha256_prefix":"dbea7dedb5f66b70","entry":"HFPH","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"dbea7dedb5f66b70"}},{"code_sha256_prefix":"732381b514a79475","entry":"Transformer","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"732381b514a79475"}},{"code_sha256_prefix":"c0feb8a6ab92cded","entry":"Transformer_block","repo":"ephemeral182/snowformer","repo_kind":"official","path":"SnowFormer.py","file_url":"https://github.com/ephemeral182/snowformer/blob/HEAD/SnowFormer.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":"c0feb8a6ab92cded"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}