{"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/flow-priors-for-linear-inverse-problems-via","title":"Flow Priors for Linear Inverse Problems via Iterative Corrupted Trajectory Matching","arxiv_id":"2405.18816","date":"2024-05-29","proceeding":null,"authors":["Yasi Zhang","Peiyu Yu","Yaxuan Zhu","Yingshan Chang","Feng Gao","Ying Nian Wu","Oscar Leong"],"abstract":"Generative models based on flow matching have attracted significant attention for their simplicity and superior performance in high-resolution image synthesis. By leveraging the instantaneous change-of-variables formula, one can directly compute image likelihoods from a learned flow, making them enticing candidates as priors for downstream tasks such as inverse problems. In particular, a natural approach would be to incorporate such image probabilities in a maximum-a-posteriori (MAP) estimation problem. A major obstacle, however, lies in the slow computation of the log-likelihood, as it requires backpropagating through an ODE solver, which can be prohibitively slow for high-dimensional problems. In this work, we propose an iterative algorithm to approximate the MAP estimator efficiently to solve a variety of linear inverse problems. Our algorithm is mathematically justified by the observation that the MAP objective can be approximated by a sum of $N$ ``local MAP'' objectives, where $N$ is the number of function evaluations. By leveraging Tweedie's formula, we show that we can perform gradient steps to sequentially optimize these objectives. We validate our approach for various linear inverse problems, such as super-resolution, deblurring, inpainting, and compressed sensing, and demonstrate that we can outperform other methods based on flow matching. Code is available at https://github.com/YasminZhang/ICTM.","url_abs":"https://arxiv.org/abs/2405.18816v4","url_pdf":"https://arxiv.org/pdf/2405.18816v4.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":"flow-priors-for-linear-inverse-problems-via","repo_url":"https://github.com/yasminzhang/ictm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"flow-priors-for-linear-inverse-problems-via","repo_url":"https://github.com/annegnx/PnP-Flow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"super-resolution","task_name":"Super-Resolution"},{"task_slug":"compressed-sensing","task_name":"compressed sensing"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2405.18816","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.18816"}},"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/YasminZhang/ICTM","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/annegnx/PnP-Flow","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yasminzhang/ictm","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":3,"ran":4,"unverified":6},"by_repo_kind":{"official":{"samples":13,"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":0,"samples":[{"code_sha256_prefix":"225cdd3b69adcd89","entry":"psnr_fn","repo":"yasminzhang/ictm","repo_kind":"official","path":"get_metric.py","file_url":"https://github.com/yasminzhang/ictm/blob/HEAD/get_metric.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"225cdd3b69adcd89"}},{"code_sha256_prefix":"e222afe331b6db8d","entry":"create_custom_dataset","repo":"YasminZhang/ICTM","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e222afe331b6db8d"}},{"code_sha256_prefix":"6c419026e778dee2","entry":"get_data_inverse_scaler","repo":"YasminZhang/ICTM","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/datasets.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6c419026e778dee2"}},{"code_sha256_prefix":"346d2e6cc8b48a5d","entry":"get_data_scaler","repo":"YasminZhang/ICTM","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/datasets.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"346d2e6cc8b48a5d"}},{"code_sha256_prefix":"8ff7c24dade9904c","entry":"get_optimizer","repo":"YasminZhang/ICTM","repo_kind":"official","path":"losses.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/losses.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8ff7c24dade9904c"}},{"code_sha256_prefix":"366bb8c7035a2fc8","entry":"optimization_manager","repo":"YasminZhang/ICTM","repo_kind":"official","path":"losses.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/losses.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"366bb8c7035a2fc8"}},{"code_sha256_prefix":"3ac11bfe0ae80195","entry":"variance_scaling","repo":"YasminZhang/ICTM","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/models/layers.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ac11bfe0ae80195"}},{"code_sha256_prefix":"54a00db9aadf092f","entry":"classifier_fn_from_tfhub","repo":"YasminZhang/ICTM","repo_kind":"official","path":"evaluation.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/evaluation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54a00db9aadf092f"}},{"code_sha256_prefix":"db5f935a1d6b4c2c","entry":"get_act","repo":"YasminZhang/ICTM","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/models/layers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"db5f935a1d6b4c2c"}},{"code_sha256_prefix":"0bfcb6b2d940e393","entry":"get_div_fn","repo":"YasminZhang/ICTM","repo_kind":"official","path":"likelihood.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/likelihood.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0bfcb6b2d940e393"}},{"code_sha256_prefix":"1b8adb3294e53c6d","entry":"get_normalization","repo":"YasminZhang/ICTM","repo_kind":"official","path":"models/normalization.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/models/normalization.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1b8adb3294e53c6d"}},{"code_sha256_prefix":"b45ab263f8440954","entry":"load_dataset_stats","repo":"YasminZhang/ICTM","repo_kind":"official","path":"evaluation.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/evaluation.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b45ab263f8440954"}},{"code_sha256_prefix":"85b2235eb7afaa4f","entry":"ncsn_conv1x1","repo":"YasminZhang/ICTM","repo_kind":"official","path":"models/layers.py","file_url":"https://github.com/YasminZhang/ICTM/blob/HEAD/models/layers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"85b2235eb7afaa4f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}