コンテンツにスキップ

Ultralytics YOLO11 を使用したワークアウトモニタリング

Colabでワークアウトモニタリングを開く

Ultralytics YOLO11による姿勢推定を通じたワークアウトの監視は、主要な身体のランドマークと関節をリアルタイムで正確に追跡することにより、運動評価を向上させます。この技術は、運動フォームに関する即時のフィードバックを提供し、ワークアウトルーチンを追跡し、パフォーマンスメトリクスを測定し、ユーザーとトレーナーの両方にとってトレーニングセッションを最適化します。



見る: Ultralytics YOLOを使用したワークアウトエクササイズの監視方法 | スクワット、レッグエクステンション、腕立て伏せなど

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

  • 最適化されたパフォーマンス: より良い結果を得るために、監視データに基づいてトレーニングを調整します。
  • 目標達成: 測定可能な進捗のために、フィットネス目標を追跡および調整します。
  • パーソナライゼーション: 効果を高めるために、個々のデータに基づいたカスタマイズされたワークアウトプラン。
  • 健康状態の認識: 健康上の問題やオーバートレーニングを示すパターンの早期検出。
  • 情報に基づいた意思決定: ルーチンを調整し、現実的な目標を設定するためのデータ駆動型の意思決定。

現実世界のアプリケーション

ワークアウトのモニタリング ワークアウトのモニタリング
PushUpsのカウント PullUpsのカウント
PushUpsのカウント PullUpsのカウント

Ultralytics YOLO を使用したワークアウトモニタリング

# Run a workout example
yolo solutions workout show=True

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

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

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Video writer
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_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init AIGym
gym = solutions.AIGym(
    show=True,  # display the frame
    kpts=[6, 8, 10],  # keypoints 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 processing is complete.")
        break

    results = gym(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

キーポイントマップ

キーポイントの順序 Ultralytics YOLO11 Pose

AIGym 引数

の表を以下に示します。 AIGym 引数:

引数 種類 デフォルト 説明
model str None Ultralytics YOLOモデルファイルへのパス。
up_angle float 145.0 「アップ」ポーズの角度閾値。
down_angle float 90.0 「ダウン」ポーズの角度閾値。
kpts list[int, int, int] '[6, 8, 10]' ワークアウトの監視に使用されるキーポイントのリスト。これらのキーポイントは、腕立て伏せ、懸垂、スクワット、腹筋運動などのエクササイズのために、肩、肘、手首などの体の関節または部分に対応しています。

The AIGym ソリューションは、さまざまなオブジェクト追跡パラメータもサポートしています。

引数 種類 デフォルト 説明
tracker str 'botsort.yaml' 使用する追跡アルゴリズムを指定します。例: bytetrack.yaml または botsort.yaml.
conf float 0.3 検出の信頼度閾値を設定します。低い値を設定すると、より多くのオブジェクトを追跡できますが、誤検出が含まれる可能性があります。
iou float 0.5 Intersection over Union (IoU) の閾値を設定して、重複する検出結果をフィルタリングします。
classes list None クラスインデックスで結果をフィルタリングします。例: classes=[0, 2, 3] 指定されたクラスのみを追跡します。
verbose bool True 追跡結果の表示を制御し、追跡されたオブジェクトの視覚的な出力を提供します。
device str None 推論に使用するデバイスを指定します(例: cpu, cuda:0 または 0)。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。

さらに、以下の可視化設定を適用できます。

引数 種類 デフォルト 説明
show bool False もし True)は、アノテーションが付けられた画像またはビデオをウィンドウに表示します。開発またはテスト中に、視覚的なフィードバックを即座に得るのに役立ちます。
line_width None or int None バウンディングボックスの線の太さを指定します。もし None場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。
show_conf bool True ラベルとともに、検出ごとの信頼度スコアを表示します。各検出に対するモデルの確実性についての洞察が得られます。
show_labels bool True 検出された各オブジェクトのラベルを視覚的な出力に表示します。検出されたオブジェクトをすぐに理解できます。

よくある質問

Ultralytics YOLO11を使用してワークアウトを監視するにはどうすればよいですか?

Ultralytics YOLO11を使用してワークアウトをモニタリングするには、姿勢推定機能を利用して、主要な身体のランドマークと関節をリアルタイムで追跡および分析します。これにより、エクササイズのフォームに関する即時のフィードバックを受け取り、反復回数をカウントし、パフォーマンス指標を測定できます。次に示すように、腕立て伏せ、懸垂、または腹筋運動の提供されているサンプルコードを使用することから開始できます。

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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 processing is complete.")
        break
    results = gym(im0)

cv2.destroyAllWindows()

カスタマイズおよび設定の詳細については、ドキュメントのAIGymセクションを参照してください。

ワークアウトモニタリングにUltralytics YOLO11を使用する利点は何ですか?

Ultralytics YOLO11 を使用してワークアウトのモニタリングを行うと、いくつかの重要な利点があります。

  • 最適化されたパフォーマンス: 監視データに基づいてトレーニングを調整することで、より良い結果を得ることができます。
  • 目標達成: 測定可能な進捗のために、フィットネス目標を簡単に追跡および調整できます。
  • パーソナライゼーション: 最適な効果を得るために、個々のデータに基づいたカスタマイズされたワークアウトプランを入手してください。
  • 健康状態の認識: 健康上の問題やオーバートレーニングの可能性を示すパターンの早期検出。
  • 情報に基づいた意思決定: データに基づいた意思決定を行い、ルーチンを調整し、現実的な目標を設定します。

これらの利点を実際に確認するには、YouTubeのデモビデオをご覧ください。

Ultralytics YOLO11は、エクササイズの検出と追跡においてどの程度の精度がありますか?

Ultralytics YOLO11は、最先端のポーズ推定機能により、エクササイズの検出と追跡において非常に高い精度を発揮します。主要な身体のランドマークと関節を正確に追跡し、エクササイズのフォームとパフォーマンス指標に関するリアルタイムなフィードバックを提供します。モデルの事前学習済みウェイトと堅牢なアーキテクチャにより、高い精度と信頼性が保証されます。実際の例については、ドキュメントの実際のアプリケーションセクションで、腕立て伏せと懸垂のカウントの事例をご覧ください。

Ultralytics YOLO11をカスタムワークアウトルーチンに使用できますか?

はい、Ultralytics YOLO11は、カスタムのワークアウトルーチンにも適用できます。 AIGym クラスは、次のようなさまざまなポーズタイプをサポートしています。 pushup, pullup、および abworkout。特定の運動を検出するために、キーポイントと角度を指定できます。以下に設定例を示します。

from ultralytics import solutions

gym = solutions.AIGym(
    line_width=2,
    show=True,
    kpts=[6, 8, 10],  # For pushups - can be customized for other exercises
)

引数の設定に関する詳細については、 引数 AIGym セクションを参照してください。この柔軟性により、さまざまなエクササイズを監視し、あなたのルーチンをカスタマイズできます。 フィットネス目標.

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

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

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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 processing is complete.")
        break
    results = gym(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

このセットアップでは、監視対象のビデオを出力ファイルに書き込むため、後でワークアウトのパフォーマンスを確認したり、トレーナーと共有して追加のフィードバックを得たりすることができます。



📅 1年前に作成 ✏️ 2か月前に更新

コメント