28Visual ReasoningAI Research

Snooker Prediction

#ModelScoreStepsIn tokOut tokAvg costAvg time
1Claude Fable 5.1
0.4688
±0.055
425158.0M403k$88.766.5h
2GPT-5.6
0.4262
±0.081
364141.7M236k$151.764.5h
3Grok 4.6
0.2009
±0.142
591146.0M1.0M$176.629.6h
4GLM-5.3
0.0778
±0.077
539230.8M594k$73.2817.7h
5Qwen3.8-Max
0.0176
±0.039
669222.7M1.7M$83.5319.3h
6Inkling
0.0107
±0.015
872.6M41k$2.681.2h
7DeepSeek V4 Flash Exp
0.0000
±0.000
581242.0M587k$4.2512.0h
8Gemini 3.7 Flash
0.0000
±0.000
26254.3M348k$7.161.6h
9Kimi K3
0.0000
±0.000
774331.1M926k$122.3119.8h
10Muse Spark 1.2
0.0000
±0.000
31478.4M444k$17.081.6h

Background

Predicting where snooker balls end up from a short video clip chains together most of classical computer vision and physical reasoning: detecting and tracking balls through occlusions and collisions, recovering the table's coordinate frame from pixels, estimating velocities from a handful of frames, and then rolling the dynamics forward through ball-ball impacts, cushion bounces, and friction, seconds past the last observed frame, where small velocity errors compound quickly.

The clips are first-party and procedurally generated: tables, balls, and trajectories are rendered from a snooker-physics simulation, and ground-truth coordinates come from the same simulation rather than human annotation. No broadcast or scraped footage is involved, so the answers cannot be recalled from training data.

Task

Build a program that predicts the future position of every snooker ball for each clip and timestamp pair listed in /app/data/target_times.csv, writing the results to /app/predictions.csv. Each observation video covers 0.0–3.0 seconds; target timestamps range from 3.5 to 7.0 seconds, up to four seconds beyond the last observed frame.

  • Predictions use the schema clip_id,time,ball_id,color,x,y, with coordinates in meters in the semantic table frame (origin at the center of the playable surface, roughly ±1.70 m by ±0.80 m).
  • Non-red balls are matched by color; red-ball IDs need not be stable, since reds are matched by position.
  • Quality depends on positional accuracy and complete coverage of the requested balls and timestamps; omitted balls are penalized at the worst physically meaningful distance.
  • No external data or services; changes stay confined to /app.

What The Agent Gets

29 rendered MP4 observation clips under /app/data/videos/, each ending at 3.0 seconds. Nine clips come with provided future-position examples (example_annotations.csv and example_target_times.csv) for local development; the remaining 20 clips are the ones requiring predictions, with 160 clip/timestamp pairs in target_times.csv.

  • Starter code in /app/predict.py and a local diagnostic, python3 /app/evaluate_predictions.py, that checks predictions against the provided examples.
  • A data contract and coordinate-frame reference in /app/data/README.md.
  • Python 3.11 with NumPy, pandas, SciPy, OpenCV, Pillow, Matplotlib, tqdm, and FFmpeg preinstalled for frame extraction and analysis. The machine is effectively offline.

Verification

A root-only verifier scores /app/predictions.csv against private annotations taken from the same simulation that rendered the clips. For each clip/timestamp group, predictions are matched to truth within each color class (reds via minimum-cost Hungarian assignment), and per-ball distances are capped at the table diagonal, so submitting an uncertain ball is never worse than omitting it. Missing balls, extra balls, malformed rows, and rows at wrong timestamps all incur the maximum-distance penalty.

  • The score is max(0, 1 − RMS / 0.85 m) over all scored points. The 0.85 m threshold puts frozen data-free baselines at zero: a constant layout derived from the examples measures 0.91 m RMS and random in-bounds guessing 1.35 m.
  • A missing, symlinked, or unparseable predictions file zeroes the result; rows for the public example clips are ignored without penalty.

Environment

Base imagepython:3.11-slim-bookworm
Tools availableFFmpeg, Python 3
Compute8 CPUs · 32 GB RAM
Time limit20h

References

  • cp-algorithms Hungarian algorithm (CC BY-SA 4.0): The minimum-cost assignment routine in the hidden scorer is adapted from Andrey Lopatin's implementation published by cp-algorithms; the agent-visible diagnostic uses SciPy's implementation instead. Everything else is original to this task: the clips (procedurally generated from a first-party snooker-physics simulation), scorer, diagnostics, and coordinate contract.