{"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/rsfnet-a-white-box-image-retouching-approach","title":"RSFNet: A White-Box Image Retouching Approach using Region-Specific Color Filters","arxiv_id":"2303.08682","date":"2023-03-15","proceeding":"ICCV 2023 1","authors":["Wenqi Ouyang","Yi Dong","Xiaoyang Kang","Peiran Ren","Xin Xu","Xuansong Xie"],"abstract":"Retouching images is an essential aspect of enhancing the visual appeal of photos. Although users often share common aesthetic preferences, their retouching methods may vary based on their individual preferences. Therefore, there is a need for white-box approaches that produce satisfying results and enable users to conveniently edit their images simultaneously. Recent white-box retouching methods rely on cascaded global filters that provide image-level filter arguments but cannot perform fine-grained retouching. In contrast, colorists typically employ a divide-and-conquer approach, performing a series of region-specific fine-grained enhancements when using traditional tools like Davinci Resolve. We draw on this insight to develop a white-box framework for photo retouching using parallel region-specific filters, called RSFNet. Our model generates filter arguments (e.g., saturation, contrast, hue) and attention maps of regions for each filter simultaneously. Instead of cascading filters, RSFNet employs linear summations of filters, allowing for a more diverse range of filter classes that can be trained more easily. Our experiments demonstrate that RSFNet achieves state-of-the-art results, offering satisfying aesthetic appeal and increased user convenience for editable white-box retouching.","url_abs":"https://arxiv.org/abs/2303.08682v2","url_pdf":"https://arxiv.org/pdf/2303.08682v2.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":"rsfnet-a-white-box-image-retouching-approach","repo_url":"https://github.com/vicky0522/rsfnet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-enhancement","task_name":"Image Enhancement"},{"task_slug":"image-retouching","task_name":"Image Retouching"},{"task_slug":"photo-retouching","task_name":"Photo Retouching"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-enhancement-on-mit-adobe-5k","task":"Image Enhancement","dataset":"MIT-Adobe 5k","model":"RSFNet-map","rank_in_archive_order":5,"of":11,"metrics":{"PSNR on proRGB":"25.49","SSIM on proRGB":"0.924"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2303.08682","atlas_url":"https://app.syntology.ai/?focus=2303.08682","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.08682"}},"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":"deterministic:regex_extraction","url":"https://github.com/Vicky0522/RSFNet","reach":null}],"summary":{"ran":2,"ran_draft_wrong":1,"unverified":9},"by_repo_kind":{"official":{"samples":12,"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":12,"samples":[{"code_sha256_prefix":"3d716caed539c3c1","entry":"Renderer_N10_cascaded","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3d716caed539c3c1"}},{"code_sha256_prefix":"0c9e5eac2b5ddc56","entry":"Renderer_N16","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"0c9e5eac2b5ddc56"}},{"code_sha256_prefix":"b79feb2180cc0b85","entry":"get_root_logger","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"b79feb2180cc0b85"}},{"code_sha256_prefix":"c4d1e967bda730cf","entry":"MaskCluster","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"c4d1e967bda730cf"}},{"code_sha256_prefix":"e69df4ac5d6fdd2f","entry":"RSFNet","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"e69df4ac5d6fdd2f"}},{"code_sha256_prefix":"2107c9ff2a5755b8","entry":"Renderer_N10","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"2107c9ff2a5755b8"}},{"code_sha256_prefix":"7df12336785bf2d6","entry":"Renderer_N1_K10","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"7df12336785bf2d6"}},{"code_sha256_prefix":"ff48dbed17f00f4e","entry":"Renderer_N1_K16","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ff48dbed17f00f4e"}},{"code_sha256_prefix":"3f2a8b563380070a","entry":"build_backbone","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"3f2a8b563380070a"}},{"code_sha256_prefix":"ba145379f28e49f9","entry":"build_graph","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"ba145379f28e49f9"}},{"code_sha256_prefix":"67762e501d1b343f","entry":"build_head","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"67762e501d1b343f"}},{"code_sha256_prefix":"5670fa5269a2562c","entry":"build_neck","repo":"Vicky0522/RSFNet","repo_kind":"official","path":"basicsr/archs/rsfnet_arch.py","file_url":"https://github.com/Vicky0522/RSFNet/blob/HEAD/basicsr/archs/rsfnet_arch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"5670fa5269a2562c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}