Skip to content

Suivi des séances d'entraînement à l'aide de Ultralytics YOLO11

Le suivi des séances d'entraînement grâce à l'estimation de la pose avec Ultralytics YOLO11 améliore l'évaluation des exercices en suivant avec précision les principaux points de repère du corps et les articulations en temps réel. Cette technologie fournit un retour instantané sur la forme de l'exercice, suit les routines d'entraînement et mesure les paramètres de performance, optimisant ainsi les séances d'entraînement pour les utilisateurs comme pour les formateurs.



Regarde : Suivi des séances d'entraînement à l'aide de Ultralytics YOLO11 | Pompes, tractions, exercices d'abdominaux

Avantages du suivi des séances d'entraînement ?

  • Performance optimisée : Adapter les séances d'entraînement en fonction des données de suivi pour obtenir de meilleurs résultats.
  • Atteinte des objectifs : Suit et ajuste les objectifs de remise en forme pour obtenir des progrès mesurables.
  • Personnalisation : Plans d'entraînement personnalisés basés sur les données individuelles pour plus d'efficacité.
  • Sensibilisation à la santé : Détection précoce des schémas indiquant des problèmes de santé ou de surentraînement.
  • Des décisions éclairées : Des décisions fondées sur des données pour ajuster les routines et fixer des objectifs réalistes.

Applications dans le monde réel

Suivi des séances d'entraînementSuivi des séances d'entraînement
Comptage des pompesCompte les tractions
Comptage des pompesCompte les tractions

Exemple de suivi des séances d'entraînement

# Run a workout example
yolo solutions workout show=True

# Pass a source video
yolo solutions workout source="path/to/video/file.mp4"

# Use keypoints for pushups
yolo solutions workout kpts=[6, 8, 10]
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init AIGym
gym = solutions.AIGym(
    show=True,  # Display the frame
    kpts=[6, 8, 10],  # keypoints index of person for monitoring specific exercise, by default it's for pushup
    model="yolo11n-pose.pt",  # Path to the YOLO11 pose estimation model file
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = gym.monitor(im0)
    video_writer.write(im0)

cv2.destroyAllWindows()
video_writer.release()

Carte KeyPoints

keyPoints Order Ultralytics YOLO11 Pose

Arguments AIGym

NomTypeDéfautDescription
kptslistNoneListe des trois points clés de l'index, pour compter les séances d'entraînement spécifiques, suivie du point clé Carte
line_widthint2Épaisseur des lignes tracées.
showboolFalseDrapeau pour afficher l'image.
up_anglefloat145.0Seuil d'angle pour la pose "en l'air".
down_anglefloat90.0Seuil d'angle pour la pose "en bas".
modelstrNoneChemin d'accès au fichier modèle Ultralytics YOLO Pose

Arguments model.predict

ArgumentTypeDéfautDescription
sourcestr'ultralytics/assets'Spécifie la source de données pour l'inférence. Il peut s'agir d'un chemin d'accès à une image, d'un fichier vidéo, d'un répertoire, d'une URL ou de l'identifiant d'un appareil pour les flux en direct. Prend en charge un large éventail de formats et de sources, ce qui permet une application flexible sur différents types d'entrées.
conffloat0.25Définit le seuil de confiance minimum pour les détections. Les objets détectés avec un niveau de confiance inférieur à ce seuil ne seront pas pris en compte. Le réglage de cette valeur peut aider à réduire les faux positifs.
ioufloat0.7Seuil d'intersection au-dessus de l'union (IoU) pour la suppression non maximale (NMS). Des valeurs plus faibles entraînent moins de détections en éliminant les boîtes qui se chevauchent, ce qui est utile pour réduire les doublons.
imgszint or tuple640Définit la taille de l'image pour l'inférence. Peut être un seul entier 640 pour un redimensionnement carré ou un tuple (hauteur, largeur). Un bon redimensionnement peut améliorer la détection précision et la vitesse de traitement.
halfboolFalsePermet l'inférence en demi-précision (FP16), ce qui peut accélérer l'inférence du modèle sur les GPU pris en charge avec un impact minimal sur la précision.
devicestrNoneSpécifie le dispositif d'inférence (par ex, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle.
max_detint300Nombre maximum de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, ce qui permet d'éviter les sorties excessives dans les scènes denses.
vid_strideint1Saut d'images pour les entrées vidéo. Permet de sauter des images dans les vidéos pour accélérer le traitement au détriment de la résolution temporelle. Une valeur de 1 traite chaque image, les valeurs supérieures sautent des images.
stream_bufferboolFalseDétermine s'il faut mettre en file d'attente les trames entrantes pour les flux vidéo. Dans ce cas, la mise en file d'attente des trames entrantes est activée. FalseSi `True', les anciennes images sont supprimées pour laisser place aux nouvelles images (optimisé pour les applications en temps réel). Si `True', les nouvelles images sont mises en file d'attente dans un tampon, ce qui garantit qu'aucune image n'est sautée, mais entraîne une latence si le taux d'images par seconde de l'inférence est inférieur au taux d'images par seconde du flux.
visualizeboolFalseActive la visualisation des caractéristiques du modèle pendant l'inférence, ce qui permet de comprendre ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle.
augmentboolFalsePermet l'augmentation du temps de test (TTA) pour les prédictions, améliorant potentiellement la robustesse de la détection au prix de la vitesse d'inférence.
agnostic_nmsboolFalsePermet la Suppression non maximale (SNM) agnostique des classes, qui fusionne les boîtes de différentes classes qui se chevauchent. Utile dans les scénarios de détection multi-classes où le chevauchement des classes est fréquent.
classeslist[int]NoneFiltre les prédictions sur un ensemble d'identifiants de classes. Seules les détections appartenant aux classes spécifiées seront renvoyées. Utile pour se concentrer sur les objets pertinents dans les tâches de détection multi-classes.
retina_masksboolFalseRenvoie des masques de segmentation à haute résolution. Les masques retournés (masks.data) correspondra à la taille de l'image originale si elle est activée. S'ils sont désactivés, ils ont la taille de l'image utilisée lors de l'inférence.
embedlist[int]NoneSpécifie les couches à partir desquelles il faut extraire les vecteurs de caractéristiques ou les encastrements. Utile pour les tâches en aval telles que le regroupement ou la recherche de similarités.
projectstrNoneNom du répertoire du projet où les résultats de la prédiction sont enregistrés si save est activée.
namestrNoneNom de l'exécution de la prédiction. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les résultats de la prédiction sont stockés si save est activée.

Arguments model.track

ArgumentTypeDéfautDescription
sourcestrNoneSpécifie le répertoire source pour les images ou les vidéos. Prend en charge les chemins d'accès aux fichiers et les URL.
persistboolFalsePermet un suivi persistant des objets entre les images, en conservant les identifiants à travers les séquences vidéo.
trackerstrbotsort.yamlSpécifie l'algorithme de suivi à utiliser, par ex, bytetrack.yaml ou botsort.yaml.
conffloat0.3Définit le seuil de confiance pour les détections ; des valeurs plus faibles permettent de suivre plus d'objets mais peuvent inclure des faux positifs.
ioufloat0.5Définit le seuil d'intersection sur l'union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
verboseboolTrueContrôle l'affichage des résultats du suivi, en fournissant une sortie visuelle des objets suivis.

FAQ

Comment puis-je surveiller mes séances d'entraînement à l'aide de Ultralytics YOLO11 ?

Pour surveiller tes séances d'entraînement à l'aide de Ultralytics YOLO11, tu peux utiliser les capacités d'estimation de la pose pour suivre et analyser les principaux repères corporels et les articulations en temps réel. Cela te permet de recevoir des commentaires instantanés sur la forme de tes exercices, de compter les répétitions et de mesurer les performances. Tu peux commencer par utiliser le code d'exemple fourni pour les pompes, les tractions ou les exercices d'abdominaux, comme indiqué :

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

gym = solutions.AIGym(
    line_width=2,
    show=True,
    kpts=[6, 8, 10],
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = gym.monitor(im0)

cv2.destroyAllWindows()

Pour plus de personnalisation et de réglages, tu peux te référer à la section AIGym dans la documentation.

Quels sont les avantages de l'utilisation de Ultralytics YOLO11 pour le suivi de l'entraînement ?

L'utilisation de Ultralytics YOLO11 pour le suivi de l'entraînement offre plusieurs avantages clés :

  • Des performances optimisées : En adaptant les séances d'entraînement en fonction des données de suivi, tu peux obtenir de meilleurs résultats.
  • Atteinte des objectifs : Suit et ajuste facilement les objectifs de remise en forme pour des progrès mesurables.
  • Personnalisation : Obtiens des plans d'entraînement personnalisés basés sur tes données individuelles pour une efficacité optimale.
  • Sensibilisation à la santé : Détection précoce des schémas qui indiquent des problèmes de santé potentiels ou un surentraînement.
  • Décisions éclairées : Prends des décisions fondées sur des données pour ajuster les routines et fixer des objectifs réalistes.

Tu peux regarder une démonstration vidéo sur YouTube pour voir ces avantages en action.

Quelle est la précision de Ultralytics YOLO11 dans la détection et le suivi des exercices ?

Ultralytics YOLO11 est très précis dans la détection et le suivi des exercices grâce à ses capacités d'estimation de la pose à la pointe de la technologie. Il peut suivre avec précision les principaux repères corporels et les articulations, fournissant ainsi un retour d'information en temps réel sur la forme de l'exercice et les mesures de performance. Les poids pré-entraînés du modèle et son architecture robuste garantissent une grande précision et une grande fiabilité. Pour des exemples concrets, consulte la section des applications réelles dans la documentation, qui présente le comptage des pompes et des tractions.

Puis-je utiliser Ultralytics YOLO11 pour des programmes d'entraînement personnalisés ?

Oui, Ultralytics YOLO11 peut être adapté pour des programmes d'entraînement personnalisés. Le AIGym prend en charge différents types de pose tels que "pushup", "pullup" et "abworkout". Tu peux spécifier des points clés et des angles pour détecter des exercices spécifiques. Voici un exemple de configuration :

from ultralytics import solutions

gym = solutions.AIGym(
    line_width=2,
    show=True,
    kpts=[6, 8, 10],
)

Pour plus de détails sur la définition des arguments, reporte-toi à la rubrique Arguments AIGym section. Cette flexibilité te permet de surveiller divers exercices et de personnaliser les routines en fonction de tes besoins.

Comment puis-je sauvegarder la sortie du suivi de l'entraînement à l'aide de Ultralytics YOLO11 ?

Pour sauvegarder la sortie du suivi de la séance d'entraînement, tu peux modifier le code pour inclure un graveur vidéo qui sauvegarde les images traitées. Voici un exemple :

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

gym = solutions.AIGym(
    line_width=2,
    show=True,
    kpts=[6, 8, 10],
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = gym.monitor(im0)
    video_writer.write(im0)

cv2.destroyAllWindows()
video_writer.release()

Cette configuration écrit la vidéo surveillée dans un fichier de sortie. Pour plus de détails, reporte-toi à la section Contrôle des séances d'entraînement avec enregistrement de la sortie.

📅 C réé il y a 11 mois ✏️ Mis à jour il y a 9 jours

Commentaires