コンテンツへスキップ

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

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



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

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

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

実世界での応用

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

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

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

キーポイント・マップ

keyPoints OrderUltralytics YOLO11  ポーズ

議論 AIGym

名称 タイプ デフォルト 説明
kpts list None 特定のワークアウトをカウントするための3つのキーポイント・インデックスのリスト。
line_width int 2 描かれた線の太さ。
show bool False 画像を表示するフラグ。
up_angle float 145.0 アップ」ポーズの角度基準値。
down_angle float 90.0 ダウン」ポーズの角度基準値。
model str None Ultralytics YOLO ポーズモデルファイルへのパス

議論 model.predict

議論 タイプ デフォルト 説明
source str 'ultralytics/assets' 推論のデータソースを指定します。画像パス、ビデオファイル、ディレクトリ、URL、またはライブフィードのデバイスIDを指定できます。幅広いフォーマットとソースをサポートしているため、さまざまなタイプの入力に柔軟に対応できます。
conf float 0.25 検出の最小信頼度しきい値を設定します。この閾値以下の信頼度で検出されたオブジェクトは無視されます。この値を調整することで、誤検出を減らすことができます。
iou float 0.7 Non-Maximum Suppression (NMS)のIntersection Over Union(IoU)しきい値。値が低いほど、重複するボックスが排除されるため検出数が少なくなり、重複を減らすのに便利です。
imgsz int or tuple 640 推論のための画像サイズを定義する。単一の整数値 640 正方形にリサイズする場合、または(高さ、幅)のタプルを使用します。適切なサイジングは検出を向上させる 精度 と処理速度。
half bool False 半精度(FP16)推論が可能になり、サポートされているGPUでのモデル推論を、精度への影響を最小限に抑えながら高速化することができます。
device str None 推論を行うデバイスを指定する(例. cpu, cuda:0 または 0).CPU 、特定のGPU 、またはモデル実行用の他のコンピュート・デバイスを選択することができます。
max_det int 300 画像あたりの最大検出数。1回の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンでの過剰な出力を防ぎます。
vid_stride int 1 ビデオ入力のフレームストライド。時間的な解像度を犠牲にして処理を高速化するために、ビデオのフレームをスキップできるようにする。1の値はすべてのフレームを処理し、それ以上の値はフレームをスキップする。
stream_buffer bool False ビデオストリームの受信フレームをキューに入れるかどうかを決定する。もし Falseもし`True'なら、新しいフレームに対応するために古いフレームを削除する(リアルタイムアプリケーションに最適化されている)。もし `True' なら、新しいフレームをバッファにキューイングし、フレームがスキップされないようにしますが、推論の FPS がストリームの FPS より低い場合は遅延が発生します。
visualize bool False 推論中にモデルの特徴を可視化し、モデルが何を「見て」いるのかを知ることができます。デバッグやモデルの解釈に役立ちます。
augment bool False 予測に対するテスト時間拡張(TTA)を可能にし、推論速度を犠牲にすることで検出のロバスト性を向上させる可能性がある。
agnostic_nms bool False 異なるクラスのオーバーラップしたボックスをマージする、クラスにとらわれない非最大抑制(NMS)を有効にします。クラスの重複が一般的なマルチクラス検出シナリオで役立ちます。
classes list[int] None クラス ID のセットに予測をフィルタリングします。指定されたクラスに属する検出のみが返されます。複数クラスの検出タスクで、関連するオブジェクトに焦点を当てるのに便利です。
retina_masks bool False 高解像度のセグメンテーションマスクを返します。返されるマスク (masks.data)が有効なら、元の画像サイズと一致する。無効にすると、推論時に使われた画像サイズになります。
embed list[int] None 特徴ベクトルまたは埋め込みを抽出するレイヤを指定します。クラスタリングや類似検索のような下流のタスクに便利です。
project str None 以下の場合、予測出力が保存されるプロジェクト・ディレクトリの名前。 save が有効になっている。
name str None 予測ランの名前。プロジェクト・フォルダ内にサブ・ディレクトリを作成するために使用されます。 save が有効になっている。

議論 model.track

議論 タイプ デフォルト 説明
source str None 画像や動画のソースディレクトリを指定します。ファイルパスとURLをサポートします。
persist bool False フレーム間のオブジェクトの永続的なトラッキングを可能にし、ビデオシーケンス間のIDを維持します。
tracker str botsort.yaml 使用するトラッキングアルゴリズムを指定する、 bytetrack.yaml または botsort.yaml.
conf float 0.3 検出の信頼しきい値を設定します。低い値ではより多くのオブジェクトを追跡できますが、誤検出を含む可能性があります。
iou float 0.5 重複検出をフィルタリングするためのIoU(Intersection over Union)しきい値を設定します。
classes list None クラス・インデックスによって結果をフィルタリングする。例えば classes=[0, 2, 3] は指定されたクラスのみを追跡する。
verbose bool True トラッキング結果の表示をコントロールし、トラッキングされたオブジェクトのビジュアル出力を提供します。

よくあるご質問

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

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

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

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

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

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

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

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

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

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

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

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

from ultralytics import solutions

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

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

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

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

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

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

📅作成 11ヶ月前 ✏️更新 10日前

コメント