CoolFace
Apppublic

R4Z0R1337/2DFusion

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py139 linesDownload Raw Back to root
1import gradio as gr2import numpy as np3import random4import spaces5import torch6from diffusers import  DiffusionPipeline, FlowMatchEulerDiscreteScheduler, AutoencoderTiny, AutoencoderKL7from transformers import CLIPTextModel, CLIPTokenizer,T5EncoderModel, T5TokenizerFast8from live_preview_helpers import calculate_shift, retrieve_timesteps, flux_pipe_call_that_returns_an_iterable_of_images9 10dtype = torch.bfloat1611device = "cuda" if torch.cuda.is_available() else "cpu"12 13taef1 = AutoencoderTiny.from_pretrained("madebyollin/taef1", torch_dtype=dtype).to(device)14good_vae = AutoencoderKL.from_pretrained("black-forest-labs/FLUX.1-dev", subfolder="vae", torch_dtype=dtype).to(device)15pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", torch_dtype=dtype, vae=taef1).to(device)16torch.cuda.empty_cache()17 18MAX_SEED = np.iinfo(np.int32).max19MAX_IMAGE_SIZE = 204820 21pipe.flux_pipe_call_that_returns_an_iterable_of_images = flux_pipe_call_that_returns_an_iterable_of_images.__get__(pipe)22 23@spaces.GPU(duration=75)24def infer(prompt, seed=42, randomize_seed=False, width=1024, height=1024, guidance_scale=3.5, num_inference_steps=28, progress=gr.Progress(track_tqdm=True)):25    if randomize_seed:26        seed = random.randint(0, MAX_SEED)27    generator = torch.Generator().manual_seed(seed)28    29    for img in pipe.flux_pipe_call_that_returns_an_iterable_of_images(30            prompt=prompt,31            guidance_scale=guidance_scale,32            num_inference_steps=num_inference_steps,33            width=width,34            height=height,35            generator=generator,36            output_type="pil",37            good_vae=good_vae,38        ):39            yield img, seed40    41examples = [42    "a tiny astronaut hatching from an egg on the moon",43    "a cat holding a sign that says hello world",44    "an anime illustration of a wiener schnitzel",45]46 47css="""48#col-container {49    margin: 0 auto;50    max-width: 520px;51}52"""53 54with gr.Blocks(css=css) as demo:55    56    with gr.Column(elem_id="col-container"):57        gr.Markdown(f"""# FLUX.1 [dev]5812B param rectified flow transformer guidance-distilled from [FLUX.1 [pro]](https://blackforestlabs.ai/)  59[[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)]60        """)61        62        with gr.Row():63            64            prompt = gr.Text(65                label="Prompt",66                show_label=False,67                max_lines=1,68                placeholder="Enter your prompt",69                container=False,70            )71            72            run_button = gr.Button("Run", scale=0)73        74        result = gr.Image(label="Result", show_label=False)75        76        with gr.Accordion("Advanced Settings", open=False):77            78            seed = gr.Slider(79                label="Seed",80                minimum=0,81                maximum=MAX_SEED,82                step=1,83                value=0,84            )85            86            randomize_seed = gr.Checkbox(label="Randomize seed", value=True)87            88            with gr.Row():89                90                width = gr.Slider(91                    label="Width",92                    minimum=256,93                    maximum=MAX_IMAGE_SIZE,94                    step=32,95                    value=1024,96                )97                98                height = gr.Slider(99                    label="Height",100                    minimum=256,101                    maximum=MAX_IMAGE_SIZE,102                    step=32,103                    value=1024,104                )105            106            with gr.Row():107 108                guidance_scale = gr.Slider(109                    label="Guidance Scale",110                    minimum=1,111                    maximum=15,112                    step=0.1,113                    value=3.5,114                )115  116                num_inference_steps = gr.Slider(117                    label="Number of inference steps",118                    minimum=1,119                    maximum=50,120                    step=1,121                    value=28,122                )123        124        gr.Examples(125            examples = examples,126            fn = infer,127            inputs = [prompt],128            outputs = [result, seed],129            cache_examples="lazy"130        )131 132    gr.on(133        triggers=[run_button.click, prompt.submit],134        fn = infer,135        inputs = [prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],136        outputs = [result, seed]137    )138 139demo.launch()