ChatbotML's picture
Update app.py
4b2fb38 verified
import os
import gradio as gr
from transformers import pipeline
pipe = pipeline("image-classification",
model="dima806/facial_emotions_image_detection")
def launch(input):
etiquetas_espanol = {'happy': 'felicidad', 'neutral': 'neutral',
'surprise': 'sorpresa', 'sad': 'tristeza',
'angry': 'ira', 'fear': 'miedo',
'disgust': 'aversión'}
emocion_puntajes = pipe(input)
cadenas_formateadas = []
for emocion in emocion_puntajes:
label = emocion['label']
score = emocion['score']
palabra_espanol = etiquetas_espanol[label]
porcentaje = round(score * 100, 1)
cadena_formateada = f"{palabra_espanol}: {porcentaje}%"
cadenas_formateadas.append(cadena_formateada)
# Unir las cadenas formateadas con comas y un espacio
resultado = ", ".join(cadenas_formateadas)
return resultado
titulo = """
<div style="text-align: center;">
<h1 style="font-weight: 900; font-size: 2.50rem; margin-bottom: 1px;">Analizador de emociones Ekman/Goleman</h1>
</div>
"""
descripcion = """
<div style="font-size: 1.10rem; margin-bottom: 1px;">
Amigos de EyB, ¿están dispuestos a someterse al ojo implacable de un robot analizador de emociones? El ojo al que nadie puede engañar.
Un robot rigurosamente científico —'Contra la ignorancia y el fanatismo'— basado en el modelo de 6 emociones primarias de las personas humanas de Ekman/Goleman: felicidad, sorpresa, tristeza, miedo, ira y aversión. A las que hay que sumar una séptima que podemos llamar “neutra” por no llamarla “impavidez” o “ni chicha ni limoná”.
Ofrecemos este servicio de forma enteramente gratuita a los lectores de EyB. Suban una foto que incluya rostros humanos bien visibles y sorpréndase (o no) con el diagnóstico. Si hay varios caretos, saca la media para calcular una “emoción grupal”. Por supuesto, los resultados se expresan en forma probabilística. Por ejemplo, detrás de ese 83% de felicidad se esconde un 6% de ira que solo el ojo afilado e impasible de la máquina puede detectar.
¡Suerte en su Test de Ekman/Goleman!
</div>
"""
iface = gr.Interface(launch,
inputs=gr.Image(type='pil'),
outputs="text",
submit_btn="Analizar",
clear_btn="Limpiar",
title=titulo, description=descripcion)
iface.launch(show_api=False)