Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import pipeline | |
| import time | |
| # 1. Cargamos el primer modelo: Image Captioning (Visión-Lenguaje) | |
| captioner = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base") | |
| # 2. Cargamos el segundo modelo: Traducción (NLP) | |
| translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es") | |
| def procesar_imagen(imagen): | |
| # Iniciamos el contador de rendimiento | |
| start_time = time.time() | |
| # Modelo 1: Extraemos el texto de la imagen en inglés | |
| caption_en = captioner(imagen)[0]['generated_text'] | |
| # Modelo 2: Traducimos el texto al español | |
| caption_es = translator(caption_en)[0]['translation_text'] | |
| # Paramos el contador | |
| end_time = time.time() | |
| tiempo_ejecucion = round(end_time - start_time, 2) | |
| # Devolvemos el inglés, el español y el tiempo que ha tardado | |
| return caption_en, caption_es, f"{tiempo_ejecucion} segundos" | |
| # Creamos la interfaz con Gradio | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("# 🖼️ Generador de Descripciones en Español") | |
| gr.Markdown("Esta aplicación soluciona el problema de obtener descripciones de imágenes en español encadenando dos modelos de Inteligencia Artificial: uno de **Visión-Lenguaje** (BLIP) y otro de **Procesamiento de Lenguaje Natural** (MarianMT).") | |
| with gr.Row(): | |
| with gr.Column(): | |
| # Variedad en el input (permite subir fotos o usar la webcam del PC/Móvil) | |
| imagen_input = gr.Image(type="pil", label="Input: Sube una imagen o usa tu cámara", sources=["upload", "webcam", "clipboard"]) | |
| btn_procesar = gr.Button("Analizar y Traducir", variant="primary") | |
| with gr.Column(): | |
| output_en = gr.Textbox(label="Output 1: Descripción en Inglés (Modelo BLIP)") | |
| output_es = gr.Textbox(label="Output 2: Traducción al Español (Modelo MarianMT)") | |
| output_tiempo = gr.Textbox(label="Rendimiento (Tiempo de ejecución en CPU)") | |
| btn_procesar.click(fn=procesar_imagen, inputs=imagen_input, outputs=[output_en, output_es, output_tiempo]) | |
| demo.launch() | |