Spaces:
Sleeping
Sleeping
File size: 1,805 Bytes
edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 edd338a 1dff4c8 |
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 |
import os
import uuid
import gradio as gr
import torch
from PIL import Image
from diffusers import StableDiffusionXLPipeline, EulerAncestralDiscreteScheduler
# Configuração do modelo e pipeline
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
# Carrega o pipeline do modelo
scheduler = EulerAncestralDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionXLPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
pipe.to("cuda") # Usa GPU para acelerar o processamento
# Função para geração de imagens
def generate_image(prompt: str, height: int = 576, width: int = 1024, seed: int = None) -> Image.Image:
if not seed:
seed = random.randint(0, 99999)
# Configurar seed para reprodutibilidade
generator = torch.manual_seed(seed)
# Gerar a imagem
image = pipe(prompt, height=height, width=width, num_inference_steps=50, guidance_scale=7.5, generator=generator).images[0]
# Retorna a imagem gerada
return image
# Interface Gradio
with gr.Blocks() as demo:
gr.Markdown("## Gerador de Imagens com Stable Diffusion XL")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label="Texto (Prompt)", placeholder="Descreva a imagem que deseja gerar...")
seed = gr.Number(label="Seed (opcional)", value=None)
generate_button = gr.Button("Gerar Imagem")
with gr.Column():
output_image = gr.Image(label="Imagem Gerada", type="pil")
# Conectar botão à função
generate_button.click(fn=generate_image, inputs=[prompt, gr.Number(value=576), gr.Number(value=1024), seed], outputs=output_image)
# Executar o app
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)
|