TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

小而快的球体追踪学习原理:TrackNet V1–V5、WASB、TOTNet、BlurBall 教了我们什么以及它们是怎么教的

状态:草稿(2026-10-13)。 论文中的数据是在打开原文并核对条件后确认的,而 TrackNetV2·V3 因为无法打开论文正文,是通过摘要、官方代码库和后续论文的描述进行确认的(已作相应标注)。亲自尝试的是笔记本电脑 CPU 上的 numpy 示例(code/09_ball_labels.py)。 我们视频中测得的球体检测准确率和速度在 TT Score 模型剖析第 2 篇中。 本篇不重复这些实测数据,仅探讨「学习原理与谱系」。 2026-10-15 补充: 将此前未实测的 TOTNet(公开乒乓球权重)和 TrackNetV3(RacketVision 权重)放入同一测试中重新测试,并将结果总结在第 8 节(详细表格在第 2 篇中),同时修正了对 TrackNetV2·V3「未确认」内容的重新查证。 系列「阅读视觉模型 2」第 9 篇。从这里开始是「体育」主题。

目录

1. 难点所在:三种不平衡

TT Score 第 2 篇已经详细记录了「为什么难」,这里只搬运要点。在缩减为 512×288 的帧中,乒乓球直径只有 3 个像素左右,在曝光时间内会拖影成球体直径数倍的长度,并且经常被手和球拍遮挡。从学习的角度来看,这就转化为了三种不平衡。

  1. 像素不平衡:热力图中的几乎所有格子都是「非球体」。
  2. 条件不平衡:大部分训练数据都是清晰可见的球体,被遮挡的球、拖影的球以及静止的球非常罕见。然而,错误往往就发生在这些罕见的情况下。
  3. 时间不平衡:球的位置在每帧之间变化,如果只看单张图像,是无法分清球和日光灯的。

下面的谱系可以看作是一部逐一处理这三种不平衡的历史。

작고 빠른 공 추적의 계보 — 무엇을 바꿨나 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 는 본문 미확인
图:从 TrackNet 到 TrackNetV5,各模型所做的更改

2. 像素不平衡:如何改变损失函数

直接计算:懒惰预测的诱惑

code/09_ball_labels.py 用绘制了在 512×288 热力图上半径为 2.5 个格子的球体圆盘(WASB·TrackNetV3 的标签大小)。

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

在 1 万个格子里有 1.4 个是球体。在这样的问题中,模型最先学会的是 回答「任何地方都没有球」。光凭这一点就能猜对 99.99% 的格子。我们对比了回答「全都是 0.01」的懒惰预测与在球体位置涂上 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%

在普通的二元交叉熵(BCE)中,懒惰预测 94% 的损失是 由已经猜对的「非球体格子」的微小损失累积而成的。即使猜中了球,损失也只能减少 5% 左右。学习信号被背景噪声淹没了。

TrackNet(2019):256 级分类

最初的 TrackNet 是通过 256 类分类进行训练的,即在热力图的每个格子中选择 0–255 的亮度之一。标准答案是画在球心上的、已放大到 0–255 的 2D 高斯分布图(σ² = 10)(论文)。输入 3 帧,输出最后一帧的 1 张热力图。

TrackNetV2(2020)·V3(2023):类似焦点损失的加权 BCE

从 V2 开始,损失函数发生了变化。我们在后续论文和 V3 官方代码中确认的公式如下(未能打开 V2 论文正文)。

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

对于已经猜对的格子(在非球体格子里 p 接近 0),会乘以 p² 使得损失几乎变为 0。 减弱简单格子的声音 是核心所在,这与计算机视觉领域的焦点损失(focal loss, γ=2)形式相同。在上面的计算中,WBCE 将「非球体格子」的占比从 94% 降到了 0.2%,并且在猜中球体时损失减少了 98%。现在,相同的差值(0.0006)能够左右整个损失了。

V2 还将输入 3 张图改为 一次性输出 3 张图(3-in-3-out),大幅提升了吞吐量(摘要:2.6 → 31.8 FPS)。V3 则将每个比赛预先计算好的 背景(各帧的中位数) 一同输入,使得更容易找出「与背景不同的东西」,并将标准答案绘制为半径 2.5 的二元圆盘(官方代码)。对于丢失球体的区间,会通过一个专门训练的小型网络(InpaintNet)来填补,该网络在故意遮挡轨迹坐标后进行填补学习。

WASB(2023):仅对困难样本使用平滑标签

WASB 在小型 HRNet(自始至终保持球体分辨率的网络)中 使用质量焦点损失。起初使用二元圆盘标准答案进行训练,从第 20 个 epoch 开始, 仅挑选出位置没对准的训练样本 ,将标准答案改为实数值高斯分布(边缘最小值为 0.7)并继续训练(HLSM,论文)。这就相当于:对容易猜对的样本用锋利的标准答案教学,对困难的样本则用「大致在这个附近」的宽容标准答案教学。在没有预训练的情况下,从头开始训练了 30 个 epoch。

在推理时,通过 0.5 阈值切割热力图来寻找区域,并使用热力图值加权的中心作为位置。并且附加了一个简单的在线追踪:丢弃与前几帧预测位置距离太远的候选(论文)。此后处理代码可在 TT Score 第 2 篇中找到。

3. 时间不平衡:如何展示帧

模型 输入 使用时间的方式
TrackNet 3 帧 → 1 张 按通道堆叠并在第一层中混合(第 6 篇中的「早期融合」)
TrackNetV2 3 帧 → 3 张 同上。输出也是每帧一张
TrackNetV3 帧 + 背景 单独告知「静止的东西」。曾担心接近静止的球会被当成背景抹去,但实测后发现,恰恰相反,它找几乎静止的球找得最好(第 8 节)
TrackNetV4 帧 + 运动图 对黑白帧差分的绝对值施加带有 2 个学习参数的正规化,并乘以注意力图
TOTNet 5 帧 在每帧的 2D 卷积后通过 3D 卷积来混合时间维度
TrackNetV5 3 帧 + 方向图 将差分分为 + 方向和 − 方向(朝哪个方向运动)输入,由小型 Transformer 以残差形式修饰初版热力图

V4 和 V5 的运动图是对第 5 篇中光流(optical flow)的一种非常廉价的模仿。光流计算的是「往哪里移动了多少」,而差分只看「哪里发生了变化」。这一系列的主张是,对于小球来说,这就足够了。V5 在训练时对初版热力图施加了 10% 的 Dropout,以防止修饰阶段直接照搬初版(论文)。

4. 条件不平衡 1:遮挡(TOTNet)

TOTNet(2025)正面应对被遮挡的球。在训练中改变了三个方面(论文,部分数值见官方代码库)。

5. 条件不平衡 2:模糊(BlurBall)

BlurBall(2025, CVPRW 2026)的核心思想在于标签。

示例的最后一部分通过思想实验展示了为什么「中心」作为标签很好。在球速 20m/s、曝光 1/120 秒(拖影约 17cm)的情况下,如果让一个人仅凭单帧画面去指出「拖影的前端」,会分不清哪一边才是前端。

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

前后傻傻分不清楚的假设虽然有点极端,但「中心」即使不知道方向也依然在同一个位置这一点,与假设无关,始终成立。

6. 论文数据

由于数据集、运动项目和判定距离各不相同, 切勿在不同表格之间进行横向比较。 请仅在同一张表格内部进行对比。

模型 数值(论文) 条件
TrackNet 单帧 F1 92.5 → 3 帧 98.2,未混合比赛的 10 折交叉验证 F1 84.3 网球单场比赛 20,844 帧随机 7:3 划分,误差在 5px 以内
TrackNetV2 新比赛测试 Acc 85.2 / P 97.2 / R 85.4,31.84 FPS(输入 3 张输出 3 张的版本) 羽毛球 18 场比赛 55,563 帧(摘要·学会记录 ICPAI 2020。正文收费无法打开,测量 GPU 未确认。V3 论文引用原 V2 准确率为 87.72%)
TrackNetV3 Acc 97.51, F1 98.56, 25.11 FPS 羽毛球测试 3 场比赛 29 个回合,288×512,4px(官方代码库·论文)。FPS 为 8 帧集成值,若去掉集成则在 75 FPS 以上。代码库和论文中均未提及 GPU。同表中 V2 的 Acc 为 94.98
TrackNetV4 羽毛球 V3 准确率 95.7 → +运动显著图 96.4 基于 4px。在网球比赛级别划分中也 +0.6
WASB F1 网球 95.6 · 羽毛球 93.1 · 足球 88.2 · 排球 88.0 · 篮球 82.6 4px,参数量 150 万
TOTNet 乒乓球 (TTA) 完全遮挡 RMSE 37.30 (WASB) → 12.31,光流增强版 7.19. OpenTTGames 准确率 0.84 (WASB) → 0.97 5px(完全遮挡为 10px)。868 万参数,28.08 FPS(光流版 12.19),未列出硬件
BlurBall 乒乓球 F1 96.52 (WASB 96.00),79 FPS,拖影误差长度 1.5px · 角度 6.5° 4px,149 万参数,推测为桌面级 GPU
TrackNetV5 F1 0.9859 (V2 0.9677) “TrackNetV2 数据集” 4px。1,477 万参数,数据中心推理 GPU 上约 114 FPS。正文与结论中的运动项目表述不同

TrackNet 的“随机帧划分 98.2 对比赛分离交叉验证 84.3”是对整个领域的警告。 如果同一比赛的相邻帧同时进入训练和测试,分数就会虚高。 这就是 V4 论文指出这一点并制定新划分规范的原因。

7. 局限性

8. 与我们项目的关联

TT 的一句话。 由于球只占屏幕的 0.01%,如果盲目教导,模型首先学会的只会是说“没有球”。减少简单格子权重的损失函数可以纠正这个坏习惯。自此以后,就是一场关于如何更频繁、更沉重地展示遮挡、拖影等罕见情况的较量。

参考文献

登录后即可点赞

评论

还没有评论。

登录后即可发表评论