Spaces:
Paused
Paused
File size: 3,279 Bytes
fafd12c f2e9ef7 fafd12c 5bdb9be fafd12c 851538d e403150 f2e9ef7 fafd12c 5bdb9be fafd12c 5bdb9be fafd12c 851538d fafd12c 5bdb9be fafd12c f2e9ef7 99df419 f2e9ef7 5bdb9be d6d99c2 f2e9ef7 5bdb9be f2e9ef7 5bdb9be |
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 |
import torch
import gradio as gr
from PIL import Image
import spaces
import tqdm
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
device = "cuda"
num_images_per_prompt = 1
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16).to(device)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", torch_dtype=torch.float16).to(device)
deafult_negative = "poorly Rendered face, poorly drawn face, poor facial details, poorly drawn hands, poorly rendered hands, low resolution, blurry image, oversaturated, bad anatomy, signature, watermark, username, error, missing limbs, error, out of frame, extra fingers, mutated hands, poorly drawn hands, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck, username"
prompt_add = "(dark shot:1.17), epic realistic, faded, ((neutral colors)), art, (hdr:1.5), (muted colors:1.2), hyperdetailed, (artstation:1.5), cinematic, warm lights, dramatic light, (intricate details:1.1), complex background, (rutkowski:0.8), (teal and orange:0.4)"
css = """
footer {
visibility: hidden
}
#generate_button {
color: white;
border-color: #007bff;
background: #2563eb;
}
#save_button {
color: white;
border-color: #028b40;
background: #01b97c;
width: 200px;
}
#settings_header {
background: rgb(245, 105, 105);
}
"""
@spaces.GPU
def gen(prompt, negative, width, height, use_add, progress=gr.Progress()):
if use_add:
text = f"{prompt}, {prompt_add}"
else:
text = f"{prompt"
prior_output = prior(
prompt=text,
height=height,
width=width,
negative_prompt=negative,
guidance_scale=4.0,
num_images_per_prompt=num_images_per_prompt,
num_inference_steps=25
)
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.half(),
prompt=text,
negative_prompt=negative,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images
return decoder_output
with gr.Blocks(css=css) as demo:
gr.Markdown("# Stable Cascade ```DEMO```")
with gr.Row():
prompt = gr.Textbox(show_label=False, placeholder="Enter your prompt", max_lines=3, lines=1, interactive=True, scale=20)
button = gr.Button(value="Generate", scale=1)
with gr.Accordion("Advanced options", open=False):
with gr.Row():
negative = gr.Textbox(show_label=False, value=deafult_negative, placeholder="Enter a negative", max_lines=4, lines=3, interactive=True)
with gr.Row():
width = gr.Slider(label="Width", minimum=1024, maximum=2048, step=8, value=1024, interactive=True)
height = gr.Slider(label="Height", minimum=1024, maximum=2048, step=8, value=1024, interactive=True)
with gr.Row():
use_add = gr.Checkbox(label="Use prompt addition", value=True, interactive=True)
with gr.Row():
gallery = gr.Gallery(show_label=False, rows=1, columns=1, allow_preview=True, preview=True)
button.click(gen, inputs=[prompt, negative, width, height, use_add], outputs=gallery)
demo.queue().launch(show_api=False)
|