Problema que resuelve
Hacer visión por computador en el navegador parece magia y a la vez es accesible: con modelos pre-entrenados se puede detectar rostros, expresiones y puntos faciales sin enviar datos al servidor, manteniendo la privacidad del usuario.
Stack y decisiones técnicas
- Inferencia 100% del lado del cliente: ningún frame sale del navegador.
- Modelos pre-entrenados cargados una sola vez y reutilizados a lo largo de la sesión.
- Loop de detección sincronizado con
requestAnimationFramepara no saturar el thread principal. - Canvas API para dibujar bounding boxes y landmarks sobre el video en vivo.
Retos encontrados
- Latencia y FPS: la detección en cada frame es cara; había que decidir cuándo correrla y cuándo no.
- Manejo de la cámara con permisos, errores y dispositivos múltiples.
- Precisión vs costo: modelos más precisos son más lentos; elegir el modelo correcto por caso de uso.
Cómo resolví los retos
- Throttle del loop de detección (cada N frames) en lugar de cada frame.
- Fallback explícito cuando la cámara no está disponible o el usuario rechaza permisos.
- Comparación cuantitativa de modelos midiendo FPS reales antes de comprometerme con uno.
Qué aprendí
- A integrar IA en el frontend sin convertirlo en una caja negra.
- A pensar en privacidad como ventaja arquitectónica, no como restricción.
- A medir performance del lado del cliente con criterios reproducibles.
Estado actual
Auto-alojado para uso personal y experimentación.