TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

Model Principles and Papers: The Ball, the Table, and Three Models We Trained Ourselves

Status: Draft (2026-10-26), empirical measurements reflected. Numbers marked as "Paper" are values verified by opening the original papers and official repositories, while other numbers are values measured directly by us using public videos and synthetic diagrams. Accuracy for mobile field footage is unmeasured. Bibliographic references whose original texts could not be fully verified are noted as such in the bibliography. Writing Rule: Empirical data is the baseline, and unmeasured items are marked as "Unmeasured."

Table of Contents

1. Map: Which Model Runs Where

The perception component of automated adjudication is a combination of several models and classical algorithms.

Role What Is Used Type Training
Ball Detection BlurBall Neural Network (1.49M parameters) Original author weights
Table Detection EfficientTAM S → Color-based Segmentation model + post-processing Original author weights
Table Corners Frozen EfficientTAM encoder + small head Neural Network (~640K parameters) Trained by us(2026-10-25)
Table Tracking Pyramidal Lucas–Kanade + RANSAC Classical algorithm None
Screen → Table Plane Homography Geometry None
False Bounce Filtering 1D CNN Neural Network (18K) Trained by us(2026-10-13)
"Needs Verification" Logistic Regression 19-feature linear Trained by us(2026-10-14·16)
Events & Referee Handwritten rules Rules None (Part 3)
Posture RTMPose Neural Network Coaching only, not used for scoring
Sound — — Not included in the engine

This article explains the principles sequentially from top to bottom, presenting the concepts from the research papers alongside our own implementations. Since the lineages of the ball and table models are covered in more detail in Part 2·andPart 3 , we will recap the key points here and follow them withwhat has changed since then We place weight onwhat we have learned.

2. Ball: Draw a map, do not guess coordinates

Why it is difficult

A table tennis ball is 40mm in diameter. On a screen reduced to 512x288, it is only a few pixels wide, and a fast ball blurs into a long streak of muted lines during a single frame exposure. It is frequently occluded by the paddle and body, and a white ball is easily confused with white clothing, lighting, and wall patterns.

Lineage: TrackNet → WASB → BlurBall

TrackNet(2019)[3] introduced two main ideas. First, instead of directly predicting the ball's (x, y) coordinates as two numbers, it has the network draw a heatmapwith a raised peak where the ball is likely to be. Since convolutional neural networks apply the same judgment across spatial positions, outputting a spatial map suits their architecture, and smooth ground-truth targets stabilize training. Second, it feeds three consecutive frames together . A single frame cannot tell whether a white dot is a ball or dust, but three frames reveal what is moving as the ball.

WASB(2023)[2] combined three elements targeting a standard baseline applicable to multiple sports: a lightweight HRNet-family backbone [16] that preserves resolution to the end, real-valued heatmaps and quality focal loss that shrink with distance, and inference that discards distant candidates by predicting the next position using an accelerated motion model.

BlurBall(2025–2026)[1] is our ball model. The core difference lies in where the labels are placed. Existing datasets marked the leading edgeof the blurred ball as its position, which the paper points out is asymmetric and discards velocity information contained in the blur. Therefore, the paper places the ball position at the center of the blurand labels the blur direction (Θ) and half-length (l) together. The ground-truth heatmap also covers the entire stripe connecting both ends of the blur rather than just a single point. Its structure adds channel attention (Squeeze-and-Excitation) to WASB's HRNet backbone.

프레임 3장 512×288 HRNet + SE 여러 프레임 입력 프레임마다 열지도(번진 줄무늬) θ (x, y) l (반길이) 문턱(논문 0.7)으로 자른 덩어리에 PCA 주축 방향 = 번짐 각도 θ 주축 투영 범위의 절반 = 반길이 l 가운데 = 공 위치(x, y) 신뢰도 = 덩어리 값의 평균
Figure: Ball model: consecutive frames → heatmap → blob → position and blur

The output heatmap is thresholded (0.7 in the paper) to form blobs, and performing Principal Component Analysis (PCA) on those pixels yields the principal axis angle as the blur angle and half the projection range on the principal axis as the blur length. The confidence score is the averageof the blob values, because using the sum would unfairly favor longer blurs (paper). Since the blur vector provides a velocity cue during exposure time, the paper reports that incorporating it when fitting a quadratic polynomial to the first 3 frames reduced the trajectory prediction mean error from 84.4px to 53.0px (paper). We do not yet use the blur direction for judgment because converting blur into velocity requires knowing the camera exposure time, and mobile phones can change exposure per frame.

Our usage

Actual measurements

Measurement Condition Value
Precision / Recall Public test 7 games, 60fps, 3,483 labeled frames, 512x288 radius 5px, server GPU (24GB class) (2026-10-11) 0.9817 / 0.9785, position RMSE 0.594px
Speed Same GPU, fp32, single window 3.42ms/frame
Footage from other labs 3 laboratory games, side view / oblique view 0.929 / 0.860, 0.894 / 0.820
International broadcast Ground truth is not human labels but automated tracking results (hence "agreement rate") 0.815 / 0.722

One reason why public test games show near-perfect results must be read with caution. Since the BlurBall training video list is not public, it is unknown whether it overlaps with the public games we use for testing. Therefore, we do not interpret these numbers as generalization performance and instead include numbers from other labs and broadcast footage.

Fine-tuning attempt: Why it was turned off

To make the model more robust to complex backgrounds and dark conditions, we created a self-distilled fine-tuned version (clutter-v1) using the production weights as a teacher (log E31). Mixing 20% clean footage, 40% complex background, darkness, low resolution, blur, JPEG artifacts, camera shake, and 30fps, it was trained for 69 minutes and 8,934 steps on a disposable laptop GPU (8GB class) pod. Under synthetic degradation, ball recall rose from 0.752 to 0.949 for severe degradation and from 0.685 to 0.924 for darkness. However, it failed to meet a single activation condition for the actual pipeline test ("missed incorrect answers should not exceed production", 10 vs 8), so we turned it off.

3. Table: Find, Verify, Track

To figure out "where the ball landed," the four corners of the table are needed. Table processing involves three steps: find oncebefore the match starts, verifywhether the found rectangle is actually a table, and then track

경기 시작 전 한 번: 찾기 SAM 3 지금은 건너뜀 EfficientTAM S 점 프롬프트 분할 색 기반 GPU 없을 때 실패하면 오른쪽으로 사각형 다시 보기 검사 일곱 · 걸리면 0.55 아래 꼭짓점 모델 얼린 인코더 + 작은 머리 정책 D 로 합치기 둘 다 확실하면 20px 안일 때만 확실 확실 그대로 따라가기 시작 확실 아님 톡 짚기 → 손으로 네 꼭짓점 매 프레임: 광류로 따라가기(60Hz) 기준 화면의 특징점 → 피라미드 Lucas–Kanade 앞뒤 왕복 1.5px 검사 → RANSAC 호모그래피(3px) 늘 기준 화면에서 바로 옮겨 오차가 쌓이지 않게 컷 감지(64×36) · ORB 기준 화면 4장으로 되찾기
it every frame thereafter.

Figure: Table finding chain, merging with corner model, optical flow tracking

Finding chainlive/tablemodels.pyFinding is a chain of trying multiple models in sequence and falling back to the next if one fails ( sam3 → efficienttam → color ). The real-time operator setting is , but SAM 3 in the first slot is actually not invoked for the reasons below, so it runs as EfficientTAM S → Color-based (verified operational worker status on 2026-10-25, log E44). The recorded footage worker is efficienttam → sam2 → color .

SAM 2[4] is a model that segments video by streaming it frame by frame. On each frame, an image encoder runs once, and current frame features perform cross-attention with the memory bank(features of recent frames and frames where the user provided points and boxes) to remember previously segmented objects while viewing the current frame. There is also an occlusion head that separately predicts whether an object is visible in the current frame. In our use case, prompt-based segmentation—"giving a few points on the table to output the mask of that object"—is key.

EfficientTAM[5] is a lightweight version of SAM 2. The paper attributes SAM 2's heaviness to its hierarchical image encoder and memory module, replacing the encoder with a plain non-hierarchical ViT (Tiny/Small) and reducing the number of tokens to 1/4 by average pooling keys and values to 2x2, exploiting the property that spatial tokens in memory are nearly identical to their neighbors. The paper reports accuracy comparable to SAM 2 (HieraB+) while being about 2x faster on an A100 and having about 2.4x fewer parameters (paper). Sizes are 18M for Ti and 34M for S. Mobile phone speeds are not transcribed here because the numbers in the paper's abstract and main text tables do not match.

SAM 3[6] uses short textto find all objects corresponding to that concept. It is characterized by separating "Is it there?" and "Where?" as a presence token to independently determine "Is that concept in this image?" Since a human does not need to click points, it is the principle best suited for automatic initialization of the first frame. However, we cannot use it yet.

Color-based trackingis a fallback path when a GPU is not available. It finds rectangles using the color of the table top and the white lines. The server side has ttscore/tablefind.py, and the browser side also has a copy of the same logic.

models Without picking, all four corners are within 20px of each other
EfficientTAM S 57%
EfficientTAM Ti 53%
SAM 2.1 tiny 45%
Color-based 9%

Condition: 7 find conditions in public bundle × 103 frames = 721 frames, same post-processing, 2026-10-13(docs/tt/PERFORMANCE.md 2.12). Therefore, the first operational slot is EfficientTAM S.

Re-evaluating found rectangles

Just because the segmentation model found "something" does not guarantee it is a ping-pong table. The found rectangle is re-evaluated through seven checks(ttscore/tablecheck.py, check names color, facing, tall, flat, uneven, spill, noline). These include whether the top color looks like a ping-pong table, whether the rectangle's orientation, height, and flatness look like a ping-pong table, whether the side lengths are even, whether it overflows the table, and whether white lines are visible. If even one check fails, the confidence score is lowered below the "sure" threshold of 0.55, and the screen prompts the user to either "tap please" (tap the table once) or "pick directly" (pick the four corners yourself).

Tracking: Pyramid Lucas–Kanade and RANSAC

Finding takes a heavy 1–2 seconds, so it cannot be done every frame. To ensure the corners are not lost even when the phone shakes or the broadcast camera moves, after finding them, they are tracked with optical flow.(live/tablecv.py).

Dense optical flow like Farnebäck[12] was only used in experiments measuring overall screen movement amounts, and sparse Lucas–Kanade was right for ping-pong table tracking because only a single rectangle moves and it must be executed every frame.

Synthetic experiments show why tracking is so important (2026-10-13, log E12). When ball coordinates were used as-is on the screen, match accuracy in pan/zoom video dropped from 50 to 24–40, but completely recovered when projected back to the plane using the ground-truth homography. An even more interesting finding is that jitter matters more than accuracyin breaking judgments. A homography estimated separately per frame lost 5–10 rallies with just 2px of jitter, whereas temporally continuous (propagated) estimation performed on par with the upper bound even with 5px of error. Bounce judgment looks at the V-shape of screen y, and inter-frame jitter creates fake V-shapes. Therefore, operations smoothly track via optical flow (60Hz) every frame.

From four corners to the table plane: Homography

Points on a plane are mapped in the camera image by a single 3×3 matrix H [13]. Excluding scale, H has 8 degrees of freedom, and since each pair of corresponding points provides two equations, 4 pairs determine it(three of the four must not lie on a straight line). By constructing H with four corners on the screen ↔ four real table corners (2.74m × 1.525m), the ball at the moment of bounce can be mapped to meter-scale table coordinates.ttscore/table.py).

There are two pitfalls.

4. The three models we trained

From here on, these are models we trained ourselves, not author weights. All three are small, and all three occupy roles that "filter or verify what rules or large models have already done."

① Filtering fake bounces: 18K-parameter 1D CNN

Problem. In Part 3, if a single bounce is wrong, the entire sequence goes out of order. Bounces produced by rules mix in fakes, such as hits read as bounces or net-crossing balls shaking.

Model. A small 1D convolutional neural network that looks at a short window of ball trajectories(ttscore/bounceveto.py). The input consists of the judgment frame and 9 features from the preceding 16 frames (ball visibility, detection confidence, net-relative x and y, velocity, whether it is above the table top, inside the net band, or outside the end), and after three convolutional layers, a small MLP outputs the probabilities of a bounce, hit, or net pass. It has 18,179 parameters.

Usage: Filtering only. We use this model to not create new bounces, but merely discard rules-generated bounces whose probabilities within ±2 frames are all below 0.3. This decision came from experiments. Making the model predict bounces by itself collapsed when used without look-ahead (0 future frames) because it failed to see right after a bounce, spreading probabilities forward. Filtering, however, needed 0 look-ahead because the rules already established the positions (log E01). Thus, latency addition is 0, and computation takes about 0.1ms per frame on a laptop CPU.

Training. Learned using ball trajectories and bounce, net, and hit markers, mixing 60fps even frames + 30fps copies + copies with 15% and 30% occluded coordinates. Trained on a laptop CPU (2026-10-13, logs E01 and E05). The reason for mixing 30fps copies was that the initial version actually degraded by 6–11 percentage points on 30fps inputs (out of distribution). The mixed version eliminated losses at 30fps. From this, the rule that all learning-based modules must always mix 30fps copies (log Ruling R2) was established.

Field test(direct real-time pipeline, 7 public test games × 11 degradation conditions, 627 rallies × conditions, 2026-10-13, log E08):

Correct Incorrect without confirmation Needs confirmation
Rules only 496 50 353
Rules + filter 527 34 302
Control: Filtering with detection confidence 0.7 (no learning) 446 66 —

In pairwise comparison, it was +4.9 percentage points (since the same 57 rallies were recounted across 11 conditions, samples are not independent so the interval is optimistic). The control group is important. In clean development games, "discarding low-confidence bounces" scored identically to learned filtering, but under actual degradation conditions, it collapsed completely in reverse. This is because detection confidence drops together even for true bounces when lighting darkens. The benefit of learned filtering comes from looking at trajectory shape, not from "discarding low-confidence bounces."

We also found one limitation. When occlusion near the bounce erased the V-shape, interpolated trajectories yielded low probabilities, causing real bounces to be discarded (occlusion subset 41 → 38 in log E11). Therefore, filtering was paused if there were samples where the ball was not visible near the bounce (log E17).

② Correcting "Needs confirmation": 19-feature logistic regression

As seen in Part 3, "confidence < 0.6" failed to distinguish errors (AUC 0.51). We trained a logistic regression model to output the probability that a judgment is incorrectusing 19 values the engine already knows at the moment of judgment(ttscore/reviewcal.py).

Logistic regression has two advantages: training data (judgments run under various degradation conditions) does not need to be massive, and results can be explained to humans. Linear models allow us to directly read how much each feature "pushed toward error," immediately generating the chip's excuses ("lost the ball," "long rally") from those contributions. Calculation is a single dot product per judgment.

Training material consists of judgments run directly through the real-time pipeline and the winning ground-truth of those rallies. v2 incorporated label correctionsinto the same features. This was because correct engine judgments were being learned as "incorrect" in places where ground-truth labels grouped multiple rallies together (logs R7, R8, E25). The threshold was chosen via 5-fold cross-validation per training game unit, and the v2 threshold is 0.0442. Results are in the table in Part 3, Section 5. Incorrect without confirmation (including ghosts) decreased from 20 to 8, and needs confirmation increased from 450 to 497.

One thing to note. Because the correction is learned from the judgment distribution produced by the ball model, changing the ball model requires changing the correction as well. Leaving v2 unchanged atop fine-tuned ball weights caused incorrect without confirmation to increase from 14 to 28 (log E31). Therefore, a separate v3 was trained as a pair.

③ Table corner model: Frozen encoder and small heatmap head

Problem. On 2026-10-25, we tested where the production find chain fails using 35 new images (26 league broadcast clips, 4 4K club side-views, 2 1934 vintage film clips, and 3 laboratory diagonal-views, all commercially usable open-source footage), resulting in: Zero-tap correct & confident: 0/35 (Log E42). Analyzing the cause, in side- and diagonal-views the net splits the top surface, making the split mask almost always half, and pushed the floor and wall masks—which had higher selection scores—to the top. We tested seven post-processing tweaks (grid prompts, expansion lower-bound, white line threshold, half-merging, half-inspection, etc.), but none satisfied the condition of "improving on the new batch without getting worse anywhere." It was a fundamental limitation of stitching rectangles together in the mask space.

Idea. Bypass masks and output vertices directly . Much like human pose estimation draws heatmaps for each joint [15][16][17][18], we output two heatmaps: one for the four table corners and one for the two net ends.

그림 512×288 인코더(얼림) EfficientTAM S 작은 머리 약 64만(학습) 꼭짓점 넷 네트 끝 둘 특징 64×64×256 → 열지도 128×128 두 장(σ 4px 가중 MSE) 해독 d2: 사각형만으로 네트 끝 자리를 계산해 맞춰 본다 V 끝 변의 소실점 C 가운데 N N 봉우리 6개 중 넷을 골라 볼록 사각형 ① 두 대각선의 교점 C = 원근에서의 가운데 ② 두 끝 변을 늘인 교점 V = 소실점 ③ 선 CV 와 두 긴 변의 교점 = 네트 끝이 있어야 할 자리 ④ 네트 열지도 봉우리(N)가 12px 안 + 꼭짓점 봉우리 ≥ 0.5 → 확실 호모그래피는 꼭짓점 넷으로만 — 네트 끝은 검사에만 쓴다
Figure: Corner model: small head on frozen encoder, geometric consistency decoding, Policy D

Architecture. We freezethe image encoder of EfficientTAM S already used by the production find chain (same weights, Apache-2.0), and stack a small head with a few convolutional layers (approx. 640k parameters) on top of its 64×64×256 features to output two 128×128 heatmaps. One heatmap is for the four corners, and the other is for the two net ends. Because table tennis tables are symmetric, we do not assign names to the corners (such as top-left); instead, we read the four peaks in perimeter order. The loss is weighted MSE against a σ 4px Gaussian target.

Why freeze? We only had 12 real training images. When pretrained features are good and training conditions differ from deployment conditions, some analyses suggest that if the backbone is trained jointly while the head is still garbage early on, the pretrained features can become distorted, degrading out-of-distribution performance [19]. Because that paper primarily deals with linear heads in classification tasks, we use it only as a principle-level rationale. There was also a practical reason: production already uses the same encoder weights, so there were no new weights or packages to download. We have not yet experimented with unfreezing the encoder.

Training Data: 80% synthetic, 20% real. We used only commercially usable data.

This design follows the philosophy of domain randomization [20][21]. The idea is that if you intentionally and wildly vary rendering so that it is unrealistically chaotic, real footage becomes "just another variation" among the countless variations the model has seen. The pipeline of training purely on synthetic data and then supplementing with a small amount of real data is a direction demonstrated by [21]. In table tennis, previous research has explored training ball and table 2D detection solely on real labels, while learning 2D-to-3D trajectories purely through physically plausible synthesis [22].

Training consisted of 2,500 iterations × batch size 12 (= 30k images) with AdamW and a fixed seed set, taking about 20 minutes per run on a disposable laptop GPU pod (5 runs). We used the final weights without selection.

Decoding: Trust the geometry, not the peak magnitude. The initial decoding strategy ( preregistration: confident if the minimum of the four corner peaks is ≥ 0.5) was rejected. Peak magnitudes learned from synthetic data almost always exceeded 0.5 on real images. This is overconfidence. There were many cases where three corners were correct while one latched onto a scoreboard or net post.

Therefore, we created a second decoding strategy (d2) (ttscore/tablekp.py). We select four out of the top six peaks from the corner heatmap to form a convex quadrilateral, and use that quadrilateral alone to calculate where the net ends should be, matching them against the peaks in the net heatmap.

  1. The intersection point of the two diagonals of the quadrilateral represents the centerof the actual table even under perspective (projective center).
  2. The line connecting that center and the vanishing point formed by extending the two end sides represents the "line where the net is placed" in perspective.
  3. The points where that line intersects the two long sides are where the net ends should be.

Because the net and corners are separate heatmaps, checking that they match geometrically provides evidence independent of peak magnitude. The condition for confidence is "minimum peak ≥ 0.5 and net-end distance ≤ 12px." The 12px threshold was chosen from values of 8, 12, 16, and 24 using a validation set(300 synthetic images + 4 real images excluded from training). Confident & incorrect cases on the validation synthetic set dropped from 54–68 down to 5–9.

This calculation uses only points on the table plane. Although the top of the net is 15.25 cm above the plane and should not be included in homography, our net-end labels are points at table height, and even then, we use them only for validation and to determine which side is the end side, not in homography calculations . Homography is calculated exclusively using the four corners.

Merging: Policy D. The corner model does not replace the existing find logic; they are evaluated together.

Existing find Corner model Result
Confident Confident Confident if corners are within 20px (corner model coordinates); if they disagree, prompt human to "Tap to point"
Not confident Confident Confident based on corner model result
Confident Not confident Keep existing result
Not confident Not confident Keep existing result (uncertain)

Adoption criteria were established and logged in the project record prior to viewing results (preregistered): confident & correct must increase on the new 35 images, and confident & incorrect must not increase on any batch (median of the seed set).

Actual Measurement: Research Testing(204 test images, confident & correct / confident & incorrect, 2026-10-25, Log E43, docs/tt/PERFORMANCE.md 2.19):

Batch Images Production as-is Corner model + Policy D (seed set median)
Public batch (non-commercial, evaluation only) 142 67 / 15 79 / 15
27 clips by filming condition 27 4 / 3 7 / 3
League broadcast (different segments from the training broadcast) 26 0 / 1 4 / 1
4K club · vintage film · lab diagonal 9 0 / 3 0 / 3
Total 204 71 / 22 89 / 23

A version trained solely on synthetic data (using the same decoding) yielded more confident & correct results on the public batch (+24) but also increased confident & incorrect cases, failing to meet the criteria. The 12 real images effectively curbed overconfidence. Running the production code as-is (seed 2 weights, 2.5MB for the head only) scored 89 / 22, taking an additional 40ms per find on a laptop GPU.

We honestly note three limitations.

Actual Measurement: Post-Activation in Production(Night of 2026-10-25 – dawn of 2026-10-26, Log E44). On 2026-10-25, we enabled the corner model in the production real-time worker. Afterward, 212 test images were sent to the production worker at JPEG quality 70 (matching the camera scoreboard), and logs confirmed that the corner model executed for all 212 responses. Mimicking the screen flow (done if confident without tapping, one tap if not, or manual four-corner point if still not), we evaluated 204 images from three datasets with ground truth. For the baseline (corner model disabled), since production could not be turned off, we ran the same code on a disposable laptop GPU pod using the same JPEG images.

Metric (204 images) Off On
Confident & correct without tapping 61 84
Confident & incorrect without tapping 26 23
Number of "Tap to point" prompts triggered 117 97(−17%)
Number of times it reached "Point directly" 88 73
Time added by corner model (server GPU, 211 runs after warm-up) — Median 25ms
Total time per single find (same conditions, including measurement connection) — Median 1.73s, p95 2.14s

There were trade-offs. The corner model introduced 5 newly incorrect confident cases (max 114px — in different segments of the same training broadcast), while eliminating 8, bringing the total down from 26 to 23. Looking solely at the 27 clips grouped by filming condition, confident & incorrect increased from 3 to 4. Since it did not violate the deactivation criteria (confident & incorrect exceeding baseline or errors), we decided to keep it enabled.

This comparison contains some variance. The baseline was run on a different GPU, causing the existing find's confidence to differ from production on 14 out of 204 images (due to GPU differences). Additionally, at JPEG quality 70, the existing find performed worse than on lossless images (71/22 → 61/26), so these figures should not be directly compared to the research test numbers. Actual browser-based end-to-end screen tests were not conducted, and the table above simulates the screen flow rules.

5. Pose and Audio: Unused Signals

Pose (RTMPose): Coaching Only

RTMPose [7] is a top-down method that first detects human bounding boxes (RTMDet) and estimates poses for each person cropped out. Instead of heatmaps, it uses SimCC [8] to formulate keypoint localization as two classification problems: x-coordinate classification and y-coordinate classification . The idea is to subdivide each pixel into multiple bins to achieve sub-pixel precision even at low resolutions.

TT Lab uses this model only for precision analysis in coaching screens(ttcoach/pose.py). Experiments integrating it into the scoring engine were conducted twice and rejected both times.

Audio: Not included in the engine

The time the ball is in contact with the surface is very short at 1.3–1.8 ms, so sound can indicate "when" much more precisely than the video frame interval (33 ms for 30 fps) [23]. In a clean recording dataset, our classifier also distinguished between table tennis table and racket sounds 99.3% of the time. However, in actual training ground recordings, we could not confirm an effect on the score (PERFORMANCE 2.7·2.9.6, previous series Part 6). Performance on clean recordings dropped significantly in the presence of noise and sounds from neighboring table tennis tables.

Therefore, the real-time pipeline does not receive sound. The camera scoreboard does not request audio when opening the camera (getUserMedia({audio:false})), and recorded footage analysis discards sound. We were unable to find any research papers on table tennis scoring combining video, sound, and pose within the scope of this survey (with the caveat that the search scope was narrow) [24][25].

6. Conclusion

TT Note. Initially, the vertex model insisted it was always right. So we made it double-check, "Is the actual net end really where the net end should be?", and it became much more humble.

References

  1. T. Gossard, F. Radovic, A. Ziegler, A. Zell. "BlurBall: Joint Ball and Motion Blur Estimation for Table Tennis Ball Tracking." CVPR Workshops (CVsports), 2026. arXiv:2509.18387. Code MIT.
  2. S. Tarashima, M. A. Haq, Y. Wang, N. Tagawa. "Widely Applicable Strong Baseline for Sports Ball Detection and Tracking." BMVC, 2023. arXiv:2311.05237.
  3. Y.-C. Huang, I.-N. Liao, C.-H. Chen, T.-U. İk, W.-C. Peng. "TrackNet: A Deep Learning Network for Tracking High-speed and Tiny Objects in Sports Applications." arXiv:1907.03698, 2019.
  4. N. Ravi et al. "SAM 2: Segment Anything in Images and Videos." ICLR, 2025. arXiv:2408.00714. Code and checkpoints Apache-2.0.
  5. Y. Xiong et al. "Efficient Track Anything." ICCV, 2025. arXiv:2411.18933. Code and checkpoints Apache-2.0. (Conference publication verified via references in other papers; conference one-pager not viewed)
  6. N. Carion, L. Gustafson, Y.-T. Hu et al. "SAM 3: Segment Anything with Concepts." ICLR, 2026. arXiv:2511.16719. SAM License (2025-11-19).
  7. T. Jiang, P. Lu, L. Zhang, N. Ma, R. Han, C. Lyu, Y. Li, K. Chen. "RTMPose: Real-Time Multi-Person Pose Estimation based on MMPose." arXiv:2303.07399, 2023.
  8. Y. Li, S. Yang, P. Liu, S. Zhang, Y. Wang, Z. Wang, W. Yang, S.-T. Xia. "SimCC: A Simple Coordinate Classification Perspective for Human Pose Estimation." ECCV, 2022. arXiv:2107.03332.
  9. B. D. Lucas, T. Kanade. "An Iterative Image Registration Technique with an Application to Stereo Vision." IJCAI, 1981, pp. 674–679.
  10. J.-Y. Bouguet. "Pyramidal Implementation of the Lucas Kanade Feature Tracker: Description of the Algorithm." Intel Corporation, Microprocessor Research Labs, 2000. (Full text not opened; bibliography and OpenCV citations verified)
  11. J. Shi, C. Tomasi. "Good Features to Track." CVPR, 1994, pp. 593–600.
  12. G. Farnebäck. "Two-Frame Motion Estimation Based on Polynomial Expansion." SCIA, 2003, LNCS 2749, pp. 363–370.
  13. R. Hartley, A. Zisserman. Multiple View Geometry in Computer Vision, 2nd ed. Cambridge University Press, 2004. Chapters 2 and 4.
  14. M. A. Fischler, R. C. Bolles. "Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography." Communications of the ACM 24(6):381–395, 1981.
  15. A. Newell, K. Yang, J. Deng. "Stacked Hourglass Networks for Human Pose Estimation." ECCV, 2016. arXiv:1603.06937.
  16. K. Sun, B. Xiao, D. Liu, J. Wang. "Deep High-Resolution Representation Learning for Human Pose Estimation." CVPR, 2019. arXiv:1902.09212.
  17. X. Zhou, D. Wang, P. Krähenbühl. "Objects as Points." arXiv:1904.07850, 2019.
  18. J. Tompson, A. Jain, Y. LeCun, C. Bregler. "Joint Training of a Convolutional Network and a Graphical Model for Human Pose Estimation." arXiv:1406.2984, 2014.
  19. A. Kumar, A. Raghunathan, R. Jones, T. Ma, P. Liang. "Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution." ICLR, 2022. arXiv:2202.10054. Cited only at the principle level.
  20. J. Tobin, R. Fong, A. Ray, J. Schneider, W. Zaremba, P. Abbeel. "Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World." IROS, 2017. arXiv:1703.06907.
  21. J. Tremblay et al. "Training Deep Networks with Synthetic Data: Bridging the Reality Gap by Domain Randomization." CVPR Workshops, 2018. arXiv:1804.06516.
  22. D. Kienzle, K. Ludwig, J. Lorenz, S. Satoh, R. Lienhart. "Uplifting Table Tennis: A Robust, Real-World Application for 3D Trajectory and Spin Estimation." arXiv:2511.20250, 2025.
  23. T. Gossard, J. Schmalzl, A. Ziegler, A. Zell. "Sound-Based Spin Estimation in Table Tennis: Dataset and Real-Time Classification Pipeline." IEEE STAR, 2025. arXiv:2409.11760.
  24. S. Tsuji et al. "Audio-Visual Self-Supervision for Frame-Level Player-wise Offensive Shot Detection in Table Tennis Matches." MMSports '24, 2024. doi:10.1145/3689061.3689064. (Bibliography verified via search summaries only)
  25. X. Zhou, Q. Huang, L. Xie, S. Cox. "Detection of Ball Hits in a Tennis Game using Audio and Visual Information." APSIPA ASC, 2012.
  26. Our measurements: repository docs/tt/PERFORMANCE.md 2.1·2.8·2.12·2.19, research ledgers E01·E05·E08·E11·E12·E17·E18·E25·E31·E42·E43·E44. Code live/blurball.py·tablecv.py·tablemodels.py, ttscore/table.py·tablekp.py·bounceveto.py·reviewcal.py.

Further Reading

Sign in to like

Comments

No comments yet.

Sign in to leave a comment