Creación de mapas de calor para seguimiento ocular en videos

Clase 12 de 16Curso de Visión Artificial con Python

Resumen

La tecnología de seguimiento ocular ha revolucionado la forma en que entendemos la interacción humana con productos y contenidos digitales. A través de mapas de calor generados mediante algoritmos gaussianos, podemos visualizar exactamente dónde se concentra la atención visual de los usuarios, proporcionando datos invaluables para mejorar diseños, interfaces y experiencias de usuario. Este análisis detallado nos permite comprender no solo qué ven nuestros clientes, sino cómo interactúan visualmente con lo que observan.

¿Cómo funciona un mapa de calor para el seguimiento ocular?

El fundamento de un mapa de calor para seguimiento ocular se basa en una distribución gaussiana en un espacio tridimensional. Esta función matemática nos permite crear una representación visual donde el punto central corresponde a la zona donde el usuario está enfocando su mirada. Aunque trabajamos en un espacio tridimensional, el resultado se visualiza en una imagen plana bidimensional.

La fórmula de distribución gaussiana incluye varios parámetros configurables:

  • Factor de decaimiento: Determina cómo se desvanece gradualmente el mapa de calor conforme nos alejamos del punto central.
  • Sigma: Controla el tamaño del área afectada por la mirada.
  • Amplitud: Define la intensidad de los colores en el mapa de calor.

Estos parámetros nos permiten ajustar la visualización para representar con precisión cómo se distribuye la atención visual del usuario en la pantalla.

Implementación técnica del seguimiento ocular

Para implementar esta solución, seguimos trabajando con MediaPipe para la detección facial, utilizando un umbral de confianza mínimo de 0.5. El proceso incluye varios pasos clave:

  1. Obtener las dimensiones del frame de video (ancho y alto).
  2. Inicializar el mapa de calor (Hitman) con esas dimensiones.
  3. Aplicar un decaimiento exponencial al mapa para que las zonas previamente observadas vayan desvaneciéndose.
  4. Convertir el formato de color de BGR a RGB para trabajar con MediaPipe.
  5. Extraer los puntos de referencia de los ojos (posiciones 33 y 263 para los ojos izquierdo y derecho).
  6. Calcular el punto medio entre ambos ojos.
  7. Agregar el parche gaussiano centrado en ese punto medio.
# Obtener dimensiones del frame
height, width = frame.shape[:2]
# Inicializar el mapa de calor
heatmap = np.zeros((height, width), dtype=np.float32)
# Aplicar decaimiento exponencial
heatmap *= decay_factor

Una vez generado el mapa de calor, realizamos una normalización para escalar los valores entre 0 y 255, lo que nos permite aplicar una paleta de colores tipo "jet" (que va desde rojo intenso, pasando por amarillo, verde y hasta celeste). Finalmente, superponemos este mapa sobre la imagen original con cierta transparencia.

¿Cómo analizar videos grabados para estudios de seguimiento ocular?

Aunque el seguimiento ocular en tiempo real es útil, muchos estudios profesionales prefieren grabar videos de los usuarios para analizarlos posteriormente con mayor detalle. Esta metodología permite un análisis más profundo y sin las limitaciones de tiempo del procesamiento en vivo.

Para implementar esta solución con videos pregrabados, podemos utilizar tanto CPU como GPU, siendo esta última significativamente más rápida para el procesamiento. El procedimiento básico es:

  1. Instalar MediaPipe en el entorno de trabajo (por ejemplo, Google Colab).
  2. Cargar el video que queremos analizar.
  3. Definir la ruta de salida para el video procesado.
  4. Configurar el formato del video de salida (codec, FPS, etc.).
  5. Procesar cada frame aplicando el algoritmo de seguimiento ocular.
  6. Guardar el resultado como un nuevo video.
# Definir ruta de salida
output_path = 'resultado_seguimiento_ocular.mp4'
# Configurar formato de salida
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = 30
video_writer = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
# Escribir cada frame procesado
video_writer.write(frame_procesado)

Limitaciones del seguimiento ocular

Es importante destacar que esta técnica tiene limitaciones significativas, especialmente cuando se trata de la posición de la cabeza en relación con la dirección de la mirada. Por ejemplo, si una persona tiene la cabeza inclinada hacia arriba pero está mirando hacia abajo, el sistema podría interpretar incorrectamente la dirección de la mirada.

Esta limitación es particularmente relevante cuando los objetos de interés están a diferentes distancias del usuario. El sistema funciona mejor cuando los objetos están relativamente cerca y en un mismo plano, como una pantalla de computadora.

El seguimiento ocular mediante mapas de calor ofrece una poderosa herramienta para comprender el comportamiento visual de los usuarios. Ya sea implementado en tiempo real o aplicado a videos pregrabados, esta tecnología proporciona insights valiosos sobre cómo interactúan las personas con interfaces digitales y productos físicos. Te invitamos a experimentar con tus propios videos utilizando las técnicas descritas y compartir tus experiencias en los comentarios.