Sistema de seguimiento ocular

Muchas soluciones de visión artificial basadas en aprendizaje profundo, para funcionar en tiempo real, aún no dan la talla de rendimiento y estabilidad en dispositivos de baja gama. Ahora ando de viaje y en los ratos de tren y momentos de pausa he aprovechado para mejorar mi sistema de seguimiento ocular destinado a performances audiovisuales. La versión inicial cumplía su tarea, pero con «peculiaridades».

Para mis proyectos actuales necesito un sistema robusto y eficiente. Exploré implementaciones de IA, como YOLO v3, v4, v8 y sus versiones «tiny», además de MobileNet-SSD v1 y v2. ChatGPT es útil aquí para implementar y traducir modelos entre plataformas rápidamente; de otro modo, habría tomado semanas comparar benchmarks para elegir e implementar uno. Entrené cada modelo con datos de una versión más precisa pero más lenta de mi sistema inicial, basada en k-means de OpenCV.

Resultados

  • MobileNet-SSD v2: alcancé 20 fps con frames de 640×480 en una CPU i7 a 2,5 GHz, siendo el más rápido.
  • MobileNet-SSD v1: le siguió de cerca a v2.
  • YOLO v3 tiny y otros: apenas lograron 8 fps.

En este punto, los resultados vibraban y daban datos diferentes entre frames casi iguales. Reducir más las capacidades para aumentar la velocidad no era viable.

Cambio de enfoque

Volví a métodos de visión artificial «clásicos» (pronto los llamaremos retro) con el viejo y confiable OpenCV. Usé umbralización adaptativa y filtros de mediana en una imagen reducida para hallar el área de interés (ROI); luego busqué contornos y apliqué un ajuste circular por mínimos cuadrados en la imagen original. Logré así 40 fps en imágenes de 1620×1080.

Es una solución para un caso muy particular en un contexto controlado, pero muestra que los algoritmos tradicionales siguen siendo una alternativa muy poderosa.

No descarto seguir mejorando la eficiencia con algoritmos de IA. En el proceso surgieron ideas que podrían funcionar mejor al rescatar características más complejas de las imágenes en entornos controlados.

Ficha técnica

Tipo
Desarrollo técnico propio
Técnica
Visión artificial clásica con OpenCV: umbralización adaptativa, filtro de mediana, contornos y ajuste circular por mínimos cuadrados
Modelos comparados
YOLO v3 · YOLO v4 · YOLO v8 y sus versiones tiny · MobileNet-SSD v1 · MobileNet-SSD v2
Rendimiento
40 fps a 1620×1080 (MobileNet-SSD v2: 20 fps a 640×480)
Uso
Performance audiovisual
Año
2024

Uno de los instrumentos propios.