Captura de Emociones en tiempo real con Inteligencia Artificial

En este proyecto integro el reconocimiento de emociones con inteligencia artificial (IA) con el de Visión por Computadora para contar rostros. Para detectar las expresiones usé un modelo preentrenado y publicado en Kaggle.

Aprovecho el flujo del proyecto anterior para acelerar el desarrollo del presente trabajo. Por ejemplo, empleo las credenciales de Google Sheets, la lógica del script clasificador, entre otras partes.

Se adiciona: TensorFlow y Keras para el tema de aprendizaje profundo.

Cuadro estadístico de recuento de emociones


BENEFICIOS

La Visión por Computadora viene siendo aplicada por la industria en múltiples servicios que van desde cámaras web caseras, industriales, detección de patrones en medicina, incluso como identificador facial, como sucede en mi centro de trabajo.

Específicamente este proyecto de captura me interesa para cuestiones de analítica de emociones ligado al marketing.

La novedad en este nuevo proyecto es el uso de la inteligencia artificial (IA) y en ella, el aprendizaje profundo, sin embargo estoy preparando otro post con un flujo potenciado por el algoritmo: Local Binary Patterns Histograms (LBPH) en OpenCv que usa el enfoque tradicional de visión por computadora pero que resulta interesante para proyectos pequeños y que no necesitan tanta precisión.

De hecho, sospecho que muchos servicios de webcam lo emplean y sobre todo se evidencian con los falsos positivos. Ahora bien, como comunicador social veo grandes posibilidades en ambos enfoques.

Flujo del Proyecto

Configuración Inicial

  • Importar bibliotecas necesarias (OpenCV, TensorFlow, NumPy, gspread, oauth2client y datetime).
  • Configurar el acceso a Google Sheets mediante credenciales de OAuth2 (Usé las de mi proyecto anterior).

Carga y Preparación del Modelo de TensorFlow

  • Cargar el modelo previamente entrenado para la detección de emociones.
  • Establecer el mapeo de índices a etiquetas de emociones.
    (En el modelo entrenado las emociones se identificaba por números. Ligué el número a etiquetas).

Inicialización del Detector de Rostros

  • Utilizar el clasificador Haar Cascade de OpenCV para detectar rostros.
    (Cuidar la ruta, es un error común).

Captura de Video en Tiempo Real

  • Iniciar la captura de video desde la cámara web.
  • En un bucle continuo, capturar cada frame del video.

Procesamiento de Imagen y Detección de Rostros

  • Convertir el frame capturado a escala de grises (si es necesario).
  • Detectar rostros en el frame.

Procesamiento de Cada Rostro Detectado

Para cada rostro detectado:

  • Recortar la región de interés del rostro.
  • Preprocesar para cumplir con los requisitos de entrada del modelo.
  • Realizar la predicción de emociones utilizando el modelo de TensorFlow.

Visualización y Registro de Resultados

  • Mostrar en el video el recuadro alrededor del rostro detectado con la etiqueta de emoción y la confianza.
  • Registrar la emoción detectada y la confianza en Google Sheets con marca de tiempo.

Control de la Interfaz de Usuario

  • Permitir al usuario finalizar el programa presionando una tecla específica (por ejemplo, 's').

Finalización del Programa

  • Liberar la captura de video y cerrar todas las ventanas de OpenCV.


Entradas más populares de este blog

Texto a Voz con HTML y Javascript

Experiencia VR Interactiva con A-Frame: Tutorial para Principiantes

Automatización en la redacción con Python, inteligencia artificial y web scraping