{"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/kv-edit-training-free-image-editing-for","title":"KV-Edit: Training-Free Image Editing for Precise Background Preservation","arxiv_id":"2502.17363","date":"2025-02-24","proceeding":null,"authors":["Tianrui Zhu","Shiyi Zhang","Jiawei Shao","Yansong Tang"],"abstract":"Background consistency remains a significant challenge in image editing tasks. Despite extensive developments, existing works still face a trade-off between maintaining similarity to the original image and generating content that aligns with the target. Here, we propose KV-Edit, a training-free approach that uses KV cache in DiTs to maintain background consistency, where background tokens are preserved rather than regenerated, eliminating the need for complex mechanisms or expensive training, ultimately generating new content that seamlessly integrates with the background within user-provided regions. We further explore the memory consumption of the KV cache during editing and optimize the space complexity to $O(1)$ using an inversion-free method. Our approach is compatible with any DiT-based generative model without additional training. Experiments demonstrate that KV-Edit significantly outperforms existing approaches in terms of both background and image quality, even surpassing training-based methods. Project webpage is available at https://xilluill.github.io/projectpages/KV-Edit","url_abs":"https://arxiv.org/abs/2502.17363v1","url_pdf":"https://arxiv.org/pdf/2502.17363v1.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":"kv-edit-training-free-image-editing-for","repo_url":"https://github.com/Xilluill/KV-Edit","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"text-based-image-editing","task_name":"Text-based Image Editing"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/text-based-image-editing-on-pie-bench","task":"Text-based Image Editing","dataset":"PIE-Bench","model":"KV-Edit","rank_in_archive_order":1,"of":18,"metrics":{"Background LPIPS":"9.92","Background PSNR":"35.87","CLIPSIM":"25.63","Structure Distance":"1.98"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2502.17363","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2502.17363"}},"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/Xilluill/KV-Edit","reach":null}],"summary":{"ran":13,"ran_draft_wrong":1,"ran_fixture":1,"unverified":16},"by_repo_kind":{"official":{"samples":31,"ran":15,"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":"b9f8b9efb85110e4","entry":"AutoEncoderParams","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b9f8b9efb85110e4"}},{"code_sha256_prefix":"bb78f70b285fe68a","entry":"DoubleStreamBlock","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bb78f70b285fe68a"}},{"code_sha256_prefix":"ed75f4c283c8cade","entry":"EmbedND","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ed75f4c283c8cade"}},{"code_sha256_prefix":"52004c455a1d9a71","entry":"FluxParams","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"52004c455a1d9a71"}},{"code_sha256_prefix":"6b8321fc69032c6d","entry":"MLPEmbedder","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6b8321fc69032c6d"}},{"code_sha256_prefix":"8c6dbb17f9290a46","entry":"ModelSpec","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8c6dbb17f9290a46"}},{"code_sha256_prefix":"2e8de1895011c4a0","entry":"Modulation","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2e8de1895011c4a0"}},{"code_sha256_prefix":"8f8d9c986bd3147f","entry":"ModulationOut","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8f8d9c986bd3147f"}},{"code_sha256_prefix":"1a2c8d9ca3918791","entry":"QKNorm","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1a2c8d9ca3918791"}},{"code_sha256_prefix":"b4affeaaac4bcdd4","entry":"RMSNorm","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b4affeaaac4bcdd4"}},{"code_sha256_prefix":"0c92e50f90ae4f64","entry":"SelfAttention","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0c92e50f90ae4f64"}},{"code_sha256_prefix":"a8d997e0ba042d6a","entry":"SingleStreamBlock","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a8d997e0ba042d6a"}},{"code_sha256_prefix":"c46eed3b4c31dbf0","entry":"SingleStreamBlock_kv","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c46eed3b4c31dbf0"}},{"code_sha256_prefix":"3f6652da855a2ea0","entry":"get_lin_function","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3f6652da855a2ea0"}},{"code_sha256_prefix":"16c24bf237fed814","entry":"rope","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"16c24bf237fed814"}},{"code_sha256_prefix":"bf0cff0597919d71","entry":"DoubleStreamBlock_kv","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bf0cff0597919d71"}},{"code_sha256_prefix":"59e8d7bc13f5d327","entry":"Flux","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"59e8d7bc13f5d327"}},{"code_sha256_prefix":"a1f2d96d59c14287","entry":"Flux_kv","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a1f2d96d59c14287"}},{"code_sha256_prefix":"62f545ac5e999258","entry":"Flux_kv_edit","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"62f545ac5e999258"}},{"code_sha256_prefix":"78a0e843c3d244be","entry":"LastLayer","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"78a0e843c3d244be"}},{"code_sha256_prefix":"7b46f68f6e5e0e3d","entry":"apply_rope","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7b46f68f6e5e0e3d"}},{"code_sha256_prefix":"5585849aeb0b2934","entry":"apply_rope_qk","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5585849aeb0b2934"}},{"code_sha256_prefix":"9e0102b5544f4909","entry":"attention","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9e0102b5544f4909"}},{"code_sha256_prefix":"e2bf41644ea4e949","entry":"denoise_kv","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e2bf41644ea4e949"}},{"code_sha256_prefix":"ddd6e35b84bfe270","entry":"get_schedule","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ddd6e35b84bfe270"}},{"code_sha256_prefix":"98151b94782828d1","entry":"load_flow_model","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"98151b94782828d1"}},{"code_sha256_prefix":"85080c818ceef6ea","entry":"only_Flux","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"85080c818ceef6ea"}},{"code_sha256_prefix":"c728727909e45352","entry":"print_load_warning","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c728727909e45352"}},{"code_sha256_prefix":"1b6eb944b965997b","entry":"time_shift","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1b6eb944b965997b"}},{"code_sha256_prefix":"63c61fe6461924ad","entry":"timestep_embedding","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"63c61fe6461924ad"}},{"code_sha256_prefix":"a9451ac1452e533d","entry":"unpack","repo":"Xilluill/KV-Edit","repo_kind":"official","path":"models/kv_edit.py","file_url":"https://github.com/Xilluill/KV-Edit/blob/HEAD/models/kv_edit.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a9451ac1452e533d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}