Spaces:
Runtime error
Runtime error
File size: 2,904 Bytes
3251b02 fad0145 033fe26 3251b02 033fe26 3251b02 fad0145 033fe26 2235066 033fe26 2235066 033fe26 2235066 3251b02 2a2202a 3251b02 2235066 033fe26 3251b02 2235066 3251b02 2a2202a 2235066 2a2202a 033fe26 2a2202a 3251b02 033fe26 3251b02 033fe26 3251b02 033fe26 2235066 3251b02 033fe26 3251b02 033fe26 2235066 3251b02 033fe26 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import os
import random
import gradio as gr
import torch
from diffusers import DiffusionPipeline
from transformers import CLIPTextModel, CLIPTokenizer
# Configuration - Using Flux Model
MODEL_ID = "CompVis/Flux-Pro"
MODEL_CACHE = "model_cache"
os.makedirs(MODEL_CACHE, exist_ok=True)
def get_pipeline():
# Load Flux model components
text_encoder = CLIPTextModel.from_pretrained(
MODEL_ID,
subfolder="text_encoder",
cache_dir=MODEL_CACHE
)
tokenizer = CLIPTokenizer.from_pretrained(
MODEL_ID,
subfolder="tokenizer",
cache_dir=MODEL_CACHE
)
# Create pipeline
pipe = DiffusionPipeline.from_pretrained(
MODEL_ID,
text_encoder=text_encoder,
tokenizer=tokenizer,
cache_dir=MODEL_CACHE,
torch_dtype=torch.float32,
safety_checker=None
)
# CPU optimizations
pipe = pipe.to("cpu")
pipe.enable_attention_slicing()
return pipe
# Load model
pipeline = get_pipeline()
def generate_image(
prompt: str,
negative_prompt: str = "",
width: int = 768,
height: int = 768,
seed: int = -1,
guidance_scale: float = 7.5,
num_inference_steps: int = 25
):
if seed == -1:
seed = random.randint(0, 2147483647)
generator = torch.Generator(device="cpu").manual_seed(seed)
with torch.no_grad():
image = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
width=width,
height=height,
guidance_scale=guidance_scale,
num_inference_steps=num_inference_steps,
generator=generator
).images[0]
return image, seed
with gr.Blocks(theme=gr.themes.Soft()) as demo:
gr.Markdown("# π FLUX-Pro Image Generator")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label="Prompt", lines=3)
negative_prompt = gr.Textbox(label="Negative Prompt", value="blurry, low quality")
generate_btn = gr.Button("Generate", variant="primary")
with gr.Accordion("Advanced", open=False):
width = gr.Slider(512, 1024, value=768, step=64, label="Width")
height = gr.Slider(512, 1024, value=768, step=64, label="Height")
guidance = gr.Slider(1.0, 15.0, value=7.5, step=0.5, label="Guidance")
steps = gr.Slider(15, 50, value=25, step=1, label="Steps")
seed = gr.Number(label="Seed", value=-1)
with gr.Column():
output_image = gr.Image(label="Result", type="pil")
used_seed = gr.Textbox(label="Used Seed")
generate_btn.click(
generate_image,
inputs=[prompt, negative_prompt, width, height, seed, guidance, steps],
outputs=[output_image, used_seed]
)
if __name__ == "__main__":
demo.launch() |