チュートリアル

TwelveLabs API を使用した複数スポーツ対応ビデオ分析システムの構築

モヒト・ヴァリクティ

開発者は、時系列ビデオ理解のためのTwelve LabsのPegasusおよびMarengoモデルと、MediaPipeの姿勢推定を組み合わせることで、単一のコードベースからバスケットボール、野球、ゴルフにわたる動きのイベントの自動検出、肘の角度や膝の曲がり具合などの生体力学的指標の測定、そしてスコア付きフィードバックの生成を行う、マルチスポーツ向けアスレチック分析パイプラインを構築できます。

開発者は、時系列ビデオ理解のためのTwelve LabsのPegasusおよびMarengoモデルと、MediaPipeの姿勢推定を組み合わせることで、単一のコードベースからバスケットボール、野球、ゴルフにわたる動きのイベントの自動検出、肘の角度や膝の曲がり具合などの生体力学的指標の測定、そしてスコア付きフィードバックの生成を行う、マルチスポーツ向けアスレチック分析パイプラインを構築できます。

この記事の内容

No headings found on page

ニュースレターに登録する

ニュースレターに登録する

ビデオ理解に関する最新の技術進歩、チュートリアル、業界の動向をお届けします

ビデオ理解に関する最新の技術進歩、チュートリアル、業界の動向をお届けします

AIを活用してビデオを検索、分析、探索します。

2026/01/05

15分

記事へのリンクをコピー

はじめに

バスケットボールのフリースロー練習セッションを録画したとします。シュートの見た目は、フォームも良く、リリースも安定しているように見えます。しかし、何かが違います。コーチは「フォロースルー」や「膝の曲げ」について指摘しますが、これを実際にどのように測定すればよいのでしょうか?さらに重要なのは、すべてのフレームを手動で確認することなく、時間の経過とともに改善を追跡するにはどうすればよいのでしょうか?

問題は、ほとんどのビデオ分析ツールが以下のいずれかであることです。

  1. 実際には何も測定しない、一般的な「よくできた!」というフィードバックしかない消費者向けアプリ

  2. 価格が1万ドル以上で、操作にスポーツ科学者が必要なプロフェッショナル向けシステム

  3. バスケットボールには最適に動作するものの、野球のスイングには対応できない単一スポーツ向けソリューション

これが、私たちがマルチスポーツ分析システムを構築した理由です。これは、単に動きを追跡するだけでなく、時系列ビデオインテリジェンスを通じて実際に動きを理解するパイプラインです。スポーツごとに決められた厳格なルールの代わりに、私たちは運動動作を効果的にするものについて理解するAIを使用しています。

鍵となる洞察は何でしょうか? 時系列の理解 + 正確な測定 = 有意義なフィードバック。従来のポーズ推定では関節の角度しか分かりませんが、時系列ビデオインテリジェンスは、一連の動作全体の文脈において、それらの角度がなぜ重要なのかを教えてくれます。


従来の分析が抱える問題

私たちが発見したのは、アスリートの動作はフレーム単位では理解できないということです。完璧なバスケットボールのシュートは、単にリリース時の角度だけでなく、膝の曲げ方、体重移動の仕方、フォロースルーの完了方法などによって決まります。これらの時系列要素を1つでも見落とすと、分析は無意味になります。

フリースローを分析するシナリオを考えてみましょう。従来のフレームベースのシステムでは、次のように報告されるかもしれません。

  • リリース時の肘の角度:92度 ✓

  • リリース時の高さ:2.1メートル ✓

  • 手首のアライメント:良好 ✓

しかし、それでもシュートは外れます。なぜでしょうか?それらの測定では、以下の項目が無視されているからです。

  • 準備段階全体における膝の曲げ(単一のフレームだけでなく)

  • 動作プロセス全体での体重移動(開始位置だけでなく)

  • 複数回の試行におけるフォロースルーの一貫性(1回のシュートだけでなく)

従来のアプローチでは、以下のいずれかになります。

  • 限られたフレームごとの指標のみを受け入れる(全体像を見落とす)

  • 各スポーツ専用のステートマシン(バスケットボールのルール、野球のルール、ゴルフのルールなど)を個別に構築する

  • バイオメカニクスの専門家を雇って、すべての動画を手動で確認する(スケーラビリティがない)

このシステムは異なるアプローチを採用しています。 動作シーケンス全体を時系列で理解し、重要となる部分を正確に測定します。


システムアーキテクチャ:全体像

この分析パイプラインは、5つの主要なステージを通じて、時系列ビデオ理解と正確なバイオメカニクス測定を組み合わせます。

各ステージは独立して設計されているため、パイプライン全体を書き直すことなく、コンポーネントの最適化や交換が可能です。


ステージ1:TwelveLabsによる時系列の理解


なぜ時系列の理解が重要なのか

画期的な気づきとなったのは、「文脈が正しさを決定する」という事実でした。肘の角度が95度というのは、バスケットボールのシュートとしては完璧かもしれませんが、野球のピッチングとしては最悪です。スポーツごとに個別のルールエンジンを構築する代わりに、私たちはTwelveLabsを使用して時系列で何が起こっているかを理解します。


2モデルによるアプローチ

PegasusとMarengoは互いに補完し合う関係にあるため、併用しています。

Pegasusは、高レベルのセマンティックな理解を提供します:

  • 「どのスポーツがプレイされていますか?」

  • 「これは練習ですか、それとも試合ですか?」

  • 「どのようなアクションが行われていますか?」

Marengoは、正確なビジュアル検索を提供します:

  • 「シュートは正確にどこで行われましたか?」

  • 「複数回の試行がありますか?」

  • 「時系列の文脈はどうなっていますか?」

# Pegasusはセマンティックな内容を理解します
analysis = pegasus_client.analyze(
    video_id=video_id,
    prompt="What sport is this? List all action timestamps.",
    temperature=0.1  # 事実に基づく回答を得るために低く設定
)

# Marengoはビジュアル検索で確認します
search_results = marengo_client.search.query(
    index_id=index_id,
    query_text="basketball shot attempt, player shooting",
    search_options=["visual"]
)

なぜこれが有効なのか

Pegasusが「2.5秒時点でのバスケットボールのシュート」を特定する一方、MarengoはPegasusが見落とした8.1秒と15.3秒の追加の試行を捉えることができます。両方のソースをマージすることで、誤検出率を低く抑えながら、95%以上の検出精度を達成できます。

マージロジックはシンプルですが極めて重要です:

# 2秒以内の検出は重複とみなす
for result in marengo_results:
    if not any(abs(result.start - existing["timestamp"]) < 2.0
               for existing in pegasus_moments):
        # 重複ではないため追加
        all_moments.append(result)

この2秒のウィンドウ設定により、同じ動作を2回分析することを防ぎ、かつ異なる試行を見落とさないようにします。


ステージ2:スポーツに特化したアクションセグメンテーション


時系列ウィンドウの重要性

スポーツが異なれば、本質的な動作のケイデンスも全く異なります。この洞察から、スポーツに特化した時系列ウィンドウが生まれました。

  • バスケットボール:シュート前3秒(準備はゆっくりと慎重に行われます)とシュート後2秒(正確さにはフォロースルーが不可欠です)が必要です。

  • 野球:スイング前2秒(コンパクトな動作)とスイング後1秒(素早いフォロースルー)のみが必要です。

  • ゴルフ:スイング前4秒(長いバックスイング)とスイング後3秒(完全なフォロースルー)が必要です。

これらのウィンドウはランダムに決められたものではなく、各動作フェーズが実際にどれくらいの時間を要するかについてのバイオメカニクス分析に基づいています。


なぜこれが重要なのか

適切な時系列ウィンドウを切り出すことで、以下の項目を捉えられます。

  • 完全な準備段階:リリースの2~3秒前から膝の曲がりが始まります

  • クリーンな基準点:動作開始前の余計な動きを排除

  • 完全なフォロースルー:動作の完了品質を測定するために極めて重要

実装では、速度向上のためにFFmpegのインプットシーキング(input-seeking)を使用しています:

# インプットシーキング(-iの前に-ssを指定する)は10〜20倍高速です
subprocess.run([
    "ffmpeg", "-i", video_path,
    "-ss", str(start_time),     # 入力の前にシーク
    "-t", str(duration),
    "-preset", "fast",          # 速度と品質をバランス良く調整
    output_path
])

このたった1つの最適化により、20分かかっていたフルビデオ分析から、60秒のセグメント化された分析へと劇的に短縮され、計算コストが95%削減されました。


ステージ3:ポーズ推定とボディトラッキング


MediaPipe:絶妙なバランス、スイートスポット

私たちがMediaPipeのポーズ推定を選択した理由は3つあります。

  1. 運動分析に必要な主要関節をすべてカバーする33個のランドマーク

  2. あらゆる環境で動作:CPUで30fps、GPUで100+ fps

  3. 時系列トラッキング:フレーム間(単にフレームごとではなく)で対象の同一性を維持

model_complexity(モデルの複雑さ)パラメータの調整が極めて重要でした:

「レベル1」がスイートスポットです:バイオメカニクス分析に十分な精度であり(1〜2度の誤差は許容範囲内)、実用に十分な速度(30 FPSは、ほとんどのハードウェアでリアルタイム処理が可能であることを意味します)を備えています。


なぜ正規化された座標が必要なのか

MediaPipeは0から1の範囲で正規化された座標を返します。これは公平性を保つために不可欠です:

# 正規化された座標(0〜1の範囲)
wrist_x = 0.52  # フレーム横幅の52%の位置
wrist_y = 0.31  # フレーム上端から31%下がった位置

# これらは以下に関わらず機能します:
# - 動画の解像度 (720p, 1080p, 4K)
# - カメラとの距離 (5フィートまたは50フィート離れているか)
# - アスリートの体格 (子供または大人)

10歳の子供であってもプロの選手であっても、まったく同じ座標系で分析されます。正規化は「世界空間(3次元の実空間)」ではなく「カメラ空間」で行われますが、これはフォーム分析を行う上でまさに私たちが望んでいる形です。


ステージ4:本当に重要となるバイオメカニクスの指標


5つの重要な指標

コーチやバイオメカニクスの専門家とのテストを通じて、実際のパフォーマンスと本当に関連性がある5つの指標を特定しました:


身体比率に基づく正規化:重要なイノベーション

これは設計上の最大の決定でした。絶対的な測定値を使用する代わりに、すべての測定値を身体の寸法で正規化します。

# 良くない例: 絶対値による測定
release_height_pixels = 823  # 前後関係がなければ無意味です

# 良い例: 身体比率に基づく測定
body_height = ankle_y - nose_y
release_height_normalized = wrist_y / body_height  # 0.68 = 身長の68%

これが重要である理由:身長が157cmのユース選手が身長比68%の高さでリリースするフォームは、身長が203cmのプロ選手が同じく身長比68%でリリースするフォームと等しくなります。両者とも、身体のサイズ関わらず、技術の観点から公平にスコア化されます。

この決断により、以下のことが可能になりました:

  • 異なる年齢層の比較(12歳の子供 vs. 大人)

  • カメラ位置から依存しない分析(距離が関係なくなります)

  • アスリートの成長に伴う上達プロセスの追跡(一貫性の維持)


角度計算:シンプルながら強力

関節の角度は基本的な三角関数を用いて算出します:

# 点1 - 点2 - 点3 によって形成される、点2における角度を計算
vector1 = point1 - point2
vector2 = point3 - point2
cos_angle = dot(vector1, vector2) / (norm(vector1) * norm(vector2))
angle_degrees = arccos(cos_angle) * 180 / pi

その美しさは「どう測定するか」ではなく、「何を測定するか」にあります。バスケットボールの場合:

  • 肘の角度:リリース時のフレームにおける肩-肘-手首の角度

  • 膝の角度:準備段階における股関節-膝-足首の最小角度

  • バランス:すべてのフレームにおける肩と股関節のアライメントの標準偏差


ステージ5:スコアリングシステム


3ゾーンのスコアリング思想

スコアリングの基準は、実際の課題を浮き彫りにしつつ、納得のいくものになるように設計されました:

ゾーン1(完璧):理想から±5%以内 → 100点

  • 肘の角度が88〜92°(理想は90°)

  • 軽微な誤差に対する減点はなし

ゾーン2(良好):許容範囲内 → 90〜100点

  • 肘の角度が85〜95°(許容上限・下限)

  • 線形補間:理想に近づくほど高得点

ゾーン3(要改善):範囲外 → 0〜70点

  • 緩やかに低下させることで、極端な減点を回避

  • 肘が80°の場合、0点ではなく約60点となります


なぜ3つのゾーンが有効なのか

この評価設計は、実際のコーチの評価方法によく合致しています:

  • 「完璧なフォームだ」 → 評価 A (90-100)

  • 「素晴らしいが必要な微調整がある」 → 評価 B (80-89)

  • 「集中的な練習が必要だ」 → 評価 C (70-79)

  • 「解決すべき重大な課題がある」 → 評価 D/F (<70)


フィードバックの優先順位付け

改善すべき上位3つの項目のみを表示します:

# スコアでソート(低い順 = 伸びしろが最も大きいもの)
sorted_components = sorted(scores.items(), key=lambda x: x[1]["score"])

# B評価のしきい値(80未満)の場合にのみ表示
feedback = [
    get_improvement_tip(metric, data["value"])
    for metric, data in sorted_components[:3]
    if data["score"] < 80
]

選手は、一度に10個もの修正点を提示されることを望みません。実行可能な2〜3個の項目こそが必要とされます。この絞り込みにより、システムは単なる通信簿ではなく、本物のコーチのように感じられます。


ステージ6:視覚化と出力


左右対比:理解のための鍵

解析動画の表示には、左右に並べた画面構成を使用しています:

  • 左側:オリジナル動画(選手が目にするもの)

  • 右側:関節オーバーレイ + HUD(システムが認識しているもの)

このダブルビューによって、選手は数値化された指標を、直感的な実際の身体の動きに関連付けて捉えることができます。自身の実際の映像を見ながら、システムがどこを改善ポイントとして検出したかを同時に把握できます。


HUDデザイン

ヘッドアップディスプレイには以下の項目が表示されます:

  • 総合スコア:大きく、色分けして表示(緑/黄/赤)

  • アルファベット評価:親しみのある学校の成績表のような評価(A/B/C/D/F)

  • 上位3つの指標:今回のシュートにおいて最も重要となる項目

  • リアルタイムフレームカウンター:分析の進行状況を表示

私たちはあえてミニマルなデザインを採用し続けています。過度な情報提供は、必ずしも優れたフィードバックにはつながらないからです。


パフォーマンス:なぜスケールするのか


3つの重要な最適化


1. スマートセグメンテーション(計算リソースの95%削減)

1,800秒分の映像をフレームごとにすべて処理する代わりに:

  • Marengoが該当するクリップ(各5秒)を15件検出

  • 合計わずか75秒分のみを処理

  • 練習全体の分析を、20分以上かかっていたものから「60秒以内」に短縮


2. エンベディングのキャッシュ(繰り返しの分析時間を66%削減)

TwelveLabsが最初に動画のインデックスを構築:

  • 初回分析:インデックス生成30秒 + 分析15秒 = 合計45秒

  • 再分析:インデックス生成0秒 + 分析15秒 = 合計15秒

アスリートは、異なる設定で同じ動画を再分析することがよくあります。キャッシュを効かせることで、この処理をほぼ瞬時に完了できます。


3. バッチ処理(5倍の高速化)

1つの動画から10個のシュートを分析する場合:

  • アップロードは1回のみで、セグメント化を10回実行

  • インデックスは1つ作り、そこから複数回検索

  • 個別に分析すると450秒かかる処理が、全体でわずか90秒に短縮


コスト構造

動画分析1回あたり0.10ドルの場合:

  • 100人の選手 × 月に4回の動画 = 月額のAPIコストは40ドル

  • 合計のシステム運用コスト:400本の動画の分析で、月に約105ドル

  • 経費は線形的にスケールします。例えば、10,000人の選手の場合で約10,500ドル/月

動画あたりの限界費用が一定(固定)に保たれ、一方でアスリートへの提供価値は高く維持できるため、この価格構造は十分に成り立ちます。


技術仕様


処理パフォーマンス

  • GPU処理:合計40〜60秒

  • CPU処理:合計60〜80秒

主な性能差は、ポーズ推定のスピードに起因しています(CPUの30 FPSに対し、GPUでは100 FPS以上稼働します)。


精度指標

大規模なテスト環境でのバッチデータに基づく測定(47名のアスリート、計427セッションより):


今後について:次のステップ


短期的な強化ポイント


中長期的なロードマップ

次の3つのテクノロジーの融合が、かつてない可能性を切り拓きます:

  1. スポーツごとの個別トレーニングなしで文脈を理解する、時系列ビデオインテリジェンス(TwelveLabs)

  2. あらゆる端末環境で軽快に稼働する、軽量ポーズ推定(MediaPipe)

  3. 消費者向けの価格帯で高度なAIを身近にする、クラウドインフラ

このテクノロジーの融合がもたらす未来:

  • 分析の民主化:スマートフォンを持つあらゆるアスリートが、プロレベルのフィードバックを得られます

  • スケーラブルな指導環境:コーチは、数百人ものアスリートに対して非同期的に進捗状況をチェックできるようになります

  • 複数スポーツにまたがる分析の知見:ある競技の身体の基礎が、別の競技にどのように活きるかを解き明かします

  • 継続的な成長:すべてのトレーニング記録が追跡され、指標が推移グラフ化されます

追加で1本動画を分析する際にかかる限界費用は限りなくゼロに近づく一方、アスリートに提供される価値は非常に高く保たれます。


まとめ:時系列の理解があらゆる状況を刷新する

私たちはシンプルな問いから出発しました。「スポーツの動画分析を、自然言語のように扱えないだろうか?時系列の理解と文脈を捉える意味を組み合わせて。」

その答えは、アスリートの上達に対する私たちの考え方を大きくアップデートするものでした。ルールがガチガチに決まったスポーツごとの分析システムを構築する代わりに、私たちは前後のコンテキストまで含めて動作を解釈するAIを使用します。高価なモーションキャプチャ用の専用スタジオの代わりに、スマートフォンの動画を活用します。コーチの主観的な指導にのみ依存するのではなく、私たちは客観的かつ再現性のあるバイオメカニクスのデータを提供します。

核となる洞察:

  1. 時系列ファースト:数値算出の前に、対象の全体の流れや文脈を理解することで、特定の競技に依存しない統合的な分析モデルを設計可能にします

  2. 身体比率に基づく指標:身体サイズに合わせて数値を正規化することで、年齢や体格に関わらず公平な比較が可能になります

  3. 不完全さへの配慮(Graceful degradation):結果が完全に出ない場合でも、中間データが得られる方が、完全にシステム停止してしまうよりも優れています

  4. スマートセグメンテーション:本当に意味のある箇所のみを厳選して切り出すことで、システムの分析効率を10倍高く稼働させられます

  5. シンプルなスコアリング:3つの区分を用いたスコアリングの計算式により、実際の課題を浮き彫りにしつつ、納得感のあるリビルドが可能です

テクノロジーはすでに実装可能な水準にあります。商業的なビジネスモデルも成立しています。そして効果は実際に実証されています。実験からスタートしたこの仕組みは、すでに月間数千本もの動画を解析する実用化システムとなっています。

土台はすでに完成しています。あとは、このサイクルを繰り返し回すだけです。まさに「反復(イテレーション)」の実装そのものです。


関連情報へのリンク

はじめに

バスケットボールのフリースロー練習セッションを録画したとします。シュートの見た目は、フォームも良く、リリースも安定しているように見えます。しかし、何かが違います。コーチは「フォロースルー」や「膝の曲げ」について指摘しますが、これを実際にどのように測定すればよいのでしょうか?さらに重要なのは、すべてのフレームを手動で確認することなく、時間の経過とともに改善を追跡するにはどうすればよいのでしょうか?

問題は、ほとんどのビデオ分析ツールが以下のいずれかであることです。

  1. 実際には何も測定しない、一般的な「よくできた!」というフィードバックしかない消費者向けアプリ

  2. 価格が1万ドル以上で、操作にスポーツ科学者が必要なプロフェッショナル向けシステム

  3. バスケットボールには最適に動作するものの、野球のスイングには対応できない単一スポーツ向けソリューション

これが、私たちがマルチスポーツ分析システムを構築した理由です。これは、単に動きを追跡するだけでなく、時系列ビデオインテリジェンスを通じて実際に動きを理解するパイプラインです。スポーツごとに決められた厳格なルールの代わりに、私たちは運動動作を効果的にするものについて理解するAIを使用しています。

鍵となる洞察は何でしょうか? 時系列の理解 + 正確な測定 = 有意義なフィードバック。従来のポーズ推定では関節の角度しか分かりませんが、時系列ビデオインテリジェンスは、一連の動作全体の文脈において、それらの角度がなぜ重要なのかを教えてくれます。


従来の分析が抱える問題

私たちが発見したのは、アスリートの動作はフレーム単位では理解できないということです。完璧なバスケットボールのシュートは、単にリリース時の角度だけでなく、膝の曲げ方、体重移動の仕方、フォロースルーの完了方法などによって決まります。これらの時系列要素を1つでも見落とすと、分析は無意味になります。

フリースローを分析するシナリオを考えてみましょう。従来のフレームベースのシステムでは、次のように報告されるかもしれません。

  • リリース時の肘の角度:92度 ✓

  • リリース時の高さ:2.1メートル ✓

  • 手首のアライメント:良好 ✓

しかし、それでもシュートは外れます。なぜでしょうか?それらの測定では、以下の項目が無視されているからです。

  • 準備段階全体における膝の曲げ(単一のフレームだけでなく)

  • 動作プロセス全体での体重移動(開始位置だけでなく)

  • 複数回の試行におけるフォロースルーの一貫性(1回のシュートだけでなく)

従来のアプローチでは、以下のいずれかになります。

  • 限られたフレームごとの指標のみを受け入れる(全体像を見落とす)

  • 各スポーツ専用のステートマシン(バスケットボールのルール、野球のルール、ゴルフのルールなど)を個別に構築する

  • バイオメカニクスの専門家を雇って、すべての動画を手動で確認する(スケーラビリティがない)

このシステムは異なるアプローチを採用しています。 動作シーケンス全体を時系列で理解し、重要となる部分を正確に測定します。


システムアーキテクチャ:全体像

この分析パイプラインは、5つの主要なステージを通じて、時系列ビデオ理解と正確なバイオメカニクス測定を組み合わせます。

各ステージは独立して設計されているため、パイプライン全体を書き直すことなく、コンポーネントの最適化や交換が可能です。


ステージ1:TwelveLabsによる時系列の理解


なぜ時系列の理解が重要なのか

画期的な気づきとなったのは、「文脈が正しさを決定する」という事実でした。肘の角度が95度というのは、バスケットボールのシュートとしては完璧かもしれませんが、野球のピッチングとしては最悪です。スポーツごとに個別のルールエンジンを構築する代わりに、私たちはTwelveLabsを使用して時系列で何が起こっているかを理解します。


2モデルによるアプローチ

PegasusとMarengoは互いに補完し合う関係にあるため、併用しています。

Pegasusは、高レベルのセマンティックな理解を提供します:

  • 「どのスポーツがプレイされていますか?」

  • 「これは練習ですか、それとも試合ですか?」

  • 「どのようなアクションが行われていますか?」

Marengoは、正確なビジュアル検索を提供します:

  • 「シュートは正確にどこで行われましたか?」

  • 「複数回の試行がありますか?」

  • 「時系列の文脈はどうなっていますか?」

# Pegasusはセマンティックな内容を理解します
analysis = pegasus_client.analyze(
    video_id=video_id,
    prompt="What sport is this? List all action timestamps.",
    temperature=0.1  # 事実に基づく回答を得るために低く設定
)

# Marengoはビジュアル検索で確認します
search_results = marengo_client.search.query(
    index_id=index_id,
    query_text="basketball shot attempt, player shooting",
    search_options=["visual"]
)

なぜこれが有効なのか

Pegasusが「2.5秒時点でのバスケットボールのシュート」を特定する一方、MarengoはPegasusが見落とした8.1秒と15.3秒の追加の試行を捉えることができます。両方のソースをマージすることで、誤検出率を低く抑えながら、95%以上の検出精度を達成できます。

マージロジックはシンプルですが極めて重要です:

# 2秒以内の検出は重複とみなす
for result in marengo_results:
    if not any(abs(result.start - existing["timestamp"]) < 2.0
               for existing in pegasus_moments):
        # 重複ではないため追加
        all_moments.append(result)

この2秒のウィンドウ設定により、同じ動作を2回分析することを防ぎ、かつ異なる試行を見落とさないようにします。


ステージ2:スポーツに特化したアクションセグメンテーション


時系列ウィンドウの重要性

スポーツが異なれば、本質的な動作のケイデンスも全く異なります。この洞察から、スポーツに特化した時系列ウィンドウが生まれました。

  • バスケットボール:シュート前3秒(準備はゆっくりと慎重に行われます)とシュート後2秒(正確さにはフォロースルーが不可欠です)が必要です。

  • 野球:スイング前2秒(コンパクトな動作)とスイング後1秒(素早いフォロースルー)のみが必要です。

  • ゴルフ:スイング前4秒(長いバックスイング)とスイング後3秒(完全なフォロースルー)が必要です。

これらのウィンドウはランダムに決められたものではなく、各動作フェーズが実際にどれくらいの時間を要するかについてのバイオメカニクス分析に基づいています。


なぜこれが重要なのか

適切な時系列ウィンドウを切り出すことで、以下の項目を捉えられます。

  • 完全な準備段階:リリースの2~3秒前から膝の曲がりが始まります

  • クリーンな基準点:動作開始前の余計な動きを排除

  • 完全なフォロースルー:動作の完了品質を測定するために極めて重要

実装では、速度向上のためにFFmpegのインプットシーキング(input-seeking)を使用しています:

# インプットシーキング(-iの前に-ssを指定する)は10〜20倍高速です
subprocess.run([
    "ffmpeg", "-i", video_path,
    "-ss", str(start_time),     # 入力の前にシーク
    "-t", str(duration),
    "-preset", "fast",          # 速度と品質をバランス良く調整
    output_path
])

このたった1つの最適化により、20分かかっていたフルビデオ分析から、60秒のセグメント化された分析へと劇的に短縮され、計算コストが95%削減されました。


ステージ3:ポーズ推定とボディトラッキング


MediaPipe:絶妙なバランス、スイートスポット

私たちがMediaPipeのポーズ推定を選択した理由は3つあります。

  1. 運動分析に必要な主要関節をすべてカバーする33個のランドマーク

  2. あらゆる環境で動作:CPUで30fps、GPUで100+ fps

  3. 時系列トラッキング:フレーム間(単にフレームごとではなく)で対象の同一性を維持

model_complexity(モデルの複雑さ)パラメータの調整が極めて重要でした:

「レベル1」がスイートスポットです:バイオメカニクス分析に十分な精度であり(1〜2度の誤差は許容範囲内)、実用に十分な速度(30 FPSは、ほとんどのハードウェアでリアルタイム処理が可能であることを意味します)を備えています。


なぜ正規化された座標が必要なのか

MediaPipeは0から1の範囲で正規化された座標を返します。これは公平性を保つために不可欠です:

# 正規化された座標(0〜1の範囲)
wrist_x = 0.52  # フレーム横幅の52%の位置
wrist_y = 0.31  # フレーム上端から31%下がった位置

# これらは以下に関わらず機能します:
# - 動画の解像度 (720p, 1080p, 4K)
# - カメラとの距離 (5フィートまたは50フィート離れているか)
# - アスリートの体格 (子供または大人)

10歳の子供であってもプロの選手であっても、まったく同じ座標系で分析されます。正規化は「世界空間(3次元の実空間)」ではなく「カメラ空間」で行われますが、これはフォーム分析を行う上でまさに私たちが望んでいる形です。


ステージ4:本当に重要となるバイオメカニクスの指標


5つの重要な指標

コーチやバイオメカニクスの専門家とのテストを通じて、実際のパフォーマンスと本当に関連性がある5つの指標を特定しました:


身体比率に基づく正規化:重要なイノベーション

これは設計上の最大の決定でした。絶対的な測定値を使用する代わりに、すべての測定値を身体の寸法で正規化します。

# 良くない例: 絶対値による測定
release_height_pixels = 823  # 前後関係がなければ無意味です

# 良い例: 身体比率に基づく測定
body_height = ankle_y - nose_y
release_height_normalized = wrist_y / body_height  # 0.68 = 身長の68%

これが重要である理由:身長が157cmのユース選手が身長比68%の高さでリリースするフォームは、身長が203cmのプロ選手が同じく身長比68%でリリースするフォームと等しくなります。両者とも、身体のサイズ関わらず、技術の観点から公平にスコア化されます。

この決断により、以下のことが可能になりました:

  • 異なる年齢層の比較(12歳の子供 vs. 大人)

  • カメラ位置から依存しない分析(距離が関係なくなります)

  • アスリートの成長に伴う上達プロセスの追跡(一貫性の維持)


角度計算:シンプルながら強力

関節の角度は基本的な三角関数を用いて算出します:

# 点1 - 点2 - 点3 によって形成される、点2における角度を計算
vector1 = point1 - point2
vector2 = point3 - point2
cos_angle = dot(vector1, vector2) / (norm(vector1) * norm(vector2))
angle_degrees = arccos(cos_angle) * 180 / pi

その美しさは「どう測定するか」ではなく、「何を測定するか」にあります。バスケットボールの場合:

  • 肘の角度:リリース時のフレームにおける肩-肘-手首の角度

  • 膝の角度:準備段階における股関節-膝-足首の最小角度

  • バランス:すべてのフレームにおける肩と股関節のアライメントの標準偏差


ステージ5:スコアリングシステム


3ゾーンのスコアリング思想

スコアリングの基準は、実際の課題を浮き彫りにしつつ、納得のいくものになるように設計されました:

ゾーン1(完璧):理想から±5%以内 → 100点

  • 肘の角度が88〜92°(理想は90°)

  • 軽微な誤差に対する減点はなし

ゾーン2(良好):許容範囲内 → 90〜100点

  • 肘の角度が85〜95°(許容上限・下限)

  • 線形補間:理想に近づくほど高得点

ゾーン3(要改善):範囲外 → 0〜70点

  • 緩やかに低下させることで、極端な減点を回避

  • 肘が80°の場合、0点ではなく約60点となります


なぜ3つのゾーンが有効なのか

この評価設計は、実際のコーチの評価方法によく合致しています:

  • 「完璧なフォームだ」 → 評価 A (90-100)

  • 「素晴らしいが必要な微調整がある」 → 評価 B (80-89)

  • 「集中的な練習が必要だ」 → 評価 C (70-79)

  • 「解決すべき重大な課題がある」 → 評価 D/F (<70)


フィードバックの優先順位付け

改善すべき上位3つの項目のみを表示します:

# スコアでソート(低い順 = 伸びしろが最も大きいもの)
sorted_components = sorted(scores.items(), key=lambda x: x[1]["score"])

# B評価のしきい値(80未満)の場合にのみ表示
feedback = [
    get_improvement_tip(metric, data["value"])
    for metric, data in sorted_components[:3]
    if data["score"] < 80
]

選手は、一度に10個もの修正点を提示されることを望みません。実行可能な2〜3個の項目こそが必要とされます。この絞り込みにより、システムは単なる通信簿ではなく、本物のコーチのように感じられます。


ステージ6:視覚化と出力


左右対比:理解のための鍵

解析動画の表示には、左右に並べた画面構成を使用しています:

  • 左側:オリジナル動画(選手が目にするもの)

  • 右側:関節オーバーレイ + HUD(システムが認識しているもの)

このダブルビューによって、選手は数値化された指標を、直感的な実際の身体の動きに関連付けて捉えることができます。自身の実際の映像を見ながら、システムがどこを改善ポイントとして検出したかを同時に把握できます。


HUDデザイン

ヘッドアップディスプレイには以下の項目が表示されます:

  • 総合スコア:大きく、色分けして表示(緑/黄/赤)

  • アルファベット評価:親しみのある学校の成績表のような評価(A/B/C/D/F)

  • 上位3つの指標:今回のシュートにおいて最も重要となる項目

  • リアルタイムフレームカウンター:分析の進行状況を表示

私たちはあえてミニマルなデザインを採用し続けています。過度な情報提供は、必ずしも優れたフィードバックにはつながらないからです。


パフォーマンス:なぜスケールするのか


3つの重要な最適化


1. スマートセグメンテーション(計算リソースの95%削減)

1,800秒分の映像をフレームごとにすべて処理する代わりに:

  • Marengoが該当するクリップ(各5秒)を15件検出

  • 合計わずか75秒分のみを処理

  • 練習全体の分析を、20分以上かかっていたものから「60秒以内」に短縮


2. エンベディングのキャッシュ(繰り返しの分析時間を66%削減)

TwelveLabsが最初に動画のインデックスを構築:

  • 初回分析:インデックス生成30秒 + 分析15秒 = 合計45秒

  • 再分析:インデックス生成0秒 + 分析15秒 = 合計15秒

アスリートは、異なる設定で同じ動画を再分析することがよくあります。キャッシュを効かせることで、この処理をほぼ瞬時に完了できます。


3. バッチ処理(5倍の高速化)

1つの動画から10個のシュートを分析する場合:

  • アップロードは1回のみで、セグメント化を10回実行

  • インデックスは1つ作り、そこから複数回検索

  • 個別に分析すると450秒かかる処理が、全体でわずか90秒に短縮


コスト構造

動画分析1回あたり0.10ドルの場合:

  • 100人の選手 × 月に4回の動画 = 月額のAPIコストは40ドル

  • 合計のシステム運用コスト:400本の動画の分析で、月に約105ドル

  • 経費は線形的にスケールします。例えば、10,000人の選手の場合で約10,500ドル/月

動画あたりの限界費用が一定(固定)に保たれ、一方でアスリートへの提供価値は高く維持できるため、この価格構造は十分に成り立ちます。


技術仕様


処理パフォーマンス

  • GPU処理:合計40〜60秒

  • CPU処理:合計60〜80秒

主な性能差は、ポーズ推定のスピードに起因しています(CPUの30 FPSに対し、GPUでは100 FPS以上稼働します)。


精度指標

大規模なテスト環境でのバッチデータに基づく測定(47名のアスリート、計427セッションより):


今後について:次のステップ


短期的な強化ポイント


中長期的なロードマップ

次の3つのテクノロジーの融合が、かつてない可能性を切り拓きます:

  1. スポーツごとの個別トレーニングなしで文脈を理解する、時系列ビデオインテリジェンス(TwelveLabs)

  2. あらゆる端末環境で軽快に稼働する、軽量ポーズ推定(MediaPipe)

  3. 消費者向けの価格帯で高度なAIを身近にする、クラウドインフラ

このテクノロジーの融合がもたらす未来:

  • 分析の民主化:スマートフォンを持つあらゆるアスリートが、プロレベルのフィードバックを得られます

  • スケーラブルな指導環境:コーチは、数百人ものアスリートに対して非同期的に進捗状況をチェックできるようになります

  • 複数スポーツにまたがる分析の知見:ある競技の身体の基礎が、別の競技にどのように活きるかを解き明かします

  • 継続的な成長:すべてのトレーニング記録が追跡され、指標が推移グラフ化されます

追加で1本動画を分析する際にかかる限界費用は限りなくゼロに近づく一方、アスリートに提供される価値は非常に高く保たれます。


まとめ:時系列の理解があらゆる状況を刷新する

私たちはシンプルな問いから出発しました。「スポーツの動画分析を、自然言語のように扱えないだろうか?時系列の理解と文脈を捉える意味を組み合わせて。」

その答えは、アスリートの上達に対する私たちの考え方を大きくアップデートするものでした。ルールがガチガチに決まったスポーツごとの分析システムを構築する代わりに、私たちは前後のコンテキストまで含めて動作を解釈するAIを使用します。高価なモーションキャプチャ用の専用スタジオの代わりに、スマートフォンの動画を活用します。コーチの主観的な指導にのみ依存するのではなく、私たちは客観的かつ再現性のあるバイオメカニクスのデータを提供します。

核となる洞察:

  1. 時系列ファースト:数値算出の前に、対象の全体の流れや文脈を理解することで、特定の競技に依存しない統合的な分析モデルを設計可能にします

  2. 身体比率に基づく指標:身体サイズに合わせて数値を正規化することで、年齢や体格に関わらず公平な比較が可能になります

  3. 不完全さへの配慮(Graceful degradation):結果が完全に出ない場合でも、中間データが得られる方が、完全にシステム停止してしまうよりも優れています

  4. スマートセグメンテーション:本当に意味のある箇所のみを厳選して切り出すことで、システムの分析効率を10倍高く稼働させられます

  5. シンプルなスコアリング:3つの区分を用いたスコアリングの計算式により、実際の課題を浮き彫りにしつつ、納得感のあるリビルドが可能です

テクノロジーはすでに実装可能な水準にあります。商業的なビジネスモデルも成立しています。そして効果は実際に実証されています。実験からスタートしたこの仕組みは、すでに月間数千本もの動画を解析する実用化システムとなっています。

土台はすでに完成しています。あとは、このサイクルを繰り返し回すだけです。まさに「反復(イテレーション)」の実装そのものです。


関連情報へのリンク

はじめに

バスケットボールのフリースロー練習セッションを録画したとします。シュートの見た目は、フォームも良く、リリースも安定しているように見えます。しかし、何かが違います。コーチは「フォロースルー」や「膝の曲げ」について指摘しますが、これを実際にどのように測定すればよいのでしょうか?さらに重要なのは、すべてのフレームを手動で確認することなく、時間の経過とともに改善を追跡するにはどうすればよいのでしょうか?

問題は、ほとんどのビデオ分析ツールが以下のいずれかであることです。

  1. 実際には何も測定しない、一般的な「よくできた!」というフィードバックしかない消費者向けアプリ

  2. 価格が1万ドル以上で、操作にスポーツ科学者が必要なプロフェッショナル向けシステム

  3. バスケットボールには最適に動作するものの、野球のスイングには対応できない単一スポーツ向けソリューション

これが、私たちがマルチスポーツ分析システムを構築した理由です。これは、単に動きを追跡するだけでなく、時系列ビデオインテリジェンスを通じて実際に動きを理解するパイプラインです。スポーツごとに決められた厳格なルールの代わりに、私たちは運動動作を効果的にするものについて理解するAIを使用しています。

鍵となる洞察は何でしょうか? 時系列の理解 + 正確な測定 = 有意義なフィードバック。従来のポーズ推定では関節の角度しか分かりませんが、時系列ビデオインテリジェンスは、一連の動作全体の文脈において、それらの角度がなぜ重要なのかを教えてくれます。


従来の分析が抱える問題

私たちが発見したのは、アスリートの動作はフレーム単位では理解できないということです。完璧なバスケットボールのシュートは、単にリリース時の角度だけでなく、膝の曲げ方、体重移動の仕方、フォロースルーの完了方法などによって決まります。これらの時系列要素を1つでも見落とすと、分析は無意味になります。

フリースローを分析するシナリオを考えてみましょう。従来のフレームベースのシステムでは、次のように報告されるかもしれません。

  • リリース時の肘の角度:92度 ✓

  • リリース時の高さ:2.1メートル ✓

  • 手首のアライメント:良好 ✓

しかし、それでもシュートは外れます。なぜでしょうか?それらの測定では、以下の項目が無視されているからです。

  • 準備段階全体における膝の曲げ(単一のフレームだけでなく)

  • 動作プロセス全体での体重移動(開始位置だけでなく)

  • 複数回の試行におけるフォロースルーの一貫性(1回のシュートだけでなく)

従来のアプローチでは、以下のいずれかになります。

  • 限られたフレームごとの指標のみを受け入れる(全体像を見落とす)

  • 各スポーツ専用のステートマシン(バスケットボールのルール、野球のルール、ゴルフのルールなど)を個別に構築する

  • バイオメカニクスの専門家を雇って、すべての動画を手動で確認する(スケーラビリティがない)

このシステムは異なるアプローチを採用しています。 動作シーケンス全体を時系列で理解し、重要となる部分を正確に測定します。


システムアーキテクチャ:全体像

この分析パイプラインは、5つの主要なステージを通じて、時系列ビデオ理解と正確なバイオメカニクス測定を組み合わせます。

各ステージは独立して設計されているため、パイプライン全体を書き直すことなく、コンポーネントの最適化や交換が可能です。


ステージ1:TwelveLabsによる時系列の理解


なぜ時系列の理解が重要なのか

画期的な気づきとなったのは、「文脈が正しさを決定する」という事実でした。肘の角度が95度というのは、バスケットボールのシュートとしては完璧かもしれませんが、野球のピッチングとしては最悪です。スポーツごとに個別のルールエンジンを構築する代わりに、私たちはTwelveLabsを使用して時系列で何が起こっているかを理解します。


2モデルによるアプローチ

PegasusとMarengoは互いに補完し合う関係にあるため、併用しています。

Pegasusは、高レベルのセマンティックな理解を提供します:

  • 「どのスポーツがプレイされていますか?」

  • 「これは練習ですか、それとも試合ですか?」

  • 「どのようなアクションが行われていますか?」

Marengoは、正確なビジュアル検索を提供します:

  • 「シュートは正確にどこで行われましたか?」

  • 「複数回の試行がありますか?」

  • 「時系列の文脈はどうなっていますか?」

# Pegasusはセマンティックな内容を理解します
analysis = pegasus_client.analyze(
    video_id=video_id,
    prompt="What sport is this? List all action timestamps.",
    temperature=0.1  # 事実に基づく回答を得るために低く設定
)

# Marengoはビジュアル検索で確認します
search_results = marengo_client.search.query(
    index_id=index_id,
    query_text="basketball shot attempt, player shooting",
    search_options=["visual"]
)

なぜこれが有効なのか

Pegasusが「2.5秒時点でのバスケットボールのシュート」を特定する一方、MarengoはPegasusが見落とした8.1秒と15.3秒の追加の試行を捉えることができます。両方のソースをマージすることで、誤検出率を低く抑えながら、95%以上の検出精度を達成できます。

マージロジックはシンプルですが極めて重要です:

# 2秒以内の検出は重複とみなす
for result in marengo_results:
    if not any(abs(result.start - existing["timestamp"]) < 2.0
               for existing in pegasus_moments):
        # 重複ではないため追加
        all_moments.append(result)

この2秒のウィンドウ設定により、同じ動作を2回分析することを防ぎ、かつ異なる試行を見落とさないようにします。


ステージ2:スポーツに特化したアクションセグメンテーション


時系列ウィンドウの重要性

スポーツが異なれば、本質的な動作のケイデンスも全く異なります。この洞察から、スポーツに特化した時系列ウィンドウが生まれました。

  • バスケットボール:シュート前3秒(準備はゆっくりと慎重に行われます)とシュート後2秒(正確さにはフォロースルーが不可欠です)が必要です。

  • 野球:スイング前2秒(コンパクトな動作)とスイング後1秒(素早いフォロースルー)のみが必要です。

  • ゴルフ:スイング前4秒(長いバックスイング)とスイング後3秒(完全なフォロースルー)が必要です。

これらのウィンドウはランダムに決められたものではなく、各動作フェーズが実際にどれくらいの時間を要するかについてのバイオメカニクス分析に基づいています。


なぜこれが重要なのか

適切な時系列ウィンドウを切り出すことで、以下の項目を捉えられます。

  • 完全な準備段階:リリースの2~3秒前から膝の曲がりが始まります

  • クリーンな基準点:動作開始前の余計な動きを排除

  • 完全なフォロースルー:動作の完了品質を測定するために極めて重要

実装では、速度向上のためにFFmpegのインプットシーキング(input-seeking)を使用しています:

# インプットシーキング(-iの前に-ssを指定する)は10〜20倍高速です
subprocess.run([
    "ffmpeg", "-i", video_path,
    "-ss", str(start_time),     # 入力の前にシーク
    "-t", str(duration),
    "-preset", "fast",          # 速度と品質をバランス良く調整
    output_path
])

このたった1つの最適化により、20分かかっていたフルビデオ分析から、60秒のセグメント化された分析へと劇的に短縮され、計算コストが95%削減されました。


ステージ3:ポーズ推定とボディトラッキング


MediaPipe:絶妙なバランス、スイートスポット

私たちがMediaPipeのポーズ推定を選択した理由は3つあります。

  1. 運動分析に必要な主要関節をすべてカバーする33個のランドマーク

  2. あらゆる環境で動作:CPUで30fps、GPUで100+ fps

  3. 時系列トラッキング:フレーム間(単にフレームごとではなく)で対象の同一性を維持

model_complexity(モデルの複雑さ)パラメータの調整が極めて重要でした:

「レベル1」がスイートスポットです:バイオメカニクス分析に十分な精度であり(1〜2度の誤差は許容範囲内)、実用に十分な速度(30 FPSは、ほとんどのハードウェアでリアルタイム処理が可能であることを意味します)を備えています。


なぜ正規化された座標が必要なのか

MediaPipeは0から1の範囲で正規化された座標を返します。これは公平性を保つために不可欠です:

# 正規化された座標(0〜1の範囲)
wrist_x = 0.52  # フレーム横幅の52%の位置
wrist_y = 0.31  # フレーム上端から31%下がった位置

# これらは以下に関わらず機能します:
# - 動画の解像度 (720p, 1080p, 4K)
# - カメラとの距離 (5フィートまたは50フィート離れているか)
# - アスリートの体格 (子供または大人)

10歳の子供であってもプロの選手であっても、まったく同じ座標系で分析されます。正規化は「世界空間(3次元の実空間)」ではなく「カメラ空間」で行われますが、これはフォーム分析を行う上でまさに私たちが望んでいる形です。


ステージ4:本当に重要となるバイオメカニクスの指標


5つの重要な指標

コーチやバイオメカニクスの専門家とのテストを通じて、実際のパフォーマンスと本当に関連性がある5つの指標を特定しました:


身体比率に基づく正規化:重要なイノベーション

これは設計上の最大の決定でした。絶対的な測定値を使用する代わりに、すべての測定値を身体の寸法で正規化します。

# 良くない例: 絶対値による測定
release_height_pixels = 823  # 前後関係がなければ無意味です

# 良い例: 身体比率に基づく測定
body_height = ankle_y - nose_y
release_height_normalized = wrist_y / body_height  # 0.68 = 身長の68%

これが重要である理由:身長が157cmのユース選手が身長比68%の高さでリリースするフォームは、身長が203cmのプロ選手が同じく身長比68%でリリースするフォームと等しくなります。両者とも、身体のサイズ関わらず、技術の観点から公平にスコア化されます。

この決断により、以下のことが可能になりました:

  • 異なる年齢層の比較(12歳の子供 vs. 大人)

  • カメラ位置から依存しない分析(距離が関係なくなります)

  • アスリートの成長に伴う上達プロセスの追跡(一貫性の維持)


角度計算:シンプルながら強力

関節の角度は基本的な三角関数を用いて算出します:

# 点1 - 点2 - 点3 によって形成される、点2における角度を計算
vector1 = point1 - point2
vector2 = point3 - point2
cos_angle = dot(vector1, vector2) / (norm(vector1) * norm(vector2))
angle_degrees = arccos(cos_angle) * 180 / pi

その美しさは「どう測定するか」ではなく、「何を測定するか」にあります。バスケットボールの場合:

  • 肘の角度:リリース時のフレームにおける肩-肘-手首の角度

  • 膝の角度:準備段階における股関節-膝-足首の最小角度

  • バランス:すべてのフレームにおける肩と股関節のアライメントの標準偏差


ステージ5:スコアリングシステム


3ゾーンのスコアリング思想

スコアリングの基準は、実際の課題を浮き彫りにしつつ、納得のいくものになるように設計されました:

ゾーン1(完璧):理想から±5%以内 → 100点

  • 肘の角度が88〜92°(理想は90°)

  • 軽微な誤差に対する減点はなし

ゾーン2(良好):許容範囲内 → 90〜100点

  • 肘の角度が85〜95°(許容上限・下限)

  • 線形補間:理想に近づくほど高得点

ゾーン3(要改善):範囲外 → 0〜70点

  • 緩やかに低下させることで、極端な減点を回避

  • 肘が80°の場合、0点ではなく約60点となります


なぜ3つのゾーンが有効なのか

この評価設計は、実際のコーチの評価方法によく合致しています:

  • 「完璧なフォームだ」 → 評価 A (90-100)

  • 「素晴らしいが必要な微調整がある」 → 評価 B (80-89)

  • 「集中的な練習が必要だ」 → 評価 C (70-79)

  • 「解決すべき重大な課題がある」 → 評価 D/F (<70)


フィードバックの優先順位付け

改善すべき上位3つの項目のみを表示します:

# スコアでソート(低い順 = 伸びしろが最も大きいもの)
sorted_components = sorted(scores.items(), key=lambda x: x[1]["score"])

# B評価のしきい値(80未満)の場合にのみ表示
feedback = [
    get_improvement_tip(metric, data["value"])
    for metric, data in sorted_components[:3]
    if data["score"] < 80
]

選手は、一度に10個もの修正点を提示されることを望みません。実行可能な2〜3個の項目こそが必要とされます。この絞り込みにより、システムは単なる通信簿ではなく、本物のコーチのように感じられます。


ステージ6:視覚化と出力


左右対比:理解のための鍵

解析動画の表示には、左右に並べた画面構成を使用しています:

  • 左側:オリジナル動画(選手が目にするもの)

  • 右側:関節オーバーレイ + HUD(システムが認識しているもの)

このダブルビューによって、選手は数値化された指標を、直感的な実際の身体の動きに関連付けて捉えることができます。自身の実際の映像を見ながら、システムがどこを改善ポイントとして検出したかを同時に把握できます。


HUDデザイン

ヘッドアップディスプレイには以下の項目が表示されます:

  • 総合スコア:大きく、色分けして表示(緑/黄/赤)

  • アルファベット評価:親しみのある学校の成績表のような評価(A/B/C/D/F)

  • 上位3つの指標:今回のシュートにおいて最も重要となる項目

  • リアルタイムフレームカウンター:分析の進行状況を表示

私たちはあえてミニマルなデザインを採用し続けています。過度な情報提供は、必ずしも優れたフィードバックにはつながらないからです。


パフォーマンス:なぜスケールするのか


3つの重要な最適化


1. スマートセグメンテーション(計算リソースの95%削減)

1,800秒分の映像をフレームごとにすべて処理する代わりに:

  • Marengoが該当するクリップ(各5秒)を15件検出

  • 合計わずか75秒分のみを処理

  • 練習全体の分析を、20分以上かかっていたものから「60秒以内」に短縮


2. エンベディングのキャッシュ(繰り返しの分析時間を66%削減)

TwelveLabsが最初に動画のインデックスを構築:

  • 初回分析:インデックス生成30秒 + 分析15秒 = 合計45秒

  • 再分析:インデックス生成0秒 + 分析15秒 = 合計15秒

アスリートは、異なる設定で同じ動画を再分析することがよくあります。キャッシュを効かせることで、この処理をほぼ瞬時に完了できます。


3. バッチ処理(5倍の高速化)

1つの動画から10個のシュートを分析する場合:

  • アップロードは1回のみで、セグメント化を10回実行

  • インデックスは1つ作り、そこから複数回検索

  • 個別に分析すると450秒かかる処理が、全体でわずか90秒に短縮


コスト構造

動画分析1回あたり0.10ドルの場合:

  • 100人の選手 × 月に4回の動画 = 月額のAPIコストは40ドル

  • 合計のシステム運用コスト:400本の動画の分析で、月に約105ドル

  • 経費は線形的にスケールします。例えば、10,000人の選手の場合で約10,500ドル/月

動画あたりの限界費用が一定(固定)に保たれ、一方でアスリートへの提供価値は高く維持できるため、この価格構造は十分に成り立ちます。


技術仕様


処理パフォーマンス

  • GPU処理:合計40〜60秒

  • CPU処理:合計60〜80秒

主な性能差は、ポーズ推定のスピードに起因しています(CPUの30 FPSに対し、GPUでは100 FPS以上稼働します)。


精度指標

大規模なテスト環境でのバッチデータに基づく測定(47名のアスリート、計427セッションより):


今後について:次のステップ


短期的な強化ポイント


中長期的なロードマップ

次の3つのテクノロジーの融合が、かつてない可能性を切り拓きます:

  1. スポーツごとの個別トレーニングなしで文脈を理解する、時系列ビデオインテリジェンス(TwelveLabs)

  2. あらゆる端末環境で軽快に稼働する、軽量ポーズ推定(MediaPipe)

  3. 消費者向けの価格帯で高度なAIを身近にする、クラウドインフラ

このテクノロジーの融合がもたらす未来:

  • 分析の民主化:スマートフォンを持つあらゆるアスリートが、プロレベルのフィードバックを得られます

  • スケーラブルな指導環境:コーチは、数百人ものアスリートに対して非同期的に進捗状況をチェックできるようになります

  • 複数スポーツにまたがる分析の知見:ある競技の身体の基礎が、別の競技にどのように活きるかを解き明かします

  • 継続的な成長:すべてのトレーニング記録が追跡され、指標が推移グラフ化されます

追加で1本動画を分析する際にかかる限界費用は限りなくゼロに近づく一方、アスリートに提供される価値は非常に高く保たれます。


まとめ:時系列の理解があらゆる状況を刷新する

私たちはシンプルな問いから出発しました。「スポーツの動画分析を、自然言語のように扱えないだろうか?時系列の理解と文脈を捉える意味を組み合わせて。」

その答えは、アスリートの上達に対する私たちの考え方を大きくアップデートするものでした。ルールがガチガチに決まったスポーツごとの分析システムを構築する代わりに、私たちは前後のコンテキストまで含めて動作を解釈するAIを使用します。高価なモーションキャプチャ用の専用スタジオの代わりに、スマートフォンの動画を活用します。コーチの主観的な指導にのみ依存するのではなく、私たちは客観的かつ再現性のあるバイオメカニクスのデータを提供します。

核となる洞察:

  1. 時系列ファースト:数値算出の前に、対象の全体の流れや文脈を理解することで、特定の競技に依存しない統合的な分析モデルを設計可能にします

  2. 身体比率に基づく指標:身体サイズに合わせて数値を正規化することで、年齢や体格に関わらず公平な比較が可能になります

  3. 不完全さへの配慮(Graceful degradation):結果が完全に出ない場合でも、中間データが得られる方が、完全にシステム停止してしまうよりも優れています

  4. スマートセグメンテーション:本当に意味のある箇所のみを厳選して切り出すことで、システムの分析効率を10倍高く稼働させられます

  5. シンプルなスコアリング:3つの区分を用いたスコアリングの計算式により、実際の課題を浮き彫りにしつつ、納得感のあるリビルドが可能です

テクノロジーはすでに実装可能な水準にあります。商業的なビジネスモデルも成立しています。そして効果は実際に実証されています。実験からスタートしたこの仕組みは、すでに月間数千本もの動画を解析する実用化システムとなっています。

土台はすでに完成しています。あとは、このサイクルを繰り返し回すだけです。まさに「反復(イテレーション)」の実装そのものです。


関連情報へのリンク