Proyecto01-MIA / app.py
sbcesar
Small fixes
3bf5bf0
Raw
History Blame Contribute Delete
2.15 kB
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()