File size: 2,507 Bytes
3439baf
 
 
 
 
 
a74fada
3439baf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bae9813
9d447e1
4b2fb38
bae9813
 
 
94726f6
4b2fb38
3673a8e
94726f6
3673a8e
94726f6
3673a8e
94726f6
 
9d447e1
94726f6
 
3439baf
 
22a7cc0
a74fada
 
94726f6
3439baf
1183947
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
48
49
50
51
52
53
54
55
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)