コンテンツへスキップ

ワークアウト モニタリングUltralytics YOLOv8

ポーズ推定によるトレーニングのモニタリング Ultralytics YOLOv8は、身体の主要なランドマークや関節をリアルタイムで正確に追跡することで、エクササイズの評価を強化します。この技術により、エクササイズフォームの即時フィードバック、ワークアウトルーティンの追跡、パフォーマンスメトリクスの測定が可能になり、ユーザーとトレーナーのトレーニングセッションを最適化します。



見るんだ: Ultralytics YOLOv8 を使ったワークアウト・モニター|腕立て伏せ、懸垂、アブ・ワークアウト

ワークアウト・モニタリングの利点

  • パフォーマンスの最適化:モニタリングデータに基づいてワークアウトを調整し、より良い結果を得る。
  • 目標達成:測定可能な進捗のためにフィットネス目標を追跡し、調整する。
  • パーソナライゼーション:個人のデータに基づいてカスタマイズされたワークアウトプランで効果を高める。
  • 健康への気づき:健康問題やオーバートレーニングを示すパターンを早期に発見する。
  • 情報に基づいた決断:ルーチンを調整し、現実的な目標を設定するためのデータに基づいた決定。

実世界での応用

ワークアウト監視 ワークアウト監視
腕立て伏せカウント プルアップス・カウント
腕立て伏せカウント プルアップス・カウント

ワークアウトのモニタリング例

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()
サポート

「プッシュアップ」「プルアップ」「アブワークアウト」対応

キーポイント・マップ

keyPoints OrderUltralytics YOLOv8  ポーズ

論争 AIGym

名称 タイプ デフォルト 説明
kpts_to_check list None 特定のワークアウトをカウントするための3つのキーポイント・インデックスのリスト。
line_thickness int 2 描かれた線の太さ。
view_img bool False 画像を表示するフラグ。
pose_up_angle float 145.0 アップ」ポーズの角度基準値。
pose_down_angle float 90.0 ダウン」ポーズの角度基準値。
pose_type str pullup 検出するポーズの種類 ('pullup', pushup, abworkout, squat).

論争 model.predict

名称 タイプ デフォルト 説明
source str 'ultralytics/assets' 画像またはビデオのソース・ディレクトリ
conf float 0.25 検出のためのオブジェクト信頼閾値
iou float 0.7 NMSのIoU(Intersection Over Union)しきい値
imgsz int or tuple 640 スカラーまたは (h, w) リストとしての画像サイズ,すなわち (640, 480)
half bool False 半精度(FP16)を使用
device None or str None すなわち、cuda device=0/1/2/3、または device=cpu
max_det int 300 画像あたりの最大検出数
vid_stride bool False ビデオ・フレームレート・ストライド
stream_buffer bool False すべてのストリーミングフレームをバッファリングする (True) か、最新のフレームを返す (False)
visualize bool False モデルの特徴を可視化する
augment bool False 予測ソースに画像補強を適用
agnostic_nms bool False クラス不可知NMS
classes list[int] None つまり、class=0、またはclass=[0,2,3]。
retina_masks bool False 高解像度のセグメンテーション・マスクを使用する
embed list[int] None 与えられたレイヤーから特徴ベクトル/埋め込みを返す

論争 model.track

名称 タイプ デフォルト 説明
source im0 None 画像またはビデオのソース・ディレクトリ
persist bool False フレーム間のトラックの持続
tracker str botsort.yaml トラッキングメソッド「bytetrack」または「botsort
conf float 0.3 信頼閾値
iou float 0.5 借用書のしきい値
classes list None つまり、class=0、またはclass=[0,2,3]。
verbose bool True 物体追跡結果を表示する

よくあるご質問

Ultralytics YOLOv8 を使ってワークアウトをモニターするには?

Ultralytics YOLOv8 を使ってワークアウトをモニターするには、ポーズ推定機能を利用して、主要な身体ランドマークと関節をリアルタイムで追跡・分析することができます。これにより、エクササイズのフォームに関するフィードバックを即座に受け取り、反復回数をカウントし、パフォーマンス指標を測定することができます。まず、提供されているコード例を使って、腕立て伏せ、懸垂、または腹筋運動を行うことができます:

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()

さらなるカスタマイズと設定については、ドキュメントのAIGymセクションを参照してください。

Ultralytics YOLOv8 をワークアウトのモニタリングに使うメリットは何ですか?

ワークアウトのモニタリングにUltralytics YOLOv8 を使用すると、いくつかの重要な利点がある:

  • パフォーマンスの最適化:モニタリングデータに基づいてワークアウトを調整することで、より良い結果を得ることができます。
  • 目標達成:フィットネス目標を簡単に追跡・調整し、進捗を測定できます。
  • パーソナライゼーション:最適な効果を得るために、個人のデータに基づいてカスタマイズされたワークアウトプランを入手できます。
  • 健康への気づき:潜在的な健康問題やオーバートレーニングを示すパターンを早期に発見する。
  • 情報に基づいた決断:ルーチンを調整し、現実的な目標を設定するために、データに基づいた決定を下す。

YouTubeのデモンストレーションビデオで、これらの利点を実際に見ることができる。

Ultralytics YOLOv8 、どの程度正確にエクササイズを検出、追跡できるのか?

Ultralytics YOLOv8 は、最先端のポーズ推定機能により、エクササイズを高精度に検出・追跡します。主要な身体ランドマークや関節を正確に追跡することができ、運動フォームやパフォーマンス指標に関するリアルタイムフィードバックを提供します。このモデルの事前学習された重みとロバストアーキテクチャは、高い精度と信頼性を保証します。実際の例については、ドキュメントの実世界でのアプリケーションのセクションをご覧ください。

Ultralytics YOLOv8 をカスタム・ワークアウト・ルーティンに使用できますか?

はい、Ultralytics YOLOv8 、カスタム・ワークアウト・ルーティンに適応させることができます。その AIGym クラスは、"プッシュアップ"、"プルアップ"、"アブワークアウト "などの異なるポーズタイプをサポートしています。特定のエクササイズを検出するために、キーポイントや角度を指定することができます。以下は設定例です:

from ultralytics import solutions

gym_object = solutions.AIGym(
    line_thickness=2,
    view_img=True,
    pose_type="squat",
    kpts_to_check=[6, 8, 10],
)

引数の設定の詳細については 論争 AIGym セクションをご覧ください。この柔軟性により、さまざまなエクササイズをモニターし、ニーズに応じてルーチンをカスタマイズすることができる。

Ultralytics YOLOv8 を使ってワークアウトのモニタリング出力を保存するにはどうすればいいですか?

ワークアウトのモニタリング出力を保存するには、処理されたフレームを保存するビデオライターを含むようにコードを修正します。以下はその例です:

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()

このセットアップでは、モニタリングした映像を出力ファイルに書き込みます。詳細については、「出力保存を使用したワークアウト監視」のセクションを参照してください。



作成日:2023-12-02 更新日:2024-07-05
著者:glenn-jocher(12),ambitious-octopus(1),IvorZhu331(1),RizwanMunawar(4)

コメント