Champions Spectator
Live Pokemon Showdown battle collection for VGC model training
Battle Coverage
Checking...
Collection Rate
Replays per Hour (last 48h)
Cumulative Collection
Full Dataset
VGC Ratings — Downloaded vs Spectated
BSS Ratings — Downloaded vs Spectated
Spectated Ratings (last 7 days)
VGC 2026
BSS
Sync to ColePC
Replay Sync
Checking...
Recent Saves
Loading...
OCR Test Gallery
Browse test images and ground-truth labels by reader
Select a reader from the sidebar
Frame Labeler
Label screenshots for the C++ test suite
100%
Box Coordinates
Click and drag to select. Right-click to clear.
Retest (local Mac)
Requires
python3 tools/mac_dev_runner.py running locally.
Detector Overlays
A toggle overlays · R reset zoom · ←→ prev/next image
Training Progress
Live training metrics from all machines
Multi-run comparison moved to the Compare tab — filter by category, search, pin favorites, overlay live runs.
Compare Runs
Overlay any past or live training run · sourced from
/workspace/data/checkpoints/*.jsonl on unraid + live sessionsMetric vs. epoch
Recognition Results
Species, moves, and HP reading results from the last regression run
Team Preview Examples
Labeled team-preview frames with the cropped opp sprites + matched atlas references. Selecting screen also shows My-side text-OCR crops.
Loading...
Digit Templates
HP% digit templates (0-9) used for template-matching OCR
Label Validation
Per-screen label completeness and schema validation
Loading...
Mismatches
Label vs reader disagreements. Accept → trust the reader (fix label). Inspector → tune the box.
Keys: j/k next/prev · a accept · s swap 0↔1 · i inspector
Sprite Recognition
Opponent species in Team Preview are matched against the 272-sprite reference atlas via cropped RMSD.
BattleHUD own-species icons (action_menu)
Boxes
own_specoes_icon_0/1 from tools/box_definitions.json. Each row shows the cropped icon, the ground-truth species, and the top-5 atlas matches with their alpha. Lower alpha = closer match.Loading...
Pokeball Alive Detector
Per-frame run of
PokeballAliveDetector across action_menu, move_select, battle_log. Each row shows the frame and 12 state indicators (own 0..5, opp 0..5). Green = alive, grey = fainted, dot = empty.
Loading...
Pokemon Switch Detector Probe
Per-image run of
PokemonSwitchDetector across test_images/pokemon_switch/.
Active = b<60 && g>150 (lime/yellow). Inactive = b>80 && r<80 && g<80 (dark blue).
Accept iff exactly one tab pair is fully active and the other fully inactive.
Loading...
Live Trace
screen: -
Mirror of the inference engine ingest pipeline. Run the LiveDetectorTrace SerialPrograms program to feed this view.
Battle State
Own
leads not yet read
Bench
Opp
opp leads — game-state hidden
Bench
Field
Model Decision
Win Probability
--
Tracker Snapshot raw m_own_active / m_opp_active + alive bitmap
Derived State
(no data yet)
Recent Events
PP Crops Gallery
4 PP crops + the BattleHUDReader's
move_pp_current read for every move_select test image.
Use this to spot crop-box drift. Red = -1 (no read); cyan = a read happened.
Open any image in the Inspector via the link below the row to nudge the boxes.
Loading...
HP Crops Gallery
Opponent HP% (slot 0/1) + own HP "current/max" (slot 0/1) crops + BattleHUDReader reads,
across action_menu and move_select frames. Red = -1 (no read); cyan = read happened.
If a frame should clearly show HP but reads -1, the box is mis-tuned. Open in inspector to nudge.
Loading...
Target Select Crops Gallery
Per frame: 2 own move-name cells + 4 target cells (opp 0/1, own 0/1).
Each target cell shows the is_targeted color strip + the effectiveness crop +
raw OCR text + the classified enum. Mismatches between raw and classified
usually mean the classifier needs another keyword or a fuzzy fallback.
Loading...
HUD Pill Atlas
Species → averaged HUD-pill render, bootstrapped from manifest-labeled BattleHUDReader frames.
Used as the in-domain reference for sprite-matching on the small HUD pills (where the canonical
Bulbapedia atlas hits ~22% top-1; this approach is ~95% with one ref/species).
Re-run the build to grow the atlas after labeling new frames.
Loading...
Team Scan Verify
Runs
TeamSummaryReader on the latest Moves & More screenshot
and TeamStatsReader on the latest Stats screenshot, merges per-slot,
and renders the assembled team as a Pokemon Showdown paste.
Swap-pair via the file pickers if needed.
Moves & More
Stats
Assembled team (Showdown paste)
Saved Team Library
Each entry is one unique team composition (the same 6 species in any order maps to one file).
Loaded automatically by LiveDetectorTrace when the team-preview-selecting screen reveals all 6 species.
Team Preview Locked-In: own slot investigation
6 own-side icon slots (top-to-bottom
own_slot_0...own_slot_5).
Each crop sprite-matched against the HUD pill atlas. Use this to validate the boxes
and decide the lead-order mapping before promoting to a real reader.
Screenshot
Team Preview Selecting: cursor reader
6 highlight strips on the left edge of each own card. Per-slot
(R+G)/2 - B "yellowness" score; floor 30. Highest-scoring slot wins.
The selected slot pill shows what TeamPreviewCursorReader::read returns.
Screenshot
Team Preview Selecting: lead-mark digits
6 digit-badge crops (top-to-bottom
digit_0...digit_5).
Same OCR pipeline as TP Locked-In:
raw → binarize → yellow_paint → yellow_filled → yellow_inner → Tesseract.
The "→ lead" column is the final '1'..'4' (or empty for unmarked) used by the auto-press lead-pick state machine.
Screenshot