LiftTrack : Une solution mobile basée sur les 3D CNN pour surveiller et améliorer les techniques d'haltérophilie
Correction de forme par 3D CNN + Flutter
Aperçu
Rôle : Lead Frontend & Architecture Flutter
Stack : Flutter, Dart, BLoC, 3D CNN, Python
Résultat Clé : 100% de précision sur la forme du Soulevé de Terre (Deadlift)
Durée : 8 mois (juillet 2024 - février 2025)
LiftTrack est une application mobile basée sur la recherche, conçue pour démocratiser le coaching professionnel en haltérophilie. En intégrant des modèles avancés de vision par ordinateur dans une application Flutter, le système fournit une analyse biomécanique en temps réel et des conseils correctifs pour prévenir les blessures. Ce projet de fin d'études de 8 mois s'est concentré sur le développement d'une solution haute performance pour le suivi en temps réel de la technique d'exécution via 3D CNN et estimation de pose.
Le Problème
Défi : Risque élevé de blessure lors des exercices de force dû à une mauvaise technique et au manque de coaching professionnel.
Audience : Pratiquants solo et athlètes n'ayant pas accès à des coachs personnels onéreux.
Contraintes : Inférence en temps réel sur appareils mobiles, gestion de mouvements temporels complexes par rapport à des poses statiques, et maintien de fréquences d'images élevées pour un retour immédiat.
Les pratiquants solitaires ont souvent du mal à maintenir une forme correcte, ce qui entraîne des blessures chroniques ou des gains sous-optimaux. L'estimation de pose traditionnelle échoue souvent à capturer le "rythme" et la séquence temporelle d'un mouvement, ce qui est pourtant crucial pour identifier les défauts techniques dans des exercices comme le soulevé de terre ou le squat. L'absence d'une solution abordable et portable pour l'analyse de la forme constitue une barrière importante à un entraînement sûr et efficace.
Décisions Clés : Combinaison d'un 3D CNN (Temporel) pour l'identification de la phase de mouvement avec MoveNet (Pose) pour l'analyse squelettique et YOLO-NAS (Équipement) pour le suivi de la trajectoire de la barre.
Gestion d'État : Application de la Clean Architecture avec BLoC pour gérer 3 flux de données parallèles sans ralentissement de l'interface utilisateur (UI).
Arbitrages : L'inférence cloud distante a été choisie pour maintenir plus de 30 FPS sur les appareils de milieu de gamme tout en traitant les tenseurs lourds du 3D CNN.
Le système utilise un flux de données personnalisé : Caméra -> Buffer de 30 images -> Inférence parallèle -> Agrégation des caractéristiques. Cela garantit que l'application ne voit pas seulement un "instantané" d'une pose, mais comprend tout l'arc du mouvement. En découplant la couche de présentation de la lourde logique d'inférence, nous avons obtenu une expérience utilisateur fluide même lors de calculs intensifs.
Résultats & Impact
Résultat : Validation de 95% de précision générale sur les mouvements de base, atteignant 100% sur des exercices spécifiques comme le Soulevé de Terre.
Impact : Création d'une alternative économique et accessible au coaching personnel, offrant une correction de forme de niveau professionnel à toute personne possédant un smartphone.
Performance : Obtention d'une boucle de rétroaction d'inférence inférieure à 100 ms, tout en maintenant 30+ FPS sur les appareils recommandés.
Exercice
Précision
Soulevé de terre
100.00%
Soulevé de terre R.
83.33%
Développé couché
80.00%
Moyenne générale
~95%
Détails Techniques
Pipeline d'Inférence Multi-Modulaire Parallèle
3D CNN (Classification Temporelle) : Un réseau de neurones convolutifs tridimensionnels traite un buffer de 30 images pour identifier le type d'exercice et l'étape du mouvement.
Architecture : Entrée (30x128x128x3) → 2x Conv3D (32, 64 filtres) → 3D Max Pooling → Global Average Pooling → Softmax.
MoveNet (Estimation de Pose Humaine) : Extrait 17 points clés du corps par image pour calculer les angles articulaires et l'alignement du corps.
YOLO-NAS (Suivi d'Équipement) : Détecte et suit les barres/haltères pour calculer le déplacement, la vitesse et la trajectoire de la barre.
Optimisations Clés
Normalisation : Les points clés du corps sont normalisés en utilisant la longueur du torse de l'utilisateur comme vecteur de référence, garantissant la précision pour différents types de corps et distances de caméra.
Évaluation Heuristique : Une fois que le 3D CNN identifie l'exercice (ex: Soulevé de terre), le système applique des seuils biomécaniques spécifiques (ex: angle du dos > 150°) aux données agrégées.
Boucle de Rétroaction : Des retours audio et visuels sont générés en quelques millisecondes, proposant des suggestions spécifiques comme "Gardez le dos droit" ou "Baissez les hanches".
Réflexions
Succès : L'architecture Clean BLoC a géré avec succès des états complexes et des flux de données en temps réel, prouvant que Flutter peut supporter des applications intensives intégrant du ML.
Futur : Exploration des superpositions AR pour un guidage spatial plus intuitif et élargissement de l'ensemble d'entraînement à plus de 50 000 images pour une meilleure inclusivité.
Défis : Surmonter les barrières du développement iOS et les limitations des bibliothèques multiplateformes a nécessité des implémentations personnalisées. Le projet a fait face à des pannes matérielles et des retards de programme, que nous avons surmontés par des ajustements agiles et des améliorations d'infrastructure.
Mes Contributions
Frontend Flutter (iOS/Android) : Création de l'interface mobile multiplateforme avec Dart et Flutter.
Architecture : Application de la Clean Architecture with BLoC pour un code évolutif et maintenable.
Fonctionnalités de Base : Ingénierie des fonctions clés pour la journalisation, le suivi des progrès et l'authentification.
Design UI/UX : Conception d'interfaces interactives axées sur la clarté et le feedback.
Compatibilité iOS : Résolution des problèmes spécifiques à la plateforme et implémentation d'alternatives aux packages Flutter exclusifs à Android.
Refactoring : Direction de la refonte architecturale du module Profil pour améliorer la séparation des préoccupations.
Infrastructure Cloud : Aide au déploiement du modèle 3D CNN sur un serveur cloud distant en raison des besoins élevés en calcul.
Configuration DevOps : Intégration du frontend avec les services ML du backend via un pipeline de déploiement personnalisé.
Architecture du Projet
Cette application suit la Clean Architecture avec des couches modulaires et une organisation par fonctionnalités.
Structure par couches : Les couches Présentation, Domaine et Données sont strictement séparées. En savoir plus
Modules de fonctionnalités : Chaque fonctionnalité majeure (ex: Profil, Progrès, Journalisation) est structurada indépendamment.
Gestion d'état BLoC : Assure des transitions d'état prévisibles et une logique métier testable.
Améliorations récentes : Module Profil refactorisé pour respecter les objectifs architecturaux. Notes de refactoring
Aperçu de la Démo
Bien que la version en direct soit indisponible, voici les vues principales de LiftTrack :
Interface de journalisation d'entraînement sur Android et iOS
Suivi des progrès et tableau de bord
Pipeline ML dans le cloud (diagramme d'architecture disponible)
Note sur l'hébergement :
Ce projet a été déployé sur un serveur cloud géré par le chef de projet. En raison de l'expiration de l'hébergement et des limitations d'accessibilité, l'application est actuellement hors ligne. Une démo complète et un parcours vidéo sont disponibles sur demande.