論文紹介:SoccerNet Game State Reconstruction

去年のCVSports(CVPRで開催されているWorkshopの一つ)の論文で、SoccerNet Game State ReconstructionというChallenge(コンペ)に関するベンチマーク論文です。元々サッカー観戦が趣味で、サッカー映像の解析も興味があって読んだので、紹介します。

概要

前述の通り、昨年から開催されたSoccerNet GSR Challengeのベンチマーク論文です。

サッカーの解析のための映像からのトラッキングデータ抽出に関して包括的にまとめてくれていて、今後のこの分野の発展にも寄与しそうなすごく有益な論文です。サッカーに限らず大抵のスポーツ解析においても同じフレームワークが使えると思います。

論文解説

Game State Reconstruction Task(GSR)について

サッカーの解析を行うにあたって、まず映像からデータを抽出する必要があります。GSRは、試合映像から2Dピッチ上でのゲームの状態を再構築するタスクで、以下の工程があります。

  • フィールド検出(一部の映像からサッカーフィールド座標を再構築)
  • 試合中の選手やボールの位置情報トラッキングデータ
  • 選手の特定(所属チーム、背番号)

CV的に言うと、MOT & Localization & Identification のタスクです。これらを得ることで、以下画像の下にあるような2Dビューや、鳥瞰図として表示できます。解析にも活用しやすくなります。

Game State Reconstruction Taskは、具体的には以下のような複数のサブタスクを解決する必要がある難易度の高いタスクです。

  1. Pitch Localization(フィールド検出)、カメラキャリブレーション
  2. 人物検出、Re-Identification、トラッキング
  3. 背番号認識
  4. 所属チーム判定

評価指標:GS-HOTA

Game State Reconstruction(GSR)を評価するための指標(GS-HOTA)も提案されているので、一応紹介しておきます。

GSRタスクは、multi-object tracking(MOT)と類似したタスクですが、それらと異なる点に対応するために、MOTタスクで一般的に使われている評価指標HOTAを拡張しています。

標準的なHOTAでは、IoUベースの類似度スコアを使用してますが、GS-HOTAでは、追加のターゲット属性(背番号、role、所属チーム)を考慮し、また画像空間のBBox座標の代わりに、ピッチ座標にキャリブレーション済みの2D座標点からスコアを算出するように拡張されています。

式は以下のとおり。Pは予測、Gは教師データ(ground truth)です。

二つの類似度指標に分解でき、LocSimは予測と正解のピッチ座標上でのユークリッド距離を計算した上で、距離許容値と解釈されるパラメータτ を備えたガウスカーネルに通し、0~1の範囲に収めます。τ は5に設定されています(誤差5m以内の距離の場合にスコアが上がる)。 IdSimは役割、チーム、背番号認識を含む全ての属性の予測が正解していれば1、そうでなければ0となります。LocSimIdSimを掛けるので、つまり位置のトラッキングに加え、属性予測が完璧にできた人物のみ、スコアに加算されていきます

全てのサブタスクが精度良く解けないとここのスコアに反映されないので結構厳しい指標ではありますが、タスクのエンドツーエンドの評価指標としては妥当かなと思います。

GSRタスク ベースライン

GSR-Baselineのアーキテクチャは以下のとおり。

アスリート検出

  • アスリート(人物)の検出には、事前学習済みのYOLOv8を使用
    • サッカーの映像でも十分な性能だったので特にチューニングなし
    • 人物クラスのみ使用

アスリート識別

  • PRTreID
    • 人物のReID、role分類、チーム所属分類がマルチタスク学習されたモデル
      • part-based ReIDのSoTAであるBPBreIDをSoccerNetデータセットでファインチューニング
      • role:プレイヤー、キーパー、審判、その他の4クラス分類
      • 所属チーム:プレイヤーの役割が与えられたトラクレットに対して
    • 所属チームと役割を考慮したReID embeddingsを生成
  • MMOCR
    • 背番号を認識するために使用
  • Team Affiliation
    • 「プレイヤー」のroleが割り当てられたトレクレットに対して、以下のように推定
    • 1: トラクレット内の全ての人物のPRTReID embeddingを平均化して、プレイヤーごとにtracklet levelの表現を作成
    • 2: 1をk-meansによって2つのチームを表す2つのクラスタに分割する
    • 3: 各チームのピッチ座標平均から、left or rightを判定

背番号とroleは、フレームごとに推論されたものをトラクレット内で一貫性を持たせるために、Tracklet Consistencyモジュールで多数決決定している。

Tracking

  • multi-object trackerとして、StrongSORTを使用
    • PRTreIDのembeddingをここでも活用

Pitch Localization & カメラキャリブレーション

  • カメラキャリブレーションには、TVCalibを使用
    • 1: ピッチの白線検出
    • 2: 検出した白線のキーポイント(角や交点)を使って、RANSAC的にホモグラフィ変換(画像座標 => ピッチ座標)

ちなみにここは最新のベンチマークではNBJWという手法に変わっています。

実験

提案された評価指標であるGS-HOTAを使用して、GSRタスクの評価した結果も載っています。 検証には、SoccerNet-GSRのテストデータセットを用いています。

結果とGS-HOTAの分析

結果は以下のとおりです。全ての属性情報を評価に使うと、GS-HOTAのスコアは20(MAXは100)しか出ておらず、当時の最先端モデルを組み合わせてもまだ改善の余地が大きいことがわかります。

また、結果の表からピッチ座標変換の部分(Localization, キャリブレーション)で改善の余地が大きいこともわかります(その属性を加えた時に精度が大きく下がるので)。属性については、比較的Roleの推定は悪くなさそうですが、背番号の推定部分に改善の余地があることもわかります。

次に、LocSimの計算で出てきた距離許容度パラメータを変更した時のスコアもグラフにされています。5mより厳しくすると急激にスコアが落ちて難易度が上がっていることがわかります。

5mの誤差でも厳しいですが、ゴールエリアとか密集地だとより細かい分析が必要な気もしており、実用レベルを考えるともう少し精度良くないといけないのかなという印象です。

Ablation Study of GSR-Baseline Modules

GSR-Baselineにおける各モジュールのスコアやパフォーマンスへの影響を測る実験も行っています。

実験では、対象のModuleのみ推論させ、他のモジュールはGroundTruthを使っています。その場合のGH-HOTAスコア、およびパフォーマンスは以下のとおりです。

実験3、4、5はパフォーマンスに大きな影響があることがわかります(推論テストにはGPU使っているようですが、結構遅い...)。 実験6は、一番入り口の検出の部分であるため、ベースラインのスコアに最も近いこともわかります。

また、実用化の際は、チームの推定部分など、人力で設定してもコストが小さい部分は推論に任せず、手動で代替するのもありかもしません。あとはGPSデータとかが活用できれば色々すっ飛ばせるとは思います。

定性的な結果

下図は、GSR Baselineによって推論された2つのGSRミニマップとそれぞれのGroundTruthを示しています。

上は成功例、下は失敗例。下はピッチ上のキャリブレーションオブジェクト(白線、コーナーなど)の写りが少ないためにキャリブレーションが不十分だったことが主な要因とされています。

ただし、ここは先ほども少し述べたはNBJWという、昨年のSoccerNet GSR Challengeで2位を取った手法によって大幅に改善しています。

まとめ

今後の取り組み展望としては、以下が書かれていました。

(1) 特定のモジュールを強化してパフォーマンスを向上させる (2) リアルタイムパイプラインを実装する (3) タスクを1つのステップで処理するためのエンドツーエンドの微分可能な方法を開発する

なお、この論文で紹介されている各モジュールの手法について、もう少し詳細な解説も以下の記事に書いています。

moai510.hatenablog.com

感想

サッカーの解析を行う上でかなり貢献度の高い論文だと思います。実際に解析をする際は、この論文で整理してくれていたような、フレームワークをベースとしつつ、モジュールを改善・アプデしたりしていくと良さそうです。

ちなみにリポジトリ自体も触ってみましたが、環境構築は結構大変でした(ローカルmacで動かそうとして失敗したので、素直にGPULinuxインスタンスを用意して動かした方が良さそうです)。

まだまだ改善が必要な分野で、特にリーグによって撮影環境や撮影品質の差もあるので、海外の試合映像とJリーグの試合映像だと精度に差もあると思います。

アルゴリズムを改良していくのもそうですが、使えるデータ自体をコントロールできた方が改善する分野だとは思うので、そういったデータもオープンになっていってくれたら良いなぁとも思います。

※撮影環境のコントロール(固定フルピッチ映像)、GPSデータの活用、など