TT Lab
ブログ

한국어 English 日本語 中文

はじめる
ブログ

ブログ

小さくて速いボール追跡の学習原理:TrackNet V1〜V5、WASB、TOTNet、BlurBallは何をどのように教えたのか

ステータス:ドラフト(2026-10-13)。 論文の数値は原文を開いて条件とともに確認し、TrackNetV2・V3は論文の本文を開けなかったため、アブストラクト・公式リポジトリ・後続論文の記述で確認しました(その旨を記載しています)。実際に試したのはノートPCのCPUでのnumpyの例(code/09_ball_labels.py)です。 我々の映像で測定したボール検出の精度・速度はTT Scoreモデル解剖編2にあります。 この記事はその実測の繰り返しはせず、「学習原理と系譜」のみを扱います。 2026-10-15追記: 未測定としておいたTOTNet(公開卓球重み)とTrackNetV3(RacketVision重み)を同じテストで測定した結果を第8節に要約し(詳細な表は第2編)、TrackNetV2・V3の「未確認」を調べ直して修正しました。 シリーズ「ビジョンモデルを読む2」第9編。ここからは「スポーツ」です。

目次

1. 何が難しいのか:3つの不均衡

TT Score第2編で「なぜ難しいのか」を詳しく書いたため、要点だけを移行します。卓球ボールは512×288に縮小されたフレームで直径3画素ほどであり、露光時間中にボールの直径の何倍もの長さにブレ、手やラケットに頻繁に隠れます。学習の観点からは、これが3つの不均衡になります。

  1. 画素の不均衡:ヒートマップのほとんどすべてのマスが「ボールではない」です。
  2. 条件の不均衡:学習データの大部分はよく見えるボールであり、隠れたボール・ブレたボール・止まったボールは稀です。しかし、エラーはその稀なケースで発生します。
  3. 時間の不均衡:ボールの位置はフレームごとに変わりますが、1枚だけを見てもボールと蛍光灯を区別できません。

以下の系譜は、この3つを1つずつ扱ってきた歴史として読むことができます。

작고 빠른 공 추적의 계보 — 무엇을 바꿨나 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は、ヒートマップのマスごとに0〜255の明るさのいずれかを選ぶ205種分類で学習しました(※原文に準拠)。正解はボールの中心に描いた2Dガウス関数(σ² = 10)を0〜255に拡大したマップです(論文)。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エポック目から 位置をうまく合わせられない学習サンプルのみを選び、 正解を実数値のガウス関数(端の最小値0.7)に変更して学習を続けます(HLSM、論文)。うまく当てられるサンプルはシャープな正解で、難しいサンプルは「大体このあたり」という寛大な正解で教えるわけです。事前学習なしで最初から30エポック学習しました。

推論時はヒートマップを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回のオプティカルフローを非常に安価に模倣したものです。オプティカルフローは「どこにどれだけ」を計算しますが、差分は「どこが変わったか」だけを見ます。小さなボールにはそれで十分すぎるというのがこの系列の主張です。V5は学習時、ドラフトヒートマップに10%のドロップアウトをかけ、調整段階がドラフトをそのまま模倣しないようにしました(論文)。

4. 条件的不均衡1:オクルージョン(TOTNet)

TOTNet(2025)は隠れたボールを正面から狙います。学習において3つを変更しました(論文、一部の値は公式リポジトリ)。

5. 条件的不均衡2:ブレ(BlurBall)

BlurBall(2025, CVPRW 2026)の考え方はラベルにあります。

例の最後の部分は、「中心」がなぜラベルとして優れているのかを思考実験で示しています。ボールの速度20m/s、露出1/120秒(ブレ約17cm)において、人間が1フレームだけを見て「ブレの前方端」を指し示そうとすると、どちらが前方なのか混乱します。

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

前後を半々で勘違いするという仮定は極端ですが、「中心」は方向が分からなくても同じ場所であるという点は仮定に関わらず成立します。

6. 論文の数値

データセット・競技・判定距離がすべて異なるため、 表同士を比較してはいけません。 同じ表の中だけで比較してください。

モデル 数値(論文) 条件
TrackNet 1フレームF1 92.5 → 3フレーム 98.2、試合を混同しない10分割交差検証F1 84.3 テニス1試合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 Acc 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 Acc 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. 我々のプロジェクトとのつながり

ティーティーの一言。 ボールが画面の 0.01% であるため、普通に教えるとモデルは「ボールはありません」とだけ言う方法をまず学習してしまいます。簡単なセルの声を小さくするひとつの損失がその癖を直します。そこからは、オクルージョンやブレのような稀なケースをいかに頻繁に、より重く見せるかの戦いです。

参考文献

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます