TT Lab
ブログ

한국어 English 日本語 中文

はじめる
ブログ

ブログ

精密イベント検出: E2E-Spot、T-DEED、AdaSpot — 「何番目のフレーム」かを当てさせる学習方法とmAP@δ

ステータス: 下書き(2026-10-13)、一部実測値あり。 論文の数値は原典を開き条件とともに確認しました(AdaSpotの学会は公式リポジトリの表記で確認)。自分で実際に試したのはノートPCのCPUによるnumpyのサンプル(code/10_map_delta.py)です。TT Scoreのイベント実測値は『TT Scoreモデル解剖』第5部と2026-10-13の研究ノートに「採用」として記録された値です(進行中の研究、リポジトリ外)。この回のPESモデルを卓球映像で動かしたことはありません(未実測)。 2026-10-15追記: AdaSpot(テニスsmall)とE2E-Spot(テニス、RegNet-Y 200MF)の公開ウェイトの速度を8GBクラスのGPUで測定し、第6節に追加しました。卓球の精度は再学習が必要なため、依然として未実測です。 シリーズ「ビジョンモデルを読む2」第10部。前回の記事: 小さくて速いボール追跡。映像モデルの基礎は 第6部にあります。

目次

1. 直感: 「何」ではなく「いつ」

第6部の映像モデルでは、クリップに1つのラベルを付与しました。「この2秒間は卓球のプレイ」。しかし、スコアを算出するには別の疑問が必要です。 ボールがレシーバー側のテーブルに当たったのは正確に何番目のフレームか。

このように「一瞬の出来事の正確なフレーム」を見つけ出すタスクを 精密イベント検出(Precise Event Spotting, PES) と呼びます。サッカーの「ゴール」や「コーナーキック」のように1〜5秒の誤差を許容するアクション検出(action spotting)とは異なり、PESでは 1〜2フレーム 以内であることが要求されます。テニスのバウンド・打球、フィギュアスケートのジャンプ着氷、ダイビングの入水が代表的なタスクです。

2つの難しさがあります。

프레임마다 분류 → 봉우리 고르기 → δ 로 채점 클립 → 프레임별 특징(2D 망 + 시간 밀기) → 양방향 GRU → 프레임마다 (K+1)종 분류(+1 = 아무 일 없음) 정답 바운드 타구 실선 = 바운드 확률 · 점선 = 타구 확률 봉우리 하나 = 예측 하나(가까운 중복은 NMS 로 지운다) 채점 mAP@δ 예측을 확신 순으로 세우고, 같은 종류 정답과 |프레임 차| ≤ δ 이면 맞음(정답 하나에 예측 하나) δ=1: 정답 ±1프레임(60fps 면 ±17ms) 정밀도-재현율 곡선 넓이 = AP, 종류별 평균 = mAP
図: フレームごとに分類し、ピークを選択し、許容誤差δで採点する

2. 学習方法

E2E-Spot(ECCV 2022): フレームごとの分類を最後まで

E2E-Spotの構造は意図的にシンプルに設計されています。

  1. 軽量な2D画像ネットワーク(RegNet-Y 200MF、ImageNetで初期化)に第6部の Temporal Shift Module(GSM) を組み込み、フレームごとに特徴量を抽出しながら隣接フレームの情報を混合します。
  2. その上に 双方向GRU の層を1つ重ね、クリップ全体のコンテキストを把握します。
  3. フレームごとに (K+1)種類の分類を行います。Kはイベントの種類(例:手前のバウンド、奥の打球など)、+1は「何もなし」を意味します。損失関数にはソフトマックスクロスエントロピーを用います。

学習方式の核心は、その名の通り エンドツーエンド(end-to-end) である点です。事前に抽出された固定の特徴量の上にヘッド部分だけを学習させるのではなく、100フレームのクリップ(224×224)を丸ごと入力して画像ネットワークまで一緒に学習させます。不均衡に対処するため、イベントクラスの損失に5倍の重みを与えています。切り抜き、色味の調整、mixupのデータ拡張を使用し、推論時にはクリップを半分ずつ重ねて処理して平均を取ります(論文)。

固定された特徴量の上でヘッドだけを学習させた方式よりも、δ=1において4〜11 mAP高い性能を記録しました(論文)。事前学習済みの特徴量は「何」かということに特化しており、1フレームの微細な違いを捉えられないためだと解釈できます。

T-DEED(CVPRW 2024): 「何フレーム離れているか」を別途予測する

フレームごとに分類を行うだけでは、イベントの直前のフレームも「イベントに近い」ように見えて確率が分散してしまいます。T-DEEDでは2つの分岐を設けています。

推論時は、分類ブランチでおおよその位置を特定し、変位ブランチで正確なフレームを補正します。イベント周辺のフレームを単に「正例」として広げるラベル拡張(label dilation)よりも、この変位ブランチの方が優れていると報告されています(論文)。ネットワークはエンコーダ・デコーダ構造になっており、時間解像度を縮小してから再び拡大することで、複数の時間スケールのコンテキストを混合します。

AdaSpot(CVPR 2026): 必要な場所だけに解像度を割り当てる

テニスや卓球においてイベントの主役は小さなボールです。224pxに縮小された画面では、ボールがほとんど見えなくなってしまいます。かといって、すべてのフレームを高解像度で処理するとコストがかかります。AdaSpotでは2つの分岐を設けています。

  1. 低解像度ブランチ: 画面全体を低い解像度で処理します。
  2. 関心領域の選択: 低解像度特徴量のチャネル平均から「目立つ場所」のマップを作成し、時空間的にスムージングをかけた後、重要度を十分に網羅する最小の矩形を切り出して、元画像から112×112のサイズで切り抜きます。 この切り出し処理は学習されません。 関心領域のラベルは別途必要ありません。
  3. 高解像度ブランチ: 切り抜かれた小さな領域のみを元の解像度で処理します。

損失関数は重み付きクロスエントロピー(イベントの重みは5)であり、それぞれの分岐にも補助的なGRUヘッドを取り付けて損失を加算します(それぞれ1/3)。この補助損失がないと学習が不安定になると論文に記載されています。

3. 評価: mAP@δ

PES の採点方式は以下のとおりです。

  1. 予測(フレーム、種類、確信度)を確信度が高い順に並べます。
  2. 同じ種類の正解とフレームの差が δ 以下であれば正解となります。正解1つにつき予測1つのみをペアにします。
  3. 適合率-再現率曲線の下の面積が AP、種類ごとの平均が mAP です。

δ=1 は「正解フレームまたはその隣のフレーム」です。60fps なら ±17ms、25fps なら ±40ms であるため、 同じ δ でもフレームレートによって実際の時間の許容範囲が異なります。

実際に試してみる

code/10_map_delta.py にこの採点を実装し、400件のイベント(見逃し 5%、誤検出のノイズ 5%)に対して時間誤差が異なる3つの「モデル」を作成して採点しました(code/10_map_delta.out.txt)。行ごとに見逃し・ノイズを個別にランダム抽出ししているため、 同じ行内でのみ 比較してください。

時間誤差(標準偏差) δ=0 δ=1 δ=2 δ=4
0.3フレーム 0.759 0.914 0.914 0.914
0.7フレーム 0.317 0.905 0.944 0.948
2.0フレーム 0.039 0.339 0.667 0.928

同じモデル(2.0フレーム)でも、δ によって 0.04 から 0.93 までスコアが変わります。 mAP の数値は δ なしでは読み取れません。 また、δ=0(正確にそのフレーム)は、時間誤差がわずか 0.7フレームであっても 0.3台まで低下します。論文が δ=0 を個別に報告し始めた理由はここにあります(下記の AdaSpot の表を参照)。

重複予測についても実験しました。イベントごとに ±1〜2フレームの範囲で確信度の低い予測を2つずつ追加しました。

중복 그대로   δ=0: 0.294  δ=1: 0.654  δ=2: 0.739
NMS(±2) 뒤     δ=0: 0.208  δ=1: 0.690  δ=2: 0.875

重複は「正解のない予測」としてカウントされ、適合率を下げます。±2フレーム以内の重複を削除する NMS により、δ=2 のスコアは 0.739 から 0.875 に回復しました。逆に δ=0 はむしろ低下しました。NMS が残した「最も確信度の高い」予測が必ずしも正確にそのフレームではない場合があるためです。後処理の効果も δ によって明暗が分かれます。

4. 論文の数値

モデル データ δ=0 δ=1 δ=2 条件(論文)
E2E-Spot テニス — 96.1 97.7 200MF。テニス 3,345クリップ・イベント 33,791件、6種(手前/奥 × サーブ・打球・バウンド)
E2E-Spot フィギュア(FS-Comp)・飛び込み・体操 — 81.0 · 68.4 · 47.9 93.5 · 85.3 · 65.2 同一モデル
T-DEED フィギュア(FS-Comp)・飛び込み — 85.15 · 71.48 91.70 · 87.62 200MF。800MF 飛び込み 73.23・88.88
AdaSpot テニス 74.02 97.36 97.79 RegNetY-400MF、1,063万パラメータ、56.78 GFLOPs、3シードの平均
AdaSpot F3Set(テニスの詳細イベント) 55.38 69.37 69.94 同上
E2E-Spot + MFS 卓球(TTA) 36.43 69.50 78.12 スマホ撮影 39試合、30fps 720p、イベント 4,878件 8種

いくつか注意すべき点があります。

5. 制限事項

6. 我々のプロジェクトとの関連性

TTの一言。 「バウンド検出97点!」という言葉を聞いたら、まず「δはいくつですか?」と聞いてみてください。同じモデルでも、δ=0では4点、δ=4では93点を獲得することもあり得ます。私が実際に採点してみました。

参考文献

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます