CoolFace
Apppublic

badroobot/FLUX.1-dev

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py130 linesDownload Raw Back to root
1import gradio as gr2import numpy as np3import random4import spaces5import torch6from diffusers import  DiffusionPipeline, FlowMatchEulerDiscreteScheduler7from transformers import CLIPTextModel, CLIPTokenizer,T5EncoderModel, T5TokenizerFast8 9dtype = torch.bfloat1610device = "cuda" if torch.cuda.is_available() else "cpu"11 12pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=torch.bfloat16).to(device)13 14MAX_SEED = np.iinfo(np.int32).max15MAX_IMAGE_SIZE = 204816 17@spaces.GPU(duration=190)18def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, guidance_scale=5.0, num_inference_steps=28, progress=gr.Progress(track_tqdm=True)):19    if randomize_seed:20        seed = random.randint(0, MAX_SEED)21    generator = torch.Generator().manual_seed(seed)22    image = pipe(23        prompt = prompt, 24        width = width,25        height = height,26        num_inference_steps = num_inference_steps, 27        generator = generator,28        guidance_scale=guidance_scale29    ).images[0] 30    return image, seed31 32examples = [33    "a tiny astronaut hatching from an egg on the moon",34    "a cat holding a sign that says hello world",35    "an anime illustration of a wiener schnitzel",36]37 38css="""39#col-container {40    margin: 0 auto;41    max-width: 520px;42}43"""44 45with gr.Blocks(css=css) as demo:46    47    with gr.Column(elem_id="col-container"):48        gr.Markdown(f"""# FLUX.1 [dev]4912B param rectified flow transformer guidance-distilled from [FLUX.1 [pro]](https://blackforestlabs.ai/)  50[[non-commercial license](https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md)] [[blog](https://blackforestlabs.ai/announcing-black-forest-labs/)] [[model](https://huggingface.co/black-forest-labs/FLUX.1-dev)]51        """)52        53        with gr.Row():54            55            prompt = gr.Text(56                label="Prompt",57                show_label=False,58                max_lines=1,59                placeholder="Enter your prompt",60                container=False,61            )62            63            run_button = gr.Button("Run", scale=0)64        65        result = gr.Image(label="Result", show_label=False)66        67        with gr.Accordion("Advanced Settings", open=False):68            69            seed = gr.Slider(70                label="Seed",71                minimum=0,72                maximum=MAX_SEED,73                step=1,74                value=0,75            )76            77            randomize_seed = gr.Checkbox(label="Randomize seed", value=True)78            79            with gr.Row():80                81                width = gr.Slider(82                    label="Width",83                    minimum=256,84                    maximum=MAX_IMAGE_SIZE,85                    step=32,86                    value=1024,87                )88                89                height = gr.Slider(90                    label="Height",91                    minimum=256,92                    maximum=MAX_IMAGE_SIZE,93                    step=32,94                    value=1024,95                )96            97            with gr.Row():98 99                guidance_scale = gr.Slider(100                    label="Guidance Scale",101                    minimum=1,102                    maximum=15,103                    step=0.1,104                    value=3.5,105                )106  107                num_inference_steps = gr.Slider(108                    label="Number of inference steps",109                    minimum=1,110                    maximum=50,111                    step=1,112                    value=28,113                )114        115        gr.Examples(116            examples = examples,117            fn = infer,118            inputs = [prompt],119            outputs = [result, seed],120            cache_examples="lazy"121        )122 123    gr.on(124        triggers=[run_button.click, prompt.submit],125        fn = infer,126        inputs = [prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],127        outputs = [result, seed]128    )129 130demo.launch()