Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import torch | |
| from PIL import Image | |
| from diffusers import DiffusionPipeline | |
| from transformers import pipeline | |
| # Modelos | |
| modeloObtenerTextoImagen = pipeline( | |
| "image-to-text", | |
| model="Salesforce/blip-image-captioning-base" | |
| ) | |
| modeloGenerarImagen = DiffusionPipeline.from_pretrained( | |
| "sd-legacy/stable-diffusion-v1-5", | |
| torch_dtype=torch.float32 | |
| ) | |
| def obtenerDescripcion(imagen): | |
| """ | |
| Función que recibe una imagen, genera una descripción de la misma | |
| y luego crea una nueva imagen basada en esa descripción. | |
| """ | |
| # Obtener descripción de la imagen | |
| descripcion = modeloObtenerTextoImagen(Image.fromarray(imagen)) | |
| texto_generado = descripcion[0]['generated_text'] | |
| # Generar imagen a partir de la descripción | |
| imagen_generada = modeloGenerarImagen(texto_generado).images[0] | |
| return imagen_generada, texto_generado | |
| # Layout con Gradio Blocks | |
| with gr.Blocks(title="Asistente Visual para Personas con Discapacidad") as demo: | |
| gr.Markdown( | |
| """ | |
| # Asistente Visual | |
| Esta herramienta ayuda a personas con discapacidad visual a comprender imágenes. | |
| 1. Sube una imagen. | |
| 2. La IA generará una descripción de la imagen y una nueva imagen interpretativa. | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(): | |
| imagen_input = gr.Image(label="Sube tu imagen aquí", type="numpy") | |
| boton_generar = gr.Button("Generar descripción e imagen") | |
| with gr.Column(): | |
| imagen_output = gr.Image(label="Imagen generada") | |
| descripcion_output = gr.Textbox(label="Descripción generada por IA", lines=4) | |
| # Conectar botón a función | |
| boton_generar.click( | |
| fn=obtenerDescripcion, | |
| inputs=imagen_input, | |
| outputs=[imagen_output, descripcion_output] | |
| ) | |
| # Lanzar app | |
| demo.launch(share=True) |