Illustration représentant un fil d’Ariane composé de trois icônes : données à la loupe (feature-search), un réseau de neurones (neural network) et un graphique (chart), reliées par un dégradé bleu-violet sur un fond gris, avec une coche indiquant l’étape 1 comme validée.

Catégoriser les exercices de musculation avec l’IA : Feature engineering (1/3)

Est-ce que l’intelligence artificielle (IA) peut nous aider à catégoriser les exercices de musculation ?

Dans cette série en 3 parties, je détaille la méthodologie, les extraits de code et l’analyse des résultats de catégorisation par l’IA. Cette première partie a pour but de poser les fondations : choisir et représenter les caractéristiques (features) qui décrivent chaque exercice.

Pourquoi catégoriser les exercices avec l’IA ?

La plupart des applications et sites Web spécialisés classent généralement les exercices de manière isolée (pectoraux, dos, deltoïdes, etc.), parfois même en sous-groupes (deltoïdes antérieurs, deltoïdes postérieurs, deltoïdes moyens). C’est un choix pratique, mais souvent trop simpliste.

De nombreux exercices sont polyarticulaires et mobilisent plusieurs groupes musculaires à des intensités différentes. Pour des mouvements comme le squat ou le soulevé de terre, cette catégorisation ne reflète pas la complexité réelle. L’objectif ici est de s’appuyer sur l’IA pour découvrir des regroupements plus nuancés et pertinents.

Feature engineering : définir les caractéristiques des exercices pour catégoriser les exercices

La démarche de sélection des caractéristiques

Avant de plonger dans le monde de l’IA, il faut définir les informations que nous allons analyser afin de pouvoir catégoriser efficacement les exercices. Idéalement, à cette étape, l’intervention d’un expert métier est recommandé pour valider ces choix. Ici, je m’appuie sur mon expérience en musculation et mes connaissances en biomécanique.

Pour être rigoureux, il faudrait analyser chaque exercice en détail (muscles sollicités, intensité, articulations impliquées, axe du mouvement, etc.). Pour rester pragmatique et obtenir rapidement des résultats, nous nous concentrerons sur les éléments les plus pertinents (muscles, articulations, plans, fatigue) sans surcharger inutilement le dataset.

Les caractéristiques clés

Les features retenues sont les suivantes :

  • Muscles sollicités : avec des niveaux de sollicitation (principal, ciblé, secondaire, stabilisateur).
  • Plan de mouvement : répartition en pourcentage sur les plans sagittal, frontal et transverse.
  • Articulations impliquées : permet d’identifier si l’exercice est mono-articulaire ou polyarticulaire.
  • Fatigue systémique : indicateur relatif mesurant la fatigue globale induite par l’exercice.

Détail des niveaux musculaires

Pour mieux représenter l’importance d’un muscle dans un mouvement, j’utilise les rôles suivants :

  • Principal : moteur du mouvement.
  • Ciblé : muscles ou portions spécifiquement travaillés.
  • Secondaire : muscles qui assistent le mouvement.
  • Stabilisateur : travail isométrique significatif pour maintenir la posture ou la charge.

Représentation des caractéristiques pour catégoriser les exercices

Pour exploiter ces caractéristiques avec de l’intelligence artificielle, il est préférable de les représenter sous une forme structurée et réutilisable.

Pour un Large Language Model (LLM), du JSON ou du YAML permet de représenter les caractéristiques sous forme lisible est adapté. Pour un modèle de machine learning classique, chaque exercice doit être transformé en vecteur numérique.

Pour faciliter la réutilisation (LLM, transformation vers vecteurs), j’ai choisi le schéma JSON simple suivant :

[
  {
    "name": "Tractions à la barre fixe, prise pronation",
    "primaryAccent": ["LATISSIMUS_DORSI"],
    "primary": ["LATISSIMUS_DORSI", "TERES_MAJOR"],
    "secondary": ["BICEPS", "RHOMBOIDS", "LOWER_TRAPEZIUS"],
    "isometric": [],
    "joints": ["SHOULDER", "ELBOW"],
    "plans": {
      "sagittal": 20,
      "frontal": 80,
      "transverse": 0
    },
    "fatigue": 1.2
  }
]

Nous retrouvons donc toutes les caractéristiques définies précédemment :

  • Chaque muscle et articulation est représenté par un enum string pour assurer la cohérence des données.
  • Le plan de mouvement est exprimé par trois pourcentages (sagittal, frontal, transverse) sur une échelle de 0 à 100 % par plan.
  • La fatigue est un score relatif (1.0 = neutre) estimant la fatigue systémique engendrée par l’exercice.

Collecte et validation des données

La base utilisée pour l’expérimentation contient des exercices de musculation qui ont été analysés manuellement (muscles, articulations, plans, fatigue) et confrontés à l’avis de pratiquants expérimentés pour limiter la subjectivité.

Pour constituer cette base, j’ai regroupé des exercices de renforcement et leurs variantes, tous réalisables en salle de sport. Une grande partie provient d’un corpus que j’avais déjà intégré dans mon application mobile Aesthetic Workout.

Pour chaque exercice, j’ai mené une analyse biomécanique et fonctionnelle approfondie afin d’identifier précisément les muscles sollicités (en distinguant leur rôle), les articulations impliquées et la trajectoire du mouvement. La fatigue systémique a été estimée rigoureusement en évaluant les critères suivant :

  • L’élévation du rythme cardiaque,
  • La sudation,
  • Le temps de récupération minimal nécessaire pour revenir à un état normal,
  • Le ressenti de fatigue en fin de séance.

J’ai challengé ces évaluations avec des pratiquants expérimentés afin de limiter la subjectivité.

Au terme de ce travail de plusieurs jours 🥵, la base compte 133 exercices.

Conclusion

Nous avons posé les bases pour automatiser la catégorisation des exercices de musculation :

  • Quelles features extraire ?
  • Comment les représenter ?

La prochaine étape sera d’identifier le modèle d’IA adapté et, si nécessaire, de retravailler les données avant d’entraîner le modèle.

Si vous avez des questions ou des suggestions ? N’hésitez pas à les partager en commentaires !

Laisser un commentaire