{"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/rawformer-unpaired-raw-to-raw-translation-for","title":"Rawformer: Unpaired Raw-to-Raw Translation for Learnable Camera ISPs","arxiv_id":"2404.10700","date":"2024-04-16","proceeding":null,"authors":["Georgy Perevozchikov","Nancy Mehta","Mahmoud Afifi","Radu Timofte"],"abstract":"Modern smartphone camera quality heavily relies on the image signal processor (ISP) to enhance captured raw images, utilizing carefully designed modules to produce final output images encoded in a standard color space (e.g., sRGB). Neural-based end-to-end learnable ISPs offer promising advancements, potentially replacing traditional ISPs with their ability to adapt without requiring extensive tuning for each new camera model, as is often the case for nearly every module in traditional ISPs. However, the key challenge with the recent learning-based ISPs is the urge to collect large paired datasets for each distinct camera model due to the influence of intrinsic camera characteristics on the formation of input raw images. This paper tackles this challenge by introducing a novel method for unpaired learning of raw-to-raw translation across diverse cameras. Specifically, we propose Rawformer, an unsupervised Transformer-based encoder-decoder method for raw-to-raw translation. It accurately maps raw images captured by a certain camera to the target camera, facilitating the generalization of learnable ISPs to new unseen cameras. Our method demonstrates superior performance on real camera datasets, achieving higher accuracy compared to previous state-of-the-art techniques, and preserving a more robust correlation between the original and translated raw images. The codes and the pretrained models are available at https://github.com/gosha20777/rawformer.","url_abs":"https://arxiv.org/abs/2404.10700v2","url_pdf":"https://arxiv.org/pdf/2404.10700v2.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":"rawformer-unpaired-raw-to-raw-translation-for","repo_url":"https://github.com/gosha20777/rawformer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"translation","task_name":"Translation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2404.10700","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.10700"}},"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":"deterministic:regex_extraction","url":"https://github.com/gosha20777/rawformer","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran":5,"ran_honours":2,"unverified":2},"by_repo_kind":{"official":{"samples":9,"ran":7,"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":9,"samples":[{"code_sha256_prefix":"edbe64bddf5054c8","entry":"cal_gradient_penalty","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/losses.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"edbe64bddf5054c8"}},{"code_sha256_prefix":"08e49e957613f4e4","entry":"calc_zero_gp","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/losses.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"08e49e957613f4e4"}},{"code_sha256_prefix":"6154e3744ece5728","entry":"create_window","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/torch/losses.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/torch/losses.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6154e3744ece5728"}},{"code_sha256_prefix":"c56b7ef16f309a45","entry":"gaussian","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/torch/losses.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/torch/losses.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c56b7ef16f309a45"}},{"code_sha256_prefix":"a4b2481f74b29098","entry":"get_norm_layer","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/networks.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/networks.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"a4b2481f74b29098"}},{"code_sha256_prefix":"3e62234da84ec633","entry":"join_args","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/networks.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/networks.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"3e62234da84ec633"}},{"code_sha256_prefix":"612e7e9a0f82fafd","entry":"linear_scheduler","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/schedulers.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/schedulers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"612e7e9a0f82fafd"}},{"code_sha256_prefix":"47f1d9ae9b2fe38a","entry":"select_base_generator","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/base/networks.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/base/networks.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"47f1d9ae9b2fe38a"}},{"code_sha256_prefix":"9151c793f90473f0","entry":"ssim","repo":"gosha20777/rawformer","repo_kind":"official","path":"rawformer/torch/losses.py","file_url":"https://github.com/gosha20777/rawformer/blob/HEAD/rawformer/torch/losses.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":"9151c793f90473f0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}