IAimage / app.py
onnew's picture
Update app.py
1dff4c8 verified
raw
history blame
1.81 kB
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)