File size: 2,153 Bytes
ae38661
 
 
 
 
3bf5bf0
ae38661
 
3bf5bf0
ae38661
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()