File size: 2,606 Bytes
3275443 8ed2e24 e48132d 3275443 3e3e9d8 8ed2e24 3e3e9d8 331aa5a 8ed2e24 3e3e9d8 3275443 3e3e9d8 3275443 3e3e9d8 3275443 3e3e9d8 3275443 63e79c4 3275443 63e79c4 3275443 63e79c4 3275443 63e79c4 3275443 |
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 |
import gradio as gr
from PIL import Image
import torch
from diffusers import StableDiffusionImg2ImgPipeline
import spaces
# Funci贸n para inicializar el pipeline de Stable Diffusion utilizando GPU
@spaces.GPU(duration=120) # Solicita el uso de GPU por 120 minutos
def initialize_pipeline():
device = "cuda" if torch.cuda.is_available() else "cpu"
model_id = "CompVis/stable-diffusion-v1-4" # Cambia esto al ID del modelo adecuado
try:
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(model_id).to(device)
except ValueError as e:
return f"Error cargando el pipeline: {e}"
return pipe
# Configuraci贸n inicial del modelo
pipe = None
def setup_pipeline():
global pipe
if pipe is None:
pipe = initialize_pipeline()
def cartoonize_image(image, prompt):
setup_pipeline() # Aseg煤rate de que el pipeline est茅 inicializado
try:
# Preprocesar imagen
image = image.convert("RGB")
image = image.resize((512, 512)) # Ajusta el tama帽o seg煤n sea necesario
# Generar imagen con Stable Diffusion Img2Img
with torch.no_grad():
result = pipe(prompt=prompt, init_image=image, strength=0.75).images[0]
return result
except Exception as e:
return f"Error procesando la imagen: {e}"
def main():
with gr.Blocks() as demo:
gr.Markdown("## Conversi贸n de Imagen a Caricatura Estilo Pixar")
with gr.Row():
with gr.Column():
input_image = gr.Image(type="pil", label="Sube tu imagen")
prompt = gr.Textbox(label="Prompt", value="A Pixar-style cartoon character")
with gr.Row():
submit_button = gr.Button("Submit")
stop_button = gr.Button("Stop")
output_image = gr.Image(type="pil", label="Imagen Caricaturizada")
def process_image(image, prompt):
return cartoonize_image(image, prompt)
submit_button.click(
fn=process_image,
inputs=[input_image, prompt],
outputs=output_image
)
# La funcionalidad de stop en un entorno de Gradio no se puede manejar f谩cilmente,
# pero puedes usar controladores adicionales o l贸gica para detener la ejecuci贸n si es necesario.
stop_button.click(
fn=lambda: "El proceso ha sido detenido", # Mensaje de placeholder
outputs=output_image
)
demo.launch()
if __name__ == "__main__":
main()
|