TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

Precise Event Spotting: E2E-Spot, T-DEED, AdaSpot — How to Train Models to Hit "Which Frame" and mAP@δ

Status: Draft (2026-10-13), partially measured. Paper numbers were verified with original sources along with conditions (the conference for AdaSpot was confirmed via official repository notations). Hands-on tests use numpy examples on a notebook CPU (code/10_map_delta.py). Event measurements for TT Score are values recorded as "Adopted" in TT Score Model Anatomy Part 5 and the 2026-10-13 research log (ongoing research, outside the repository). The PES model from this part has never been run on table tennis videos (unmeasured). Added on 2026-10-15: Speeds of the public weights for AdaSpot (Tennis small) and E2E-Spot (Tennis, RegNet-Y 200MF) were re-measured on an 8GB GPU and added to Section 6. Table tennis accuracy remains unmeasured as it requires retraining to be meaningful. Series "Reading Vision Models 2" Part 10. Previous part: Small and Fast Ball Tracking. Video model basics are in Part 6.

Table of Contents

1. Intuition: Not "What," But "When"

Video models in Part 6 assigned a single label to a clip, such as "playing table tennis for these 2 seconds." However, scoring requires a different question: Exactly which frame did the ball touch the receiver's table?

The task of finding the "exact frame of an event happening at a single moment" is called Precise Event Spotting (PES) . Unlike action spotting, which tolerates 1–5 second errors like "goals" or "corner kicks" in soccer, PES requires precision within 1–2 frames . Representative tasks include bounces and strokes in tennis, jump landings in figure skating, and water entry in diving.

Two things make this difficult.

프레임마다 분류 → 봉우리 고르기 → δ 로 채점 클립 → 프레임별 특징(2D 망 + 시간 밀기) → 양방향 GRU → 프레임마다 (K+1)종 분류(+1 = 아무 일 없음) 정답 바운드 타구 실선 = 바운드 확률 · 점선 = 타구 확률 봉우리 하나 = 예측 하나(가까운 중복은 NMS 로 지운다) 채점 mAP@δ 예측을 확신 순으로 세우고, 같은 종류 정답과 |프레임 차| ≤ δ 이면 맞음(정답 하나에 예측 하나) δ=1: 정답 ±1프레임(60fps 면 ±17ms) 정밀도-재현율 곡선 넓이 = AP, 종류별 평균 = mAP
Figure: Classifying per frame, selecting peaks, and scoring with error tolerance δ

2. How to Train

E2E-Spot (ECCV 2022): End-to-End Per-Frame Classification

The architecture of E2E-Spot is intentionally simple.

  1. It inserts the Channel Shift Module (GSM) from Part 6 into a lightweight 2D image network (RegNet-Y 200MF, initialized with ImageNet) to extract features per frame while mixing information from neighboring frames.
  2. Stacked on top is a single Bidirectional GRU layer to capture the context of the entire clip.
  3. It performs a (K+1)-class classificationper frame, where K is the event types (e.g., near-side bounce, far-side stroke, etc.) and +1 is "no event." The loss is softmax cross-entropy.

The core of the training method is, as the name suggests, end-to-end . Instead of training only the head on pre-extracted fixed features, it feeds 100-frame clips (224×224) whole to train the image network concurrently. Imbalance is handled by applying a 5x weight to the event class loss. Augmentations like cropping, color jitter, and mixup are used, and during testing, clips are evaluated with 50% overlap and averaged (paper).

It outperformed methods that train only heads on fixed features by 4–11 mAP at δ=1 (paper). This suggests that pretrained features are tailored for "what" and fail to capture minute differences in a single frame.

T-DEED (CVPRW 2024): Explicitly Predicting "How Many Frames Away"

When relying solely on per-frame classification, frames immediately adjacent to an event also look "almost like an event," causing probabilities to spread out. T-DEED introduces two branches:

During testing, classification finds approximate locations, and displacement refines the exact frame. The authors reported that this displacement branch is superior to label dilation, which simply broadens surrounding frames to "positive" (paper). The network uses an encoder-decoder structure that reduces and then restores temporal resolution, mixing contexts of various temporal scales.

AdaSpot (CVPR 2026): Resolution Where It Matters

In tennis and table tennis, the subject of interest is a small ball. On a screen reduced to 224px, the ball practically vanishes. However, viewing every frame at high resolution is computationally expensive. AdaSpot employs two branches:

  1. Low-Resolution Branch: Views the entire screen at a low resolution.
  2. Region of Interest Selection: Generates a "salient region" map using channel averages of low-resolution features, applies spatial-temporal smoothing, selects the smallest bounding box containing sufficient importance, and crops it to 112×112 from the original. This selection is not learned; no separate region of interest labels are required.
  3. High-Resolution Branch: Processes only the cropped small region at its original resolution.

Loss is weighted cross-entropy (event weight of 5), with auxiliary GRU heads attached to each of the two branches adding losses (1/3 each). The paper notes that training becomes unstable without these auxiliary losses.

3. Evaluation: mAP@δ

PES scoring works as follows:

  1. Predictions (frame, class, confidence) are sorted in descending order of confidence.
  2. If the frame difference from a ground-truth of the same class is within δ, it is a match. Each ground truth is paired with only one prediction.
  3. The area under the precision-recall curve is AP, and the per-class average is mAP.

δ=1 means "the ground truth frame or its immediate neighbor." At 60fps this is ±17ms, and at 25fps it is ±40ms, meaning the actual time tolerance varies by frame rate even for the same δ.

Trying It Out

code/10_map_delta.py implements this scoring and evaluates three "models" with differing temporal errors against 400 events (5% misses, 5% false positives in wrong locations) (code/10_map_delta.out.txt). Because misses and false positives were sampled randomly per row, compare within the same row .

Temporal Error (Std Dev) δ=0 δ=1 δ=2 δ=4
0.3 frames 0.759 0.914 0.914 0.914
0.7 frames 0.317 0.905 0.944 0.948
2.0 frames 0.039 0.339 0.667 0.928

The same model (2.0-frame error) scores anywhere from 0.04 to 0.93 depending on δ. mAP numbers cannot be interpreted without δ. Furthermore, δ=0 (exact frame) drops to the 0.3 range even with a temporal error of just 0.7 frames. This is why papers have started reporting δ=0 separately (see the AdaSpot table below).

Redundant predictions were also tested. Two less-confident predictions were added within ±1–2 frames for each event.

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

Redundancies are counted as "predictions without ground truth," degrading precision. NMS, which removes redundancies within ±2 frames, restored δ=2 from 0.739 to 0.875. Conversely, δ=0 dropped. This happens because the "most confident" prediction left by NMS is not always the exact frame. Post-processing benefits also vary depending on δ.

4. Paper Metrics

Model Data δ=0 δ=1 δ=2 Conditions (Paper)
E2E-Spot Tennis — 96.1 97.7 200MF. Tennis 3,345 clips, 33,791 events, 6 classes (near/far × serve, stroke, bounce)
E2E-Spot Figure Skating (FS-Comp) · Diving · Gymnastics — 81.0 · 68.4 · 47.9 93.5 · 85.3 · 65.2 Same model
T-DEED Figure Skating (FS-Comp) · Diving — 85.15 · 71.48 91.70 · 87.62 200MF. 800MF Diving 73.23 · 88.88
AdaSpot Tennis 74.02 97.36 97.79 RegNetY-400MF, 10.63M parameters, 56.78 GFLOPs, average of 3 seeds
AdaSpot F3Set (Tennis Fine-grained Events) 55.38 69.37 69.94 Same
E2E-Spot + MFS Table Tennis (TTA) 36.43 69.50 78.12 39 handheld matches, 30fps 720p, 4,878 events across 8 classes

A few points of caution.

5. Limitations

6. Connection to Our Project

TT note. When you hear someone say, "97 points in finding bounds!", first ask, "What is δ?" The exact same model might score 4 points at δ=0 and 93 points at δ=4. I graded it myself.

References

Sign in to like

Comments

No comments yet.

Sign in to leave a comment