TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

用单台相机读取 3D 轨迹与旋转:TT3D、Uplifting Table Tennis 与 TT4D ——物理模型 vs. 学习模型

状态:草稿 (2026-10-13)。 论文数据已通过打开原文并结合条件进行了确认(Uplifting 的会议经 CVF 公开论文集确认:WACV 2026,第 7440–7449 页 — 2026-10-15)。亲自动手尝试的是笔记本电脑 CPU 上的 numpy 示例(code/11_spin_physics.py,大约 30 秒)。这种简便的方法从未在我们的视频中运行过(未实测)。 系列“阅读视觉模型 2”第 11 篇。球台边缘与单应性矩阵在 TT Score 模型解剖第 3 篇中,3D 极值规则规划在第 5 篇中。

目录

1. 直觉:2D 中消失的一个维度

相机将 3D 世界压扁到 2D 屏幕上。在这个过程中, 深度消失了。屏幕上的一个点可以是相机延伸出的直线(视线)上的任意位置。仅凭单个球的 2D 位置,无法得知该球距离相机是 2m 还是 4m。

然而,乒乓球运动中有很多线索。

最后的线索甚至能揭示旋转。带有上旋的球下落得更快,下旋则会使其飘得更远。 通过观察轨迹的偏转,可以逆向计算出旋转。

2D 점들 → 3D 궤적과 회전: 두 길 입력: 공의 2D 위치 열 + 탁구대 모서리 ① 물리 모델로 맞추기 TT3D 모서리 → 카메라 자세·초점 바운드 = 시선 ∩ 탁구대 면 속도·회전 최적화 비행: 중력 + 공기 저항 + 마그누스 학습할 것이 거의 없다 식이 틀리면 결과도 틀린다 ② 합성 데이터로 학습 Uplifting · TT4D 시뮬레이터 궤적 수만 개 3D·회전 정답이 공짜 트랜스포머 2D 점 열 → 3D 점 열 + 회전 증강: 점 빼기, fps 20–60 실제 영상 3D 정답 없이 학습 틀리는 곳 = 합성과 실제의 차이 TT4D: 먼저 3D 로 올린 뒤 사건을 나눈다 바운드 = 높이 z 의 극소 타구 = 길이 방향 x 의 극값 2D 의 「V 자」 보다 3D 의 「바닥에 닿음」 이 정의에 가깝다
图:用物理模型匹配与用合成数据训练的转换器

2. 用物理模型匹配:TT3D

TT3D(CVPR 2025 Workshop)最大程度地减少了学习,并依赖于物理。

  1. 相机标定:球台分割模型(小型 U-Net++,1200 张标注,Dice 损失)寻找球台区域,并利用其四个角同时求解相机的位置、方向和焦距(交替进行 PnP 与焦距搜索)。通过卡尔曼滤波随时间进行平滑。边缘误差为 2.39 ± 1.47 像素(40 张图,引自论文)。
  2. 弹跳的 3D 位置:它是弹跳瞬间的视线与球台平面的交点。弹跳时间通过将分段二次曲线拟合到 2D 轨迹并加上 BlurBall(第 9 篇)给出的模糊角度来寻找。
  3. 速度与旋转:将弹跳前的速度(3个)和旋转(3个)作为未知数,对飞行方程进行积分,以优化使得投影回屏幕的位置最接近观测到的 2D 位置(最小化重投影误差)。

飞行方程如下(论文,仅更改了符号)。

m · dv/dt = −k_D · |v| · v  +  k_M · (ω × v)  +  m · g
m = 2.7g,  k_D = 3.8 × 10⁻⁴,  k_M = 4.86 × 10⁻⁶,  공 반지름 2cm

第一项是空气阻力,第二项是马格努斯力,第三项是重力。弹跳采用恢复系数 0.85、摩擦系数 0.3 的公式,分情况计算球在球台上是滑动还是滚动。(论文中将 k_D 写成了正号,但要使空气阻力方向与运动相反,必须匹配符号约定。TT4D 附录中将相同的 k_D 写成了负号,而 k_M 写成了 3 × 10⁻⁶,与 TT3D 不同。示例中将 TT3D 的值写成了负号。)

3. 用合成数据训练的转换器:Uplifting Table Tennis

物理拟合虽然准确但速度较慢,如果观测缺失或噪声较大,优化可能会陷入错误的方向。Kienzle 等人的两篇论文走了一条不同的路。 训练一个 Transformer,接收 2D 点序列并直接输出 3D 点序列和旋转。

问题在于真值。在真实视频中,球的 3D 位置和旋转都没有真值。因此, 通过模拟器生成真值

从合成过渡到实际的关键桥梁是 增强。由于真实的检测器会漏球且帧率各不相同,我们在训练时随机丢弃 5% 的点,并将帧率设定在 20–60fps 之间抽取。还模拟了轨迹突然中断、拖影和模糊。并且,在 Transformer 的位置编码中使用了 实际时间戳(按 2ms 单位四舍五入)而不是 token 序号,使得即使帧丢失或间隔不同也能理解时间关系(论文)。

前端的 2D 检测器使用真实视频进行训练。连续 3 帧寻找球,13 个基准点通过热图(平方误差,σ=6 像素)寻找球台,球检测器首先使用 BlurBall 数据集的 5 万帧进行训练,然后通过 1080p 乒乓球视频(TTHQ)进行微调。如果结果与采用不同架构的辅助检测器不一致,则丢弃该检测(论文)。

4. 先提升到 3D,然后分割事件:TT4D

TT4D(ACM MM 2026)颠倒了顺序。如果说之前的方法是先在 2D 轨迹中找到弹跳和击球,然后将它们之间的部分提升到 3D,那么 TT4D 则是 先将整个拉力赛(对打)提升到 3D ,然后再分割事件。

在 2D 屏幕上,弹跳和击球都表现为“V 形折痕”因而容易混淆,但在 3D 中,“接触地面”和“改变方向”的定义本身就不同。训练使用了约 300 万个合成轨迹点,遮挡的帧在训练时被遮蔽并用插值 token 填充。模型很小,只有 160 万参数(论文)。

5. 亲自尝试:旋转能产生多大的偏转,以及能否逆向拟合

code/11_spin_physics.py 以 1ms 的间隔对上述飞行方程进行积分(code/11_spin_physics.out.txt).

旋转改变的落点。 这是一个从己方底线高 30cm 处以 7.05m/s 速度(微向上 6.5°)击出的球。

아랫회전 50rps: x = 2.68m, 비행 463ms
회전 없음    : x = 2.09m, 비행 348ms
윗회전 50rps : x = 1.74m, 비행 284ms
참고: 공기가 없다면 x = 2.39m. 탁구대 길이는 2.74m

仅凭每秒 50 转的单一旋转,首次触地位置就从 1.74m 变到了 2.68m,改变了几乎 1m。飞行时间也显著不同,分别为 284ms 和 463ms。无旋转的球由于空气阻力,也比真空中提前 30cm 落地。由于球很轻(2.7g),空气的影响非常大。

逆向拟合。 观察带有 50rps 上旋的球在第一次弹跳前的飞行区段(60fps 和 30fps),在 3D 位置中混入噪声后,使用高斯-牛顿最小二乘法拟合了 3 个初始速度和 1 个旋转(重复 30 次)。这是对 TT3D 方法极度简化后的版本。旋转轴被绑定为单一侧轴。

观测 3D 位置噪声 估计中位数 绝对误差中位数 上/下旋拟合情况
60fps(17点) 1cm 50.5rps 6.2rps 100%
60fps(17点) 3cm 49.1rps 26.3rps 97%
30fps(9点) 1cm 50.9rps 6.0rps 100%
30fps(9点) 3cm 41.7rps 22.2rps 87%

当位置噪声为 1cm 时,旋转方向始终正确,大小误差也在 ±6rps 左右。当噪声达到 3cm 时,大小几乎不可信,而在 30fps 下,连方向也会有 13% 的错误。 由于旋转隐藏在轨迹的微小偏转中,几厘米的位置误差就会掩盖该信号。 实际上观测到的是 2D 位置而非 3D 位置,这使得任务更加困难。因此,论文们不是将旋转回归为“多少 rps”,而是将其评估为 上旋/下旋分类(见下表)。

6. 论文数据

方法 数值(论文) 条件
TT3D 3D 平均误差:侧面 8.9cm(有噪声时 12.4)· 斜向 14.5(17.1) · 后方 22.3(29.8)。侧面成功率 97.3% 真值为 200Hz 多相机 3D 追踪(俱乐部比赛,橙色球)。2D 输入模拟为 25fps,130 条轨迹,位置噪声 2px·模糊角度 6°。无旋转真值,故未评估旋转准确度
Kienzle 等人 2025 50 条真实轨迹的旋转分类准确率 92.0%,F1 0.917 国际赛事 6 场比赛 2560×1440 50Hz。仅用 5 万条合成轨迹训练
Uplifting Table Tennis TTST(完美输入)准确率 97.1%,重投影 3.43px。在帧率减半 + 检测丢失 10% 的情况下仍为 97.1%·5.75px(旧版本会崩塌至 67.7%)。整个 pipeline 在 TTHQ 的 57 条轨迹旋转准确度 89.5% 仅用 14 万条合成轨迹训练的后端 + 用真实视频训练的前端
TT4D 弹跳 F1 0.92,击球 F1 0.83(±2 帧)。TTST 旋转宏平均 F1 1.000(清晰),0.941(帧减半 + 丢失) 事件 F1 的数据集在正文中不明确。提出了包含 146 小时、4.6 万多场比赛体量的数据集。截至 2026-10-15 尚未公开(arXiv v2 仅写着“将要公开”。原文单位是 games,但由于是 5 局 3 胜制,实际上相当于一场比赛)
TT4D vs. TT3D 侧面一个区段的 3D 误差 TT4D 15.04cm,TT3D 29.86cm TT4D 创建的其他基准测试(过滤较少的数据,包含噪声)。不能将其与上述 TT3D 的 8.9cm 放在同一行进行比较

引用最后一行时需要格外小心。在 TT3D 自己的基准测试中是 8.9cm,而在 TT4D 的基准测试中,同样的 TT3D 却达到了 29.86cm。 基准测试不同,相同的方法也会得到相差三倍以上的数字。

7. 物理模型 vs. 学习模型

通过物理模型拟合 (TT3D) 通过合成数据训练 (Uplifting · TT4D)
训练数据 几乎没有(仅球台分割) 数万至数百万个合成轨迹
真实标签来源 公式本身 模拟器(相同的物理原理,不同的使用方法)
观测缺失与帧率变化 优化过程可能会受到干扰 通过增强提前学习(支持应对半帧率 + 10% 丢包)
速度 每个多回合(Rally)进行优化 一次前向传播(TT4D 超过每秒 500 个点,使用桌面级 GPU)
可解释性 可以深入研究公式的各项 接近黑盒
出错的地方 公式与现实不符的地方(球的状态、地面摩擦力) 模拟器与现实不符的地方(合成与真实之间的差距)

这两条路径比想象的要近。因为训练模型的「正确答案」最终也来自于物理模拟器。它们的区别在于 是在考试时每次都求解物理公式(优化),还是在训练时将其内化一次(通过增强的合成数据) 。

8. 局限性

9. 与我们项目的联系

Titi 的小贴士。 每秒旋转 50 转的球,即使以相同的力量击打,落点也会相差近 1 米。然而反过来,要想从轨迹中读出旋转,必须将球的位置精确到 1 厘米以内。偏转很容易,读取却很难。旋转就是这样。

参考文献

登录后即可点赞

评论

还没有评论。

登录后即可发表评论