Ultralytics YOLO27:
Get Started

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

Open Workouts Monitoring In Colab

Ultralytics YOLO26によるポーズ推定を活用したワークアウトのモニタリングでは、身体の主要なランドマークや関節をリアルタイムで正確に追跡し、エクササイズの評価を向上させます。この技術により、エクササイズのフォームに関する即時のフィードバックを提供し、ワークアウトの内容を追跡してパフォーマンス指標を測定できるため、ユーザーとトレーナー双方のトレーニングセッションを最適化できます。



視聴: Ultralytics YOLO でワークアウトをモニタリングする方法 | スクワット、レッグエクステンション、腕立て伏せなど

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

  • パフォーマンスの最適化: モニタリングデータに基づいてワークアウトを調整し、より良い結果につなげます。
  • 目標の達成: フィットネスの目標を追跡・調整し、測定可能な進捗を実現します。
  • パーソナライズ: 個人データに基づいて効果的なワークアウトプランを作成します。
  • 健康への意識向上: 健康上の問題や過剰なトレーニングを示すパターンを早期に検出します。
  • 情報に基づく意思決定: データに基づいてルーティンを調整し、現実的な目標を設定します。

実際の活用例#

ワークアウトのモニタリングワークアウトのモニタリング
ポーズ推定によるYOLOの腕立て伏せの回数カウントポーズ推定によるYOLOの懸垂の回数カウント
腕立て伏せの回数カウント懸垂の回数カウント

YOLO26でワークアウトをモニタリング#

AIGymソリューションはポーズ推定を実行し、四肢がup_angleとdown_angleのしきい値間を移動するときに、3つのキーポイントが形成する角度を測定して反復回数を数えます。kptsで追跡するエクササイズのキーポイントを選択し、Python APIまたはCLIを使って動画にソリューションを適用します。

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]"

キーポイントマップ#

YOLOのポーズ推定におけるキーポイントの順序図

AIGymの引数#

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

引数種類デフォルト説明
modelstrNoneUltralytics YOLOモデルファイルへのパスです。
up_anglefloat145.0「上」ポーズの角度しきい値です。
down_anglefloat90.0「下」ポーズの角度しきい値です。
kptslist[int][6, 8, 10]ワークアウトのモニタリングに使用する3つのキーポイントインデックスのリストです。これらのキーポイントは、腕立て伏せ、懸垂、スクワット、腹筋運動などで使用する肩、肘、手首といった身体の関節や部位に対応します。
line_widthint2Solutionが描画するボックス、キーポイント、カウント表示の線幅です。
verboseboolTrue各フレームの入力shape、クラス数、処理速度を記録するSolutionのログを有効にします。トラッキング呼び出し自体は常にログを出力しません。

AIGymソリューションは、さまざまなオブジェクトトラッキングパラメーターにも対応しています。

引数種類デフォルト説明
trackerstr'tracktrack.yaml'使用するトラッキングアルゴリズムを指定します。組み込みのオプション:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。
conffloat0.25検出の信頼度しきい値を設定します。値を低くすると、より多くの物体を追跡できますが、誤検出が含まれる可能性があります。
ioufloat0.7重複する検出をフィルタリングするためのIntersection over Union(IoU)しきい値を設定します。
classeslistNoneクラスインデックスで結果をフィルタリングします。たとえば、classes=[0, 2, 3]を指定すると、指定したクラスのみを追跡します。
devicestrNone推論に使用するデバイスを指定します(例:cpu、cuda:0、0)。モデル実行に使用するCPU、特定のGPU、その他の計算デバイスを選択できます。
imgszint or tuple640推論時の入力画像サイズです。正方形の場合は整数、または(height, width)のペアを指定します。形状はモデルのストライドに合わせて調整されます。
max_detint300トラッキング前にフレームごとに保持する検出の最大数です。混雑したシーンでソリューションが処理する物体数を制限します。
quantizeint or strNone推論精度: CPU以外で実行するPyTorchおよびTorchScriptモデルでは、16(FP16)または32/未設定(FP32)を使用します。その他の形式では、アーティファクトとランタイムによって選択される精度が使用されます。非推奨のhalf引数を置き換えます。

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

引数種類デフォルト説明
showboolFalseTrueの場合、注釈付き画像または動画をウィンドウに表示します。開発やテスト中にすぐ視覚的なフィードバックを得るのに便利です。
show_labelsboolTrue可視化出力で各検出のラベルを表示します。検出されたオブジェクトをすぐに把握できます。

よくある質問#

  • 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)
    
    cap.release()
    cv2.destroyAllWindows()

    さらにカスタマイズや設定を行うには、ドキュメントのAIGymセクションをご覧ください。

  • ワークアウトのモニタリングにUltralytics YOLO26を使用すると、次のような主な利点があります。

    • パフォーマンスの最適化: モニタリングデータに基づいてワークアウトを調整することで、より良い結果を得られます。
    • 目標の達成: フィットネスの目標を簡単に追跡・調整し、測定可能な進捗を実現できます。
    • パーソナライズ: 個人データに基づいて、効果を最大限に高めるカスタムワークアウトプランを作成できます。
    • 健康への意識向上: 健康上の問題や過剰なトレーニングの可能性を示すパターンを早期に検出できます。
    • 情報に基づく意思決定: データに基づいてルーティンを調整し、現実的な目標を設定できます。

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

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

  • はい、Ultralytics YOLO26はカスタムワークアウトルーティンに対応させることができます。AIGymクラスは、up_angle、down_angle、kpts引数を使用してエクササイズの反復回数を検出します。キーポイントと角度を指定することで、特定のエクササイズを検出できます。設定例を以下に示します。

    from ultralytics import solutions
    
    gym = solutions.AIGym(
        line_width=2,
        show=True,
        kpts=[6, 8, 10],  # 腕立て伏せ用。ほかのエクササイズにもカスタマイズできます
    )

    引数の設定の詳細については、引数 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()

    この設定では、モニタリングした動画を出力ファイルに書き込むため、後でワークアウトのパフォーマンスを確認したり、追加のフィードバックを得るためにトレーナーと共有したりできます。

コメント