Ultralytics YOLO26を使用したワークアウトのモニタリング#
Ultralytics YOLO26のポーズ推定を利用したワークアウトのモニタリングは、リアルタイムで身体の主要なランドマークや関節を正確に追跡することで、運動評価を向上させます。この技術は、エクササイズフォームに関する即座のフィードバックを提供し、ワークアウトのルーティンを追跡し、パフォーマンス指標を測定することで、ユーザーとトレーナーの双方にとってトレーニングセッションを最適化します。
Watch: How to Monitor Workout Exercises with Ultralytics YOLO | Squats, Leg Extension, Pushups and More
ワークアウトモニタリングの利点#
- パフォーマンスの最適化: モニタリングデータに基づいてワークアウトを調整し、より良い結果を得る。
- 目標達成: フィットネス目標を追跡および調整して、測定可能な進捗を実現する。
- パーソナライズ: 個々のデータに基づいたカスタマイズされたワークアウトプランで効果を高める。
- 健康への意識: 健康上の問題やオーバートレーニングを示すパターンを早期に検出する。
- 情報に基づいた意思決定: ルーチンの調整や現実的な目標設定のためのデータ駆動型の意思決定。
現実世界の応用例#
| ワークアウトモニタリング | ワークアウトモニタリング |
|---|---|
![]() | ![]() |
| 腕立て伏せのカウント | 懸垂のカウント |
YOLO26でワークアウトをモニタリングする#
AIGymソリューションは、ポーズ推定を実行し、四肢がup_angleとdown_angleの閾値の間を移動する際に3つのキーポイントが形成する角度を測定して回数をカウントします。kptsで追跡したいエクササイズのキーポイントを選択し、Python APIまたはCLIを使用して動画に対してソリューションを実行します。
# 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]"キーポイントマップ#

AIGymの引数#
以下はAIGymの引数を示す表です。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | Ultralytics YOLOモデルファイルへのパス。 |
up_angle | float | 145.0 | 「アップ(上)」ポーズの角度しきい値。 |
down_angle | int | 90 | 「ダウン(下)」ポーズの角度しきい値。 |
kpts | list[int] | '[6, 8, 10]' | ワークアウトの監視に使用される3つのキーポイントインデックスのリスト。これらのキーポイントは、腕立て伏せ、懸垂、スクワット、腹筋運動などのエクササイズにおいて、肩、肘、手首などの体の関節や部位に対応します。 |
line_width | int | 2 | ソリューションが描画するボックス、キーポイント、およびカウントの線の太さ。 |
verbose | bool | True | 入力形状、クラス数、および処理速度のフレームごとのログ出力をソリューションで有効にします。トラッキング呼び出し自体は常にサイレントです。 |
AIGymソリューションは、さまざまなオブジェクトトラッキングパラメータもサポートしています:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 使用するトラッキングアルゴリズムを指定します。ビルトインオプション: botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 検出の信頼度しきい値を設定します。低い値を設定するとより多くの物体を追跡できますが、誤検知が含まれる可能性があります。 |
iou | float | 0.7 | 重なり合う検出をフィルタリングするためのIntersection over Union (IoU) 閾値を設定します。 |
classes | list | None | クラスインデックスによって結果をフィルターします。たとえば、classes=[0, 2, 3]は指定されたクラスのみを追跡します。 |
device | str | None | 推論用のデバイスを指定します(例: cpu、cuda:0、または0)。ユーザーはモデルの実行にCPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
さらに、以下の可視化設定を適用できます。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
show | bool | False | True の場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即座な視覚的フィードバックに役立ちます。 |
show_conf | bool | True | 各検出の信頼度スコアをラベルと一緒に表示します。各検出に対するモデルの確信度を把握できます。 |
show_labels | bool | True | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
よくある質問 (FAQ)#
Ultralytics YOLO26を使用してワークアウトをモニタリングするには、ポーズ推定機能を活用して、身体の主要なランドマークや関節をリアルタイムで追跡および分析できます。これにより、エクササイズフォームに関する即座のフィードバックの受信、レペティションのカウント、パフォーマンス指標の測定が可能になります。示すように、腕立て伏せ、懸垂、または腹筋ワークアウト用の提供されたサンプルコードを使用して開始できます:
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 YOLO26を使用すると、いくつかの主要な利点が得られます。
- パフォーマンスの最適化: モニタリングデータに基づいてワークアウトを調整することで、より良い結果を得ることができます。
- 目標達成: フィットネス目標を容易に追跡および調整し、測定可能な進捗を実現します。
- パーソナライズ: 個々のデータに基づいたカスタマイズされたワークアウトプランにより、最適な効果が得られます。
- 健康への意識: 潜在的な健康問題やオーバートレーニングを示すパターンを早期に検出できます。
- 情報に基づいた意思決定: データ駆動型の意思決定を行い、ルーチンを調整して現実的な目標を設定できます。
YouTubeの動画デモをご覧いただくと、これらのメリットが実際に動作している様子を確認できます。
はい、Ultralytics YOLO26はカスタムワークアウトのルーティンに適応させることができます。
AIGymクラスは、up_angle、down_angle、およびkptsの引数を使用してエクササイズの反復回数を検出します。キーポイントと角度を指定して、特定のエクササイズを検出できます。以下は設定例です:from ultralytics import solutions gym = solutions.AIGym( line_width=2, show=True, kpts=[6, 8, 10], # For pushups - can be customized for other exercises )引数の設定に関する詳細については、Arguments
AIGymのセクションをご参照ください。この柔軟性により、さまざまなエクササイズのモニタリングや、フィットネスの目標に基づいたルーティンのカスタマイズが可能になります。ワークアウトモニタリングの出力を保存するには、処理されたフレームを保存するビデオライターをコードに含めるように変更します。以下に例を示します:
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()この設定により、モニタリングされたビデオが出力ファイルに書き込まれるため、後でワークアウトのパフォーマンスを確認したり、トレーナーと共有して追加のフィードバックを得たりすることができます。

