/FlowEdit

Official implementation of the paper: "FlowEdit: Inversion-Free Text-Based Editing Using Pre-Trained Flow Models"

Primary LanguagePythonMIT LicenseMIT

Zero-Shot Image Editing Python PyTorch

FlowEdit

Project | Arxiv | Demo | ComfyUI

Official Pytorch implementation of the paper: "FlowEdit: Inversion-Free Text-Based Editing Using Pre-Trained Flow Models"

Installation

  1. Clone the repository

  2. Install the required dependencies using pip install torch diffusers transformers accelerate sentencepiece protobuf

    • Tested with CUDA version 12.4 and diffusers 0.31.0

Running examples

Run editing with Stable Diffusion 3: python run_script.py --exp_yaml SD3_exp.yaml

Run editing with Flux: python run_script.py --exp_yaml FLUX_exp.yaml

Usage - your own examples

  • Upload images to example_images folder.

  • Create an edits file that specifies: (a) a path to the input image, (b) a source prompt, (c) target prompts, and (d) target codes. The target codes summarize the changes between the source and target prompts and will appear in the output filename.
    See edits.yaml for example.

  • Create an experiment file containing the hyperparamaters needed for running FlowEdit, such as n_max, n_min. This file also includes the path to the edits.yaml file
    See FLUX_exp.yaml for FLUX usage example and SD3_exp.yaml for Stable Diffusion 3 usage example.
    For a detailed discussion on the impact of different hyperparameters and the values we used, please refer to our paper.

Run python run_script.py --exp_yaml <path to your experiment yaml>

ComfyUI implementation for different models

Implemented by logtd

License

This project is licensed under the MIT License.

Citation

If you use this code for your research, please cite our paper:

@article{kulikov2024flowedit,
	title = {FlowEdit: Inversion-Free Text-Based Editing Using Pre-Trained Flow Models},
	author = {Kulikov, Vladimir and Kleiner, Matan and Huberman-Spiegelglas, Inbar and Michaeli, Tomer},
	journal = {arXiv preprint arXiv:2412.08629},
	year = {2024}
	}