LiftTrack: Una Solución Móvil Basada en 3D CNN para Monitorear y Mejorar las Técnicas de Levantamiento de Pesas
3D CNN Corrección de Forma + Flutter
Resumen
Rol: Líder de Frontend y Arquitectura Flutter
Stack: Flutter, Dart, BLoC, 3D CNN, Python
Resultado Clave: 100% Precisión en la Forma del Peso Muerto
Duración: 8 meses (Julio 2024 - Febrero 2025)
LiftTrack is a research-backed mobile application designed to democratize professional weightlifting coaching. By integrating advanced computer vision models into a Flutter application, the system provides real-time biomechanical analysis and corrective feedback to prevent injuries. This 8-month capstone project focused on developing a high-performance solution for real-time weightlifting form monitoring using 3D CNN and Pose Estimation.
El Problema
Desafío: Alto riesgo de lesiones en el levantamiento debido a una mala técnica y la falta de entrenamiento profesional.
Audiencia: Usuarios de gimnasio solitarios y atletas que carecen de acceso a entrenadores personales costosos.
Restricciones: Inferencia en tiempo real en dispositivos móviles, manejo de movimientos temporales complejos frente a poses estáticas y mantenimiento de altas tasas de fotogramas para retroalimentación inmediata.
Los levantadores solitarios a menudo tienen dificultades para mantener una técnica adecuada, lo que lleva a lesiones crónicas o ganancias subóptimas. La estimación de pose tradicional a menudo no logra capturar el "ritmo" y la secuencia temporal de un levantamiento, lo cual es crítico para identificar fallas técnicas en movimientos como el peso muerto o la sentadilla. La falta de una solución asequible y portátil para el análisis de la forma crea una barrera significativa para un entrenamiento seguro y efectivo.
Enfoque y Decisiones
Arquitectura: Pipeline de inferencia multimodular paralela.
Decisiones Clave: Combinación de 3D CNN (Temporal) para la identificación de la fase del movimiento con MoveNet (Pose) para el análisis esquelético y YOLO-NAS (Equipamiento) para el seguimiento de la trayectoria de la barra.
Gestión de Estado: Aplicación de Arquitectura Limpia con BLoC para gestionar 3 flujos de datos paralelos sin lag en la interfaz de usuario.
Compromisos: Se eligió la inferencia remota en la nube para mantener más de 30 FPS en dispositivos de gama media mientras se procesan tensores pesados de 3D CNN.
El sistema utiliza un flujo de datos personalizado: Cámara -> Buffer de 30 fotogramas -> Inferencia paralela -> Agregación de características. Esto asegura que la aplicación no solo vea una "instantánea" de una pose, sino que comprenda todo el arco del movimiento. Al desacoplar la capa de presentación de la pesada lógica de inferencia, logramos una experiencia de usuario fluida incluso durante computaciones intensivas.
Resultados e Impacto
Resultado: Validación de 95% de precisión general en los levantamientos principales, alcanzando el 100% en ejercicios específicos como el Peso Muerto.
Impacto: Creación de una alternativa de bajo costo y accesible al entrenamiento personal, proporcionando corrección de forma de grado profesional a cualquier persona con un teléfono inteligente.
Rendimiento: Se logró un bucle de retroalimentación de inferencia inferior a 100 ms, manteniendo 30+ FPS en los dispositivos recomendados.
Ejercicio
Precisión
Peso Muerto (Deadlift)
100.00%
Peso Muerto Rumano
83.33%
Press de Banca
80.00%
Promedio General
~95%
Inmersión Técnica
Pipeline de Inferencia Multimodular Paralela
3D CNN (Clasificación Temporal): Una red neuronal convolucional tridimensional procesa un buffer de 30 fotogramas para identificar el tipo de ejercicio y la etapa del movimiento.
Arquitectura: Entrada (30x128x128x3) → 2x Conv3D (32, 64 filtros) → 3D Max Pooling → Global Average Pooling → Softmax.
MoveNet (Estimación de Pose Humana): Extrae 17 puntos clave del cuerpo por fotograma para calcular ángulos articulares y alineación corporal.
YOLO-NAS (Seguimiento de Equipamiento): Detecta y rastrea barras/mancuernas para calcular desplazamiento, velocidad y trayectoria de la barra.
Optimizaciones Clave
Normalización: Los puntos clave del cuerpo se normalizan utilizando la longitud del torso del usuario como vector de referencia, garantizando la precisión en diferentes tipos de cuerpo y distancias de cámara.
Evaluación Heurística: Una vez que la 3D CNN identifica el ejercicio (p. ej., Peso Muerto), el sistema aplica umbrales biomecánicos específicos (p. ej., ángulo de la espalda > 150°) a los datos agregados.
Bucle de Retroalimentación: La retroalimentación auditiva y visual se genera en milisegundos, ofreciendo sugerencias específicas como "Mantén la espalda recta" o "Baja la cadera".
Reflexiones
Éxito: La arquitectura limpia de BLoC gestionó con éxito estados complejos y flujos de datos en tiempo real, demostrando que Flutter puede manejar aplicaciones intensivas integradas con ML.
Direcciones Futuras: Explorar superposiciones de RA para una guía espacial más intuitiva y ampliar el conjunto de entrenamiento a más de 50,000 imágenes para una mayor inclusividad.
Desafíos: Superar las barreras de desarrollo de iOS y las limitaciones de las librerías multiplataforma requirió implementaciones personalizadas. El proyecto enfrentó fallas de hardware y retrasos en el plan de estudios, que superamos mediante ajustes ágiles y mejoras en la infraestructura.
Mis Contribuciones
Frontend Flutter (iOS/Android): Construí la interfaz móvil multiplataforma usando Dart y Flutter.
Arquitectura: Apliqué Arquitectura Limpia con BLoC para un código escalable y mantenible.
Funcionalidades Principales: Desarrollé la funcionalidad principal para el registro de entrenamientos, seguimiento de progreso y autenticación.
Diseño UI/UX: Diseñé interfaces interactivas con énfasis en la claridad y la retroalimentación.
Compatibilidad con iOS: Resolví problemas específicos de la plataforma e implementé alternativas a paquetes de Flutter exclusivos para Android.
Refactorización: Lideré la refactorización arquitectónica del módulo de Perfil para mejorar la separación de responsabilidades.
Infraestructura en la Nube: Asistí en el despliegue del modelo 3D CNN en un servidor remoto en la nube debido a los altos requisitos de cómputo.
Configuración de DevOps: Integré el frontend con los servicios de ML del backend utilizando un pipeline de despliegue personalizado.
Arquitectura del Proyecto
Esta aplicación sigue una Arquitectura Limpia con capas modulares y organización basada en características.
Estructura por Capas: Las capas de Presentación, Dominio y Datos están estrictamente separadas. Leer sobre ello
Módulos de Características: Cada característica principal (p. ej., Perfil, Progreso, Registro de Entrenamiento) está estructurada de forma independiente.
Gestión de Estado BLoC: Garantiza transiciones de estado predecibles y lógica de negocio testeable.
Mejoras Recientes: Módulo de Perfil refactorizado para cumplir con los objetivos arquitectónicos. Notas de Refactorización
Vista Previa del Demo
Aunque la versión en vivo no está disponible, aquí hay vistas principales de LiftTrack:
Interfaz de registro de entrenamiento en Android e iOS
Seguimiento de progreso y panel de control
Pipeline de ML en la nube (diagrama de arquitectura disponible)
Nota sobre el Alojamiento:
Este proyecto fue desplegado en un servidor en la nube gestionado por el director del proyecto. Debido al vencimiento del alojamiento y limitaciones de acceso, la aplicación en vivo está actualmente fuera de línea. Un demo completo y un recorrido grabado están disponibles bajo petición.