バスケ選手トラッカー (1)

はじめに

 数年間のスマホオンリー生活を破ってマイPCを手に入れ、そこに開発環境を整え、などしていた理由は、こういうアプリを作ってみようと思ったからです。

 きっかけは、息子が学校のバスケ部に入っているのですが、まじめに練習こそすれ運動センスが高い訳ではなく、先日試合を応援に行ったら同じ学年の子がプレイする傍らベンチを温めるばかりで、運動部あるあるですがちょっと切なくなったことです。何か手助けできないかと考えていたときに、息子のチームは特定の人がドライブで切り込もうとする以外ゴール下に入ろうとせずゾーンの外で待っているだけということに気付き、チームの動きを俯瞰的に可視化したらどうだろう(ちょっと反省しなさい)と思い付きました。

 幸か不幸か本業で3D計算をよく扱っており、また近年のAIブームでトラッキングがやり易くなっている(昔は大体オプティカルフローから始めたものです)ので、AIの性能テストを兼ねてのトライアルです。これ自体はシミュレーションではなく計測の範疇ですが、いずれ選手の動きをシミュレーションする(そこまでできるか?)にも実データは必要なので、まずはここから始めてみます。

※ちなみに、後日バスケの初心者向けの本をざっと立ち読みしましたが、目の前の敵の抜き方の解説が多く、コート内での移動の戦略のような話は見当たりませんでした。指導者向けがどうなっているかは分かりませんが、もしかすると意味が無い話なのかもしれません。

大まかな処理の流れ

  1. 試合応援の傍ら、定点カメラでコート内の選手を動画撮影。
  2. 動画内のコートの隅とラインの位置からカメラ位置推定。
  3. Meta社がリリースしたSegment Anything Model 3(SAM3)を使って個々の選手をセグメンテーション&トラッキング。
  4. カメラ位置と選手の投影位置からエピポーララインを算出。
  5. 選手の投影サイズから奥行きを推定。
  6. エピポーララインと奥行きで、選手の3D位置確定。
  7. 選手の3D軌跡生成。
  8. コートと選手の位置を3D表示。

懸念点

  • ゲームの性質上、カメラの画角内で選手同士が重なることが多い。
  • ボールも検出したいが、速度が速く体で隠されることも多いので、かなり絶望的。
  • コート脇でなく2階から動画撮影するのがベターだが、それができる体育館は限られる。(大きな大会など。学校の普通の体育館だと難しいか。)
  • カメラの画角的にコートの半分を収めるのが限界。複数角度で同時撮影したいが、それはそれでマージする技術が必要。
  • 選手が飛んだり縮んだり向きを変えたりで投影サイズが変わり、奥行き誤差が大きくなることが予測される。体勢まで推定できるか?
  • SAM3がかなりのGPUパワーを必要とする見込み。実用的な使用ではGeForce RTXシリーズが推奨とよく記事に書かれるが、ノートPCのCPUのみでどの程度いけるか?

コメント

タイトルとURLをコピーしました