// Proyecto · Computer Vision · Emoción en tiempo real
Una CNN detecta las emociones faciales del interlocutor frame a frame y las convierte en un índice de receptividad de 0 a 10 durante una presentación de ventas. Webcam en directo o subida de vídeo con export CSV. Dos arquitecturas comparadas: CNN custom (60.1%) vs MobileNetV2 fine-tuned (63.0%), ambas a menos de 30ms por frame.
// Métricas del sistema
El problema
No sabes si el cliente te está siguiendo. En una videollamada o reunión presencial, los microgestos del interlocutor pasan desapercibidos mientras te concentras en el discurso. El interés puede haberse perdido hace diez minutos y no te has dado cuenta.
Las encuestas post-reunión llegan demasiado tarde. Para cuando el cliente rellena un formulario de satisfacción, la oportunidad de pivotar ha pasado. La información vale algo solo si llega en tiempo real.
Observar y presentar a la vez es imposible. Mantener el hilo del argumentario mientras analizas expresiones faciales es cognitivamente inviable. Necesitas un sistema que lo haga de forma automática y no intrusiva.
Sin datos, no hay mejora. No existe forma de analizar qué partes de una presentación generaron engagement y cuáles desconectaron al cliente. El export CSV convierte cada sesión en un activo de aprendizaje.
PASO 01
La interfaz Streamlit acepta dos fuentes: webcam en tiempo real (~8 FPS) o subida de un archivo de vídeo. OpenCV gestiona la captura y el preprocesado: detección de cara, recorte y normalización a 48×48 píxeles en escala de grises, el formato esperado por FER2013.
PASO 02
Cada frame pasa por la CNN (custom o MobileNetV2 según configuración). El modelo clasifica la emoción en 7 categorías (alegría, sorpresa, neutralidad, tristeza, asco, ira, miedo) con su probabilidad asociada. Latencia entre 27 y 29ms por frame.
PASO 03
Las emociones individuales son volátiles. Una ventana deslizante de 10 frames promedia las probabilidades y las convierte en un índice 0–10: emociones positivas (alegría, sorpresa) empujan el índice hacia arriba, negativas (ira, tristeza, asco) hacia abajo. El resultado es una curva estable y legible.
PASO 04
Cada sesión genera un CSV con timestamp, emoción detectada e índice de receptividad por frame: datos listos para análisis post-reunión. Adicionalmente, el modelo se exporta a TF.js para una demo sin instalación que corre íntegramente en el navegador.
Dos arquitecturas CNN sobre FER2013, servidas vía FastAPI y Streamlit, con demo TF.js para ejecución sin backend.
Tecnologías
No es un experimento de notebook: la CNN procesa vídeo en directo, mantiene una ventana temporal de contexto y produce un índice continuo. Captura, detección facial, inferencia y agregación de señal en una sola cadena.
Dos aproximaciones distintas al mismo problema, evaluadas con las mismas métricas. La CNN custom (60.1%, ~27ms) frente al transfer learning con MobileNetV2 (63.0%, ~29ms). Documentación honesta del tradeoff entre velocidad y precisión.
El modelo no vive solo en Python: una API FastAPI lo expone a otros sistemas y Streamlit ofrece una interfaz usable. El export CSV transforma cada sesión en datos estructurados para análisis posterior.
El modelo se convierte a TF.js y corre íntegramente en el cliente. Cualquier persona puede probar el sistema desde un enlace, sin instalación, sin servidor. El mismo modelo, dos entornos de ejecución distintos.
Relevante si...
Menos relevante si...
Proyectos relacionados
Detección de fraude sin etiquetas de fraude. PR-AUC 0.37 frente a 0.11 del baseline. Demo en navegador.
Ver caso completo → LightGBM · Azure OpenAI · FastAPIClasificación de transacciones en dos niveles. 96.1% de precisión, 95.6% menos coste que enviar todo al LLM.
Ver caso completo →Contacto
30 minutos. Sin compromiso. Si veo que puedo ayudarte, te lo digo. Si no, también.
Agendar videollamada →