Monitoraggio degli allenamenti con Ultralytics YOLOv8
Il monitoraggio degli allenamenti attraverso la stima della posa con Ultralytics YOLOv8 migliora la valutazione degli esercizi grazie al rilevamento accurato dei principali punti di riferimento del corpo e delle articolazioni in tempo reale. Questa tecnologia fornisce un feedback immediato sulla forma dell'esercizio, traccia le routine di allenamento e misura le metriche delle prestazioni, ottimizzando le sessioni di allenamento sia per gli utenti che per gli allenatori.
Guarda: Monitoraggio degli allenamenti con Ultralytics YOLOv8 | Flessioni, trazioni, addominali
Vantaggi del monitoraggio degli allenamenti?
- Prestazioni ottimizzate: Personalizza gli allenamenti in base ai dati di monitoraggio per ottenere risultati migliori.
- Raggiungimento degli obiettivi: Traccia e modifica gli obiettivi di fitness per ottenere progressi misurabili.
- Personalizzazione: Piani di allenamento personalizzati basati sui dati individuali per garantire l'efficacia.
- Consapevolezza della salute: Individuazione precoce di modelli che indicano problemi di salute o di sovrallenamento.
- Decisioni informate: Decisioni basate sui dati per modificare le routine e fissare obiettivi realistici.
Applicazioni nel mondo reale
Monitoraggio degli allenamenti | Monitoraggio degli allenamenti |
---|---|
Conteggio delle flessioni | Conteggio delle trazioni |
Esempio di monitoraggio degli allenamenti
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n-pose.pt")
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_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False) # Tracking recommended
# results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results)
cv2.destroyAllWindows()
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n-pose.pt")
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_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False) # Tracking recommended
# results = model.predict(im0) # Prediction also supported
im0 = gym_object.start_counting(im0, results)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Supporto
"pushup", "pullup" e "abworkout" supportati
Mappa dei punti chiave
Argomenti AIGym
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
kpts_to_check |
list |
None |
Elenco di tre indici di punti chiave, per il conteggio di un allenamento specifico, seguito da Mappa dei punti chiave |
line_thickness |
int |
2 |
Spessore delle linee disegnate. |
view_img |
bool |
False |
Flag per visualizzare l'immagine. |
pose_up_angle |
float |
145.0 |
Soglia di angolazione per la posa "in alto". |
pose_down_angle |
float |
90.0 |
Soglia dell'angolo per la posa "giù". |
pose_type |
str |
pullup |
Tipo di posa da rilevare ('pullup ', pushup , abworkout , squat ). |
Argomenti model.predict
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
str |
'ultralytics/assets' |
directory di origine per le immagini o i video |
conf |
float |
0.25 |
soglia di fiducia dell'oggetto per il rilevamento |
iou |
float |
0.7 |
soglia di intersezione su unione (IoU) per gli NMS |
imgsz |
int or tuple |
640 |
dimensione dell'immagine come scalare o come elenco (h, w), ad esempio (640, 480) |
half |
bool |
False |
usa la mezza precisione (FP16) |
device |
None or str |
None |
Il dispositivo su cui eseguire l'operazione, ad esempio cuda device=0/1/2/3 o device=cpu |
max_det |
int |
300 |
numero massimo di rilevamenti per immagine |
vid_stride |
bool |
False |
passo della frequenza dei fotogrammi video |
stream_buffer |
bool |
False |
bufferizza tutti i fotogrammi dello streaming (True) o restituisce il fotogramma più recente (False) |
visualize |
bool |
False |
visualizzare le caratteristiche del modello |
augment |
bool |
False |
applicare l'aumento dell'immagine alle fonti di predizione |
agnostic_nms |
bool |
False |
NMS con compatibilità di classe |
classes |
list[int] |
None |
filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3]. |
retina_masks |
bool |
False |
utilizzare maschere di segmentazione ad alta risoluzione |
embed |
list[int] |
None |
restituisce vettori di caratteristiche/embeddings da determinati livelli |
Argomenti model.track
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
im0 |
None |
directory di origine per le immagini o i video |
persist |
bool |
False |
persistenza dei brani tra i fotogrammi |
tracker |
str |
botsort.yaml |
Metodo di tracciamento 'bytetrack' o 'botsort' |
conf |
float |
0.3 |
Soglia di fiducia |
iou |
float |
0.5 |
Soglia IOU |
classes |
list |
None |
filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3]. |
verbose |
bool |
True |
Visualizza i risultati del tracciamento dell'oggetto |
DOMANDE FREQUENTI
Come posso monitorare i miei allenamenti utilizzando Ultralytics YOLOv8 ?
Per monitorare i tuoi allenamenti utilizzando Ultralytics YOLOv8 , puoi utilizzare le funzionalità di stima della posa per tracciare e analizzare i principali punti di riferimento del corpo e le articolazioni in tempo reale. In questo modo puoi ricevere un feedback istantaneo sulla tua forma di allenamento, contare le ripetizioni e misurare le metriche di performance. Puoi iniziare utilizzando il codice di esempio fornito per le flessioni, le trazioni e gli addominali, come mostrato:
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n-pose.pt")
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_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False)
im0 = gym_object.start_counting(im0, results)
cv2.destroyAllWindows()
Per ulteriori personalizzazioni e impostazioni, puoi consultare la sezione AIGym della documentazione.
Quali sono i vantaggi dell'utilizzo di Ultralytics YOLOv8 per il monitoraggio dell'allenamento?
L'utilizzo di Ultralytics YOLOv8 per il monitoraggio dell'allenamento offre diversi vantaggi fondamentali:
- Prestazioni ottimizzate: Adattando gli allenamenti in base ai dati di monitoraggio, puoi ottenere risultati migliori.
- Raggiungimento degli obiettivi: Traccia e regola facilmente gli obiettivi di fitness per ottenere progressi misurabili.
- Personalizzazione: Ottieni piani di allenamento personalizzati basati sui tuoi dati personali per un'efficacia ottimale.
- Consapevolezza della salute: Individuazione precoce di modelli che indicano potenziali problemi di salute o di sovrallenamento.
- Decisioni informate: Prendi decisioni basate sui dati per modificare le routine e fissare obiettivi realistici.
Puoi guardare un video dimostrativo su YouTube per vedere questi vantaggi in azione.
Quanto è accurato Ultralytics YOLOv8 nel rilevare e tracciare gli esercizi?
Ultralytics YOLOv8 è estremamente preciso nel rilevare e seguire gli esercizi grazie alle sue capacità di stima della posa all'avanguardia. È in grado di tracciare con precisione i principali punti di riferimento del corpo e le articolazioni, fornendo un feedback in tempo reale sulla forma dell'esercizio e sulle metriche di prestazione. I pesi preaddestrati e l'architettura robusta del modello garantiscono un'elevata precisione e affidabilità. Per esempi reali, consulta la sezione Applicazioni reali della documentazione, che mostra il conteggio delle flessioni e delle trazioni.
Posso utilizzare Ultralytics YOLOv8 per creare routine di allenamento personalizzate?
Sì, Ultralytics YOLOv8 può essere adattato per creare routine di allenamento personalizzate. Il AIGym
La classe supporta diversi tipi di pose come "pushup", "pullup" e "abworkout". Puoi specificare punti chiave e angoli per rilevare esercizi specifici. Ecco un esempio di configurazione:
from ultralytics import solutions
gym_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="squat",
kpts_to_check=[6, 8, 10],
)
Per maggiori dettagli sull'impostazione degli argomenti, consulta la sezione Argomenti AIGym
sezione. Questa flessibilità ti permette di monitorare diversi esercizi e di personalizzare le routine in base alle tue esigenze.
Come posso salvare l'output del monitoraggio dell'allenamento utilizzando Ultralytics YOLOv8 ?
Per salvare l'output del monitoraggio dell'allenamento, puoi modificare il codice per includere un video writer che salvi i fotogrammi elaborati. Ecco un esempio:
import cv2
from ultralytics import YOLO, solutions
model = YOLO("yolov8n-pose.pt")
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_object = solutions.AIGym(
line_thickness=2,
view_img=True,
pose_type="pushup",
kpts_to_check=[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
results = model.track(im0, verbose=False)
im0 = gym_object.start_counting(im0, results)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
Questa impostazione scrive il video monitorato in un file di output. Per maggiori dettagli, consulta la sezione Monitoraggio degli allenamenti con salvataggio dell'output.
Creato 2023-12-02, Aggiornato 2024-07-05
Autori: glenn-jocher (12), ambitious-octopus (1), IvorZhu331 (1), RizwanMunawar (4)