flux-edit / app.py
multimodalart's picture
UI revamp suggestions
257cb56 verified
raw
history blame
3.42 kB
import gradio as gr
import torch
import spaces
from huggingface_hub import hf_hub_download
from diffusers import FluxControlPipeline, FluxTransformer2DModel
####################################
# Load the model(s) on GPU #
####################################
path = "sayakpaul/FLUX.1-dev-edit-v0"
edit_transformer = FluxTransformer2DModel.from_pretrained(path, torch_dtype=torch.bfloat16)
pipeline = FluxControlPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", transformer=edit_transformer, torch_dtype=torch.bfloat16
).to("cuda")
pipeline.load_lora_weights(
hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), adapter_name="hyper-sd"
)
pipeline.set_adapters(["hyper-sd"], adapter_weights=[0.125])
#####################################
# The function for our Gradio app #
#####################################
@spaces.GPU(duration=120)
def generate(prompt, input_image, progress=gr.Progress(track_tqdm=True)):
"""
Runs the Flux Control pipeline for editing the given `input_image`
with the specified `prompt`. The pipeline is on CPU by default.
"""
output_image = pipeline(
control_image=input_image,
prompt=prompt,
guidance_scale=30.,
num_inference_steps=8,
max_sequence_length=512,
height=input_image.height,
width=input_image.width,
generator=torch.manual_seed(0)
).images[0]
return output_image
def launch_app():
css = '''
.gradio-container{max-width: 1100px !important}
'''
with gr.Blocks(css=css) as demo:
gr.Markdown(
"""
# Flux Control Editing πŸ–ŒοΈ
Edit any image with the [FLUX.1-dev](https://huggingface.co/black-forest-labs/FLUX.1-dev)
[Flux Control edit framework](https://github.com/sayakpaul/flux-image-editing) by [Sayak Paul](https://huggingface.co/sayakpaul).
"""
)
with gr.Row():
with gr.Column():
with gr.Group():
input_image = gr.Image(
label="Image you would like to edit",
type="pil",
)
prompt = gr.Textbox(
label="Your edit prompt",
placeholder="e.g. 'Turn the color of the mushroom to blue'"
)
generate_button = gr.Button("Generate")
output_image = gr.Image(label="Edited Image")
# Connect button to function
generate_button.click(
fn=generate,
inputs=[prompt, input_image],
outputs=[output_image],
)
gr.Examples(
examples=[
["Turn the color of the mushroom to gray", "mushroom.jpg"],
["Make the mushroom polka-dotted", "mushroom.jpg"],
],
inputs=[prompt, input_image],
outputs=[output_image],
fn=generate,
cache_examples="lazy"
)
gr.Markdown(
"""
**Acknowledgements**:
- [Sayak Paul](https://huggingface.co/sayakpaul) for open-sourcing FLUX.1-dev-edit-v0
- [black-forest-labs](https://huggingface.co/black-forest-labs) for FLUX.1-dev
"""
)
return demo
if __name__ == "__main__":
demo = launch_app()
demo.launch()