Amazon Web Services ブログ
クラウドを用いた PGA ツアーでのボール位置追跡システム
PGA ツアーはリアルタイムのデータを活用してゴルフの観戦体験をさらに向上させ、ファンがゲームをより身近に感じられるようにしています。さらに豊かな体験を提供するために、グリーン上のボール位置を自動的に追跡する次世代ボール位置トラッキングシステムの開発を進めています。
PGA ツアーは現在、すべてのショットの開始位置と停止位置を正確に追跡するために、複雑なカメラシステムとオンサイトコンピューティングを利用した最高のスコアリングシステムである CDW 社提供の ShotLink を使用しています。PGA ツアーは、次世代のクラウドベースのパイプラインを開発し、パッティンググリーン上のゴルフボールを特定するために、コンピュータビジョンと機械学習の技術を探求したいと考えていました。
Amazon Generative AI Innovation Center (GAIIC) は、最近の PGA ツアーのイベントで得たサンプルデータセットを用いて、これらの技術の有効性を実証しました。GAIIC は、プレーヤーをカメラの視野内で正確に特定し、パッティングをしているプレーヤーを判断し、カップに向かって動くボールを追跡する、複数の畳み込みニューラルネットワーク (CNN) を連結し、一連のモジュラーパイプラインを設計しました。
この投稿では、このパイプラインの開発、RAW データ、パイプラインを構成する畳み込みニューラルネットワークの設計、およびそのパフォーマンスの評価について説明します。
データ
PGA ツアーは 1 ホールのグリーン周辺に設置された 3 台の 4K カメラから撮影された 3 日間のビデオを GAIIC に提供しました。以下の図は、一つのカメラからのフレームをクロップしてズームし、パッティングするプレーヤーがはっきりと見えるようにしたものです。カメラの解像度は高いにも関わらず、グリーンから距離があるため、ボールは小さく見えます(通常 3×3、4×4、または 5×5 ピクセル)。このサイズのターゲットを正確に特定することは難しい場合があります。
カメラの映像に加えて、PGA ツアー は各ショットのスコアリングもアノテーションデータとして GAIIC に提供しました。これには、ボールの着弾位置のタイムスタンプが含まれています。これにより、グリーン上における全てのパットを視覚化するだけでなく、パターを打っている全てのプレーヤーのビデオクリップを抽出することができ、それを手動でラベル付けすることで、パイプラインを構成する検出モデルの訓練データとして活用することができます。次の図は、上から時計回りに 3 つのカメラビューとおおよそのパット経路のオーバーレイを示しています。ピンポジションは毎日移動させられ、1 日目は青、2 日目は赤、3 日目はオレンジに対応しています。
パイプラインの概要
全体のシステムは、トレーニングパイプラインと推論パイプラインの両方で構成されています。次の図は、トレーニングパイプラインのアーキテクチャを示しています。まず、Amazon Kinesis のようなストリーミングモジュールから取得したライブビデオ、または Amazon Simple Storage Service (Amazon S3) に直接配置した過去のビデオのいずれかからビデオデータを取り込みます。トレーニングパイプラインでは、ビデオの前処理および Amazon SageMaker Ground Truth を使用した画像の手動ラベル付けが必要です。モデルは Amazon SageMaker でトレーニングでき、その成果物は Amazon S3 に保存できます。
推論パイプラインは、次の図に示すように、ビデオの RAW データから順次情報を抽出し、最終的にボールの緯度経度を予測するいくつかのモジュールで構成されています。 最初に、各カメラが捉えた広い視野からグリーンが切り取られ、プレーヤーやボールを検出するモデルが対象とする領域を減らします。次に、 3 つの畳み込みニューラルネットワーク (CNN) を使用します。1番目の CNN は、視野内に存在する人物位置を検出します。2 番目の CNN では、どのタイプの人物を検出したかを予測し、パットを試みる人物が存在するを判断します。可能性が高い人物が検出されたら、同じCNNを使用してパター付近のボール位置を予測します。3 番目の CNN はボールの動きを追跡し、最後にカメラのピクセル位置から GPS 座標への変換関数が適用されます。
プレーヤー検出
CNN を用いて一定間隔で 4K フレーム全体にわたってボールを検出する方法は可能ですが、カメラの距離から見たボールの小さなサイズを考慮すると、どんな小さな白い物体でも誤って検出してしまい、誤報が多くなる恐れがあります。画像全体でボールを探すのを避けるためには、プレーヤーの姿勢とボールの位置の相関関係を利用することが有効です。パットする際にはボールがプレーヤーの近くにあるため、視野内でプレーヤーを特定することで、ボールを探す必要のあるピクセル領域の範囲を大きく絞り込むことができます。
下図に示すように、あらかじめ訓練された CNN を使って、視野内に映るすべての人物のバウンディングボックスを予測することができました。ただ残念ながらグリーン上には複数のボールがあることが多いので、単にすべての人物を検出してボールを検索するだけではなく、さらなるロジックが必要となります。このため、現在パッティングをしているプレーヤーを検出するための別の CNN が必要です。
プレーヤーの分類とボール検出
グリーン上のボールのありかをさらに絞り込むために、事前学習済みの物体検出 CNN (YOLO v7) をファインチューニングして、グリーン上のすべての人物を分類しました。このプロセスの重要なコンポーネントは、SageMaker Ground Truth を使用して一連の画像に手動でラベルを付けることでした。これらのラベルにより、CNN はパッティングをしているプレーヤーを高い精度で分類できるようになりました。ラベリングプロセスでは、パッティングをしているプレーヤーとともにボールの位置も明確化されていたため、この CNN はボール検出も行うことができ、パット前のボールの初期位置にバウンディングボックスを描画し、その位置情報を後段のボール追跡 CNN に送ることができるようになりました。
画像内のオブジェクトには 4 つの異なるラベルを使用してアノテーションを付けています:
- player-putting – クラブを持ち、パッティングの体勢にあるプレーヤー
- player-not-putting – パッティングの体勢にないプレーヤー(クラブを持っている可能性もあります)
- other-person – プレーヤーではないその他の人物
- golf-ball – ゴルフボール
以下の図は、SageMaker Ground Truth のラベルを使用してファインチューニングされた CNN が、視野内の各人物を分類していることを示しています。この分類は、選手・キャディー・ファンといった外見が広範囲に及ぶため、判断は難しくなります。そのため、プレーヤーがパッティングに分類された後、ボール検出用にファインチューニングした CNN がそのプレーヤー近くの小さなエリアに適用されます。
ボール経路の追跡
3 つ目の CNNとなる、モーショントラッキング用に事前学習済みの ResNet アーキテクチャは、パット後のボールを追跡するために使用されました。 モーショントラッキングは徹底的に研究された問題だったこともあり、このネットワークを追加のファインチューニングなしでパイプラインに統合してもうまく機能しました。
パイプライン出力
これら一連の CNN は、人物の周りにバウンディングボックスを置き、グリーン上の人物を分類し、初期のボール位置を検出し、ボールが動き始めたらボールを追跡します。以下の図は、パイプラインのラベル付きビデオ出力を示しています。 ボールが動くにつれて、そのピクセル位置が追跡され記録されます。 グリーン上の人物が追跡されバウンディングボックスで囲まれていることに注目してください。下のパット中プレーヤーは「Player Putting」と正しくラベル付けされ、動くボールは小さな青いバウンディングボックスで追跡されています。
パフォーマンス
パイプラインのコンポーネントのパフォーマンスを評価するには、ラベル付けされたデータが必要です。ボールの正確な緯度経度は提供されていましたが、ボールの最終的なピクセル位置やプレイヤーのパッティング位置など教師データ (Ground Truth) となる中間点についてのデータはありませんでした。私たちが実施したラベリングにより、これらのパイプラインの中間出力の教師データを開発し、パフォーマンスを測定できるようになりました。
プレイヤーの分類とボール検出の精度
パッティングをしているプレイヤーとボールの初期位置の検出のために、データセットをラベル付けし、前述のように YOLO v7 CNN モデルをファインチューニングしました。 モデルは次の図に示すように、前の人物検出モジュールの出力を以下の 4 つのクラスに分類しました:
- player-putting : パッティングしているプレイヤー
- player-not-putting : パッティングしていないプレイヤー
- other-person : その他の人物
- golf-ball : ゴルフボール
このモジュールのパフォーマンスは、混同行列で評価されています。対角線上の値は、予測されたクラスが教師データの実際のクラスと一致した頻度を示しています。このモデルは、各人物で 89% 以上の再現率を達成しており、ゴルフボールでは 79% の再現率となっています(これは、モデルがゴルフボールの例ではなく人物の例で事前学習されているため、トレーニングセットにより多くのラベル付きゴルフボールが含まれていれば改善できると予想されます)。
次のステップは、ボールトラッカーを起動することです。 ボール検出の出力結果は、ボールが検出されているかどうかの確信度を表す数値であるため、そのしきい値を設定し、それが結果にどのように影響するかを観察することができます。以下の図に要約を記載しています。しきい値が高いほど誤検知は少なくなりますが、確信度の低いボールの例も見逃してしまうため、この方法にはトレードオフがあります。20% および 50% の確信度のしきい値を試したところ、ボール検出率はそれぞれ 78% および 61% でした。この指標では、20% のしきい値が優れています。 トレードオフは、20% の信頼度しきい値では、検出全体の 80% が実際にボールを示していました (20% が誤検知) が、50% の信頼度しきい値では 90% がボールを捉えていました (10% が誤検知)。誤検知を少なくするには、50% のしきい値の方が優れています。 これらの指標は、より大規模なトレーニングセットに対してより多くのラベル付きデータを用いることで改善できるはずです。
検出パイプラインのスループットは 1 秒あたり 10 フレーム程度なので、現時点では 50 フレーム/秒の入力に対して連続かつ高速に実行するのには単一インスタンスでは十分ではありません。ボールが打たれてから 7 秒以内に出力を得るには、レイテンシの最適化がさらに必要で、パイプラインの複数バージョンを並列に実行し、量子化による CNN モデルの圧縮などが考えられます。
ボール軌道追跡の精度
事前学習済みの MMTracking の CNN モデルはうまく機能しますが、興味深い失敗例があります。次の図では、トラッカーは最初ボールを捉えるものの、ボールとパターヘッドの両方を含むようにバウンディングボックスを拡大したのち、パターヘッドの方だけを追跡し、ボールを捉えきれないケースを示しています。この場合、パターヘッドが白く見える(おそらく鏡面反射のため)ので、混同してしまうのは理解できます。この問題については追跡用のラベル付きデータと追跡 CNN のファインチューニングにより今後改善する見込みがあります。
結論
本投稿では、カメラの視野内のプレイヤーを検出し、パッティングしているプレイヤーを特定し、カップに向かっていくボールを追跡するモジュール式パイプラインの開発について説明しました。
PGA ツアーと AWS とのコラボレーションの詳細については、 PGA TOUR tees up with AWS to reimagine the fan experience (PGA ツアーが AWS と組んでファン体験を刷新) を参照してください。
著者
翻訳はソリューションアーキテクト河角修が担当しました。原文はこちらです。