TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

The Learning Principles of Small and Fast Ball Tracking: What and How TrackNet V1–V5, WASB, TOTNet, and BlurBall Taught

Status: Draft (2026-10-13). Paper figures were verified with the original texts along with their conditions, while TrackNetV2 and V3 were verified through abstracts, official repositories, and descriptions in follow-up papers since the main texts could not be accessed (indicated as such). The hands-on part is a numpy example on a laptop CPU (code/09_ball_labels.py). Ball detection accuracy and speed measured on our videos are in TT Score Model Anatomy Part 2. This part does not repeat those measurements and covers only 「learning principles and lineage」. Added on 2026-10-15: TOTNet (public table tennis weights) and TrackNetV3 (RacketVision weights), which were previously left unmeasured, were re-tested under the same conditions, and the results are summarized in Section 8 (detailed tables in Part 2). The 「unconfirmed」 status of TrackNetV2 and V3 has also been revisited and corrected. Part 9 of the series 「Reading Vision Models 2」. From here on, it is about 「sports」.

Table of Contents

1. What Makes It Difficult: Three Imbalances

Since TT Score Part 2 describes 「why it is difficult」 in detail, we will only cover the main points. A ping-pong ball is about 3 pixels in diameter in a frame resized to 512×288, blurs to a length several times its diameter during the exposure time, and is frequently hidden by hands and rackets. From a learning perspective, this translates to three imbalances.

  1. Pixel Imbalance: Almost every cell in the heatmap is 「not a ball」.
  2. Conditional Imbalance: Most training data features clearly visible balls, while occluded, blurred, or stationary balls are rare. Yet, errors occur in those rare cases.
  3. Temporal Imbalance: The ball position changes in every frame, but looking at just a single frame makes it impossible to distinguish between the ball and a fluorescent light.

The lineage below can be read as a history of addressing these three issues one by one.

작고 빠른 공 추적의 계보 — 무엇을 바꿨나 2019 TrackNet 히트맵 출력, 3프레임 → 1장, 256단계 분류 2020 TTNet 탁구 120fps, 공은 x·y 1D, 부드러운 이벤트 라벨 2020 TrackNetV2 3장 넣고 3장 받기, 초점 손실 꼴 가중 BCE 2023 WASB 작은 HRNet, 어려운 표본만 부드러운 라벨 2023 TrackNetV3 배경(중앙값) 프레임 입력, 빈 궤적 메우기 2024 TrackNetV4 프레임 차분 주의 지도(학습 파라미터 2개) 2025 TOTNet 5프레임 3D 합성곱, 가림 증강·가시성 가중 2025 BlurBall 번짐 가운데에 라벨, 정답을 번짐 선분으로 2025 TrackNetV5 차분 +/− 방향 분리, 초안 히트맵 잔차 보정 연도는 arXiv·학회 첫 공개 기준. V2 는 본문 미확인
Figure: What each model changed, from TrackNet to TrackNetV5

2. Pixel Imbalance: How the Loss Has Evolved

Direct Calculation: The Temptation of Lazy Prediction

code/09_ball_labels.py We drew a ball disk with a radius of 2.5 cells on a 512×288 heatmap (the label size of WASB and TrackNetV3).

[1] 공 원판(반지름 2.5) 칸 수 20 / 전체 147,456 = 0.0136%

Out of 10,000 cells, 1.4 cells represent the ball. In such a problem, the very first thing a model learns is to answer 「there is no ball anywhere」. That alone gets 99.99% of the cells right. We compared the loss of a lazy prediction answering 「all 0.01」 with a prediction coloring the ball location with 0.6.

                 게으른 예측   공을 맞힌 예측   차이(학습 신호)   차이 / 게으른 손실
    BCE           0.010674      0.010118       0.000555         5.2%
    WBCE          0.000613      0.000012       0.000601         98.0%
    게으른 예측의 손실 가운데 「공 아닌 칸」 몫: BCE 94.1%, WBCE 0.2%

In standard Binary Cross-Entropy (BCE), 94% of the lazy prediction loss comes from accumulated small losses of 「non-ball cells」 that were already predicted correctly. Even when the ball is detected correctly, the loss decreases by only 5%. The learning signal gets buried in background noise.

TrackNet (2019): 256-Level Classification

The original TrackNet was trained via 256-class classification, choosing one of 0–255 brightness levels for each cell in the heatmap. The ground truth is a map scaling up a 2D Gaussian (σ² = 10) drawn at the ball center to 0–255 (paper). It takes 3 frames as input and outputs 1 heatmap for the last frame.

TrackNetV2 (2020) and V3 (2023): Focal Loss-Style Weighted BCE

The loss changes starting from V2. The formula confirmed in subsequent papers and the V3 official code is as follows (the V2 paper text could not be accessed).

WBCE = −[ (1 − p)² · y · log p  +  p² · (1 − y) · log(1 − p) ]

For cells already predicted correctly (where p is close to 0 for non-ball cells), p² is multiplied, making the loss nearly 0. Reducing the voice of easy cells is the core concept, which shares the same form as the detection-field focal loss (γ=2). In the calculation above, WBCE reduced the share of 「non-ball cells」 from 94% to 0.2%, and reduced the loss by 98% when the ball was correctly detected. The same difference (0.0006) now drives the entire loss.

V2 also changed to take 3 frames and output 3 frames at once(3-in-3-out), significantly increasing throughput (abstract: 2.6 → 31.8 FPS). V3 additionally inputs a background (the median of the frames) pre-computed for each match to make it easier to find 「what differs from the background」, and drew the ground truth as a binary disk with a radius of 2.5 (official code). Segments where the ball is missed are filled using a small network (InpaintNet) trained separately to interpolate after intentionally masking trajectory coordinates.

WASB (2023): Soft Labels Only for Hard Samples

WASB uses a small HRNet (a network preserving ball resolution all the way) with a quality focal loss. It initially trains with binary disk ground truths, and starting from epoch 20, selects only the training samples with poorly matched positions and changes their ground truths to real-valued Gaussians (minimum edge value 0.7) to continue training (HLSM, paper). In effect, well-predicted samples are taught with sharp ground truths, while difficult samples are taught with generous ground truths meaning 「roughly around here」. It was trained for 30 epochs from scratch without pre-training.

During inference, the heatmap is thresholded at 0.5 to find blobs, and the center weighted by heatmap values is used as the position. A simple online tracking method that discards candidates too far from positions predicted in previous frames was also attached (paper). Code for this post-processing is available in TT Score Part 2.

3. Temporal Imbalance: How Frames Are Presented

Model Input How Time Is Utilized
TrackNet 3 frames → 1 map Stacked as channels and mixed in the first layer (「early fusion」 in Part 6)
TrackNetV2 3 frames → 3 maps Same as above. Output is also per frame
TrackNetV3 Frames + Background Explicitly informs about 「stationary objects」. We were concerned that even nearly stationary balls might be erased as background, but measurements showed that it actually found nearly stationary balls best (Section 8)
TrackNetV4 Frames + Motion Map Applies a normalization with 2 learnable parameters to the absolute values of black-and-white frame differences and multiplies it as an attention map
TOTNet 5 frames 2D convolution per frame followed by 3D convolutionto mix time
TrackNetV5 3 frames + Direction Map Splits differences into + and − directions (which way it moved) as input, and a small transformer refines the draft heatmap with residuals

The motion maps of V4 and V5 are very low-cost approximations of the optical flow from Part 5. While optical flow calculates 「where and how much」, differences only look at 「where it changed」. This lineage argues that is quite sufficient for small balls. V5 applied a 10% dropout to the draft heatmap during training so that the refinement step does not simply copy the draft (paper).

4. Conditional Imbalance 1: Occlusion (TOTNet)

TOTNet (2025) directly targets occluded balls. Three things were changed in training (paper, some values from official repository).

5. Conditional Imbalance 2: Motion Blur (BlurBall)

The core idea of BlurBall (2025, CVPRW 2026) lies in the labels.

The latter part of the example uses a thought experiment to show why the 「center」 is good as a label. Given a ball speed of 20 m/s and an exposure time of 1/120 second (blur of about 17 cm), if a person is asked to look at a single frame and point to the 「front edge of the blur」, it becomes confusing which side is the front.

한 장만 보고 「끝점」 을 찍으면 앞뒤를 헷갈려 오차 표준편차 8.3cm, 「가운데」 는 방향과 무관해 0cm

While the assumption of being equally confused about front and back is extreme, the fact that the 「center」 remains the same position regardless of direction holds true regardless of the assumption.

6. Paper Figures

Since datasets, sports disciplines, and evaluation distances all differ, you should not compare across tables. Compare only within the same table.

Model Metric (Paper) Conditions
TrackNet 1-frame F1 92.5 → 3-frame 98.2, 10-fold cross-validation F1 84.3 without mixing matches 20,844 frames from a single tennis match randomly split 7:3, error within 5px
TrackNetV2 New match test Acc 85.2 / P 97.2 / R 85.4, 31.84 FPS (3-in-3-out version) 18 badminton matches, 55,563 frames (abstract and conference record ICPAI 2020. Main text could not be accessed due to paywall, measurement GPU unconfirmed. V3 paper cites original V2 accuracy as 87.72%)
TrackNetV3 Acc 97.51, F1 98.56, 25.11 FPS Shuttlecock test 3 matches, 29 rallies, 288×512, 4px (official repository and paper). FPS is for an 8-frame ensemble; removing the ensemble yields 75+ FPS. GPU is not specified anywhere in repository or paper. V2 in the same table has Acc 94.98
TrackNetV4 Shuttlecock V3 Acc 95.7 → +Motion Attention Map 96.4 Based on 4px. +0.6 even in tennis match-based splitting
WASB F1 Tennis 95.6 · Badminton 93.1 · Soccer 88.2 · Volleyball 88.0 · Basketball 82.6 4px, 1.5M parameters
TOTNet Table tennis (TTA) full occlusion RMSE 37.30 (WASB) → 12.31, with optical flow added 7.19. OpenTTGames Acc 0.84 (WASB) → 0.97 5px (10px for full occlusion). 8.68M parameters, 28.08 FPS (12.19 with optical flow), hardware not specified
BlurBall Table tennis F1 96.52 (WASB 96.00), 79 FPS, blur error length 1.5px · angle 6.5° 4px, 1.49M parameters, estimated desktop-grade GPU
TrackNetV5 F1 0.9859 (V2 0.9677) TrackNetV2 dataset 4px. 14.77M parameters, approx. 114 FPS on a datacenter inference GPU. Sport notation differs between the body and conclusion

TrackNet's random frame splitting 98.2 vs. match-separated cross-validation 84.3 is a warning for this entire field. Scores are inflated when neighboring frames from the same match are included in both training and testing. This is why the V4 paper pointed this out and created a new splitting protocol.

7. Limitations

8. Connection to Our Project

A Word on TT. Because the ball takes up 0.01% of the screen, naive training teaches the model to simply say "there is no ball." A loss function that scales down easy cells fixes this habit. From then on, it is a battle of how more frequently and heavily to show rare cases like occlusions and blurs.

References

Sign in to like

Comments

No comments yet.

Sign in to leave a comment